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