1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -fast-isel -mtriple=i386-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=ALL --check-prefix=X32 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -fast-isel -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=ALL --check-prefix=X64 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; NOTE: This should use IR equivalent to what is generated by clang/test/CodeGen/sse2-builtins.c 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_add_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind { 8*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_add_epi8: 9*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 10*9880d681SAndroid Build Coastguard Worker; X32-NEXT: paddb %xmm1, %xmm0 11*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 12*9880d681SAndroid Build Coastguard Worker; 13*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_add_epi8: 14*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 15*9880d681SAndroid Build Coastguard Worker; X64-NEXT: paddb %xmm1, %xmm0 16*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 17*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 18*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 19*9880d681SAndroid Build Coastguard Worker %res = add <16 x i8> %arg0, %arg1 20*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 21*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 22*9880d681SAndroid Build Coastguard Worker} 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_add_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind { 25*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_add_epi16: 26*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 27*9880d681SAndroid Build Coastguard Worker; X32-NEXT: paddw %xmm1, %xmm0 28*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 29*9880d681SAndroid Build Coastguard Worker; 30*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_add_epi16: 31*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 32*9880d681SAndroid Build Coastguard Worker; X64-NEXT: paddw %xmm1, %xmm0 33*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 34*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 35*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 36*9880d681SAndroid Build Coastguard Worker %res = add <8 x i16> %arg0, %arg1 37*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 38*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 39*9880d681SAndroid Build Coastguard Worker} 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_add_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind { 42*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_add_epi32: 43*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 44*9880d681SAndroid Build Coastguard Worker; X32-NEXT: paddd %xmm1, %xmm0 45*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 46*9880d681SAndroid Build Coastguard Worker; 47*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_add_epi32: 48*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 49*9880d681SAndroid Build Coastguard Worker; X64-NEXT: paddd %xmm1, %xmm0 50*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 51*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 52*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 53*9880d681SAndroid Build Coastguard Worker %res = add <4 x i32> %arg0, %arg1 54*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 55*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 56*9880d681SAndroid Build Coastguard Worker} 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_add_epi64(<2 x i64> %a0, <2 x i64> %a1) nounwind { 59*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_add_epi64: 60*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 61*9880d681SAndroid Build Coastguard Worker; X32-NEXT: paddq %xmm1, %xmm0 62*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 63*9880d681SAndroid Build Coastguard Worker; 64*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_add_epi64: 65*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 66*9880d681SAndroid Build Coastguard Worker; X64-NEXT: paddq %xmm1, %xmm0 67*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 68*9880d681SAndroid Build Coastguard Worker %res = add <2 x i64> %a0, %a1 69*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 70*9880d681SAndroid Build Coastguard Worker} 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_add_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 73*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_add_pd: 74*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 75*9880d681SAndroid Build Coastguard Worker; X32-NEXT: addpd %xmm1, %xmm0 76*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 77*9880d681SAndroid Build Coastguard Worker; 78*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_add_pd: 79*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 80*9880d681SAndroid Build Coastguard Worker; X64-NEXT: addpd %xmm1, %xmm0 81*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 82*9880d681SAndroid Build Coastguard Worker %res = fadd <2 x double> %a0, %a1 83*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 84*9880d681SAndroid Build Coastguard Worker} 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_add_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 87*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_add_sd: 88*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 89*9880d681SAndroid Build Coastguard Worker; X32-NEXT: addsd %xmm1, %xmm0 90*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 91*9880d681SAndroid Build Coastguard Worker; 92*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_add_sd: 93*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 94*9880d681SAndroid Build Coastguard Worker; X64-NEXT: addsd %xmm1, %xmm0 95*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 96*9880d681SAndroid Build Coastguard Worker %ext0 = extractelement <2 x double> %a0, i32 0 97*9880d681SAndroid Build Coastguard Worker %ext1 = extractelement <2 x double> %a1, i32 0 98*9880d681SAndroid Build Coastguard Worker %fadd = fadd double %ext0, %ext1 99*9880d681SAndroid Build Coastguard Worker %res = insertelement <2 x double> %a0, double %fadd, i32 0 100*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 101*9880d681SAndroid Build Coastguard Worker} 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_adds_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind { 104*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_adds_epi8: 105*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 106*9880d681SAndroid Build Coastguard Worker; X32-NEXT: paddsb %xmm1, %xmm0 107*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 108*9880d681SAndroid Build Coastguard Worker; 109*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_adds_epi8: 110*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 111*9880d681SAndroid Build Coastguard Worker; X64-NEXT: paddsb %xmm1, %xmm0 112*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 113*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 114*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 115*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8> %arg0, <16 x i8> %arg1) 116*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 117*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 118*9880d681SAndroid Build Coastguard Worker} 119*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8>, <16 x i8>) nounwind readnone 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_adds_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind { 122*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_adds_epi16: 123*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 124*9880d681SAndroid Build Coastguard Worker; X32-NEXT: paddsw %xmm1, %xmm0 125*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 126*9880d681SAndroid Build Coastguard Worker; 127*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_adds_epi16: 128*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 129*9880d681SAndroid Build Coastguard Worker; X64-NEXT: paddsw %xmm1, %xmm0 130*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 131*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 132*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 133*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16> %arg0, <8 x i16> %arg1) 134*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 135*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 136*9880d681SAndroid Build Coastguard Worker} 137*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16>, <8 x i16>) nounwind readnone 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_adds_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind { 140*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_adds_epu8: 141*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 142*9880d681SAndroid Build Coastguard Worker; X32-NEXT: paddusb %xmm1, %xmm0 143*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 144*9880d681SAndroid Build Coastguard Worker; 145*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_adds_epu8: 146*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 147*9880d681SAndroid Build Coastguard Worker; X64-NEXT: paddusb %xmm1, %xmm0 148*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 149*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 150*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 151*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8> %arg0, <16 x i8> %arg1) 152*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 153*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 154*9880d681SAndroid Build Coastguard Worker} 155*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8>, <16 x i8>) nounwind readnone 156*9880d681SAndroid Build Coastguard Worker 157*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_adds_epu16(<2 x i64> %a0, <2 x i64> %a1) nounwind { 158*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_adds_epu16: 159*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 160*9880d681SAndroid Build Coastguard Worker; X32-NEXT: paddusw %xmm1, %xmm0 161*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 162*9880d681SAndroid Build Coastguard Worker; 163*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_adds_epu16: 164*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 165*9880d681SAndroid Build Coastguard Worker; X64-NEXT: paddusw %xmm1, %xmm0 166*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 167*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 168*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 169*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16> %arg0, <8 x i16> %arg1) 170*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 171*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 172*9880d681SAndroid Build Coastguard Worker} 173*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16>, <8 x i16>) nounwind readnone 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_and_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 176*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_and_pd: 177*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 178*9880d681SAndroid Build Coastguard Worker; X32-NEXT: andps %xmm1, %xmm0 179*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 180*9880d681SAndroid Build Coastguard Worker; 181*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_and_pd: 182*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 183*9880d681SAndroid Build Coastguard Worker; X64-NEXT: andps %xmm1, %xmm0 184*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 185*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x double> %a0 to <4 x i32> 186*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x double> %a1 to <4 x i32> 187*9880d681SAndroid Build Coastguard Worker %res = and <4 x i32> %arg0, %arg1 188*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x double> 189*9880d681SAndroid Build Coastguard Worker ret <2 x double> %bc 190*9880d681SAndroid Build Coastguard Worker} 191*9880d681SAndroid Build Coastguard Worker 192*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_and_si128(<2 x i64> %a0, <2 x i64> %a1) nounwind { 193*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_and_si128: 194*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 195*9880d681SAndroid Build Coastguard Worker; X32-NEXT: andps %xmm1, %xmm0 196*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 197*9880d681SAndroid Build Coastguard Worker; 198*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_and_si128: 199*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 200*9880d681SAndroid Build Coastguard Worker; X64-NEXT: andps %xmm1, %xmm0 201*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 202*9880d681SAndroid Build Coastguard Worker %res = and <2 x i64> %a0, %a1 203*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 204*9880d681SAndroid Build Coastguard Worker} 205*9880d681SAndroid Build Coastguard Worker 206*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_andnot_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 207*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_andnot_pd: 208*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 209*9880d681SAndroid Build Coastguard Worker; X32-NEXT: andnps %xmm1, %xmm0 210*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 211*9880d681SAndroid Build Coastguard Worker; 212*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_andnot_pd: 213*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 214*9880d681SAndroid Build Coastguard Worker; X64-NEXT: andnps %xmm1, %xmm0 215*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 216*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x double> %a0 to <4 x i32> 217*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x double> %a1 to <4 x i32> 218*9880d681SAndroid Build Coastguard Worker %not = xor <4 x i32> %arg0, <i32 -1, i32 -1, i32 -1, i32 -1> 219*9880d681SAndroid Build Coastguard Worker %res = and <4 x i32> %not, %arg1 220*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x double> 221*9880d681SAndroid Build Coastguard Worker ret <2 x double> %bc 222*9880d681SAndroid Build Coastguard Worker} 223*9880d681SAndroid Build Coastguard Worker 224*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_andnot_si128(<2 x i64> %a0, <2 x i64> %a1) nounwind { 225*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_andnot_si128: 226*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 227*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pcmpeqd %xmm2, %xmm2 228*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pxor %xmm2, %xmm0 229*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pand %xmm1, %xmm0 230*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 231*9880d681SAndroid Build Coastguard Worker; 232*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_andnot_si128: 233*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 234*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pcmpeqd %xmm2, %xmm2 235*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pxor %xmm2, %xmm0 236*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pand %xmm1, %xmm0 237*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 238*9880d681SAndroid Build Coastguard Worker %not = xor <2 x i64> %a0, <i64 -1, i64 -1> 239*9880d681SAndroid Build Coastguard Worker %res = and <2 x i64> %not, %a1 240*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 241*9880d681SAndroid Build Coastguard Worker} 242*9880d681SAndroid Build Coastguard Worker 243*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_avg_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind { 244*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_avg_epu8: 245*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 246*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pavgb %xmm1, %xmm0 247*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 248*9880d681SAndroid Build Coastguard Worker; 249*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_avg_epu8: 250*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 251*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pavgb %xmm1, %xmm0 252*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 253*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 254*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 255*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8> %arg0, <16 x i8> %arg1) 256*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 257*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 258*9880d681SAndroid Build Coastguard Worker} 259*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8> %arg0, <16 x i8> %arg1) nounwind readnone 260*9880d681SAndroid Build Coastguard Worker 261*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_avg_epu16(<2 x i64> %a0, <2 x i64> %a1) nounwind { 262*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_avg_epu16: 263*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 264*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pavgw %xmm1, %xmm0 265*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 266*9880d681SAndroid Build Coastguard Worker; 267*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_avg_epu16: 268*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 269*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pavgw %xmm1, %xmm0 270*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 271*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 272*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 273*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16> %arg0, <8 x i16> %arg1) 274*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 275*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 276*9880d681SAndroid Build Coastguard Worker} 277*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16>, <8 x i16>) nounwind readnone 278*9880d681SAndroid Build Coastguard Worker 279*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_bslli_si128(<2 x i64> %a0) nounwind { 280*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_bslli_si128: 281*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 282*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10] 283*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 284*9880d681SAndroid Build Coastguard Worker; 285*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_bslli_si128: 286*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 287*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10] 288*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 289*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 290*9880d681SAndroid Build Coastguard Worker %res = shufflevector <16 x i8> zeroinitializer, <16 x i8> %arg0, <16 x i32> <i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26> 291*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 292*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 293*9880d681SAndroid Build Coastguard Worker} 294*9880d681SAndroid Build Coastguard Worker 295*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_bsrli_si128(<2 x i64> %a0) nounwind { 296*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_bsrli_si128: 297*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 298*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psrldq {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero 299*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 300*9880d681SAndroid Build Coastguard Worker; 301*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_bsrli_si128: 302*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 303*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psrldq {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero 304*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 305*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 306*9880d681SAndroid Build Coastguard Worker %res = shufflevector <16 x i8> %arg0, <16 x i8> zeroinitializer, <16 x i32> <i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20> 307*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 308*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 309*9880d681SAndroid Build Coastguard Worker} 310*9880d681SAndroid Build Coastguard Worker 311*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_castpd_ps(<2 x double> %a0) nounwind { 312*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_castpd_ps: 313*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 314*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 315*9880d681SAndroid Build Coastguard Worker; 316*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_castpd_ps: 317*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 318*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 319*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x double> %a0 to <4 x float> 320*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 321*9880d681SAndroid Build Coastguard Worker} 322*9880d681SAndroid Build Coastguard Worker 323*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_castpd_si128(<2 x double> %a0) nounwind { 324*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_castpd_si128: 325*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 326*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 327*9880d681SAndroid Build Coastguard Worker; 328*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_castpd_si128: 329*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 330*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 331*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x double> %a0 to <2 x i64> 332*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 333*9880d681SAndroid Build Coastguard Worker} 334*9880d681SAndroid Build Coastguard Worker 335*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_castps_pd(<4 x float> %a0) nounwind { 336*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_castps_pd: 337*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 338*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 339*9880d681SAndroid Build Coastguard Worker; 340*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_castps_pd: 341*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 342*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 343*9880d681SAndroid Build Coastguard Worker %res = bitcast <4 x float> %a0 to <2 x double> 344*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 345*9880d681SAndroid Build Coastguard Worker} 346*9880d681SAndroid Build Coastguard Worker 347*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_castps_si128(<4 x float> %a0) nounwind { 348*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_castps_si128: 349*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 350*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 351*9880d681SAndroid Build Coastguard Worker; 352*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_castps_si128: 353*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 354*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 355*9880d681SAndroid Build Coastguard Worker %res = bitcast <4 x float> %a0 to <2 x i64> 356*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 357*9880d681SAndroid Build Coastguard Worker} 358*9880d681SAndroid Build Coastguard Worker 359*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_castsi128_pd(<2 x i64> %a0) nounwind { 360*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_castsi128_pd: 361*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 362*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 363*9880d681SAndroid Build Coastguard Worker; 364*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_castsi128_pd: 365*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 366*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 367*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x i64> %a0 to <2 x double> 368*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 369*9880d681SAndroid Build Coastguard Worker} 370*9880d681SAndroid Build Coastguard Worker 371*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_castsi128_ps(<2 x i64> %a0) nounwind { 372*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_castsi128_ps: 373*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 374*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 375*9880d681SAndroid Build Coastguard Worker; 376*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_castsi128_ps: 377*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 378*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 379*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x i64> %a0 to <4 x float> 380*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 381*9880d681SAndroid Build Coastguard Worker} 382*9880d681SAndroid Build Coastguard Worker 383*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_clflush(i8* %a0) nounwind { 384*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_clflush: 385*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 386*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 387*9880d681SAndroid Build Coastguard Worker; X32-NEXT: clflush (%eax) 388*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 389*9880d681SAndroid Build Coastguard Worker; 390*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_clflush: 391*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 392*9880d681SAndroid Build Coastguard Worker; X64-NEXT: clflush (%rdi) 393*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 394*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.sse2.clflush(i8* %a0) 395*9880d681SAndroid Build Coastguard Worker ret void 396*9880d681SAndroid Build Coastguard Worker} 397*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.clflush(i8*) nounwind readnone 398*9880d681SAndroid Build Coastguard Worker 399*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmpeq_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind { 400*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpeq_epi8: 401*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 402*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pcmpeqb %xmm1, %xmm0 403*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 404*9880d681SAndroid Build Coastguard Worker; 405*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpeq_epi8: 406*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 407*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pcmpeqb %xmm1, %xmm0 408*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 409*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 410*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 411*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <16 x i8> %arg0, %arg1 412*9880d681SAndroid Build Coastguard Worker %res = sext <16 x i1> %cmp to <16 x i8> 413*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 414*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 415*9880d681SAndroid Build Coastguard Worker} 416*9880d681SAndroid Build Coastguard Worker 417*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmpeq_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind { 418*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpeq_epi16: 419*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 420*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pcmpeqw %xmm1, %xmm0 421*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 422*9880d681SAndroid Build Coastguard Worker; 423*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpeq_epi16: 424*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 425*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pcmpeqw %xmm1, %xmm0 426*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 427*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 428*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 429*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <8 x i16> %arg0, %arg1 430*9880d681SAndroid Build Coastguard Worker %res = sext <8 x i1> %cmp to <8 x i16> 431*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 432*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 433*9880d681SAndroid Build Coastguard Worker} 434*9880d681SAndroid Build Coastguard Worker 435*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmpeq_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind { 436*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpeq_epi32: 437*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 438*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pcmpeqd %xmm1, %xmm0 439*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 440*9880d681SAndroid Build Coastguard Worker; 441*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpeq_epi32: 442*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 443*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pcmpeqd %xmm1, %xmm0 444*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 445*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 446*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 447*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <4 x i32> %arg0, %arg1 448*9880d681SAndroid Build Coastguard Worker %res = sext <4 x i1> %cmp to <4 x i32> 449*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 450*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 451*9880d681SAndroid Build Coastguard Worker} 452*9880d681SAndroid Build Coastguard Worker 453*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpeq_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 454*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpeq_pd: 455*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 456*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpeqpd %xmm1, %xmm0 457*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 458*9880d681SAndroid Build Coastguard Worker; 459*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpeq_pd: 460*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 461*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpeqpd %xmm1, %xmm0 462*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 463*9880d681SAndroid Build Coastguard Worker %fcmp = fcmp oeq <2 x double> %a0, %a1 464*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %fcmp to <2 x i64> 465*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x i64> %sext to <2 x double> 466*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 467*9880d681SAndroid Build Coastguard Worker} 468*9880d681SAndroid Build Coastguard Worker 469*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpeq_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 470*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpeq_sd: 471*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 472*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpeqsd %xmm1, %xmm0 473*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 474*9880d681SAndroid Build Coastguard Worker; 475*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpeq_sd: 476*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 477*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpeqsd %xmm1, %xmm0 478*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 479*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 0) 480*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 481*9880d681SAndroid Build Coastguard Worker} 482*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double>, <2 x double>, i8) nounwind readnone 483*9880d681SAndroid Build Coastguard Worker 484*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpge_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 485*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpge_pd: 486*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 487*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmplepd %xmm0, %xmm1 488*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movapd %xmm1, %xmm0 489*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 490*9880d681SAndroid Build Coastguard Worker; 491*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpge_pd: 492*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 493*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmplepd %xmm0, %xmm1 494*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movapd %xmm1, %xmm0 495*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 496*9880d681SAndroid Build Coastguard Worker %fcmp = fcmp ole <2 x double> %a1, %a0 497*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %fcmp to <2 x i64> 498*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x i64> %sext to <2 x double> 499*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 500*9880d681SAndroid Build Coastguard Worker} 501*9880d681SAndroid Build Coastguard Worker 502*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpge_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 503*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpge_sd: 504*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 505*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmplesd %xmm0, %xmm1 506*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 507*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 508*9880d681SAndroid Build Coastguard Worker; 509*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpge_sd: 510*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 511*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmplesd %xmm0, %xmm1 512*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 513*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 514*9880d681SAndroid Build Coastguard Worker %cmp = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a1, <2 x double> %a0, i8 2) 515*9880d681SAndroid Build Coastguard Worker %ext0 = extractelement <2 x double> %cmp, i32 0 516*9880d681SAndroid Build Coastguard Worker %ins0 = insertelement <2 x double> undef, double %ext0, i32 0 517*9880d681SAndroid Build Coastguard Worker %ext1 = extractelement <2 x double> %a0, i32 1 518*9880d681SAndroid Build Coastguard Worker %ins1 = insertelement <2 x double> %ins0, double %ext1, i32 1 519*9880d681SAndroid Build Coastguard Worker ret <2 x double> %ins1 520*9880d681SAndroid Build Coastguard Worker} 521*9880d681SAndroid Build Coastguard Worker 522*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmpgt_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind { 523*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpgt_epi8: 524*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 525*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pcmpgtb %xmm1, %xmm0 526*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 527*9880d681SAndroid Build Coastguard Worker; 528*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpgt_epi8: 529*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 530*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pcmpgtb %xmm1, %xmm0 531*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 532*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 533*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 534*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt <16 x i8> %arg0, %arg1 535*9880d681SAndroid Build Coastguard Worker %res = sext <16 x i1> %cmp to <16 x i8> 536*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 537*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 538*9880d681SAndroid Build Coastguard Worker} 539*9880d681SAndroid Build Coastguard Worker 540*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmpgt_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind { 541*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpgt_epi16: 542*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 543*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pcmpgtw %xmm1, %xmm0 544*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 545*9880d681SAndroid Build Coastguard Worker; 546*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpgt_epi16: 547*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 548*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pcmpgtw %xmm1, %xmm0 549*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 550*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 551*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 552*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt <8 x i16> %arg0, %arg1 553*9880d681SAndroid Build Coastguard Worker %res = sext <8 x i1> %cmp to <8 x i16> 554*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 555*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 556*9880d681SAndroid Build Coastguard Worker} 557*9880d681SAndroid Build Coastguard Worker 558*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmpgt_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind { 559*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpgt_epi32: 560*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 561*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pcmpgtd %xmm1, %xmm0 562*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 563*9880d681SAndroid Build Coastguard Worker; 564*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpgt_epi32: 565*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 566*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pcmpgtd %xmm1, %xmm0 567*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 568*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 569*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 570*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt <4 x i32> %arg0, %arg1 571*9880d681SAndroid Build Coastguard Worker %res = sext <4 x i1> %cmp to <4 x i32> 572*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 573*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 574*9880d681SAndroid Build Coastguard Worker} 575*9880d681SAndroid Build Coastguard Worker 576*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpgt_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 577*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpgt_pd: 578*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 579*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpltpd %xmm0, %xmm1 580*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movapd %xmm1, %xmm0 581*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 582*9880d681SAndroid Build Coastguard Worker; 583*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpgt_pd: 584*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 585*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpltpd %xmm0, %xmm1 586*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movapd %xmm1, %xmm0 587*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 588*9880d681SAndroid Build Coastguard Worker %fcmp = fcmp olt <2 x double> %a1, %a0 589*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %fcmp to <2 x i64> 590*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x i64> %sext to <2 x double> 591*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 592*9880d681SAndroid Build Coastguard Worker} 593*9880d681SAndroid Build Coastguard Worker 594*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpgt_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 595*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpgt_sd: 596*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 597*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpltsd %xmm0, %xmm1 598*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 599*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 600*9880d681SAndroid Build Coastguard Worker; 601*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpgt_sd: 602*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 603*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpltsd %xmm0, %xmm1 604*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 605*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 606*9880d681SAndroid Build Coastguard Worker %cmp = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a1, <2 x double> %a0, i8 1) 607*9880d681SAndroid Build Coastguard Worker %ext0 = extractelement <2 x double> %cmp, i32 0 608*9880d681SAndroid Build Coastguard Worker %ins0 = insertelement <2 x double> undef, double %ext0, i32 0 609*9880d681SAndroid Build Coastguard Worker %ext1 = extractelement <2 x double> %a0, i32 1 610*9880d681SAndroid Build Coastguard Worker %ins1 = insertelement <2 x double> %ins0, double %ext1, i32 1 611*9880d681SAndroid Build Coastguard Worker ret <2 x double> %ins1 612*9880d681SAndroid Build Coastguard Worker} 613*9880d681SAndroid Build Coastguard Worker 614*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmple_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 615*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmple_pd: 616*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 617*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmplepd %xmm1, %xmm0 618*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 619*9880d681SAndroid Build Coastguard Worker; 620*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmple_pd: 621*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 622*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmplepd %xmm1, %xmm0 623*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 624*9880d681SAndroid Build Coastguard Worker %fcmp = fcmp ole <2 x double> %a0, %a1 625*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %fcmp to <2 x i64> 626*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x i64> %sext to <2 x double> 627*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 628*9880d681SAndroid Build Coastguard Worker} 629*9880d681SAndroid Build Coastguard Worker 630*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmple_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 631*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmple_sd: 632*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 633*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmplesd %xmm1, %xmm0 634*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 635*9880d681SAndroid Build Coastguard Worker; 636*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmple_sd: 637*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 638*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmplesd %xmm1, %xmm0 639*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 640*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 2) 641*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 642*9880d681SAndroid Build Coastguard Worker} 643*9880d681SAndroid Build Coastguard Worker 644*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmplt_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind { 645*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmplt_epi8: 646*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 647*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pcmpgtb %xmm0, %xmm1 648*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movdqa %xmm1, %xmm0 649*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 650*9880d681SAndroid Build Coastguard Worker; 651*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmplt_epi8: 652*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 653*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pcmpgtb %xmm0, %xmm1 654*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movdqa %xmm1, %xmm0 655*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 656*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 657*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 658*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt <16 x i8> %arg1, %arg0 659*9880d681SAndroid Build Coastguard Worker %res = sext <16 x i1> %cmp to <16 x i8> 660*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 661*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 662*9880d681SAndroid Build Coastguard Worker} 663*9880d681SAndroid Build Coastguard Worker 664*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmplt_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind { 665*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmplt_epi16: 666*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 667*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pcmpgtw %xmm0, %xmm1 668*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movdqa %xmm1, %xmm0 669*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 670*9880d681SAndroid Build Coastguard Worker; 671*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmplt_epi16: 672*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 673*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pcmpgtw %xmm0, %xmm1 674*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movdqa %xmm1, %xmm0 675*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 676*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 677*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 678*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt <8 x i16> %arg1, %arg0 679*9880d681SAndroid Build Coastguard Worker %res = sext <8 x i1> %cmp to <8 x i16> 680*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 681*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 682*9880d681SAndroid Build Coastguard Worker} 683*9880d681SAndroid Build Coastguard Worker 684*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmplt_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind { 685*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmplt_epi32: 686*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 687*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pcmpgtd %xmm0, %xmm1 688*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movdqa %xmm1, %xmm0 689*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 690*9880d681SAndroid Build Coastguard Worker; 691*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmplt_epi32: 692*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 693*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pcmpgtd %xmm0, %xmm1 694*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movdqa %xmm1, %xmm0 695*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 696*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 697*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 698*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt <4 x i32> %arg1, %arg0 699*9880d681SAndroid Build Coastguard Worker %res = sext <4 x i1> %cmp to <4 x i32> 700*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 701*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 702*9880d681SAndroid Build Coastguard Worker} 703*9880d681SAndroid Build Coastguard Worker 704*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmplt_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 705*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmplt_pd: 706*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 707*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpltpd %xmm1, %xmm0 708*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 709*9880d681SAndroid Build Coastguard Worker; 710*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmplt_pd: 711*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 712*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpltpd %xmm1, %xmm0 713*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 714*9880d681SAndroid Build Coastguard Worker %fcmp = fcmp olt <2 x double> %a0, %a1 715*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %fcmp to <2 x i64> 716*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x i64> %sext to <2 x double> 717*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 718*9880d681SAndroid Build Coastguard Worker} 719*9880d681SAndroid Build Coastguard Worker 720*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmplt_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 721*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmplt_sd: 722*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 723*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpltsd %xmm1, %xmm0 724*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 725*9880d681SAndroid Build Coastguard Worker; 726*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmplt_sd: 727*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 728*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpltsd %xmm1, %xmm0 729*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 730*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 1) 731*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 732*9880d681SAndroid Build Coastguard Worker} 733*9880d681SAndroid Build Coastguard Worker 734*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpneq_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 735*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpneq_pd: 736*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 737*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpneqpd %xmm1, %xmm0 738*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 739*9880d681SAndroid Build Coastguard Worker; 740*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpneq_pd: 741*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 742*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpneqpd %xmm1, %xmm0 743*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 744*9880d681SAndroid Build Coastguard Worker %fcmp = fcmp une <2 x double> %a0, %a1 745*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %fcmp to <2 x i64> 746*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x i64> %sext to <2 x double> 747*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 748*9880d681SAndroid Build Coastguard Worker} 749*9880d681SAndroid Build Coastguard Worker 750*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpneq_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 751*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpneq_sd: 752*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 753*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpneqsd %xmm1, %xmm0 754*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 755*9880d681SAndroid Build Coastguard Worker; 756*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpneq_sd: 757*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 758*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpneqsd %xmm1, %xmm0 759*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 760*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 4) 761*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 762*9880d681SAndroid Build Coastguard Worker} 763*9880d681SAndroid Build Coastguard Worker 764*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpnge_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 765*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpnge_pd: 766*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 767*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpnlepd %xmm0, %xmm1 768*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movapd %xmm1, %xmm0 769*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 770*9880d681SAndroid Build Coastguard Worker; 771*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpnge_pd: 772*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 773*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpnlepd %xmm0, %xmm1 774*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movapd %xmm1, %xmm0 775*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 776*9880d681SAndroid Build Coastguard Worker %fcmp = fcmp ugt <2 x double> %a1, %a0 777*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %fcmp to <2 x i64> 778*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x i64> %sext to <2 x double> 779*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 780*9880d681SAndroid Build Coastguard Worker} 781*9880d681SAndroid Build Coastguard Worker 782*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpnge_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 783*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpnge_sd: 784*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 785*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpnlesd %xmm0, %xmm1 786*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 787*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 788*9880d681SAndroid Build Coastguard Worker; 789*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpnge_sd: 790*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 791*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpnlesd %xmm0, %xmm1 792*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 793*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 794*9880d681SAndroid Build Coastguard Worker %cmp = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a1, <2 x double> %a0, i8 6) 795*9880d681SAndroid Build Coastguard Worker %ext0 = extractelement <2 x double> %cmp, i32 0 796*9880d681SAndroid Build Coastguard Worker %ins0 = insertelement <2 x double> undef, double %ext0, i32 0 797*9880d681SAndroid Build Coastguard Worker %ext1 = extractelement <2 x double> %a0, i32 1 798*9880d681SAndroid Build Coastguard Worker %ins1 = insertelement <2 x double> %ins0, double %ext1, i32 1 799*9880d681SAndroid Build Coastguard Worker ret <2 x double> %ins1 800*9880d681SAndroid Build Coastguard Worker} 801*9880d681SAndroid Build Coastguard Worker 802*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpngt_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 803*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpngt_pd: 804*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 805*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpnltpd %xmm0, %xmm1 806*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movapd %xmm1, %xmm0 807*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 808*9880d681SAndroid Build Coastguard Worker; 809*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpngt_pd: 810*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 811*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpnltpd %xmm0, %xmm1 812*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movapd %xmm1, %xmm0 813*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 814*9880d681SAndroid Build Coastguard Worker %fcmp = fcmp uge <2 x double> %a1, %a0 815*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %fcmp to <2 x i64> 816*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x i64> %sext to <2 x double> 817*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 818*9880d681SAndroid Build Coastguard Worker} 819*9880d681SAndroid Build Coastguard Worker 820*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpngt_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 821*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpngt_sd: 822*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 823*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpnltsd %xmm0, %xmm1 824*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 825*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 826*9880d681SAndroid Build Coastguard Worker; 827*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpngt_sd: 828*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 829*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpnltsd %xmm0, %xmm1 830*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 831*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 832*9880d681SAndroid Build Coastguard Worker %cmp = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a1, <2 x double> %a0, i8 5) 833*9880d681SAndroid Build Coastguard Worker %ext0 = extractelement <2 x double> %cmp, i32 0 834*9880d681SAndroid Build Coastguard Worker %ins0 = insertelement <2 x double> undef, double %ext0, i32 0 835*9880d681SAndroid Build Coastguard Worker %ext1 = extractelement <2 x double> %a0, i32 1 836*9880d681SAndroid Build Coastguard Worker %ins1 = insertelement <2 x double> %ins0, double %ext1, i32 1 837*9880d681SAndroid Build Coastguard Worker ret <2 x double> %ins1 838*9880d681SAndroid Build Coastguard Worker} 839*9880d681SAndroid Build Coastguard Worker 840*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpnle_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 841*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpnle_pd: 842*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 843*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpnlepd %xmm1, %xmm0 844*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 845*9880d681SAndroid Build Coastguard Worker; 846*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpnle_pd: 847*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 848*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpnlepd %xmm1, %xmm0 849*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 850*9880d681SAndroid Build Coastguard Worker %fcmp = fcmp ugt <2 x double> %a0, %a1 851*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %fcmp to <2 x i64> 852*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x i64> %sext to <2 x double> 853*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 854*9880d681SAndroid Build Coastguard Worker} 855*9880d681SAndroid Build Coastguard Worker 856*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpnle_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 857*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpnle_sd: 858*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 859*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpnlesd %xmm1, %xmm0 860*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 861*9880d681SAndroid Build Coastguard Worker; 862*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpnle_sd: 863*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 864*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpnlesd %xmm1, %xmm0 865*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 866*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 6) 867*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 868*9880d681SAndroid Build Coastguard Worker} 869*9880d681SAndroid Build Coastguard Worker 870*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpnlt_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 871*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpnlt_pd: 872*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 873*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpnltpd %xmm1, %xmm0 874*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 875*9880d681SAndroid Build Coastguard Worker; 876*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpnlt_pd: 877*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 878*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpnltpd %xmm1, %xmm0 879*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 880*9880d681SAndroid Build Coastguard Worker %fcmp = fcmp uge <2 x double> %a0, %a1 881*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %fcmp to <2 x i64> 882*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x i64> %sext to <2 x double> 883*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 884*9880d681SAndroid Build Coastguard Worker} 885*9880d681SAndroid Build Coastguard Worker 886*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpnlt_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 887*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpnlt_sd: 888*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 889*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpnltsd %xmm1, %xmm0 890*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 891*9880d681SAndroid Build Coastguard Worker; 892*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpnlt_sd: 893*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 894*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpnltsd %xmm1, %xmm0 895*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 896*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 5) 897*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 898*9880d681SAndroid Build Coastguard Worker} 899*9880d681SAndroid Build Coastguard Worker 900*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpord_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 901*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpord_pd: 902*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 903*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpordpd %xmm1, %xmm0 904*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 905*9880d681SAndroid Build Coastguard Worker; 906*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpord_pd: 907*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 908*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpordpd %xmm1, %xmm0 909*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 910*9880d681SAndroid Build Coastguard Worker %fcmp = fcmp ord <2 x double> %a0, %a1 911*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %fcmp to <2 x i64> 912*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x i64> %sext to <2 x double> 913*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 914*9880d681SAndroid Build Coastguard Worker} 915*9880d681SAndroid Build Coastguard Worker 916*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpord_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 917*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpord_sd: 918*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 919*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpordsd %xmm1, %xmm0 920*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 921*9880d681SAndroid Build Coastguard Worker; 922*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpord_sd: 923*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 924*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpordsd %xmm1, %xmm0 925*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 926*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 7) 927*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 928*9880d681SAndroid Build Coastguard Worker} 929*9880d681SAndroid Build Coastguard Worker 930*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpunord_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 931*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpunord_pd: 932*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 933*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpunordpd %xmm1, %xmm0 934*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 935*9880d681SAndroid Build Coastguard Worker; 936*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpunord_pd: 937*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 938*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpunordpd %xmm1, %xmm0 939*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 940*9880d681SAndroid Build Coastguard Worker %fcmp = fcmp uno <2 x double> %a0, %a1 941*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %fcmp to <2 x i64> 942*9880d681SAndroid Build Coastguard Worker %res = bitcast <2 x i64> %sext to <2 x double> 943*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 944*9880d681SAndroid Build Coastguard Worker} 945*9880d681SAndroid Build Coastguard Worker 946*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cmpunord_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 947*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmpunord_sd: 948*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 949*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cmpunordsd %xmm1, %xmm0 950*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 951*9880d681SAndroid Build Coastguard Worker; 952*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmpunord_sd: 953*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 954*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cmpunordsd %xmm1, %xmm0 955*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 956*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 3) 957*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 958*9880d681SAndroid Build Coastguard Worker} 959*9880d681SAndroid Build Coastguard Worker 960*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_comieq_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 961*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_comieq_sd: 962*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 963*9880d681SAndroid Build Coastguard Worker; X32-NEXT: comisd %xmm1, %xmm0 964*9880d681SAndroid Build Coastguard Worker; X32-NEXT: setnp %al 965*9880d681SAndroid Build Coastguard Worker; X32-NEXT: sete %cl 966*9880d681SAndroid Build Coastguard Worker; X32-NEXT: andb %al, %cl 967*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl %cl, %eax 968*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 969*9880d681SAndroid Build Coastguard Worker; 970*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_comieq_sd: 971*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 972*9880d681SAndroid Build Coastguard Worker; X64-NEXT: comisd %xmm1, %xmm0 973*9880d681SAndroid Build Coastguard Worker; X64-NEXT: setnp %al 974*9880d681SAndroid Build Coastguard Worker; X64-NEXT: sete %cl 975*9880d681SAndroid Build Coastguard Worker; X64-NEXT: andb %al, %cl 976*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %cl, %eax 977*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 978*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.comieq.sd(<2 x double> %a0, <2 x double> %a1) 979*9880d681SAndroid Build Coastguard Worker ret i32 %res 980*9880d681SAndroid Build Coastguard Worker} 981*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comieq.sd(<2 x double>, <2 x double>) nounwind readnone 982*9880d681SAndroid Build Coastguard Worker 983*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_comige_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 984*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_comige_sd: 985*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 986*9880d681SAndroid Build Coastguard Worker; X32-NEXT: xorl %eax, %eax 987*9880d681SAndroid Build Coastguard Worker; X32-NEXT: comisd %xmm1, %xmm0 988*9880d681SAndroid Build Coastguard Worker; X32-NEXT: setae %al 989*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 990*9880d681SAndroid Build Coastguard Worker; 991*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_comige_sd: 992*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 993*9880d681SAndroid Build Coastguard Worker; X64-NEXT: xorl %eax, %eax 994*9880d681SAndroid Build Coastguard Worker; X64-NEXT: comisd %xmm1, %xmm0 995*9880d681SAndroid Build Coastguard Worker; X64-NEXT: setae %al 996*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 997*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.comige.sd(<2 x double> %a0, <2 x double> %a1) 998*9880d681SAndroid Build Coastguard Worker ret i32 %res 999*9880d681SAndroid Build Coastguard Worker} 1000*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comige.sd(<2 x double>, <2 x double>) nounwind readnone 1001*9880d681SAndroid Build Coastguard Worker 1002*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_comigt_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 1003*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_comigt_sd: 1004*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1005*9880d681SAndroid Build Coastguard Worker; X32-NEXT: xorl %eax, %eax 1006*9880d681SAndroid Build Coastguard Worker; X32-NEXT: comisd %xmm1, %xmm0 1007*9880d681SAndroid Build Coastguard Worker; X32-NEXT: seta %al 1008*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1009*9880d681SAndroid Build Coastguard Worker; 1010*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_comigt_sd: 1011*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1012*9880d681SAndroid Build Coastguard Worker; X64-NEXT: xorl %eax, %eax 1013*9880d681SAndroid Build Coastguard Worker; X64-NEXT: comisd %xmm1, %xmm0 1014*9880d681SAndroid Build Coastguard Worker; X64-NEXT: seta %al 1015*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1016*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.comigt.sd(<2 x double> %a0, <2 x double> %a1) 1017*9880d681SAndroid Build Coastguard Worker ret i32 %res 1018*9880d681SAndroid Build Coastguard Worker} 1019*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comigt.sd(<2 x double>, <2 x double>) nounwind readnone 1020*9880d681SAndroid Build Coastguard Worker 1021*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_comile_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 1022*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_comile_sd: 1023*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1024*9880d681SAndroid Build Coastguard Worker; X32-NEXT: xorl %eax, %eax 1025*9880d681SAndroid Build Coastguard Worker; X32-NEXT: comisd %xmm0, %xmm1 1026*9880d681SAndroid Build Coastguard Worker; X32-NEXT: setae %al 1027*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1028*9880d681SAndroid Build Coastguard Worker; 1029*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_comile_sd: 1030*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1031*9880d681SAndroid Build Coastguard Worker; X64-NEXT: xorl %eax, %eax 1032*9880d681SAndroid Build Coastguard Worker; X64-NEXT: comisd %xmm0, %xmm1 1033*9880d681SAndroid Build Coastguard Worker; X64-NEXT: setae %al 1034*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1035*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.comile.sd(<2 x double> %a0, <2 x double> %a1) 1036*9880d681SAndroid Build Coastguard Worker ret i32 %res 1037*9880d681SAndroid Build Coastguard Worker} 1038*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comile.sd(<2 x double>, <2 x double>) nounwind readnone 1039*9880d681SAndroid Build Coastguard Worker 1040*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_comilt_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 1041*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_comilt_sd: 1042*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1043*9880d681SAndroid Build Coastguard Worker; X32-NEXT: xorl %eax, %eax 1044*9880d681SAndroid Build Coastguard Worker; X32-NEXT: comisd %xmm0, %xmm1 1045*9880d681SAndroid Build Coastguard Worker; X32-NEXT: seta %al 1046*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1047*9880d681SAndroid Build Coastguard Worker; 1048*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_comilt_sd: 1049*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1050*9880d681SAndroid Build Coastguard Worker; X64-NEXT: xorl %eax, %eax 1051*9880d681SAndroid Build Coastguard Worker; X64-NEXT: comisd %xmm0, %xmm1 1052*9880d681SAndroid Build Coastguard Worker; X64-NEXT: seta %al 1053*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1054*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.comilt.sd(<2 x double> %a0, <2 x double> %a1) 1055*9880d681SAndroid Build Coastguard Worker ret i32 %res 1056*9880d681SAndroid Build Coastguard Worker} 1057*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comilt.sd(<2 x double>, <2 x double>) nounwind readnone 1058*9880d681SAndroid Build Coastguard Worker 1059*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_comineq_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 1060*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_comineq_sd: 1061*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1062*9880d681SAndroid Build Coastguard Worker; X32-NEXT: comisd %xmm1, %xmm0 1063*9880d681SAndroid Build Coastguard Worker; X32-NEXT: setp %al 1064*9880d681SAndroid Build Coastguard Worker; X32-NEXT: setne %cl 1065*9880d681SAndroid Build Coastguard Worker; X32-NEXT: orb %al, %cl 1066*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl %cl, %eax 1067*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1068*9880d681SAndroid Build Coastguard Worker; 1069*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_comineq_sd: 1070*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1071*9880d681SAndroid Build Coastguard Worker; X64-NEXT: comisd %xmm1, %xmm0 1072*9880d681SAndroid Build Coastguard Worker; X64-NEXT: setp %al 1073*9880d681SAndroid Build Coastguard Worker; X64-NEXT: setne %cl 1074*9880d681SAndroid Build Coastguard Worker; X64-NEXT: orb %al, %cl 1075*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %cl, %eax 1076*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1077*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.comineq.sd(<2 x double> %a0, <2 x double> %a1) 1078*9880d681SAndroid Build Coastguard Worker ret i32 %res 1079*9880d681SAndroid Build Coastguard Worker} 1080*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comineq.sd(<2 x double>, <2 x double>) nounwind readnone 1081*9880d681SAndroid Build Coastguard Worker 1082*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cvtepi32_pd(<2 x i64> %a0) nounwind { 1083*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtepi32_pd: 1084*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1085*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cvtdq2pd %xmm0, %xmm0 1086*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1087*9880d681SAndroid Build Coastguard Worker; 1088*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtepi32_pd: 1089*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1090*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cvtdq2pd %xmm0, %xmm0 1091*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1092*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 1093*9880d681SAndroid Build Coastguard Worker %ext = shufflevector <4 x i32> %arg0, <4 x i32> %arg0, <2 x i32> <i32 0, i32 1> 1094*9880d681SAndroid Build Coastguard Worker %res = sitofp <2 x i32> %ext to <2 x double> 1095*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1096*9880d681SAndroid Build Coastguard Worker} 1097*9880d681SAndroid Build Coastguard Worker 1098*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_cvtepi32_ps(<2 x i64> %a0) nounwind { 1099*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtepi32_ps: 1100*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1101*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cvtdq2ps %xmm0, %xmm0 1102*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1103*9880d681SAndroid Build Coastguard Worker; 1104*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtepi32_ps: 1105*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1106*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cvtdq2ps %xmm0, %xmm0 1107*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1108*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 1109*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32> %arg0) 1110*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1111*9880d681SAndroid Build Coastguard Worker} 1112*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32>) nounwind readnone 1113*9880d681SAndroid Build Coastguard Worker 1114*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cvtpd_epi32(<2 x double> %a0) nounwind { 1115*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtpd_epi32: 1116*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1117*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cvtpd2dq %xmm0, %xmm0 1118*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1119*9880d681SAndroid Build Coastguard Worker; 1120*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtpd_epi32: 1121*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1122*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cvtpd2dq %xmm0, %xmm0 1123*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1124*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double> %a0) 1125*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 1126*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1127*9880d681SAndroid Build Coastguard Worker} 1128*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double>) nounwind readnone 1129*9880d681SAndroid Build Coastguard Worker 1130*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_cvtpd_ps(<2 x double> %a0) nounwind { 1131*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtpd_ps: 1132*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1133*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cvtpd2ps %xmm0, %xmm0 1134*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1135*9880d681SAndroid Build Coastguard Worker; 1136*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtpd_ps: 1137*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1138*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cvtpd2ps %xmm0, %xmm0 1139*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1140*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double> %a0) 1141*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1142*9880d681SAndroid Build Coastguard Worker} 1143*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double>) nounwind readnone 1144*9880d681SAndroid Build Coastguard Worker 1145*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cvtps_epi32(<4 x float> %a0) nounwind { 1146*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtps_epi32: 1147*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1148*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cvtps2dq %xmm0, %xmm0 1149*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1150*9880d681SAndroid Build Coastguard Worker; 1151*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtps_epi32: 1152*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1153*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cvtps2dq %xmm0, %xmm0 1154*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1155*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %a0) 1156*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 1157*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1158*9880d681SAndroid Build Coastguard Worker} 1159*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float>) nounwind readnone 1160*9880d681SAndroid Build Coastguard Worker 1161*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cvtps_pd(<4 x float> %a0) nounwind { 1162*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtps_pd: 1163*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1164*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cvtps2pd %xmm0, %xmm0 1165*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1166*9880d681SAndroid Build Coastguard Worker; 1167*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtps_pd: 1168*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1169*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cvtps2pd %xmm0, %xmm0 1170*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1171*9880d681SAndroid Build Coastguard Worker %ext = shufflevector <4 x float> %a0, <4 x float> %a0, <2 x i32> <i32 0, i32 1> 1172*9880d681SAndroid Build Coastguard Worker %res = fpext <2 x float> %ext to <2 x double> 1173*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1174*9880d681SAndroid Build Coastguard Worker} 1175*9880d681SAndroid Build Coastguard Worker 1176*9880d681SAndroid Build Coastguard Workerdefine double @test_mm_cvtsd_f64(<2 x double> %a0) nounwind { 1177*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtsd_f64: 1178*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1179*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pushl %ebp 1180*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl %esp, %ebp 1181*9880d681SAndroid Build Coastguard Worker; X32-NEXT: andl $-8, %esp 1182*9880d681SAndroid Build Coastguard Worker; X32-NEXT: subl $8, %esp 1183*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movlps %xmm0, (%esp) 1184*9880d681SAndroid Build Coastguard Worker; X32-NEXT: fldl (%esp) 1185*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl %ebp, %esp 1186*9880d681SAndroid Build Coastguard Worker; X32-NEXT: popl %ebp 1187*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1188*9880d681SAndroid Build Coastguard Worker; 1189*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtsd_f64: 1190*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1191*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1192*9880d681SAndroid Build Coastguard Worker %res = extractelement <2 x double> %a0, i32 0 1193*9880d681SAndroid Build Coastguard Worker ret double %res 1194*9880d681SAndroid Build Coastguard Worker} 1195*9880d681SAndroid Build Coastguard Worker 1196*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_cvtsd_si32(<2 x double> %a0) nounwind { 1197*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtsd_si32: 1198*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1199*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cvtsd2si %xmm0, %eax 1200*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1201*9880d681SAndroid Build Coastguard Worker; 1202*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtsd_si32: 1203*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1204*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cvtsd2si %xmm0, %eax 1205*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1206*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %a0) 1207*9880d681SAndroid Build Coastguard Worker ret i32 %res 1208*9880d681SAndroid Build Coastguard Worker} 1209*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.cvtsd2si(<2 x double>) nounwind readnone 1210*9880d681SAndroid Build Coastguard Worker 1211*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_cvtsi128_si32(<2 x i64> %a0) nounwind { 1212*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtsi128_si32: 1213*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1214*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %xmm0, %eax 1215*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1216*9880d681SAndroid Build Coastguard Worker; 1217*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtsi128_si32: 1218*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1219*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %xmm0, %eax 1220*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1221*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 1222*9880d681SAndroid Build Coastguard Worker %res = extractelement <4 x i32> %arg0, i32 0 1223*9880d681SAndroid Build Coastguard Worker ret i32 %res 1224*9880d681SAndroid Build Coastguard Worker} 1225*9880d681SAndroid Build Coastguard Worker 1226*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cvtsi32_sd(<2 x double> %a0, i32 %a1) nounwind { 1227*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtsi32_sd: 1228*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1229*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 1230*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cvtsi2sdl %eax, %xmm1 1231*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 1232*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1233*9880d681SAndroid Build Coastguard Worker; 1234*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtsi32_sd: 1235*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1236*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cvtsi2sdl %edi, %xmm1 1237*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 1238*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1239*9880d681SAndroid Build Coastguard Worker %cvt = sitofp i32 %a1 to double 1240*9880d681SAndroid Build Coastguard Worker %res = insertelement <2 x double> %a0, double %cvt, i32 0 1241*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1242*9880d681SAndroid Build Coastguard Worker} 1243*9880d681SAndroid Build Coastguard Worker 1244*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cvtsi32_si128(i32 %a0) nounwind { 1245*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtsi32_si128: 1246*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1247*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 1248*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1249*9880d681SAndroid Build Coastguard Worker; 1250*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtsi32_si128: 1251*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1252*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %edi, %xmm0 1253*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1254*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <4 x i32> undef, i32 %a0, i32 0 1255*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <4 x i32> %res0, i32 0, i32 1 1256*9880d681SAndroid Build Coastguard Worker %res2 = insertelement <4 x i32> %res1, i32 0, i32 2 1257*9880d681SAndroid Build Coastguard Worker %res3 = insertelement <4 x i32> %res2, i32 0, i32 3 1258*9880d681SAndroid Build Coastguard Worker %res = bitcast <4 x i32> %res3 to <2 x i64> 1259*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 1260*9880d681SAndroid Build Coastguard Worker} 1261*9880d681SAndroid Build Coastguard Worker 1262*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_cvtss_sd(<2 x double> %a0, <4 x float> %a1) nounwind { 1263*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvtss_sd: 1264*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1265*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cvtss2sd %xmm1, %xmm1 1266*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 1267*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1268*9880d681SAndroid Build Coastguard Worker; 1269*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvtss_sd: 1270*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1271*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cvtss2sd %xmm1, %xmm1 1272*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 1273*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1274*9880d681SAndroid Build Coastguard Worker %ext = extractelement <4 x float> %a1, i32 0 1275*9880d681SAndroid Build Coastguard Worker %cvt = fpext float %ext to double 1276*9880d681SAndroid Build Coastguard Worker %res = insertelement <2 x double> %a0, double %cvt, i32 0 1277*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1278*9880d681SAndroid Build Coastguard Worker} 1279*9880d681SAndroid Build Coastguard Worker 1280*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cvttpd_epi32(<2 x double> %a0) nounwind { 1281*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvttpd_epi32: 1282*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1283*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cvttpd2dq %xmm0, %xmm0 1284*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1285*9880d681SAndroid Build Coastguard Worker; 1286*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvttpd_epi32: 1287*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1288*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cvttpd2dq %xmm0, %xmm0 1289*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1290*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double> %a0) 1291*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 1292*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1293*9880d681SAndroid Build Coastguard Worker} 1294*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double>) nounwind readnone 1295*9880d681SAndroid Build Coastguard Worker 1296*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cvttps_epi32(<4 x float> %a0) nounwind { 1297*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvttps_epi32: 1298*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1299*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cvttps2dq %xmm0, %xmm0 1300*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1301*9880d681SAndroid Build Coastguard Worker; 1302*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvttps_epi32: 1303*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1304*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cvttps2dq %xmm0, %xmm0 1305*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1306*9880d681SAndroid Build Coastguard Worker %res = fptosi <4 x float> %a0 to <4 x i32> 1307*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 1308*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1309*9880d681SAndroid Build Coastguard Worker} 1310*9880d681SAndroid Build Coastguard Worker 1311*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_cvttsd_si32(<2 x double> %a0) nounwind { 1312*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cvttsd_si32: 1313*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1314*9880d681SAndroid Build Coastguard Worker; X32-NEXT: cvttsd2si %xmm0, %eax 1315*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1316*9880d681SAndroid Build Coastguard Worker; 1317*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cvttsd_si32: 1318*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1319*9880d681SAndroid Build Coastguard Worker; X64-NEXT: cvttsd2si %xmm0, %eax 1320*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1321*9880d681SAndroid Build Coastguard Worker %ext = extractelement <2 x double> %a0, i32 0 1322*9880d681SAndroid Build Coastguard Worker %res = fptosi double %ext to i32 1323*9880d681SAndroid Build Coastguard Worker ret i32 %res 1324*9880d681SAndroid Build Coastguard Worker} 1325*9880d681SAndroid Build Coastguard Worker 1326*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_div_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 1327*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_div_pd: 1328*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1329*9880d681SAndroid Build Coastguard Worker; X32-NEXT: divpd %xmm1, %xmm0 1330*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1331*9880d681SAndroid Build Coastguard Worker; 1332*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_div_pd: 1333*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1334*9880d681SAndroid Build Coastguard Worker; X64-NEXT: divpd %xmm1, %xmm0 1335*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1336*9880d681SAndroid Build Coastguard Worker %res = fdiv <2 x double> %a0, %a1 1337*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1338*9880d681SAndroid Build Coastguard Worker} 1339*9880d681SAndroid Build Coastguard Worker 1340*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_div_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 1341*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_div_sd: 1342*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1343*9880d681SAndroid Build Coastguard Worker; X32-NEXT: divsd %xmm1, %xmm0 1344*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1345*9880d681SAndroid Build Coastguard Worker; 1346*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_div_sd: 1347*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1348*9880d681SAndroid Build Coastguard Worker; X64-NEXT: divsd %xmm1, %xmm0 1349*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1350*9880d681SAndroid Build Coastguard Worker %ext0 = extractelement <2 x double> %a0, i32 0 1351*9880d681SAndroid Build Coastguard Worker %ext1 = extractelement <2 x double> %a1, i32 0 1352*9880d681SAndroid Build Coastguard Worker %fdiv = fdiv double %ext0, %ext1 1353*9880d681SAndroid Build Coastguard Worker %res = insertelement <2 x double> %a0, double %fdiv, i32 0 1354*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1355*9880d681SAndroid Build Coastguard Worker} 1356*9880d681SAndroid Build Coastguard Worker 1357*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_extract_epi16(<2 x i64> %a0) nounwind { 1358*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_extract_epi16: 1359*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1360*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pextrw $1, %xmm0, %eax 1361*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzwl %ax, %eax 1362*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1363*9880d681SAndroid Build Coastguard Worker; 1364*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_extract_epi16: 1365*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1366*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pextrw $1, %xmm0, %eax 1367*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzwl %ax, %eax 1368*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1369*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 1370*9880d681SAndroid Build Coastguard Worker %ext = extractelement <8 x i16> %arg0, i32 1 1371*9880d681SAndroid Build Coastguard Worker %res = zext i16 %ext to i32 1372*9880d681SAndroid Build Coastguard Worker ret i32 %res 1373*9880d681SAndroid Build Coastguard Worker} 1374*9880d681SAndroid Build Coastguard Worker 1375*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_insert_epi16(<2 x i64> %a0, i16 %a1) nounwind { 1376*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_insert_epi16: 1377*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1378*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 1379*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pinsrw $1, %eax, %xmm0 1380*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1381*9880d681SAndroid Build Coastguard Worker; 1382*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_insert_epi16: 1383*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1384*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pinsrw $1, %edi, %xmm0 1385*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1386*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 1387*9880d681SAndroid Build Coastguard Worker %res = insertelement <8 x i16> %arg0, i16 %a1,i32 1 1388*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 1389*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1390*9880d681SAndroid Build Coastguard Worker} 1391*9880d681SAndroid Build Coastguard Worker 1392*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_lfence() nounwind { 1393*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_lfence: 1394*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1395*9880d681SAndroid Build Coastguard Worker; X32-NEXT: lfence 1396*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1397*9880d681SAndroid Build Coastguard Worker; 1398*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_lfence: 1399*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1400*9880d681SAndroid Build Coastguard Worker; X64-NEXT: lfence 1401*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1402*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.sse2.lfence() 1403*9880d681SAndroid Build Coastguard Worker ret void 1404*9880d681SAndroid Build Coastguard Worker} 1405*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.lfence() nounwind readnone 1406*9880d681SAndroid Build Coastguard Worker 1407*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_load_pd(double* %a0) nounwind { 1408*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_load_pd: 1409*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1410*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 1411*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movaps (%eax), %xmm0 1412*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1413*9880d681SAndroid Build Coastguard Worker; 1414*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_load_pd: 1415*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1416*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movaps (%rdi), %xmm0 1417*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1418*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast double* %a0 to <2 x double>* 1419*9880d681SAndroid Build Coastguard Worker %res = load <2 x double>, <2 x double>* %arg0, align 16 1420*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1421*9880d681SAndroid Build Coastguard Worker} 1422*9880d681SAndroid Build Coastguard Worker 1423*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_load_sd(double* %a0) nounwind { 1424*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_load_sd: 1425*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1426*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 1427*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero 1428*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1429*9880d681SAndroid Build Coastguard Worker; 1430*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_load_sd: 1431*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1432*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero 1433*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1434*9880d681SAndroid Build Coastguard Worker %ld = load double, double* %a0, align 1 1435*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <2 x double> undef, double %ld, i32 0 1436*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <2 x double> %res0, double 0.0, i32 1 1437*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res1 1438*9880d681SAndroid Build Coastguard Worker} 1439*9880d681SAndroid Build Coastguard Worker 1440*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_load_si128(<2 x i64>* %a0) nounwind { 1441*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_load_si128: 1442*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1443*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 1444*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movaps (%eax), %xmm0 1445*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1446*9880d681SAndroid Build Coastguard Worker; 1447*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_load_si128: 1448*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1449*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movaps (%rdi), %xmm0 1450*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1451*9880d681SAndroid Build Coastguard Worker %res = load <2 x i64>, <2 x i64>* %a0, align 16 1452*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 1453*9880d681SAndroid Build Coastguard Worker} 1454*9880d681SAndroid Build Coastguard Worker 1455*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_load1_pd(double* %a0) nounwind { 1456*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_load1_pd: 1457*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1458*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 1459*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero 1460*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0,0] 1461*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1462*9880d681SAndroid Build Coastguard Worker; 1463*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_load1_pd: 1464*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1465*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero 1466*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0,0] 1467*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1468*9880d681SAndroid Build Coastguard Worker %ld = load double, double* %a0, align 8 1469*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <2 x double> undef, double %ld, i32 0 1470*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <2 x double> %res0, double %ld, i32 1 1471*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res1 1472*9880d681SAndroid Build Coastguard Worker} 1473*9880d681SAndroid Build Coastguard Worker 1474*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_loadh_pd(<2 x double> %a0, double* %a1) nounwind { 1475*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_loadh_pd: 1476*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1477*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 1478*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movhpd {{.*#+}} xmm0 = xmm0[0],mem[0] 1479*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1480*9880d681SAndroid Build Coastguard Worker; 1481*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_loadh_pd: 1482*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1483*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movhpd {{.*#+}} xmm0 = xmm0[0],mem[0] 1484*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1485*9880d681SAndroid Build Coastguard Worker %ld = load double, double* %a1, align 8 1486*9880d681SAndroid Build Coastguard Worker %res = insertelement <2 x double> %a0, double %ld, i32 1 1487*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1488*9880d681SAndroid Build Coastguard Worker} 1489*9880d681SAndroid Build Coastguard Worker 1490*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_loadl_epi64(<2 x i64> %a0, <2 x i64>* %a1) nounwind { 1491*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_loadl_epi64: 1492*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1493*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 1494*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 1495*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1496*9880d681SAndroid Build Coastguard Worker; 1497*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_loadl_epi64: 1498*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1499*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movq {{.*#+}} xmm0 = mem[0],zero 1500*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1501*9880d681SAndroid Build Coastguard Worker %bc = bitcast <2 x i64>* %a1 to i64* 1502*9880d681SAndroid Build Coastguard Worker %ld = load i64, i64* %bc, align 1 1503*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <2 x i64> undef, i64 %ld, i32 0 1504*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <2 x i64> %res0, i64 0, i32 1 1505*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res1 1506*9880d681SAndroid Build Coastguard Worker} 1507*9880d681SAndroid Build Coastguard Worker 1508*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_loadl_pd(<2 x double> %a0, double* %a1) nounwind { 1509*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_loadl_pd: 1510*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1511*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 1512*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movlpd {{.*#+}} xmm0 = mem[0],xmm0[1] 1513*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1514*9880d681SAndroid Build Coastguard Worker; 1515*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_loadl_pd: 1516*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1517*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movlpd {{.*#+}} xmm0 = mem[0],xmm0[1] 1518*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1519*9880d681SAndroid Build Coastguard Worker %ld = load double, double* %a1, align 8 1520*9880d681SAndroid Build Coastguard Worker %res = insertelement <2 x double> %a0, double %ld, i32 0 1521*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1522*9880d681SAndroid Build Coastguard Worker} 1523*9880d681SAndroid Build Coastguard Worker 1524*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_loadr_pd(double* %a0) nounwind { 1525*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_loadr_pd: 1526*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1527*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 1528*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movapd (%eax), %xmm0 1529*9880d681SAndroid Build Coastguard Worker; X32-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] 1530*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1531*9880d681SAndroid Build Coastguard Worker; 1532*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_loadr_pd: 1533*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1534*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movapd (%rdi), %xmm0 1535*9880d681SAndroid Build Coastguard Worker; X64-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] 1536*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1537*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast double* %a0 to <2 x double>* 1538*9880d681SAndroid Build Coastguard Worker %ld = load <2 x double>, <2 x double>* %arg0, align 16 1539*9880d681SAndroid Build Coastguard Worker %res = shufflevector <2 x double> %ld, <2 x double> undef, <2 x i32> <i32 1, i32 0> 1540*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1541*9880d681SAndroid Build Coastguard Worker} 1542*9880d681SAndroid Build Coastguard Worker 1543*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_loadu_pd(double* %a0) nounwind { 1544*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_loadu_pd: 1545*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1546*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 1547*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movups (%eax), %xmm0 1548*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1549*9880d681SAndroid Build Coastguard Worker; 1550*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_loadu_pd: 1551*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1552*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movups (%rdi), %xmm0 1553*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1554*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast double* %a0 to <2 x double>* 1555*9880d681SAndroid Build Coastguard Worker %res = load <2 x double>, <2 x double>* %arg0, align 1 1556*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1557*9880d681SAndroid Build Coastguard Worker} 1558*9880d681SAndroid Build Coastguard Worker 1559*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_loadu_si128(<2 x i64>* %a0) nounwind { 1560*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_loadu_si128: 1561*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1562*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 1563*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movups (%eax), %xmm0 1564*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1565*9880d681SAndroid Build Coastguard Worker; 1566*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_loadu_si128: 1567*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1568*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movups (%rdi), %xmm0 1569*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1570*9880d681SAndroid Build Coastguard Worker %res = load <2 x i64>, <2 x i64>* %a0, align 1 1571*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 1572*9880d681SAndroid Build Coastguard Worker} 1573*9880d681SAndroid Build Coastguard Worker 1574*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_madd_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind { 1575*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_madd_epi16: 1576*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1577*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pmaddwd %xmm1, %xmm0 1578*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1579*9880d681SAndroid Build Coastguard Worker; 1580*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_madd_epi16: 1581*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1582*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pmaddwd %xmm1, %xmm0 1583*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1584*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 1585*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 1586*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16> %arg0, <8 x i16> %arg1) 1587*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 1588*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1589*9880d681SAndroid Build Coastguard Worker} 1590*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16>, <8 x i16>) nounwind readnone 1591*9880d681SAndroid Build Coastguard Worker 1592*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_maskmoveu_si128(<2 x i64> %a0, <2 x i64> %a1, i8* %a2) nounwind { 1593*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maskmoveu_si128: 1594*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1595*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pushl %edi 1596*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %edi 1597*9880d681SAndroid Build Coastguard Worker; X32-NEXT: maskmovdqu %xmm1, %xmm0 1598*9880d681SAndroid Build Coastguard Worker; X32-NEXT: popl %edi 1599*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1600*9880d681SAndroid Build Coastguard Worker; 1601*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maskmoveu_si128: 1602*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1603*9880d681SAndroid Build Coastguard Worker; X64-NEXT: maskmovdqu %xmm1, %xmm0 1604*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1605*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 1606*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 1607*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.sse2.maskmov.dqu(<16 x i8> %arg0, <16 x i8> %arg1, i8* %a2) 1608*9880d681SAndroid Build Coastguard Worker ret void 1609*9880d681SAndroid Build Coastguard Worker} 1610*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.maskmov.dqu(<16 x i8>, <16 x i8>, i8*) nounwind 1611*9880d681SAndroid Build Coastguard Worker 1612*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_max_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind { 1613*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_max_epi16: 1614*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1615*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pmaxsw %xmm1, %xmm0 1616*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1617*9880d681SAndroid Build Coastguard Worker; 1618*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_max_epi16: 1619*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1620*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pmaxsw %xmm1, %xmm0 1621*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1622*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 1623*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 1624*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt <8 x i16> %arg0, %arg1 1625*9880d681SAndroid Build Coastguard Worker %sel = select <8 x i1> %cmp, <8 x i16> %arg0, <8 x i16> %arg1 1626*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %sel to <2 x i64> 1627*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1628*9880d681SAndroid Build Coastguard Worker} 1629*9880d681SAndroid Build Coastguard Worker 1630*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_max_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind { 1631*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_max_epu8: 1632*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1633*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pmaxub %xmm1, %xmm0 1634*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1635*9880d681SAndroid Build Coastguard Worker; 1636*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_max_epu8: 1637*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1638*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pmaxub %xmm1, %xmm0 1639*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1640*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 1641*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 1642*9880d681SAndroid Build Coastguard Worker %cmp = icmp ugt <16 x i8> %arg0, %arg1 1643*9880d681SAndroid Build Coastguard Worker %sel = select <16 x i1> %cmp, <16 x i8> %arg0, <16 x i8> %arg1 1644*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %sel to <2 x i64> 1645*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1646*9880d681SAndroid Build Coastguard Worker} 1647*9880d681SAndroid Build Coastguard Worker 1648*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_max_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 1649*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_max_pd: 1650*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1651*9880d681SAndroid Build Coastguard Worker; X32-NEXT: maxpd %xmm1, %xmm0 1652*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1653*9880d681SAndroid Build Coastguard Worker; 1654*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_max_pd: 1655*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1656*9880d681SAndroid Build Coastguard Worker; X64-NEXT: maxpd %xmm1, %xmm0 1657*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1658*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.max.pd(<2 x double> %a0, <2 x double> %a1) 1659*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1660*9880d681SAndroid Build Coastguard Worker} 1661*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.max.pd(<2 x double>, <2 x double>) nounwind readnone 1662*9880d681SAndroid Build Coastguard Worker 1663*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_max_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 1664*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_max_sd: 1665*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1666*9880d681SAndroid Build Coastguard Worker; X32-NEXT: maxsd %xmm1, %xmm0 1667*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1668*9880d681SAndroid Build Coastguard Worker; 1669*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_max_sd: 1670*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1671*9880d681SAndroid Build Coastguard Worker; X64-NEXT: maxsd %xmm1, %xmm0 1672*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1673*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> %a0, <2 x double> %a1) 1674*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1675*9880d681SAndroid Build Coastguard Worker} 1676*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.max.sd(<2 x double>, <2 x double>) nounwind readnone 1677*9880d681SAndroid Build Coastguard Worker 1678*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_mfence() nounwind { 1679*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mfence: 1680*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1681*9880d681SAndroid Build Coastguard Worker; X32-NEXT: mfence 1682*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1683*9880d681SAndroid Build Coastguard Worker; 1684*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mfence: 1685*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1686*9880d681SAndroid Build Coastguard Worker; X64-NEXT: mfence 1687*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1688*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.sse2.mfence() 1689*9880d681SAndroid Build Coastguard Worker ret void 1690*9880d681SAndroid Build Coastguard Worker} 1691*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.mfence() nounwind readnone 1692*9880d681SAndroid Build Coastguard Worker 1693*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_min_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind { 1694*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_min_epi16: 1695*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1696*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pminsw %xmm1, %xmm0 1697*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1698*9880d681SAndroid Build Coastguard Worker; 1699*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_min_epi16: 1700*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1701*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pminsw %xmm1, %xmm0 1702*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1703*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 1704*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 1705*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt <8 x i16> %arg0, %arg1 1706*9880d681SAndroid Build Coastguard Worker %sel = select <8 x i1> %cmp, <8 x i16> %arg0, <8 x i16> %arg1 1707*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %sel to <2 x i64> 1708*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1709*9880d681SAndroid Build Coastguard Worker} 1710*9880d681SAndroid Build Coastguard Worker 1711*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_min_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind { 1712*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_min_epu8: 1713*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1714*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pminub %xmm1, %xmm0 1715*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1716*9880d681SAndroid Build Coastguard Worker; 1717*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_min_epu8: 1718*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1719*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pminub %xmm1, %xmm0 1720*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1721*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 1722*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 1723*9880d681SAndroid Build Coastguard Worker %cmp = icmp ult <16 x i8> %arg0, %arg1 1724*9880d681SAndroid Build Coastguard Worker %sel = select <16 x i1> %cmp, <16 x i8> %arg0, <16 x i8> %arg1 1725*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %sel to <2 x i64> 1726*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1727*9880d681SAndroid Build Coastguard Worker} 1728*9880d681SAndroid Build Coastguard Worker 1729*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_min_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 1730*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_min_pd: 1731*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1732*9880d681SAndroid Build Coastguard Worker; X32-NEXT: minpd %xmm1, %xmm0 1733*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1734*9880d681SAndroid Build Coastguard Worker; 1735*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_min_pd: 1736*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1737*9880d681SAndroid Build Coastguard Worker; X64-NEXT: minpd %xmm1, %xmm0 1738*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1739*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.min.pd(<2 x double> %a0, <2 x double> %a1) 1740*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1741*9880d681SAndroid Build Coastguard Worker} 1742*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.min.pd(<2 x double>, <2 x double>) nounwind readnone 1743*9880d681SAndroid Build Coastguard Worker 1744*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_min_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 1745*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_min_sd: 1746*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1747*9880d681SAndroid Build Coastguard Worker; X32-NEXT: minsd %xmm1, %xmm0 1748*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1749*9880d681SAndroid Build Coastguard Worker; 1750*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_min_sd: 1751*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1752*9880d681SAndroid Build Coastguard Worker; X64-NEXT: minsd %xmm1, %xmm0 1753*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1754*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> %a0, <2 x double> %a1) 1755*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1756*9880d681SAndroid Build Coastguard Worker} 1757*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.min.sd(<2 x double>, <2 x double>) nounwind readnone 1758*9880d681SAndroid Build Coastguard Worker 1759*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_move_epi64(<2 x i64> %a0) nounwind { 1760*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_move_epi64: 1761*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1762*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movq {{.*#+}} xmm0 = xmm0[0],zero 1763*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1764*9880d681SAndroid Build Coastguard Worker; 1765*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_move_epi64: 1766*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1767*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movq {{.*#+}} xmm0 = xmm0[0],zero 1768*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1769*9880d681SAndroid Build Coastguard Worker %res = shufflevector <2 x i64> %a0, <2 x i64> zeroinitializer, <2 x i32> <i32 0, i32 2> 1770*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 1771*9880d681SAndroid Build Coastguard Worker} 1772*9880d681SAndroid Build Coastguard Worker 1773*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_move_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 1774*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_move_sd: 1775*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1776*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 1777*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1778*9880d681SAndroid Build Coastguard Worker; 1779*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_move_sd: 1780*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1781*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 1782*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1783*9880d681SAndroid Build Coastguard Worker %ext0 = extractelement <2 x double> %a1, i32 0 1784*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <2 x double> undef, double %ext0, i32 0 1785*9880d681SAndroid Build Coastguard Worker %ext1 = extractelement <2 x double> %a0, i32 1 1786*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <2 x double> %res0, double %ext1, i32 1 1787*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res1 1788*9880d681SAndroid Build Coastguard Worker} 1789*9880d681SAndroid Build Coastguard Worker 1790*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_movemask_epi8(<2 x i64> %a0) nounwind { 1791*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_movemask_epi8: 1792*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1793*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pmovmskb %xmm0, %eax 1794*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1795*9880d681SAndroid Build Coastguard Worker; 1796*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_movemask_epi8: 1797*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1798*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pmovmskb %xmm0, %eax 1799*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1800*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 1801*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8> %arg0) 1802*9880d681SAndroid Build Coastguard Worker ret i32 %res 1803*9880d681SAndroid Build Coastguard Worker} 1804*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8>) nounwind readnone 1805*9880d681SAndroid Build Coastguard Worker 1806*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_movemask_pd(<2 x double> %a0) nounwind { 1807*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_movemask_pd: 1808*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1809*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movmskpd %xmm0, %eax 1810*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1811*9880d681SAndroid Build Coastguard Worker; 1812*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_movemask_pd: 1813*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1814*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movmskpd %xmm0, %eax 1815*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1816*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.movmsk.pd(<2 x double> %a0) 1817*9880d681SAndroid Build Coastguard Worker ret i32 %res 1818*9880d681SAndroid Build Coastguard Worker} 1819*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.movmsk.pd(<2 x double>) nounwind readnone 1820*9880d681SAndroid Build Coastguard Worker 1821*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_mul_epu32(<2 x i64> %a0, <2 x i64> %a1) { 1822*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mul_epu32: 1823*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1824*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pmuludq %xmm1, %xmm0 1825*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1826*9880d681SAndroid Build Coastguard Worker; 1827*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mul_epu32: 1828*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1829*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pmuludq %xmm1, %xmm0 1830*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1831*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 1832*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 1833*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32> %arg0, <4 x i32> %arg1) 1834*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 1835*9880d681SAndroid Build Coastguard Worker} 1836*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32>, <4 x i32>) nounwind readnone 1837*9880d681SAndroid Build Coastguard Worker 1838*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_mul_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 1839*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mul_pd: 1840*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1841*9880d681SAndroid Build Coastguard Worker; X32-NEXT: mulpd %xmm1, %xmm0 1842*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1843*9880d681SAndroid Build Coastguard Worker; 1844*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mul_pd: 1845*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1846*9880d681SAndroid Build Coastguard Worker; X64-NEXT: mulpd %xmm1, %xmm0 1847*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1848*9880d681SAndroid Build Coastguard Worker %res = fmul <2 x double> %a0, %a1 1849*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1850*9880d681SAndroid Build Coastguard Worker} 1851*9880d681SAndroid Build Coastguard Worker 1852*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_mul_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 1853*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mul_sd: 1854*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1855*9880d681SAndroid Build Coastguard Worker; X32-NEXT: mulsd %xmm1, %xmm0 1856*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1857*9880d681SAndroid Build Coastguard Worker; 1858*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mul_sd: 1859*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1860*9880d681SAndroid Build Coastguard Worker; X64-NEXT: mulsd %xmm1, %xmm0 1861*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1862*9880d681SAndroid Build Coastguard Worker %ext0 = extractelement <2 x double> %a0, i32 0 1863*9880d681SAndroid Build Coastguard Worker %ext1 = extractelement <2 x double> %a1, i32 0 1864*9880d681SAndroid Build Coastguard Worker %fmul = fmul double %ext0, %ext1 1865*9880d681SAndroid Build Coastguard Worker %res = insertelement <2 x double> %a0, double %fmul, i32 0 1866*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1867*9880d681SAndroid Build Coastguard Worker} 1868*9880d681SAndroid Build Coastguard Worker 1869*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_mulhi_epi16(<2 x i64> %a0, <2 x i64> %a1) { 1870*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mulhi_epi16: 1871*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1872*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pmulhw %xmm1, %xmm0 1873*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1874*9880d681SAndroid Build Coastguard Worker; 1875*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mulhi_epi16: 1876*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1877*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pmulhw %xmm1, %xmm0 1878*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1879*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 1880*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 1881*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16> %arg0, <8 x i16> %arg1) 1882*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 1883*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1884*9880d681SAndroid Build Coastguard Worker} 1885*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16>, <8 x i16>) nounwind readnone 1886*9880d681SAndroid Build Coastguard Worker 1887*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_mulhi_epu16(<2 x i64> %a0, <2 x i64> %a1) { 1888*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mulhi_epu16: 1889*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1890*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pmulhuw %xmm1, %xmm0 1891*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1892*9880d681SAndroid Build Coastguard Worker; 1893*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mulhi_epu16: 1894*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1895*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pmulhuw %xmm1, %xmm0 1896*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1897*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 1898*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 1899*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16> %arg0, <8 x i16> %arg1) 1900*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 1901*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1902*9880d681SAndroid Build Coastguard Worker} 1903*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16>, <8 x i16>) nounwind readnone 1904*9880d681SAndroid Build Coastguard Worker 1905*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_mullo_epi16(<2 x i64> %a0, <2 x i64> %a1) { 1906*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mullo_epi16: 1907*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1908*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pmullw %xmm1, %xmm0 1909*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1910*9880d681SAndroid Build Coastguard Worker; 1911*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mullo_epi16: 1912*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1913*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pmullw %xmm1, %xmm0 1914*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1915*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 1916*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 1917*9880d681SAndroid Build Coastguard Worker %res = mul <8 x i16> %arg0, %arg1 1918*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 1919*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1920*9880d681SAndroid Build Coastguard Worker} 1921*9880d681SAndroid Build Coastguard Worker 1922*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_or_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 1923*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_or_pd: 1924*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1925*9880d681SAndroid Build Coastguard Worker; X32-NEXT: orps %xmm1, %xmm0 1926*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1927*9880d681SAndroid Build Coastguard Worker; 1928*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_or_pd: 1929*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1930*9880d681SAndroid Build Coastguard Worker; X64-NEXT: orps %xmm1, %xmm0 1931*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1932*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x double> %a0 to <4 x i32> 1933*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x double> %a1 to <4 x i32> 1934*9880d681SAndroid Build Coastguard Worker %res = or <4 x i32> %arg0, %arg1 1935*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x double> 1936*9880d681SAndroid Build Coastguard Worker ret <2 x double> %bc 1937*9880d681SAndroid Build Coastguard Worker} 1938*9880d681SAndroid Build Coastguard Worker 1939*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_or_si128(<2 x i64> %a0, <2 x i64> %a1) nounwind { 1940*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_or_si128: 1941*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1942*9880d681SAndroid Build Coastguard Worker; X32-NEXT: orps %xmm1, %xmm0 1943*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1944*9880d681SAndroid Build Coastguard Worker; 1945*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_or_si128: 1946*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1947*9880d681SAndroid Build Coastguard Worker; X64-NEXT: orps %xmm1, %xmm0 1948*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1949*9880d681SAndroid Build Coastguard Worker %res = or <2 x i64> %a0, %a1 1950*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 1951*9880d681SAndroid Build Coastguard Worker} 1952*9880d681SAndroid Build Coastguard Worker 1953*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_packs_epi16(<2 x i64> %a0, <2 x i64> %a1) { 1954*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_packs_epi16: 1955*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1956*9880d681SAndroid Build Coastguard Worker; X32-NEXT: packsswb %xmm1, %xmm0 1957*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1958*9880d681SAndroid Build Coastguard Worker; 1959*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_packs_epi16: 1960*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1961*9880d681SAndroid Build Coastguard Worker; X64-NEXT: packsswb %xmm1, %xmm0 1962*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1963*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 1964*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 1965*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16> %arg0, <8 x i16> %arg1) 1966*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 1967*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1968*9880d681SAndroid Build Coastguard Worker} 1969*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16>, <8 x i16>) nounwind readnone 1970*9880d681SAndroid Build Coastguard Worker 1971*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_packs_epi32(<2 x i64> %a0, <2 x i64> %a1) { 1972*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_packs_epi32: 1973*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1974*9880d681SAndroid Build Coastguard Worker; X32-NEXT: packssdw %xmm1, %xmm0 1975*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1976*9880d681SAndroid Build Coastguard Worker; 1977*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_packs_epi32: 1978*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1979*9880d681SAndroid Build Coastguard Worker; X64-NEXT: packssdw %xmm1, %xmm0 1980*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1981*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 1982*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 1983*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %arg0, <4 x i32> %arg1) 1984*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 1985*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 1986*9880d681SAndroid Build Coastguard Worker} 1987*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32>, <4 x i32>) nounwind readnone 1988*9880d681SAndroid Build Coastguard Worker 1989*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_packus_epi16(<2 x i64> %a0, <2 x i64> %a1) { 1990*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_packus_epi16: 1991*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1992*9880d681SAndroid Build Coastguard Worker; X32-NEXT: packuswb %xmm1, %xmm0 1993*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1994*9880d681SAndroid Build Coastguard Worker; 1995*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_packus_epi16: 1996*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1997*9880d681SAndroid Build Coastguard Worker; X64-NEXT: packuswb %xmm1, %xmm0 1998*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1999*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 2000*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 2001*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16> %arg0, <8 x i16> %arg1) 2002*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 2003*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 2004*9880d681SAndroid Build Coastguard Worker} 2005*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16>, <8 x i16>) nounwind readnone 2006*9880d681SAndroid Build Coastguard Worker 2007*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_pause() nounwind { 2008*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_pause: 2009*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2010*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pause 2011*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2012*9880d681SAndroid Build Coastguard Worker; 2013*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_pause: 2014*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2015*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pause 2016*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2017*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.sse2.pause() 2018*9880d681SAndroid Build Coastguard Worker ret void 2019*9880d681SAndroid Build Coastguard Worker} 2020*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.pause() nounwind readnone 2021*9880d681SAndroid Build Coastguard Worker 2022*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sad_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind { 2023*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sad_epu8: 2024*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2025*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psadbw %xmm1, %xmm0 2026*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2027*9880d681SAndroid Build Coastguard Worker; 2028*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sad_epu8: 2029*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2030*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psadbw %xmm1, %xmm0 2031*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2032*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 2033*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 2034*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %arg0, <16 x i8> %arg1) 2035*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 2036*9880d681SAndroid Build Coastguard Worker} 2037*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8>, <16 x i8>) nounwind readnone 2038*9880d681SAndroid Build Coastguard Worker 2039*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set_epi8(i8 %a0, i8 %a1, i8 %a2, i8 %a3, i8 %a4, i8 %a5, i8 %a6, i8 %a7, i8 %a8, i8 %a9, i8 %a10, i8 %a11, i8 %a12, i8 %a13, i8 %a14, i8 %a15) nounwind { 2040*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set_epi8: 2041*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2042*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2043*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2044*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2045*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm1 2046*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2047*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2048*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2049*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2050*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm2 2051*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2052*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7] 2053*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2054*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2055*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2056*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm3 2057*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7] 2058*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2059*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2060*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2061*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm1 2062*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2063*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7] 2064*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 2065*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2066*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2067*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2068*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm2 2069*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2070*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2071*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2072*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2073*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm3 2074*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7] 2075*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 2076*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2077*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2078*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2079*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm2 2080*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2081*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2082*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm4 2083*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2084*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2085*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7] 2086*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7] 2087*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7] 2088*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 2089*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2090*9880d681SAndroid Build Coastguard Worker; 2091*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set_epi8: 2092*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2093*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %dil, %eax 2094*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2095*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2096*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm1 2097*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2098*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %r8b, %eax 2099*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2100*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2101*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm2 2102*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2103*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7] 2104*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %dl, %eax 2105*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2106*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2107*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm3 2108*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7] 2109*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2110*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2111*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2112*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm1 2113*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2114*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7] 2115*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 2116*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %sil, %eax 2117*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2118*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2119*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm2 2120*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2121*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %r9b, %eax 2122*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2123*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2124*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm3 2125*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7] 2126*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 2127*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %cl, %eax 2128*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2129*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2130*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm2 2131*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2132*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2133*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm4 2134*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2135*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2136*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7] 2137*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7] 2138*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7] 2139*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 2140*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2141*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <16 x i8> undef, i8 %a15, i32 0 2142*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <16 x i8> %res0, i8 %a14, i32 1 2143*9880d681SAndroid Build Coastguard Worker %res2 = insertelement <16 x i8> %res1, i8 %a13, i32 2 2144*9880d681SAndroid Build Coastguard Worker %res3 = insertelement <16 x i8> %res2, i8 %a12, i32 3 2145*9880d681SAndroid Build Coastguard Worker %res4 = insertelement <16 x i8> %res3, i8 %a11, i32 4 2146*9880d681SAndroid Build Coastguard Worker %res5 = insertelement <16 x i8> %res4, i8 %a10, i32 5 2147*9880d681SAndroid Build Coastguard Worker %res6 = insertelement <16 x i8> %res5, i8 %a9 , i32 6 2148*9880d681SAndroid Build Coastguard Worker %res7 = insertelement <16 x i8> %res6, i8 %a8 , i32 7 2149*9880d681SAndroid Build Coastguard Worker %res8 = insertelement <16 x i8> %res7, i8 %a7 , i32 8 2150*9880d681SAndroid Build Coastguard Worker %res9 = insertelement <16 x i8> %res8, i8 %a6 , i32 9 2151*9880d681SAndroid Build Coastguard Worker %res10 = insertelement <16 x i8> %res9, i8 %a5 , i32 10 2152*9880d681SAndroid Build Coastguard Worker %res11 = insertelement <16 x i8> %res10, i8 %a4 , i32 11 2153*9880d681SAndroid Build Coastguard Worker %res12 = insertelement <16 x i8> %res11, i8 %a3 , i32 12 2154*9880d681SAndroid Build Coastguard Worker %res13 = insertelement <16 x i8> %res12, i8 %a2 , i32 13 2155*9880d681SAndroid Build Coastguard Worker %res14 = insertelement <16 x i8> %res13, i8 %a1 , i32 14 2156*9880d681SAndroid Build Coastguard Worker %res15 = insertelement <16 x i8> %res14, i8 %a0 , i32 15 2157*9880d681SAndroid Build Coastguard Worker %res = bitcast <16 x i8> %res15 to <2 x i64> 2158*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 2159*9880d681SAndroid Build Coastguard Worker} 2160*9880d681SAndroid Build Coastguard Worker 2161*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set_epi16(i16 %a0, i16 %a1, i16 %a2, i16 %a3, i16 %a4, i16 %a5, i16 %a6, i16 %a7) nounwind { 2162*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set_epi16: 2163*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2164*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2165*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm1 2166*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2167*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm2 2168*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2169*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm3 2170*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2171*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm4 2172*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2173*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm5 2174*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2175*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm6 2176*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2177*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm7 2178*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2179*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2180*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3] 2181*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3] 2182*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3] 2183*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm5[0],xmm6[1],xmm5[1],xmm6[2],xmm5[2],xmm6[3],xmm5[3] 2184*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1],xmm0[2],xmm7[2],xmm0[3],xmm7[3] 2185*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3] 2186*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3] 2187*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2188*9880d681SAndroid Build Coastguard Worker; 2189*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set_epi16: 2190*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2191*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movw {{[0-9]+}}(%rsp), %r10w 2192*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movw {{[0-9]+}}(%rsp), %ax 2193*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %edi, %xmm0 2194*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %r8d, %xmm1 2195*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 2196*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %edx, %xmm0 2197*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm2 2198*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 2199*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3] 2200*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %esi, %xmm0 2201*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %r9d, %xmm1 2202*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 2203*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %ecx, %xmm3 2204*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %r10d, %xmm0 2205*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3] 2206*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 2207*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 2208*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2209*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <8 x i16> undef, i16 %a7, i32 0 2210*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <8 x i16> %res0, i16 %a6, i32 1 2211*9880d681SAndroid Build Coastguard Worker %res2 = insertelement <8 x i16> %res1, i16 %a5, i32 2 2212*9880d681SAndroid Build Coastguard Worker %res3 = insertelement <8 x i16> %res2, i16 %a4, i32 3 2213*9880d681SAndroid Build Coastguard Worker %res4 = insertelement <8 x i16> %res3, i16 %a3, i32 4 2214*9880d681SAndroid Build Coastguard Worker %res5 = insertelement <8 x i16> %res4, i16 %a2, i32 5 2215*9880d681SAndroid Build Coastguard Worker %res6 = insertelement <8 x i16> %res5, i16 %a1, i32 6 2216*9880d681SAndroid Build Coastguard Worker %res7 = insertelement <8 x i16> %res6, i16 %a0, i32 7 2217*9880d681SAndroid Build Coastguard Worker %res = bitcast <8 x i16> %res7 to <2 x i64> 2218*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 2219*9880d681SAndroid Build Coastguard Worker} 2220*9880d681SAndroid Build Coastguard Worker 2221*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set_epi32(i32 %a0, i32 %a1, i32 %a2, i32 %a3) nounwind { 2222*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set_epi32: 2223*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2224*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 2225*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero 2226*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 2227*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm2 = mem[0],zero,zero,zero 2228*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 2229*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 2230*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 2231*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2232*9880d681SAndroid Build Coastguard Worker; 2233*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set_epi32: 2234*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2235*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %edi, %xmm0 2236*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %edx, %xmm1 2237*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 2238*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %esi, %xmm2 2239*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %ecx, %xmm0 2240*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 2241*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 2242*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2243*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <4 x i32> undef, i32 %a3, i32 0 2244*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <4 x i32> %res0, i32 %a2, i32 1 2245*9880d681SAndroid Build Coastguard Worker %res2 = insertelement <4 x i32> %res1, i32 %a1, i32 2 2246*9880d681SAndroid Build Coastguard Worker %res3 = insertelement <4 x i32> %res2, i32 %a0, i32 3 2247*9880d681SAndroid Build Coastguard Worker %res = bitcast <4 x i32> %res3 to <2 x i64> 2248*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 2249*9880d681SAndroid Build Coastguard Worker} 2250*9880d681SAndroid Build Coastguard Worker 2251*9880d681SAndroid Build Coastguard Worker; TODO test_mm_set_epi64 2252*9880d681SAndroid Build Coastguard Worker 2253*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set_epi64x(i64 %a0, i64 %a1) nounwind { 2254*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set_epi64x: 2255*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2256*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero 2257*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 2258*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 2259*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero 2260*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm2 = mem[0],zero,zero,zero 2261*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] 2262*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 2263*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2264*9880d681SAndroid Build Coastguard Worker; 2265*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set_epi64x: 2266*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2267*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %rdi, %xmm1 2268*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %rsi, %xmm0 2269*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 2270*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2271*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <2 x i64> undef, i64 %a1, i32 0 2272*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <2 x i64> %res0, i64 %a0, i32 1 2273*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res1 2274*9880d681SAndroid Build Coastguard Worker} 2275*9880d681SAndroid Build Coastguard Worker 2276*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_set_pd(double %a0, double %a1) nounwind { 2277*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set_pd: 2278*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2279*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero 2280*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero 2281*9880d681SAndroid Build Coastguard Worker; X32-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0] 2282*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2283*9880d681SAndroid Build Coastguard Worker; 2284*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set_pd: 2285*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2286*9880d681SAndroid Build Coastguard Worker; X64-NEXT: unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm0[0] 2287*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movapd %xmm1, %xmm0 2288*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2289*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <2 x double> undef, double %a1, i32 0 2290*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <2 x double> %res0, double %a0, i32 1 2291*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res1 2292*9880d681SAndroid Build Coastguard Worker} 2293*9880d681SAndroid Build Coastguard Worker 2294*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_set_sd(double %a0) nounwind { 2295*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set_sd: 2296*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2297*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero 2298*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movq {{.*#+}} xmm0 = xmm0[0],zero 2299*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2300*9880d681SAndroid Build Coastguard Worker; 2301*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set_sd: 2302*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2303*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movq {{.*#+}} xmm0 = xmm0[0],zero 2304*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2305*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <2 x double> undef, double %a0, i32 0 2306*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <2 x double> %res0, double 0.0, i32 1 2307*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res1 2308*9880d681SAndroid Build Coastguard Worker} 2309*9880d681SAndroid Build Coastguard Worker 2310*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set1_epi8(i8 %a0) nounwind { 2311*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set1_epi8: 2312*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2313*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2314*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2315*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 2316*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 2317*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 2318*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2319*9880d681SAndroid Build Coastguard Worker; 2320*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set1_epi8: 2321*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2322*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %dil, %eax 2323*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2324*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] 2325*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 2326*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 2327*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2328*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <16 x i8> undef, i8 %a0, i32 0 2329*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <16 x i8> %res0, i8 %a0, i32 1 2330*9880d681SAndroid Build Coastguard Worker %res2 = insertelement <16 x i8> %res1, i8 %a0, i32 2 2331*9880d681SAndroid Build Coastguard Worker %res3 = insertelement <16 x i8> %res2, i8 %a0, i32 3 2332*9880d681SAndroid Build Coastguard Worker %res4 = insertelement <16 x i8> %res3, i8 %a0, i32 4 2333*9880d681SAndroid Build Coastguard Worker %res5 = insertelement <16 x i8> %res4, i8 %a0, i32 5 2334*9880d681SAndroid Build Coastguard Worker %res6 = insertelement <16 x i8> %res5, i8 %a0, i32 6 2335*9880d681SAndroid Build Coastguard Worker %res7 = insertelement <16 x i8> %res6, i8 %a0, i32 7 2336*9880d681SAndroid Build Coastguard Worker %res8 = insertelement <16 x i8> %res7, i8 %a0, i32 8 2337*9880d681SAndroid Build Coastguard Worker %res9 = insertelement <16 x i8> %res8, i8 %a0, i32 9 2338*9880d681SAndroid Build Coastguard Worker %res10 = insertelement <16 x i8> %res9, i8 %a0, i32 10 2339*9880d681SAndroid Build Coastguard Worker %res11 = insertelement <16 x i8> %res10, i8 %a0, i32 11 2340*9880d681SAndroid Build Coastguard Worker %res12 = insertelement <16 x i8> %res11, i8 %a0, i32 12 2341*9880d681SAndroid Build Coastguard Worker %res13 = insertelement <16 x i8> %res12, i8 %a0, i32 13 2342*9880d681SAndroid Build Coastguard Worker %res14 = insertelement <16 x i8> %res13, i8 %a0, i32 14 2343*9880d681SAndroid Build Coastguard Worker %res15 = insertelement <16 x i8> %res14, i8 %a0, i32 15 2344*9880d681SAndroid Build Coastguard Worker %res = bitcast <16 x i8> %res15 to <2 x i64> 2345*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 2346*9880d681SAndroid Build Coastguard Worker} 2347*9880d681SAndroid Build Coastguard Worker 2348*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set1_epi16(i16 %a0) nounwind { 2349*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set1_epi16: 2350*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2351*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2352*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2353*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 2354*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 2355*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2356*9880d681SAndroid Build Coastguard Worker; 2357*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set1_epi16: 2358*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2359*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %edi, %xmm0 2360*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 2361*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 2362*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2363*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <8 x i16> undef, i16 %a0, i32 0 2364*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <8 x i16> %res0, i16 %a0, i32 1 2365*9880d681SAndroid Build Coastguard Worker %res2 = insertelement <8 x i16> %res1, i16 %a0, i32 2 2366*9880d681SAndroid Build Coastguard Worker %res3 = insertelement <8 x i16> %res2, i16 %a0, i32 3 2367*9880d681SAndroid Build Coastguard Worker %res4 = insertelement <8 x i16> %res3, i16 %a0, i32 4 2368*9880d681SAndroid Build Coastguard Worker %res5 = insertelement <8 x i16> %res4, i16 %a0, i32 5 2369*9880d681SAndroid Build Coastguard Worker %res6 = insertelement <8 x i16> %res5, i16 %a0, i32 6 2370*9880d681SAndroid Build Coastguard Worker %res7 = insertelement <8 x i16> %res6, i16 %a0, i32 7 2371*9880d681SAndroid Build Coastguard Worker %res = bitcast <8 x i16> %res7 to <2 x i64> 2372*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 2373*9880d681SAndroid Build Coastguard Worker} 2374*9880d681SAndroid Build Coastguard Worker 2375*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set1_epi32(i32 %a0) nounwind { 2376*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set1_epi32: 2377*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2378*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 2379*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0] 2380*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2381*9880d681SAndroid Build Coastguard Worker; 2382*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set1_epi32: 2383*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2384*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %edi, %xmm0 2385*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0] 2386*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2387*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <4 x i32> undef, i32 %a0, i32 0 2388*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <4 x i32> %res0, i32 %a0, i32 1 2389*9880d681SAndroid Build Coastguard Worker %res2 = insertelement <4 x i32> %res1, i32 %a0, i32 2 2390*9880d681SAndroid Build Coastguard Worker %res3 = insertelement <4 x i32> %res2, i32 %a0, i32 3 2391*9880d681SAndroid Build Coastguard Worker %res = bitcast <4 x i32> %res3 to <2 x i64> 2392*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 2393*9880d681SAndroid Build Coastguard Worker} 2394*9880d681SAndroid Build Coastguard Worker 2395*9880d681SAndroid Build Coastguard Worker; TODO test_mm_set1_epi64 2396*9880d681SAndroid Build Coastguard Worker 2397*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_set1_epi64x(i64 %a0) nounwind { 2398*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set1_epi64x: 2399*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2400*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 2401*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1] 2402*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero 2403*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,0,1,1] 2404*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 2405*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2406*9880d681SAndroid Build Coastguard Worker; 2407*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set1_epi64x: 2408*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2409*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %rdi, %xmm0 2410*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1] 2411*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2412*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <2 x i64> undef, i64 %a0, i32 0 2413*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <2 x i64> %res0, i64 %a0, i32 1 2414*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res1 2415*9880d681SAndroid Build Coastguard Worker} 2416*9880d681SAndroid Build Coastguard Worker 2417*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_set1_pd(double %a0) nounwind { 2418*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_set1_pd: 2419*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2420*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero 2421*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0,0] 2422*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2423*9880d681SAndroid Build Coastguard Worker; 2424*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_set1_pd: 2425*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2426*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0,0] 2427*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2428*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <2 x double> undef, double %a0, i32 0 2429*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <2 x double> %res0, double %a0, i32 1 2430*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res1 2431*9880d681SAndroid Build Coastguard Worker} 2432*9880d681SAndroid Build Coastguard Worker 2433*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_setr_epi8(i8 %a0, i8 %a1, i8 %a2, i8 %a3, i8 %a4, i8 %a5, i8 %a6, i8 %a7, i8 %a8, i8 %a9, i8 %a10, i8 %a11, i8 %a12, i8 %a13, i8 %a14, i8 %a15) nounwind { 2434*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_setr_epi8: 2435*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2436*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2437*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2438*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2439*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm1 2440*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2441*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2442*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2443*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2444*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm2 2445*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2446*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7] 2447*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2448*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2449*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2450*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm3 2451*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7] 2452*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2453*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2454*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2455*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm1 2456*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2457*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7] 2458*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 2459*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2460*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2461*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2462*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm2 2463*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2464*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2465*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2466*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2467*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm3 2468*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7] 2469*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 2470*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2471*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2472*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2473*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm2 2474*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2475*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2476*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm4 2477*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax 2478*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2479*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7] 2480*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7] 2481*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7] 2482*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 2483*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2484*9880d681SAndroid Build Coastguard Worker; 2485*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_setr_epi8: 2486*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2487*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2488*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2489*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2490*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm1 2491*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2492*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2493*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2494*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %cl, %eax 2495*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm2 2496*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2497*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7] 2498*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2499*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2500*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %r9b, %eax 2501*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm3 2502*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7] 2503*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2504*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2505*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %sil, %eax 2506*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm1 2507*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7] 2508*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7] 2509*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] 2510*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2511*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2512*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2513*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm2 2514*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2515*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2516*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2517*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %dl, %eax 2518*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm3 2519*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7] 2520*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] 2521*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2522*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2523*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %r8b, %eax 2524*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm2 2525*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7] 2526*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl {{[0-9]+}}(%rsp), %eax 2527*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm4 2528*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %dil, %eax 2529*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2530*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7] 2531*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7] 2532*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7] 2533*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 2534*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2535*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <16 x i8> undef, i8 %a0 , i32 0 2536*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <16 x i8> %res0, i8 %a1 , i32 1 2537*9880d681SAndroid Build Coastguard Worker %res2 = insertelement <16 x i8> %res1, i8 %a2 , i32 2 2538*9880d681SAndroid Build Coastguard Worker %res3 = insertelement <16 x i8> %res2, i8 %a3 , i32 3 2539*9880d681SAndroid Build Coastguard Worker %res4 = insertelement <16 x i8> %res3, i8 %a4 , i32 4 2540*9880d681SAndroid Build Coastguard Worker %res5 = insertelement <16 x i8> %res4, i8 %a5 , i32 5 2541*9880d681SAndroid Build Coastguard Worker %res6 = insertelement <16 x i8> %res5, i8 %a6 , i32 6 2542*9880d681SAndroid Build Coastguard Worker %res7 = insertelement <16 x i8> %res6, i8 %a7 , i32 7 2543*9880d681SAndroid Build Coastguard Worker %res8 = insertelement <16 x i8> %res7, i8 %a8 , i32 8 2544*9880d681SAndroid Build Coastguard Worker %res9 = insertelement <16 x i8> %res8, i8 %a9 , i32 9 2545*9880d681SAndroid Build Coastguard Worker %res10 = insertelement <16 x i8> %res9, i8 %a10, i32 10 2546*9880d681SAndroid Build Coastguard Worker %res11 = insertelement <16 x i8> %res10, i8 %a11, i32 11 2547*9880d681SAndroid Build Coastguard Worker %res12 = insertelement <16 x i8> %res11, i8 %a12, i32 12 2548*9880d681SAndroid Build Coastguard Worker %res13 = insertelement <16 x i8> %res12, i8 %a13, i32 13 2549*9880d681SAndroid Build Coastguard Worker %res14 = insertelement <16 x i8> %res13, i8 %a14, i32 14 2550*9880d681SAndroid Build Coastguard Worker %res15 = insertelement <16 x i8> %res14, i8 %a15, i32 15 2551*9880d681SAndroid Build Coastguard Worker %res = bitcast <16 x i8> %res15 to <2 x i64> 2552*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 2553*9880d681SAndroid Build Coastguard Worker} 2554*9880d681SAndroid Build Coastguard Worker 2555*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_setr_epi16(i16 %a0, i16 %a1, i16 %a2, i16 %a3, i16 %a4, i16 %a5, i16 %a6, i16 %a7) nounwind { 2556*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_setr_epi16: 2557*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2558*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2559*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm1 2560*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2561*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm2 2562*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2563*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm3 2564*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2565*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm4 2566*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2567*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm5 2568*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2569*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm6 2570*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2571*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm7 2572*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 2573*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd %eax, %xmm0 2574*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3] 2575*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3] 2576*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3] 2577*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm5[0],xmm6[1],xmm5[1],xmm6[2],xmm5[2],xmm6[3],xmm5[3] 2578*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1],xmm0[2],xmm7[2],xmm0[3],xmm7[3] 2579*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3] 2580*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3] 2581*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2582*9880d681SAndroid Build Coastguard Worker; 2583*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_setr_epi16: 2584*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2585*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movw {{[0-9]+}}(%rsp), %ax 2586*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movw {{[0-9]+}}(%rsp), %r10w 2587*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %eax, %xmm0 2588*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %ecx, %xmm1 2589*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 2590*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %r9d, %xmm0 2591*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %esi, %xmm2 2592*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] 2593*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3] 2594*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %r10d, %xmm0 2595*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %edx, %xmm1 2596*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3] 2597*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %r8d, %xmm3 2598*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %edi, %xmm0 2599*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3] 2600*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 2601*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3] 2602*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2603*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <8 x i16> undef, i16 %a0, i32 0 2604*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <8 x i16> %res0, i16 %a1, i32 1 2605*9880d681SAndroid Build Coastguard Worker %res2 = insertelement <8 x i16> %res1, i16 %a2, i32 2 2606*9880d681SAndroid Build Coastguard Worker %res3 = insertelement <8 x i16> %res2, i16 %a3, i32 3 2607*9880d681SAndroid Build Coastguard Worker %res4 = insertelement <8 x i16> %res3, i16 %a4, i32 4 2608*9880d681SAndroid Build Coastguard Worker %res5 = insertelement <8 x i16> %res4, i16 %a5, i32 5 2609*9880d681SAndroid Build Coastguard Worker %res6 = insertelement <8 x i16> %res5, i16 %a6, i32 6 2610*9880d681SAndroid Build Coastguard Worker %res7 = insertelement <8 x i16> %res6, i16 %a7, i32 7 2611*9880d681SAndroid Build Coastguard Worker %res = bitcast <8 x i16> %res7 to <2 x i64> 2612*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 2613*9880d681SAndroid Build Coastguard Worker} 2614*9880d681SAndroid Build Coastguard Worker 2615*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_setr_epi32(i32 %a0, i32 %a1, i32 %a2, i32 %a3) nounwind { 2616*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_setr_epi32: 2617*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2618*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 2619*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero 2620*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 2621*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm2 = mem[0],zero,zero,zero 2622*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 2623*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 2624*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 2625*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2626*9880d681SAndroid Build Coastguard Worker; 2627*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_setr_epi32: 2628*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2629*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %ecx, %xmm0 2630*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %esi, %xmm1 2631*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 2632*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %edx, %xmm2 2633*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %edi, %xmm0 2634*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 2635*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 2636*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2637*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <4 x i32> undef, i32 %a0, i32 0 2638*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <4 x i32> %res0, i32 %a1, i32 1 2639*9880d681SAndroid Build Coastguard Worker %res2 = insertelement <4 x i32> %res1, i32 %a2, i32 2 2640*9880d681SAndroid Build Coastguard Worker %res3 = insertelement <4 x i32> %res2, i32 %a3, i32 3 2641*9880d681SAndroid Build Coastguard Worker %res = bitcast <4 x i32> %res3 to <2 x i64> 2642*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 2643*9880d681SAndroid Build Coastguard Worker} 2644*9880d681SAndroid Build Coastguard Worker 2645*9880d681SAndroid Build Coastguard Worker; TODO test_mm_setr_epi64 2646*9880d681SAndroid Build Coastguard Worker 2647*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_setr_epi64x(i64 %a0, i64 %a1) nounwind { 2648*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_setr_epi64x: 2649*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2650*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero 2651*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero 2652*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 2653*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero 2654*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movd {{.*#+}} xmm2 = mem[0],zero,zero,zero 2655*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] 2656*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 2657*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2658*9880d681SAndroid Build Coastguard Worker; 2659*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_setr_epi64x: 2660*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2661*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %rsi, %xmm1 2662*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %rdi, %xmm0 2663*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 2664*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2665*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <2 x i64> undef, i64 %a0, i32 0 2666*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <2 x i64> %res0, i64 %a1, i32 1 2667*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res1 2668*9880d681SAndroid Build Coastguard Worker} 2669*9880d681SAndroid Build Coastguard Worker 2670*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_setr_pd(double %a0, double %a1) nounwind { 2671*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_setr_pd: 2672*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2673*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero 2674*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero 2675*9880d681SAndroid Build Coastguard Worker; X32-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0] 2676*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2677*9880d681SAndroid Build Coastguard Worker; 2678*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_setr_pd: 2679*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2680*9880d681SAndroid Build Coastguard Worker; X64-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0] 2681*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2682*9880d681SAndroid Build Coastguard Worker %res0 = insertelement <2 x double> undef, double %a0, i32 0 2683*9880d681SAndroid Build Coastguard Worker %res1 = insertelement <2 x double> %res0, double %a1, i32 1 2684*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res1 2685*9880d681SAndroid Build Coastguard Worker} 2686*9880d681SAndroid Build Coastguard Worker 2687*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_setzero_pd() { 2688*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_setzero_pd: 2689*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2690*9880d681SAndroid Build Coastguard Worker; X32-NEXT: xorps %xmm0, %xmm0 2691*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2692*9880d681SAndroid Build Coastguard Worker; 2693*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_setzero_pd: 2694*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2695*9880d681SAndroid Build Coastguard Worker; X64-NEXT: xorps %xmm0, %xmm0 2696*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2697*9880d681SAndroid Build Coastguard Worker ret <2 x double> zeroinitializer 2698*9880d681SAndroid Build Coastguard Worker} 2699*9880d681SAndroid Build Coastguard Worker 2700*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_setzero_si128() { 2701*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_setzero_si128: 2702*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2703*9880d681SAndroid Build Coastguard Worker; X32-NEXT: xorps %xmm0, %xmm0 2704*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2705*9880d681SAndroid Build Coastguard Worker; 2706*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_setzero_si128: 2707*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2708*9880d681SAndroid Build Coastguard Worker; X64-NEXT: xorps %xmm0, %xmm0 2709*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2710*9880d681SAndroid Build Coastguard Worker ret <2 x i64> zeroinitializer 2711*9880d681SAndroid Build Coastguard Worker} 2712*9880d681SAndroid Build Coastguard Worker 2713*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_shuffle_epi32(<2 x i64> %a0) { 2714*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_shuffle_epi32: 2715*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2716*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0] 2717*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2718*9880d681SAndroid Build Coastguard Worker; 2719*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_shuffle_epi32: 2720*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2721*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0] 2722*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2723*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 2724*9880d681SAndroid Build Coastguard Worker %res = shufflevector <4 x i32> %arg0, <4 x i32> undef, <4 x i32> zeroinitializer 2725*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 2726*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 2727*9880d681SAndroid Build Coastguard Worker} 2728*9880d681SAndroid Build Coastguard Worker 2729*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_shuffle_pd(<2 x double> %a0, <2 x double> %a1) { 2730*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_shuffle_pd: 2731*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2732*9880d681SAndroid Build Coastguard Worker; X32-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1],xmm1[0] 2733*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2734*9880d681SAndroid Build Coastguard Worker; 2735*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_shuffle_pd: 2736*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2737*9880d681SAndroid Build Coastguard Worker; X64-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1],xmm1[0] 2738*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2739*9880d681SAndroid Build Coastguard Worker %res = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 1, i32 2> 2740*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 2741*9880d681SAndroid Build Coastguard Worker} 2742*9880d681SAndroid Build Coastguard Worker 2743*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_shufflehi_epi16(<2 x i64> %a0) { 2744*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_shufflehi_epi16: 2745*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2746*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4] 2747*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2748*9880d681SAndroid Build Coastguard Worker; 2749*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_shufflehi_epi16: 2750*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2751*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4] 2752*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2753*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 2754*9880d681SAndroid Build Coastguard Worker %res = shufflevector <8 x i16> %arg0, <8 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 4, i32 4, i32 4> 2755*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 2756*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 2757*9880d681SAndroid Build Coastguard Worker} 2758*9880d681SAndroid Build Coastguard Worker 2759*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_shufflelo_epi16(<2 x i64> %a0) { 2760*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_shufflelo_epi16: 2761*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2762*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 2763*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2764*9880d681SAndroid Build Coastguard Worker; 2765*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_shufflelo_epi16: 2766*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2767*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7] 2768*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2769*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 2770*9880d681SAndroid Build Coastguard Worker %res = shufflevector <8 x i16> %arg0, <8 x i16> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7> 2771*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 2772*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 2773*9880d681SAndroid Build Coastguard Worker} 2774*9880d681SAndroid Build Coastguard Worker 2775*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sll_epi16(<2 x i64> %a0, <2 x i64> %a1) { 2776*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sll_epi16: 2777*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2778*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psllw %xmm1, %xmm0 2779*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2780*9880d681SAndroid Build Coastguard Worker; 2781*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sll_epi16: 2782*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2783*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psllw %xmm1, %xmm0 2784*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2785*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 2786*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 2787*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16> %arg0, <8 x i16> %arg1) 2788*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 2789*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 2790*9880d681SAndroid Build Coastguard Worker} 2791*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16>, <8 x i16>) nounwind readnone 2792*9880d681SAndroid Build Coastguard Worker 2793*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sll_epi32(<2 x i64> %a0, <2 x i64> %a1) { 2794*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sll_epi32: 2795*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2796*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pslld %xmm1, %xmm0 2797*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2798*9880d681SAndroid Build Coastguard Worker; 2799*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sll_epi32: 2800*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2801*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pslld %xmm1, %xmm0 2802*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2803*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 2804*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 2805*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32> %arg0, <4 x i32> %arg1) 2806*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 2807*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 2808*9880d681SAndroid Build Coastguard Worker} 2809*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32>, <4 x i32>) nounwind readnone 2810*9880d681SAndroid Build Coastguard Worker 2811*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sll_epi64(<2 x i64> %a0, <2 x i64> %a1) { 2812*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sll_epi64: 2813*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2814*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psllq %xmm1, %xmm0 2815*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2816*9880d681SAndroid Build Coastguard Worker; 2817*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sll_epi64: 2818*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2819*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psllq %xmm1, %xmm0 2820*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2821*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64> %a0, <2 x i64> %a1) 2822*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 2823*9880d681SAndroid Build Coastguard Worker} 2824*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64>, <2 x i64>) nounwind readnone 2825*9880d681SAndroid Build Coastguard Worker 2826*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_slli_epi16(<2 x i64> %a0) { 2827*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_slli_epi16: 2828*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2829*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psllw $1, %xmm0 2830*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2831*9880d681SAndroid Build Coastguard Worker; 2832*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_slli_epi16: 2833*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2834*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psllw $1, %xmm0 2835*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2836*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 2837*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.pslli.w(<8 x i16> %arg0, i32 1) 2838*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 2839*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 2840*9880d681SAndroid Build Coastguard Worker} 2841*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pslli.w(<8 x i16>, i32) nounwind readnone 2842*9880d681SAndroid Build Coastguard Worker 2843*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_slli_epi32(<2 x i64> %a0) { 2844*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_slli_epi32: 2845*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2846*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pslld $1, %xmm0 2847*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2848*9880d681SAndroid Build Coastguard Worker; 2849*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_slli_epi32: 2850*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2851*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pslld $1, %xmm0 2852*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2853*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 2854*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.pslli.d(<4 x i32> %arg0, i32 1) 2855*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 2856*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 2857*9880d681SAndroid Build Coastguard Worker} 2858*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.pslli.d(<4 x i32>, i32) nounwind readnone 2859*9880d681SAndroid Build Coastguard Worker 2860*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_slli_epi64(<2 x i64> %a0) { 2861*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_slli_epi64: 2862*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2863*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psllq $1, %xmm0 2864*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2865*9880d681SAndroid Build Coastguard Worker; 2866*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_slli_epi64: 2867*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2868*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psllq $1, %xmm0 2869*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2870*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64> %a0, i32 1) 2871*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 2872*9880d681SAndroid Build Coastguard Worker} 2873*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64>, i32) nounwind readnone 2874*9880d681SAndroid Build Coastguard Worker 2875*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_slli_si128(<2 x i64> %a0) nounwind { 2876*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_slli_si128: 2877*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2878*9880d681SAndroid Build Coastguard Worker; X32-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10] 2879*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2880*9880d681SAndroid Build Coastguard Worker; 2881*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_slli_si128: 2882*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2883*9880d681SAndroid Build Coastguard Worker; X64-NEXT: pslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10] 2884*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2885*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 2886*9880d681SAndroid Build Coastguard Worker %res = shufflevector <16 x i8> zeroinitializer, <16 x i8> %arg0, <16 x i32> <i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26> 2887*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 2888*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 2889*9880d681SAndroid Build Coastguard Worker} 2890*9880d681SAndroid Build Coastguard Worker 2891*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_sqrt_pd(<2 x double> %a0) nounwind { 2892*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sqrt_pd: 2893*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2894*9880d681SAndroid Build Coastguard Worker; X32-NEXT: sqrtpd %xmm0, %xmm0 2895*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2896*9880d681SAndroid Build Coastguard Worker; 2897*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sqrt_pd: 2898*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2899*9880d681SAndroid Build Coastguard Worker; X64-NEXT: sqrtpd %xmm0, %xmm0 2900*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2901*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double> %a0) 2902*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 2903*9880d681SAndroid Build Coastguard Worker} 2904*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double>) nounwind readnone 2905*9880d681SAndroid Build Coastguard Worker 2906*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_sqrt_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 2907*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sqrt_sd: 2908*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2909*9880d681SAndroid Build Coastguard Worker; X32-NEXT: sqrtsd %xmm0, %xmm1 2910*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movaps %xmm1, %xmm0 2911*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2912*9880d681SAndroid Build Coastguard Worker; 2913*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sqrt_sd: 2914*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2915*9880d681SAndroid Build Coastguard Worker; X64-NEXT: sqrtsd %xmm0, %xmm1 2916*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movaps %xmm1, %xmm0 2917*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2918*9880d681SAndroid Build Coastguard Worker %call = call <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double> %a0) 2919*9880d681SAndroid Build Coastguard Worker %ext0 = extractelement <2 x double> %call, i32 0 2920*9880d681SAndroid Build Coastguard Worker %ins0 = insertelement <2 x double> undef, double %ext0, i32 0 2921*9880d681SAndroid Build Coastguard Worker %ext1 = extractelement <2 x double> %a1, i32 1 2922*9880d681SAndroid Build Coastguard Worker %ins1 = insertelement <2 x double> %ins0, double %ext1, i32 1 2923*9880d681SAndroid Build Coastguard Worker ret <2 x double> %ins1 2924*9880d681SAndroid Build Coastguard Worker} 2925*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double>) nounwind readnone 2926*9880d681SAndroid Build Coastguard Worker 2927*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sra_epi16(<2 x i64> %a0, <2 x i64> %a1) { 2928*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sra_epi16: 2929*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2930*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psraw %xmm1, %xmm0 2931*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2932*9880d681SAndroid Build Coastguard Worker; 2933*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sra_epi16: 2934*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2935*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psraw %xmm1, %xmm0 2936*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2937*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 2938*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 2939*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16> %arg0, <8 x i16> %arg1) 2940*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 2941*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 2942*9880d681SAndroid Build Coastguard Worker} 2943*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16>, <8 x i16>) nounwind readnone 2944*9880d681SAndroid Build Coastguard Worker 2945*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sra_epi32(<2 x i64> %a0, <2 x i64> %a1) { 2946*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sra_epi32: 2947*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2948*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psrad %xmm1, %xmm0 2949*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2950*9880d681SAndroid Build Coastguard Worker; 2951*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sra_epi32: 2952*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2953*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psrad %xmm1, %xmm0 2954*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2955*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 2956*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 2957*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32> %arg0, <4 x i32> %arg1) 2958*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 2959*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 2960*9880d681SAndroid Build Coastguard Worker} 2961*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32>, <4 x i32>) nounwind readnone 2962*9880d681SAndroid Build Coastguard Worker 2963*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srai_epi16(<2 x i64> %a0) { 2964*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srai_epi16: 2965*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2966*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psraw $1, %xmm0 2967*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2968*9880d681SAndroid Build Coastguard Worker; 2969*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srai_epi16: 2970*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2971*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psraw $1, %xmm0 2972*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2973*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 2974*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16> %arg0, i32 1) 2975*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 2976*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 2977*9880d681SAndroid Build Coastguard Worker} 2978*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16>, i32) nounwind readnone 2979*9880d681SAndroid Build Coastguard Worker 2980*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srai_epi32(<2 x i64> %a0) { 2981*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srai_epi32: 2982*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 2983*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psrad $1, %xmm0 2984*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 2985*9880d681SAndroid Build Coastguard Worker; 2986*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srai_epi32: 2987*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 2988*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psrad $1, %xmm0 2989*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 2990*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 2991*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.psrai.d(<4 x i32> %arg0, i32 1) 2992*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 2993*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 2994*9880d681SAndroid Build Coastguard Worker} 2995*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrai.d(<4 x i32>, i32) nounwind readnone 2996*9880d681SAndroid Build Coastguard Worker 2997*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srl_epi16(<2 x i64> %a0, <2 x i64> %a1) { 2998*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srl_epi16: 2999*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3000*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psrlw %xmm1, %xmm0 3001*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3002*9880d681SAndroid Build Coastguard Worker; 3003*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srl_epi16: 3004*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3005*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psrlw %xmm1, %xmm0 3006*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3007*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 3008*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 3009*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16> %arg0, <8 x i16> %arg1) 3010*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 3011*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3012*9880d681SAndroid Build Coastguard Worker} 3013*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16>, <8 x i16>) nounwind readnone 3014*9880d681SAndroid Build Coastguard Worker 3015*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srl_epi32(<2 x i64> %a0, <2 x i64> %a1) { 3016*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srl_epi32: 3017*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3018*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psrld %xmm1, %xmm0 3019*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3020*9880d681SAndroid Build Coastguard Worker; 3021*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srl_epi32: 3022*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3023*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psrld %xmm1, %xmm0 3024*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3025*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 3026*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 3027*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32> %arg0, <4 x i32> %arg1) 3028*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 3029*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3030*9880d681SAndroid Build Coastguard Worker} 3031*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32>, <4 x i32>) nounwind readnone 3032*9880d681SAndroid Build Coastguard Worker 3033*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srl_epi64(<2 x i64> %a0, <2 x i64> %a1) { 3034*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srl_epi64: 3035*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3036*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psrlq %xmm1, %xmm0 3037*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3038*9880d681SAndroid Build Coastguard Worker; 3039*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srl_epi64: 3040*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3041*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psrlq %xmm1, %xmm0 3042*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3043*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64> %a0, <2 x i64> %a1) 3044*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 3045*9880d681SAndroid Build Coastguard Worker} 3046*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64>, <2 x i64>) nounwind readnone 3047*9880d681SAndroid Build Coastguard Worker 3048*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srli_epi16(<2 x i64> %a0) { 3049*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srli_epi16: 3050*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3051*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psrlw $1, %xmm0 3052*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3053*9880d681SAndroid Build Coastguard Worker; 3054*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srli_epi16: 3055*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3056*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psrlw $1, %xmm0 3057*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3058*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 3059*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.psrli.w(<8 x i16> %arg0, i32 1) 3060*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 3061*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3062*9880d681SAndroid Build Coastguard Worker} 3063*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrli.w(<8 x i16>, i32) nounwind readnone 3064*9880d681SAndroid Build Coastguard Worker 3065*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srli_epi32(<2 x i64> %a0) { 3066*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srli_epi32: 3067*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3068*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psrld $1, %xmm0 3069*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3070*9880d681SAndroid Build Coastguard Worker; 3071*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srli_epi32: 3072*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3073*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psrld $1, %xmm0 3074*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3075*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 3076*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.psrli.d(<4 x i32> %arg0, i32 1) 3077*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 3078*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3079*9880d681SAndroid Build Coastguard Worker} 3080*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrli.d(<4 x i32>, i32) nounwind readnone 3081*9880d681SAndroid Build Coastguard Worker 3082*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srli_epi64(<2 x i64> %a0) { 3083*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srli_epi64: 3084*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3085*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psrlq $1, %xmm0 3086*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3087*9880d681SAndroid Build Coastguard Worker; 3088*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srli_epi64: 3089*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3090*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psrlq $1, %xmm0 3091*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3092*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64> %a0, i32 1) 3093*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 3094*9880d681SAndroid Build Coastguard Worker} 3095*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64>, i32) nounwind readnone 3096*9880d681SAndroid Build Coastguard Worker 3097*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_srli_si128(<2 x i64> %a0) nounwind { 3098*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_srli_si128: 3099*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3100*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psrldq {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero 3101*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3102*9880d681SAndroid Build Coastguard Worker; 3103*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_srli_si128: 3104*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3105*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psrldq {{.*#+}} xmm0 = xmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero 3106*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3107*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 3108*9880d681SAndroid Build Coastguard Worker %res = shufflevector <16 x i8> %arg0, <16 x i8> zeroinitializer, <16 x i32> <i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20> 3109*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 3110*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3111*9880d681SAndroid Build Coastguard Worker} 3112*9880d681SAndroid Build Coastguard Worker 3113*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_store_pd(double *%a0, <2 x double> %a1) { 3114*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_store_pd: 3115*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3116*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 3117*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movaps %xmm0, (%eax) 3118*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3119*9880d681SAndroid Build Coastguard Worker; 3120*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_store_pd: 3121*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3122*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movaps %xmm0, (%rdi) 3123*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3124*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast double* %a0 to <2 x double>* 3125*9880d681SAndroid Build Coastguard Worker store <2 x double> %a1, <2 x double>* %arg0, align 16 3126*9880d681SAndroid Build Coastguard Worker ret void 3127*9880d681SAndroid Build Coastguard Worker} 3128*9880d681SAndroid Build Coastguard Worker 3129*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_store_pd1(double *%a0, <2 x double> %a1) { 3130*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_store_pd1: 3131*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3132*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 3133*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0,0] 3134*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movaps %xmm0, (%eax) 3135*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3136*9880d681SAndroid Build Coastguard Worker; 3137*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_store_pd1: 3138*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3139*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0,0] 3140*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movaps %xmm0, (%rdi) 3141*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3142*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast double * %a0 to <2 x double>* 3143*9880d681SAndroid Build Coastguard Worker %shuf = shufflevector <2 x double> %a1, <2 x double> undef, <2 x i32> zeroinitializer 3144*9880d681SAndroid Build Coastguard Worker store <2 x double> %shuf, <2 x double>* %arg0, align 16 3145*9880d681SAndroid Build Coastguard Worker ret void 3146*9880d681SAndroid Build Coastguard Worker} 3147*9880d681SAndroid Build Coastguard Worker 3148*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_store_sd(double *%a0, <2 x double> %a1) { 3149*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_store_sd: 3150*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3151*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 3152*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd %xmm0, (%eax) 3153*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3154*9880d681SAndroid Build Coastguard Worker; 3155*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_store_sd: 3156*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3157*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movsd %xmm0, (%rdi) 3158*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3159*9880d681SAndroid Build Coastguard Worker %ext = extractelement <2 x double> %a1, i32 0 3160*9880d681SAndroid Build Coastguard Worker store double %ext, double* %a0, align 1 3161*9880d681SAndroid Build Coastguard Worker ret void 3162*9880d681SAndroid Build Coastguard Worker} 3163*9880d681SAndroid Build Coastguard Worker 3164*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_store_si128(<2 x i64> *%a0, <2 x i64> %a1) { 3165*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_store_si128: 3166*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3167*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 3168*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movaps %xmm0, (%eax) 3169*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3170*9880d681SAndroid Build Coastguard Worker; 3171*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_store_si128: 3172*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3173*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movaps %xmm0, (%rdi) 3174*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3175*9880d681SAndroid Build Coastguard Worker store <2 x i64> %a1, <2 x i64>* %a0, align 16 3176*9880d681SAndroid Build Coastguard Worker ret void 3177*9880d681SAndroid Build Coastguard Worker} 3178*9880d681SAndroid Build Coastguard Worker 3179*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_store1_pd(double *%a0, <2 x double> %a1) { 3180*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_store1_pd: 3181*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3182*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 3183*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0,0] 3184*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movaps %xmm0, (%eax) 3185*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3186*9880d681SAndroid Build Coastguard Worker; 3187*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_store1_pd: 3188*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3189*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0,0] 3190*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movaps %xmm0, (%rdi) 3191*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3192*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast double * %a0 to <2 x double>* 3193*9880d681SAndroid Build Coastguard Worker %shuf = shufflevector <2 x double> %a1, <2 x double> undef, <2 x i32> zeroinitializer 3194*9880d681SAndroid Build Coastguard Worker store <2 x double> %shuf, <2 x double>* %arg0, align 16 3195*9880d681SAndroid Build Coastguard Worker ret void 3196*9880d681SAndroid Build Coastguard Worker} 3197*9880d681SAndroid Build Coastguard Worker 3198*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_storeh_sd(double *%a0, <2 x double> %a1) { 3199*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_storeh_sd: 3200*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3201*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 3202*9880d681SAndroid Build Coastguard Worker; X32-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] 3203*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd %xmm0, (%eax) 3204*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3205*9880d681SAndroid Build Coastguard Worker; 3206*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_storeh_sd: 3207*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3208*9880d681SAndroid Build Coastguard Worker; X64-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] 3209*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movsd %xmm0, (%rdi) 3210*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3211*9880d681SAndroid Build Coastguard Worker %ext = extractelement <2 x double> %a1, i32 1 3212*9880d681SAndroid Build Coastguard Worker store double %ext, double* %a0, align 8 3213*9880d681SAndroid Build Coastguard Worker ret void 3214*9880d681SAndroid Build Coastguard Worker} 3215*9880d681SAndroid Build Coastguard Worker 3216*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_storel_epi64(<2 x i64> *%a0, <2 x i64> %a1) { 3217*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_storel_epi64: 3218*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3219*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 3220*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movlps %xmm0, (%eax) 3221*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3222*9880d681SAndroid Build Coastguard Worker; 3223*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_storel_epi64: 3224*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3225*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movd %xmm0, %rax 3226*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movq %rax, (%rdi) 3227*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3228*9880d681SAndroid Build Coastguard Worker %ext = extractelement <2 x i64> %a1, i32 0 3229*9880d681SAndroid Build Coastguard Worker %bc = bitcast <2 x i64> *%a0 to i64* 3230*9880d681SAndroid Build Coastguard Worker store i64 %ext, i64* %bc, align 8 3231*9880d681SAndroid Build Coastguard Worker ret void 3232*9880d681SAndroid Build Coastguard Worker} 3233*9880d681SAndroid Build Coastguard Worker 3234*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_storel_sd(double *%a0, <2 x double> %a1) { 3235*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_storel_sd: 3236*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3237*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 3238*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movsd %xmm0, (%eax) 3239*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3240*9880d681SAndroid Build Coastguard Worker; 3241*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_storel_sd: 3242*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3243*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movsd %xmm0, (%rdi) 3244*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3245*9880d681SAndroid Build Coastguard Worker %ext = extractelement <2 x double> %a1, i32 0 3246*9880d681SAndroid Build Coastguard Worker store double %ext, double* %a0, align 8 3247*9880d681SAndroid Build Coastguard Worker ret void 3248*9880d681SAndroid Build Coastguard Worker} 3249*9880d681SAndroid Build Coastguard Worker 3250*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_storer_pd(double *%a0, <2 x double> %a1) { 3251*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_storer_pd: 3252*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3253*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 3254*9880d681SAndroid Build Coastguard Worker; X32-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] 3255*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movapd %xmm0, (%eax) 3256*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3257*9880d681SAndroid Build Coastguard Worker; 3258*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_storer_pd: 3259*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3260*9880d681SAndroid Build Coastguard Worker; X64-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] 3261*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movapd %xmm0, (%rdi) 3262*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3263*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast double* %a0 to <2 x double>* 3264*9880d681SAndroid Build Coastguard Worker %shuf = shufflevector <2 x double> %a1, <2 x double> undef, <2 x i32> <i32 1, i32 0> 3265*9880d681SAndroid Build Coastguard Worker store <2 x double> %shuf, <2 x double>* %arg0, align 16 3266*9880d681SAndroid Build Coastguard Worker ret void 3267*9880d681SAndroid Build Coastguard Worker} 3268*9880d681SAndroid Build Coastguard Worker 3269*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_storeu_pd(double *%a0, <2 x double> %a1) { 3270*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_storeu_pd: 3271*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3272*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 3273*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movups %xmm0, (%eax) 3274*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3275*9880d681SAndroid Build Coastguard Worker; 3276*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_storeu_pd: 3277*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3278*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movups %xmm0, (%rdi) 3279*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3280*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast double* %a0 to <2 x double>* 3281*9880d681SAndroid Build Coastguard Worker store <2 x double> %a1, <2 x double>* %arg0, align 1 3282*9880d681SAndroid Build Coastguard Worker ret void 3283*9880d681SAndroid Build Coastguard Worker} 3284*9880d681SAndroid Build Coastguard Worker 3285*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_storeu_si128(<2 x i64> *%a0, <2 x i64> %a1) { 3286*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_storeu_si128: 3287*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3288*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 3289*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movups %xmm0, (%eax) 3290*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3291*9880d681SAndroid Build Coastguard Worker; 3292*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_storeu_si128: 3293*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3294*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movups %xmm0, (%rdi) 3295*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3296*9880d681SAndroid Build Coastguard Worker store <2 x i64> %a1, <2 x i64>* %a0, align 1 3297*9880d681SAndroid Build Coastguard Worker ret void 3298*9880d681SAndroid Build Coastguard Worker} 3299*9880d681SAndroid Build Coastguard Worker 3300*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_stream_pd(double *%a0, <2 x double> %a1) { 3301*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_stream_pd: 3302*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3303*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 3304*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movntps %xmm0, (%eax) 3305*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3306*9880d681SAndroid Build Coastguard Worker; 3307*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_stream_pd: 3308*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3309*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movntps %xmm0, (%rdi) 3310*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3311*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast double* %a0 to <2 x double>* 3312*9880d681SAndroid Build Coastguard Worker store <2 x double> %a1, <2 x double>* %arg0, align 16, !nontemporal !0 3313*9880d681SAndroid Build Coastguard Worker ret void 3314*9880d681SAndroid Build Coastguard Worker} 3315*9880d681SAndroid Build Coastguard Worker 3316*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_stream_si32(i32 *%a0, i32 %a1) { 3317*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_stream_si32: 3318*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3319*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 3320*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx 3321*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movntil %eax, (%ecx) 3322*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3323*9880d681SAndroid Build Coastguard Worker; 3324*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_stream_si32: 3325*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3326*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movntil %esi, (%rdi) 3327*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3328*9880d681SAndroid Build Coastguard Worker store i32 %a1, i32* %a0, align 1, !nontemporal !0 3329*9880d681SAndroid Build Coastguard Worker ret void 3330*9880d681SAndroid Build Coastguard Worker} 3331*9880d681SAndroid Build Coastguard Worker 3332*9880d681SAndroid Build Coastguard Workerdefine void @test_mm_stream_si128(<2 x i64> *%a0, <2 x i64> %a1) { 3333*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_stream_si128: 3334*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3335*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 3336*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movntps %xmm0, (%eax) 3337*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3338*9880d681SAndroid Build Coastguard Worker; 3339*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_stream_si128: 3340*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3341*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movntps %xmm0, (%rdi) 3342*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3343*9880d681SAndroid Build Coastguard Worker store <2 x i64> %a1, <2 x i64>* %a0, align 16, !nontemporal !0 3344*9880d681SAndroid Build Coastguard Worker ret void 3345*9880d681SAndroid Build Coastguard Worker} 3346*9880d681SAndroid Build Coastguard Worker 3347*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sub_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind { 3348*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sub_epi8: 3349*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3350*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psubb %xmm1, %xmm0 3351*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3352*9880d681SAndroid Build Coastguard Worker; 3353*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sub_epi8: 3354*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3355*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psubb %xmm1, %xmm0 3356*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3357*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 3358*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 3359*9880d681SAndroid Build Coastguard Worker %res = sub <16 x i8> %arg0, %arg1 3360*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 3361*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3362*9880d681SAndroid Build Coastguard Worker} 3363*9880d681SAndroid Build Coastguard Worker 3364*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sub_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind { 3365*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sub_epi16: 3366*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3367*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psubw %xmm1, %xmm0 3368*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3369*9880d681SAndroid Build Coastguard Worker; 3370*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sub_epi16: 3371*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3372*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psubw %xmm1, %xmm0 3373*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3374*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 3375*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 3376*9880d681SAndroid Build Coastguard Worker %res = sub <8 x i16> %arg0, %arg1 3377*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 3378*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3379*9880d681SAndroid Build Coastguard Worker} 3380*9880d681SAndroid Build Coastguard Worker 3381*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sub_epi32(<2 x i64> %a0, <2 x i64> %a1) nounwind { 3382*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sub_epi32: 3383*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3384*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psubd %xmm1, %xmm0 3385*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3386*9880d681SAndroid Build Coastguard Worker; 3387*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sub_epi32: 3388*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3389*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psubd %xmm1, %xmm0 3390*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3391*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 3392*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 3393*9880d681SAndroid Build Coastguard Worker %res = sub <4 x i32> %arg0, %arg1 3394*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 3395*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3396*9880d681SAndroid Build Coastguard Worker} 3397*9880d681SAndroid Build Coastguard Worker 3398*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sub_epi64(<2 x i64> %a0, <2 x i64> %a1) nounwind { 3399*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sub_epi64: 3400*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3401*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psubq %xmm1, %xmm0 3402*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3403*9880d681SAndroid Build Coastguard Worker; 3404*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sub_epi64: 3405*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3406*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psubq %xmm1, %xmm0 3407*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3408*9880d681SAndroid Build Coastguard Worker %res = sub <2 x i64> %a0, %a1 3409*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 3410*9880d681SAndroid Build Coastguard Worker} 3411*9880d681SAndroid Build Coastguard Worker 3412*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_sub_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 3413*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sub_pd: 3414*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3415*9880d681SAndroid Build Coastguard Worker; X32-NEXT: subpd %xmm1, %xmm0 3416*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3417*9880d681SAndroid Build Coastguard Worker; 3418*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sub_pd: 3419*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3420*9880d681SAndroid Build Coastguard Worker; X64-NEXT: subpd %xmm1, %xmm0 3421*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3422*9880d681SAndroid Build Coastguard Worker %res = fsub <2 x double> %a0, %a1 3423*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3424*9880d681SAndroid Build Coastguard Worker} 3425*9880d681SAndroid Build Coastguard Worker 3426*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_sub_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 3427*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sub_sd: 3428*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3429*9880d681SAndroid Build Coastguard Worker; X32-NEXT: subsd %xmm1, %xmm0 3430*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3431*9880d681SAndroid Build Coastguard Worker; 3432*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sub_sd: 3433*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3434*9880d681SAndroid Build Coastguard Worker; X64-NEXT: subsd %xmm1, %xmm0 3435*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3436*9880d681SAndroid Build Coastguard Worker %ext0 = extractelement <2 x double> %a0, i32 0 3437*9880d681SAndroid Build Coastguard Worker %ext1 = extractelement <2 x double> %a1, i32 0 3438*9880d681SAndroid Build Coastguard Worker %fsub = fsub double %ext0, %ext1 3439*9880d681SAndroid Build Coastguard Worker %res = insertelement <2 x double> %a0, double %fsub, i32 0 3440*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3441*9880d681SAndroid Build Coastguard Worker} 3442*9880d681SAndroid Build Coastguard Worker 3443*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_subs_epi8(<2 x i64> %a0, <2 x i64> %a1) nounwind { 3444*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_subs_epi8: 3445*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3446*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psubsb %xmm1, %xmm0 3447*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3448*9880d681SAndroid Build Coastguard Worker; 3449*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_subs_epi8: 3450*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3451*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psubsb %xmm1, %xmm0 3452*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3453*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 3454*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 3455*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8> %arg0, <16 x i8> %arg1) 3456*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 3457*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3458*9880d681SAndroid Build Coastguard Worker} 3459*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8>, <16 x i8>) nounwind readnone 3460*9880d681SAndroid Build Coastguard Worker 3461*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_subs_epi16(<2 x i64> %a0, <2 x i64> %a1) nounwind { 3462*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_subs_epi16: 3463*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3464*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psubsw %xmm1, %xmm0 3465*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3466*9880d681SAndroid Build Coastguard Worker; 3467*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_subs_epi16: 3468*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3469*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psubsw %xmm1, %xmm0 3470*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3471*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 3472*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 3473*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16> %arg0, <8 x i16> %arg1) 3474*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 3475*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3476*9880d681SAndroid Build Coastguard Worker} 3477*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16>, <8 x i16>) nounwind readnone 3478*9880d681SAndroid Build Coastguard Worker 3479*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_subs_epu8(<2 x i64> %a0, <2 x i64> %a1) nounwind { 3480*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_subs_epu8: 3481*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3482*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psubusb %xmm1, %xmm0 3483*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3484*9880d681SAndroid Build Coastguard Worker; 3485*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_subs_epu8: 3486*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3487*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psubusb %xmm1, %xmm0 3488*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3489*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 3490*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 3491*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8> %arg0, <16 x i8> %arg1) 3492*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 3493*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3494*9880d681SAndroid Build Coastguard Worker} 3495*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8>, <16 x i8>) nounwind readnone 3496*9880d681SAndroid Build Coastguard Worker 3497*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_subs_epu16(<2 x i64> %a0, <2 x i64> %a1) nounwind { 3498*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_subs_epu16: 3499*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3500*9880d681SAndroid Build Coastguard Worker; X32-NEXT: psubusw %xmm1, %xmm0 3501*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3502*9880d681SAndroid Build Coastguard Worker; 3503*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_subs_epu16: 3504*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3505*9880d681SAndroid Build Coastguard Worker; X64-NEXT: psubusw %xmm1, %xmm0 3506*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3507*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 3508*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 3509*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16> %arg0, <8 x i16> %arg1) 3510*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 3511*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3512*9880d681SAndroid Build Coastguard Worker} 3513*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16>, <8 x i16>) nounwind readnone 3514*9880d681SAndroid Build Coastguard Worker 3515*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_ucomieq_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 3516*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_ucomieq_sd: 3517*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3518*9880d681SAndroid Build Coastguard Worker; X32-NEXT: ucomisd %xmm1, %xmm0 3519*9880d681SAndroid Build Coastguard Worker; X32-NEXT: setnp %al 3520*9880d681SAndroid Build Coastguard Worker; X32-NEXT: sete %cl 3521*9880d681SAndroid Build Coastguard Worker; X32-NEXT: andb %al, %cl 3522*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl %cl, %eax 3523*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3524*9880d681SAndroid Build Coastguard Worker; 3525*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_ucomieq_sd: 3526*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3527*9880d681SAndroid Build Coastguard Worker; X64-NEXT: ucomisd %xmm1, %xmm0 3528*9880d681SAndroid Build Coastguard Worker; X64-NEXT: setnp %al 3529*9880d681SAndroid Build Coastguard Worker; X64-NEXT: sete %cl 3530*9880d681SAndroid Build Coastguard Worker; X64-NEXT: andb %al, %cl 3531*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %cl, %eax 3532*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3533*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> %a0, <2 x double> %a1) 3534*9880d681SAndroid Build Coastguard Worker ret i32 %res 3535*9880d681SAndroid Build Coastguard Worker} 3536*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomieq.sd(<2 x double>, <2 x double>) nounwind readnone 3537*9880d681SAndroid Build Coastguard Worker 3538*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_ucomige_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 3539*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_ucomige_sd: 3540*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3541*9880d681SAndroid Build Coastguard Worker; X32-NEXT: xorl %eax, %eax 3542*9880d681SAndroid Build Coastguard Worker; X32-NEXT: ucomisd %xmm1, %xmm0 3543*9880d681SAndroid Build Coastguard Worker; X32-NEXT: setae %al 3544*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3545*9880d681SAndroid Build Coastguard Worker; 3546*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_ucomige_sd: 3547*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3548*9880d681SAndroid Build Coastguard Worker; X64-NEXT: xorl %eax, %eax 3549*9880d681SAndroid Build Coastguard Worker; X64-NEXT: ucomisd %xmm1, %xmm0 3550*9880d681SAndroid Build Coastguard Worker; X64-NEXT: setae %al 3551*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3552*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.ucomige.sd(<2 x double> %a0, <2 x double> %a1) 3553*9880d681SAndroid Build Coastguard Worker ret i32 %res 3554*9880d681SAndroid Build Coastguard Worker} 3555*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomige.sd(<2 x double>, <2 x double>) nounwind readnone 3556*9880d681SAndroid Build Coastguard Worker 3557*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_ucomigt_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 3558*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_ucomigt_sd: 3559*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3560*9880d681SAndroid Build Coastguard Worker; X32-NEXT: xorl %eax, %eax 3561*9880d681SAndroid Build Coastguard Worker; X32-NEXT: ucomisd %xmm1, %xmm0 3562*9880d681SAndroid Build Coastguard Worker; X32-NEXT: seta %al 3563*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3564*9880d681SAndroid Build Coastguard Worker; 3565*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_ucomigt_sd: 3566*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3567*9880d681SAndroid Build Coastguard Worker; X64-NEXT: xorl %eax, %eax 3568*9880d681SAndroid Build Coastguard Worker; X64-NEXT: ucomisd %xmm1, %xmm0 3569*9880d681SAndroid Build Coastguard Worker; X64-NEXT: seta %al 3570*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3571*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.ucomigt.sd(<2 x double> %a0, <2 x double> %a1) 3572*9880d681SAndroid Build Coastguard Worker ret i32 %res 3573*9880d681SAndroid Build Coastguard Worker} 3574*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomigt.sd(<2 x double>, <2 x double>) nounwind readnone 3575*9880d681SAndroid Build Coastguard Worker 3576*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_ucomile_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 3577*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_ucomile_sd: 3578*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3579*9880d681SAndroid Build Coastguard Worker; X32-NEXT: xorl %eax, %eax 3580*9880d681SAndroid Build Coastguard Worker; X32-NEXT: ucomisd %xmm0, %xmm1 3581*9880d681SAndroid Build Coastguard Worker; X32-NEXT: setae %al 3582*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3583*9880d681SAndroid Build Coastguard Worker; 3584*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_ucomile_sd: 3585*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3586*9880d681SAndroid Build Coastguard Worker; X64-NEXT: xorl %eax, %eax 3587*9880d681SAndroid Build Coastguard Worker; X64-NEXT: ucomisd %xmm0, %xmm1 3588*9880d681SAndroid Build Coastguard Worker; X64-NEXT: setae %al 3589*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3590*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.ucomile.sd(<2 x double> %a0, <2 x double> %a1) 3591*9880d681SAndroid Build Coastguard Worker ret i32 %res 3592*9880d681SAndroid Build Coastguard Worker} 3593*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomile.sd(<2 x double>, <2 x double>) nounwind readnone 3594*9880d681SAndroid Build Coastguard Worker 3595*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_ucomilt_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 3596*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_ucomilt_sd: 3597*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3598*9880d681SAndroid Build Coastguard Worker; X32-NEXT: xorl %eax, %eax 3599*9880d681SAndroid Build Coastguard Worker; X32-NEXT: ucomisd %xmm0, %xmm1 3600*9880d681SAndroid Build Coastguard Worker; X32-NEXT: seta %al 3601*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3602*9880d681SAndroid Build Coastguard Worker; 3603*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_ucomilt_sd: 3604*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3605*9880d681SAndroid Build Coastguard Worker; X64-NEXT: xorl %eax, %eax 3606*9880d681SAndroid Build Coastguard Worker; X64-NEXT: ucomisd %xmm0, %xmm1 3607*9880d681SAndroid Build Coastguard Worker; X64-NEXT: seta %al 3608*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3609*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.ucomilt.sd(<2 x double> %a0, <2 x double> %a1) 3610*9880d681SAndroid Build Coastguard Worker ret i32 %res 3611*9880d681SAndroid Build Coastguard Worker} 3612*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomilt.sd(<2 x double>, <2 x double>) nounwind readnone 3613*9880d681SAndroid Build Coastguard Worker 3614*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mm_ucomineq_sd(<2 x double> %a0, <2 x double> %a1) nounwind { 3615*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_ucomineq_sd: 3616*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3617*9880d681SAndroid Build Coastguard Worker; X32-NEXT: ucomisd %xmm1, %xmm0 3618*9880d681SAndroid Build Coastguard Worker; X32-NEXT: setp %al 3619*9880d681SAndroid Build Coastguard Worker; X32-NEXT: setne %cl 3620*9880d681SAndroid Build Coastguard Worker; X32-NEXT: orb %al, %cl 3621*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movzbl %cl, %eax 3622*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3623*9880d681SAndroid Build Coastguard Worker; 3624*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_ucomineq_sd: 3625*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3626*9880d681SAndroid Build Coastguard Worker; X64-NEXT: ucomisd %xmm1, %xmm0 3627*9880d681SAndroid Build Coastguard Worker; X64-NEXT: setp %al 3628*9880d681SAndroid Build Coastguard Worker; X64-NEXT: setne %cl 3629*9880d681SAndroid Build Coastguard Worker; X64-NEXT: orb %al, %cl 3630*9880d681SAndroid Build Coastguard Worker; X64-NEXT: movzbl %cl, %eax 3631*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3632*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.ucomineq.sd(<2 x double> %a0, <2 x double> %a1) 3633*9880d681SAndroid Build Coastguard Worker ret i32 %res 3634*9880d681SAndroid Build Coastguard Worker} 3635*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomineq.sd(<2 x double>, <2 x double>) nounwind readnone 3636*9880d681SAndroid Build Coastguard Worker 3637*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_undefined_pd() { 3638*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_undefined_pd: 3639*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3640*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3641*9880d681SAndroid Build Coastguard Worker; 3642*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_undefined_pd: 3643*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3644*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3645*9880d681SAndroid Build Coastguard Worker ret <2 x double> undef 3646*9880d681SAndroid Build Coastguard Worker} 3647*9880d681SAndroid Build Coastguard Worker 3648*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_undefined_si128() { 3649*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_undefined_si128: 3650*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3651*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3652*9880d681SAndroid Build Coastguard Worker; 3653*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_undefined_si128: 3654*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3655*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3656*9880d681SAndroid Build Coastguard Worker ret <2 x i64> undef 3657*9880d681SAndroid Build Coastguard Worker} 3658*9880d681SAndroid Build Coastguard Worker 3659*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpackhi_epi8(<2 x i64> %a0, <2 x i64> %a1) { 3660*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpackhi_epi8: 3661*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3662*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15] 3663*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3664*9880d681SAndroid Build Coastguard Worker; 3665*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpackhi_epi8: 3666*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3667*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15] 3668*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3669*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 3670*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 3671*9880d681SAndroid Build Coastguard Worker %res = shufflevector <16 x i8> %arg0, <16 x i8> %arg1, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 3672*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 3673*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3674*9880d681SAndroid Build Coastguard Worker} 3675*9880d681SAndroid Build Coastguard Worker 3676*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpackhi_epi16(<2 x i64> %a0, <2 x i64> %a1) { 3677*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpackhi_epi16: 3678*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3679*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 3680*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3681*9880d681SAndroid Build Coastguard Worker; 3682*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpackhi_epi16: 3683*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3684*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 3685*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3686*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 3687*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 3688*9880d681SAndroid Build Coastguard Worker %res = shufflevector <8 x i16> %arg0, <8 x i16> %arg1, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 3689*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 3690*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3691*9880d681SAndroid Build Coastguard Worker} 3692*9880d681SAndroid Build Coastguard Worker 3693*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpackhi_epi32(<2 x i64> %a0, <2 x i64> %a1) { 3694*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpackhi_epi32: 3695*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3696*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3] 3697*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3698*9880d681SAndroid Build Coastguard Worker; 3699*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpackhi_epi32: 3700*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3701*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3] 3702*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3703*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 3704*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 3705*9880d681SAndroid Build Coastguard Worker %res = shufflevector <4 x i32> %arg0,<4 x i32> %arg1, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 3706*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 3707*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3708*9880d681SAndroid Build Coastguard Worker} 3709*9880d681SAndroid Build Coastguard Worker 3710*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpackhi_epi64(<2 x i64> %a0, <2 x i64> %a1) { 3711*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpackhi_epi64: 3712*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3713*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1] 3714*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3715*9880d681SAndroid Build Coastguard Worker; 3716*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpackhi_epi64: 3717*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3718*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1] 3719*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3720*9880d681SAndroid Build Coastguard Worker %res = shufflevector <2 x i64> %a0, <2 x i64> %a1, <2 x i32> <i32 1, i32 3> 3721*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 3722*9880d681SAndroid Build Coastguard Worker} 3723*9880d681SAndroid Build Coastguard Worker 3724*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_unpackhi_pd(<2 x double> %a0, <2 x double> %a1) { 3725*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpackhi_pd: 3726*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3727*9880d681SAndroid Build Coastguard Worker; X32-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1] 3728*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3729*9880d681SAndroid Build Coastguard Worker; 3730*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpackhi_pd: 3731*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3732*9880d681SAndroid Build Coastguard Worker; X64-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1] 3733*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3734*9880d681SAndroid Build Coastguard Worker %res = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 1, i32 3> 3735*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3736*9880d681SAndroid Build Coastguard Worker} 3737*9880d681SAndroid Build Coastguard Worker 3738*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpacklo_epi8(<2 x i64> %a0, <2 x i64> %a1) { 3739*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpacklo_epi8: 3740*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3741*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 3742*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3743*9880d681SAndroid Build Coastguard Worker; 3744*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpacklo_epi8: 3745*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3746*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] 3747*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3748*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 3749*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 3750*9880d681SAndroid Build Coastguard Worker %res = shufflevector <16 x i8> %arg0, <16 x i8> %arg1, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23> 3751*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 3752*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3753*9880d681SAndroid Build Coastguard Worker} 3754*9880d681SAndroid Build Coastguard Worker 3755*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpacklo_epi16(<2 x i64> %a0, <2 x i64> %a1) { 3756*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpacklo_epi16: 3757*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3758*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 3759*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3760*9880d681SAndroid Build Coastguard Worker; 3761*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpacklo_epi16: 3762*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3763*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] 3764*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3765*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 3766*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 3767*9880d681SAndroid Build Coastguard Worker %res = shufflevector <8 x i16> %arg0, <8 x i16> %arg1, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 3768*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 3769*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3770*9880d681SAndroid Build Coastguard Worker} 3771*9880d681SAndroid Build Coastguard Worker 3772*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpacklo_epi32(<2 x i64> %a0, <2 x i64> %a1) { 3773*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpacklo_epi32: 3774*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3775*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 3776*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3777*9880d681SAndroid Build Coastguard Worker; 3778*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpacklo_epi32: 3779*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3780*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] 3781*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3782*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 3783*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 3784*9880d681SAndroid Build Coastguard Worker %res = shufflevector <4 x i32> %arg0,<4 x i32> %arg1, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 3785*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 3786*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 3787*9880d681SAndroid Build Coastguard Worker} 3788*9880d681SAndroid Build Coastguard Worker 3789*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_unpacklo_epi64(<2 x i64> %a0, <2 x i64> %a1) { 3790*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpacklo_epi64: 3791*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3792*9880d681SAndroid Build Coastguard Worker; X32-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 3793*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3794*9880d681SAndroid Build Coastguard Worker; 3795*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpacklo_epi64: 3796*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3797*9880d681SAndroid Build Coastguard Worker; X64-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] 3798*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3799*9880d681SAndroid Build Coastguard Worker %res = shufflevector <2 x i64> %a0, <2 x i64> %a1, <2 x i32> <i32 0, i32 2> 3800*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 3801*9880d681SAndroid Build Coastguard Worker} 3802*9880d681SAndroid Build Coastguard Worker 3803*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_unpacklo_pd(<2 x double> %a0, <2 x double> %a1) { 3804*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_unpacklo_pd: 3805*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3806*9880d681SAndroid Build Coastguard Worker; X32-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0] 3807*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3808*9880d681SAndroid Build Coastguard Worker; 3809*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_unpacklo_pd: 3810*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3811*9880d681SAndroid Build Coastguard Worker; X64-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0] 3812*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3813*9880d681SAndroid Build Coastguard Worker %res = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 0, i32 2> 3814*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3815*9880d681SAndroid Build Coastguard Worker} 3816*9880d681SAndroid Build Coastguard Worker 3817*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_xor_pd(<2 x double> %a0, <2 x double> %a1) nounwind { 3818*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_xor_pd: 3819*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3820*9880d681SAndroid Build Coastguard Worker; X32-NEXT: xorps %xmm1, %xmm0 3821*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3822*9880d681SAndroid Build Coastguard Worker; 3823*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_xor_pd: 3824*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3825*9880d681SAndroid Build Coastguard Worker; X64-NEXT: xorps %xmm1, %xmm0 3826*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3827*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x double> %a0 to <4 x i32> 3828*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x double> %a1 to <4 x i32> 3829*9880d681SAndroid Build Coastguard Worker %res = xor <4 x i32> %arg0, %arg1 3830*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x double> 3831*9880d681SAndroid Build Coastguard Worker ret <2 x double> %bc 3832*9880d681SAndroid Build Coastguard Worker} 3833*9880d681SAndroid Build Coastguard Worker 3834*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_xor_si128(<2 x i64> %a0, <2 x i64> %a1) nounwind { 3835*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_xor_si128: 3836*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 3837*9880d681SAndroid Build Coastguard Worker; X32-NEXT: xorps %xmm1, %xmm0 3838*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 3839*9880d681SAndroid Build Coastguard Worker; 3840*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_xor_si128: 3841*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 3842*9880d681SAndroid Build Coastguard Worker; X64-NEXT: xorps %xmm1, %xmm0 3843*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 3844*9880d681SAndroid Build Coastguard Worker %res = xor <2 x i64> %a0, %a1 3845*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 3846*9880d681SAndroid Build Coastguard Worker} 3847*9880d681SAndroid Build Coastguard Worker 3848*9880d681SAndroid Build Coastguard Worker!0 = !{i32 1} 3849*9880d681SAndroid Build Coastguard Worker 3850