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 -march=x86-64 -mtriple=x86_64-apple-darwin -mcpu=knl --show-mc-encoding| FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine i32 @test1(float %x) { 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test1: 6*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovd %xmm0, %eax ## encoding: [0x62,0xf1,0x7d,0x08,0x7e,0xc0] 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 9*9880d681SAndroid Build Coastguard Worker %res = bitcast float %x to i32 10*9880d681SAndroid Build Coastguard Worker ret i32 %res 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test2(i32 %x) { 14*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test2: 15*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovd %edi, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc7] 17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 18*9880d681SAndroid Build Coastguard Worker %res = insertelement <4 x i32>undef, i32 %x, i32 0 19*9880d681SAndroid Build Coastguard Worker ret <4 x i32>%res 20*9880d681SAndroid Build Coastguard Worker} 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test3(i64 %x) { 23*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test3: 24*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovq %rdi, %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x6e,0xc7] 26*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 27*9880d681SAndroid Build Coastguard Worker %res = insertelement <2 x i64>undef, i64 %x, i32 0 28*9880d681SAndroid Build Coastguard Worker ret <2 x i64>%res 29*9880d681SAndroid Build Coastguard Worker} 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test4(i32* %x) { 32*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test4: 33*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 34*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovd (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0x07] 35*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## xmm0 = mem[0],zero,zero,zero 36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 37*9880d681SAndroid Build Coastguard Worker %y = load i32, i32* %x 38*9880d681SAndroid Build Coastguard Worker %res = insertelement <4 x i32>undef, i32 %y, i32 0 39*9880d681SAndroid Build Coastguard Worker ret <4 x i32>%res 40*9880d681SAndroid Build Coastguard Worker} 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workerdefine void @test5(float %x, float* %y) { 43*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test5: 44*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovss %xmm0, (%rdi) ## encoding: [0x62,0xf1,0x7e,0x08,0x11,0x07] 46*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 47*9880d681SAndroid Build Coastguard Worker store float %x, float* %y, align 4 48*9880d681SAndroid Build Coastguard Worker ret void 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerdefine void @test6(double %x, double* %y) { 52*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test6: 53*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovsd %xmm0, (%rdi) ## encoding: [0x62,0xf1,0xff,0x08,0x11,0x07] 55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 56*9880d681SAndroid Build Coastguard Worker store double %x, double* %y, align 8 57*9880d681SAndroid Build Coastguard Worker ret void 58*9880d681SAndroid Build Coastguard Worker} 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Workerdefine float @test7(i32* %x) { 61*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test7: 62*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovss (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7e,0x08,0x10,0x07] 64*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## xmm0 = mem[0],zero,zero,zero 65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 66*9880d681SAndroid Build Coastguard Worker %y = load i32, i32* %x 67*9880d681SAndroid Build Coastguard Worker %res = bitcast i32 %y to float 68*9880d681SAndroid Build Coastguard Worker ret float %res 69*9880d681SAndroid Build Coastguard Worker} 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Workerdefine i32 @test8(<4 x i32> %x) { 72*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test8: 73*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovd %xmm0, %eax ## encoding: [0x62,0xf1,0x7d,0x08,0x7e,0xc0] 75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 76*9880d681SAndroid Build Coastguard Worker %res = extractelement <4 x i32> %x, i32 0 77*9880d681SAndroid Build Coastguard Worker ret i32 %res 78*9880d681SAndroid Build Coastguard Worker} 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Workerdefine i64 @test9(<2 x i64> %x) { 81*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test9: 82*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 83*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovq %xmm0, %rax ## encoding: [0x62,0xf1,0xfd,0x08,0x7e,0xc0] 84*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 85*9880d681SAndroid Build Coastguard Worker %res = extractelement <2 x i64> %x, i32 0 86*9880d681SAndroid Build Coastguard Worker ret i64 %res 87*9880d681SAndroid Build Coastguard Worker} 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test10(i32* %x) { 90*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test10: 91*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 92*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovd (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0x07] 93*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## xmm0 = mem[0],zero,zero,zero 94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 95*9880d681SAndroid Build Coastguard Worker %y = load i32, i32* %x, align 4 96*9880d681SAndroid Build Coastguard Worker %res = insertelement <4 x i32>zeroinitializer, i32 %y, i32 0 97*9880d681SAndroid Build Coastguard Worker ret <4 x i32>%res 98*9880d681SAndroid Build Coastguard Worker} 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test11(float* %x) { 101*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test11: 102*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovss (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7e,0x08,0x10,0x07] 104*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## xmm0 = mem[0],zero,zero,zero 105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 106*9880d681SAndroid Build Coastguard Worker %y = load float, float* %x, align 4 107*9880d681SAndroid Build Coastguard Worker %res = insertelement <4 x float>zeroinitializer, float %y, i32 0 108*9880d681SAndroid Build Coastguard Worker ret <4 x float>%res 109*9880d681SAndroid Build Coastguard Worker} 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test12(double* %x) { 112*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test12: 113*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovsd (%rdi), %xmm0 ## encoding: [0x62,0xf1,0xff,0x08,0x10,0x07] 115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## xmm0 = mem[0],zero 116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 117*9880d681SAndroid Build Coastguard Worker %y = load double, double* %x, align 8 118*9880d681SAndroid Build Coastguard Worker %res = insertelement <2 x double>zeroinitializer, double %y, i32 0 119*9880d681SAndroid Build Coastguard Worker ret <2 x double>%res 120*9880d681SAndroid Build Coastguard Worker} 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test13(i64 %x) { 123*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test13: 124*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovq %rdi, %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x6e,0xc7] 126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 127*9880d681SAndroid Build Coastguard Worker %res = insertelement <2 x i64>zeroinitializer, i64 %x, i32 0 128*9880d681SAndroid Build Coastguard Worker ret <2 x i64>%res 129*9880d681SAndroid Build Coastguard Worker} 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test14(i32 %x) { 132*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test14: 133*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 134*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovd %edi, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc7] 135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 136*9880d681SAndroid Build Coastguard Worker %res = insertelement <4 x i32>zeroinitializer, i32 %x, i32 0 137*9880d681SAndroid Build Coastguard Worker ret <4 x i32>%res 138*9880d681SAndroid Build Coastguard Worker} 139*9880d681SAndroid Build Coastguard Worker 140*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test15(i32* %x) { 141*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test15: 142*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovd (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0x07] 144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## xmm0 = mem[0],zero,zero,zero 145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 146*9880d681SAndroid Build Coastguard Worker %y = load i32, i32* %x, align 4 147*9880d681SAndroid Build Coastguard Worker %res = insertelement <4 x i32>zeroinitializer, i32 %y, i32 0 148*9880d681SAndroid Build Coastguard Worker ret <4 x i32>%res 149*9880d681SAndroid Build Coastguard Worker} 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test16(i8 * %addr) { 152*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test16: 153*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu32 (%rdi), %zmm0 ## encoding: [0x62,0xf1,0x7e,0x48,0x6f,0x07] 155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 156*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x i32>* 157*9880d681SAndroid Build Coastguard Worker %res = load <16 x i32>, <16 x i32>* %vaddr, align 1 158*9880d681SAndroid Build Coastguard Worker ret <16 x i32>%res 159*9880d681SAndroid Build Coastguard Worker} 160*9880d681SAndroid Build Coastguard Worker 161*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test17(i8 * %addr) { 162*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test17: 163*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa32 (%rdi), %zmm0 ## encoding: [0x62,0xf1,0x7d,0x48,0x6f,0x07] 165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 166*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x i32>* 167*9880d681SAndroid Build Coastguard Worker %res = load <16 x i32>, <16 x i32>* %vaddr, align 64 168*9880d681SAndroid Build Coastguard Worker ret <16 x i32>%res 169*9880d681SAndroid Build Coastguard Worker} 170*9880d681SAndroid Build Coastguard Worker 171*9880d681SAndroid Build Coastguard Workerdefine void @test18(i8 * %addr, <8 x i64> %data) { 172*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test18: 173*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa64 %zmm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x48,0x7f,0x07] 175*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 176*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i64>* 177*9880d681SAndroid Build Coastguard Worker store <8 x i64>%data, <8 x i64>* %vaddr, align 64 178*9880d681SAndroid Build Coastguard Worker ret void 179*9880d681SAndroid Build Coastguard Worker} 180*9880d681SAndroid Build Coastguard Worker 181*9880d681SAndroid Build Coastguard Workerdefine void @test19(i8 * %addr, <16 x i32> %data) { 182*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test19: 183*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu32 %zmm0, (%rdi) ## encoding: [0x62,0xf1,0x7e,0x48,0x7f,0x07] 185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 186*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x i32>* 187*9880d681SAndroid Build Coastguard Worker store <16 x i32>%data, <16 x i32>* %vaddr, align 1 188*9880d681SAndroid Build Coastguard Worker ret void 189*9880d681SAndroid Build Coastguard Worker} 190*9880d681SAndroid Build Coastguard Worker 191*9880d681SAndroid Build Coastguard Workerdefine void @test20(i8 * %addr, <16 x i32> %data) { 192*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test20: 193*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa32 %zmm0, (%rdi) ## encoding: [0x62,0xf1,0x7d,0x48,0x7f,0x07] 195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 196*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x i32>* 197*9880d681SAndroid Build Coastguard Worker store <16 x i32>%data, <16 x i32>* %vaddr, align 64 198*9880d681SAndroid Build Coastguard Worker ret void 199*9880d681SAndroid Build Coastguard Worker} 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test21(i8 * %addr) { 202*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test21: 203*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa64 (%rdi), %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x6f,0x07] 205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 206*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i64>* 207*9880d681SAndroid Build Coastguard Worker %res = load <8 x i64>, <8 x i64>* %vaddr, align 64 208*9880d681SAndroid Build Coastguard Worker ret <8 x i64>%res 209*9880d681SAndroid Build Coastguard Worker} 210*9880d681SAndroid Build Coastguard Worker 211*9880d681SAndroid Build Coastguard Workerdefine void @test22(i8 * %addr, <8 x i64> %data) { 212*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test22: 213*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu64 %zmm0, (%rdi) ## encoding: [0x62,0xf1,0xfe,0x48,0x7f,0x07] 215*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 216*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i64>* 217*9880d681SAndroid Build Coastguard Worker store <8 x i64>%data, <8 x i64>* %vaddr, align 1 218*9880d681SAndroid Build Coastguard Worker ret void 219*9880d681SAndroid Build Coastguard Worker} 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test23(i8 * %addr) { 222*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test23: 223*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 224*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu64 (%rdi), %zmm0 ## encoding: [0x62,0xf1,0xfe,0x48,0x6f,0x07] 225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 226*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i64>* 227*9880d681SAndroid Build Coastguard Worker %res = load <8 x i64>, <8 x i64>* %vaddr, align 1 228*9880d681SAndroid Build Coastguard Worker ret <8 x i64>%res 229*9880d681SAndroid Build Coastguard Worker} 230*9880d681SAndroid Build Coastguard Worker 231*9880d681SAndroid Build Coastguard Workerdefine void @test24(i8 * %addr, <8 x double> %data) { 232*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test24: 233*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 234*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovapd %zmm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x48,0x29,0x07] 235*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 236*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x double>* 237*9880d681SAndroid Build Coastguard Worker store <8 x double>%data, <8 x double>* %vaddr, align 64 238*9880d681SAndroid Build Coastguard Worker ret void 239*9880d681SAndroid Build Coastguard Worker} 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test25(i8 * %addr) { 242*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test25: 243*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 244*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovapd (%rdi), %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0x07] 245*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 246*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x double>* 247*9880d681SAndroid Build Coastguard Worker %res = load <8 x double>, <8 x double>* %vaddr, align 64 248*9880d681SAndroid Build Coastguard Worker ret <8 x double>%res 249*9880d681SAndroid Build Coastguard Worker} 250*9880d681SAndroid Build Coastguard Worker 251*9880d681SAndroid Build Coastguard Workerdefine void @test26(i8 * %addr, <16 x float> %data) { 252*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test26: 253*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, (%rdi) ## encoding: [0x62,0xf1,0x7c,0x48,0x29,0x07] 255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 256*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x float>* 257*9880d681SAndroid Build Coastguard Worker store <16 x float>%data, <16 x float>* %vaddr, align 64 258*9880d681SAndroid Build Coastguard Worker ret void 259*9880d681SAndroid Build Coastguard Worker} 260*9880d681SAndroid Build Coastguard Worker 261*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test27(i8 * %addr) { 262*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test27: 263*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps (%rdi), %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0x07] 265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 266*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x float>* 267*9880d681SAndroid Build Coastguard Worker %res = load <16 x float>, <16 x float>* %vaddr, align 64 268*9880d681SAndroid Build Coastguard Worker ret <16 x float>%res 269*9880d681SAndroid Build Coastguard Worker} 270*9880d681SAndroid Build Coastguard Worker 271*9880d681SAndroid Build Coastguard Workerdefine void @test28(i8 * %addr, <8 x double> %data) { 272*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test28: 273*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 274*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovupd %zmm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x48,0x11,0x07] 275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 276*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x double>* 277*9880d681SAndroid Build Coastguard Worker store <8 x double>%data, <8 x double>* %vaddr, align 1 278*9880d681SAndroid Build Coastguard Worker ret void 279*9880d681SAndroid Build Coastguard Worker} 280*9880d681SAndroid Build Coastguard Worker 281*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test29(i8 * %addr) { 282*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test29: 283*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 284*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovupd (%rdi), %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x10,0x07] 285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 286*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x double>* 287*9880d681SAndroid Build Coastguard Worker %res = load <8 x double>, <8 x double>* %vaddr, align 1 288*9880d681SAndroid Build Coastguard Worker ret <8 x double>%res 289*9880d681SAndroid Build Coastguard Worker} 290*9880d681SAndroid Build Coastguard Worker 291*9880d681SAndroid Build Coastguard Workerdefine void @test30(i8 * %addr, <16 x float> %data) { 292*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test30: 293*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 294*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovups %zmm0, (%rdi) ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x07] 295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 296*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x float>* 297*9880d681SAndroid Build Coastguard Worker store <16 x float>%data, <16 x float>* %vaddr, align 1 298*9880d681SAndroid Build Coastguard Worker ret void 299*9880d681SAndroid Build Coastguard Worker} 300*9880d681SAndroid Build Coastguard Worker 301*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test31(i8 * %addr) { 302*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test31: 303*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovups (%rdi), %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x07] 305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 306*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x float>* 307*9880d681SAndroid Build Coastguard Worker %res = load <16 x float>, <16 x float>* %vaddr, align 1 308*9880d681SAndroid Build Coastguard Worker ret <16 x float>%res 309*9880d681SAndroid Build Coastguard Worker} 310*9880d681SAndroid Build Coastguard Worker 311*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test32(i8 * %addr, <16 x i32> %old, <16 x i32> %mask1) { 312*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test32: 313*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 314*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2] 315*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf3,0x75,0x48,0x1f,0xca,0x04] 316*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0x64,0x07] 317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 318*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <16 x i32> %mask1, zeroinitializer 319*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x i32>* 320*9880d681SAndroid Build Coastguard Worker %r = load <16 x i32>, <16 x i32>* %vaddr, align 64 321*9880d681SAndroid Build Coastguard Worker %res = select <16 x i1> %mask, <16 x i32> %r, <16 x i32> %old 322*9880d681SAndroid Build Coastguard Worker ret <16 x i32>%res 323*9880d681SAndroid Build Coastguard Worker} 324*9880d681SAndroid Build Coastguard Worker 325*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test33(i8 * %addr, <16 x i32> %old, <16 x i32> %mask1) { 326*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test33: 327*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 328*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2] 329*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf3,0x75,0x48,0x1f,0xca,0x04] 330*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0x64,0x07] 331*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 332*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <16 x i32> %mask1, zeroinitializer 333*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x i32>* 334*9880d681SAndroid Build Coastguard Worker %r = load <16 x i32>, <16 x i32>* %vaddr, align 1 335*9880d681SAndroid Build Coastguard Worker %res = select <16 x i1> %mask, <16 x i32> %r, <16 x i32> %old 336*9880d681SAndroid Build Coastguard Worker ret <16 x i32>%res 337*9880d681SAndroid Build Coastguard Worker} 338*9880d681SAndroid Build Coastguard Worker 339*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test34(i8 * %addr, <16 x i32> %mask1) { 340*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test34: 341*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 342*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9] 343*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x48,0x1f,0xc9,0x04] 344*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa32 (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xc9,0x6f,0x07] 345*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 346*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <16 x i32> %mask1, zeroinitializer 347*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x i32>* 348*9880d681SAndroid Build Coastguard Worker %r = load <16 x i32>, <16 x i32>* %vaddr, align 64 349*9880d681SAndroid Build Coastguard Worker %res = select <16 x i1> %mask, <16 x i32> %r, <16 x i32> zeroinitializer 350*9880d681SAndroid Build Coastguard Worker ret <16 x i32>%res 351*9880d681SAndroid Build Coastguard Worker} 352*9880d681SAndroid Build Coastguard Worker 353*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test35(i8 * %addr, <16 x i32> %mask1) { 354*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test35: 355*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9] 357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x48,0x1f,0xc9,0x04] 358*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu32 (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7e,0xc9,0x6f,0x07] 359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 360*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <16 x i32> %mask1, zeroinitializer 361*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x i32>* 362*9880d681SAndroid Build Coastguard Worker %r = load <16 x i32>, <16 x i32>* %vaddr, align 1 363*9880d681SAndroid Build Coastguard Worker %res = select <16 x i1> %mask, <16 x i32> %r, <16 x i32> zeroinitializer 364*9880d681SAndroid Build Coastguard Worker ret <16 x i32>%res 365*9880d681SAndroid Build Coastguard Worker} 366*9880d681SAndroid Build Coastguard Worker 367*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test36(i8 * %addr, <8 x i64> %old, <8 x i64> %mask1) { 368*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test36: 369*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2] 371*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x48,0x1f,0xca,0x04] 372*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0x64,0x07] 373*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 374*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <8 x i64> %mask1, zeroinitializer 375*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i64>* 376*9880d681SAndroid Build Coastguard Worker %r = load <8 x i64>, <8 x i64>* %vaddr, align 64 377*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x i64> %r, <8 x i64> %old 378*9880d681SAndroid Build Coastguard Worker ret <8 x i64>%res 379*9880d681SAndroid Build Coastguard Worker} 380*9880d681SAndroid Build Coastguard Worker 381*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test37(i8 * %addr, <8 x i64> %old, <8 x i64> %mask1) { 382*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test37: 383*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 384*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2] 385*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x48,0x1f,0xca,0x04] 386*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0x64,0x07] 387*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 388*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <8 x i64> %mask1, zeroinitializer 389*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i64>* 390*9880d681SAndroid Build Coastguard Worker %r = load <8 x i64>, <8 x i64>* %vaddr, align 1 391*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x i64> %r, <8 x i64> %old 392*9880d681SAndroid Build Coastguard Worker ret <8 x i64>%res 393*9880d681SAndroid Build Coastguard Worker} 394*9880d681SAndroid Build Coastguard Worker 395*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test38(i8 * %addr, <8 x i64> %mask1) { 396*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test38: 397*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 398*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9] 399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x48,0x1f,0xc9,0x04] 400*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa64 (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0xc9,0x6f,0x07] 401*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 402*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <8 x i64> %mask1, zeroinitializer 403*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i64>* 404*9880d681SAndroid Build Coastguard Worker %r = load <8 x i64>, <8 x i64>* %vaddr, align 64 405*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x i64> %r, <8 x i64> zeroinitializer 406*9880d681SAndroid Build Coastguard Worker ret <8 x i64>%res 407*9880d681SAndroid Build Coastguard Worker} 408*9880d681SAndroid Build Coastguard Worker 409*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test39(i8 * %addr, <8 x i64> %mask1) { 410*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test39: 411*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 412*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9] 413*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x48,0x1f,0xc9,0x04] 414*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu64 (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfe,0xc9,0x6f,0x07] 415*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 416*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <8 x i64> %mask1, zeroinitializer 417*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i64>* 418*9880d681SAndroid Build Coastguard Worker %r = load <8 x i64>, <8 x i64>* %vaddr, align 1 419*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x i64> %r, <8 x i64> zeroinitializer 420*9880d681SAndroid Build Coastguard Worker ret <8 x i64>%res 421*9880d681SAndroid Build Coastguard Worker} 422*9880d681SAndroid Build Coastguard Worker 423*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test40(i8 * %addr, <16 x float> %old, <16 x float> %mask1) { 424*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test40: 425*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 426*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2] 427*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpordps %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf1,0x74,0x48,0xc2,0xca,0x07] 428*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqps %zmm2, %zmm1, %k1 {%k1} ## encoding: [0x62,0xf1,0x74,0x49,0xc2,0xca,0x04] 429*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vblendmps (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0x65,0x07] 430*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 431*9880d681SAndroid Build Coastguard Worker %mask = fcmp one <16 x float> %mask1, zeroinitializer 432*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x float>* 433*9880d681SAndroid Build Coastguard Worker %r = load <16 x float>, <16 x float>* %vaddr, align 64 434*9880d681SAndroid Build Coastguard Worker %res = select <16 x i1> %mask, <16 x float> %r, <16 x float> %old 435*9880d681SAndroid Build Coastguard Worker ret <16 x float>%res 436*9880d681SAndroid Build Coastguard Worker} 437*9880d681SAndroid Build Coastguard Worker 438*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test41(i8 * %addr, <16 x float> %old, <16 x float> %mask1) { 439*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test41: 440*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 441*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2] 442*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpordps %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf1,0x74,0x48,0xc2,0xca,0x07] 443*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqps %zmm2, %zmm1, %k1 {%k1} ## encoding: [0x62,0xf1,0x74,0x49,0xc2,0xca,0x04] 444*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vblendmps (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0x65,0x07] 445*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 446*9880d681SAndroid Build Coastguard Worker %mask = fcmp one <16 x float> %mask1, zeroinitializer 447*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x float>* 448*9880d681SAndroid Build Coastguard Worker %r = load <16 x float>, <16 x float>* %vaddr, align 1 449*9880d681SAndroid Build Coastguard Worker %res = select <16 x i1> %mask, <16 x float> %r, <16 x float> %old 450*9880d681SAndroid Build Coastguard Worker ret <16 x float>%res 451*9880d681SAndroid Build Coastguard Worker} 452*9880d681SAndroid Build Coastguard Worker 453*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test42(i8 * %addr, <16 x float> %mask1) { 454*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test42: 455*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9] 457*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpordps %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf1,0x7c,0x48,0xc2,0xc9,0x07] 458*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqps %zmm1, %zmm0, %k1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x49,0xc2,0xc9,0x04] 459*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xc9,0x28,0x07] 460*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 461*9880d681SAndroid Build Coastguard Worker %mask = fcmp one <16 x float> %mask1, zeroinitializer 462*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x float>* 463*9880d681SAndroid Build Coastguard Worker %r = load <16 x float>, <16 x float>* %vaddr, align 64 464*9880d681SAndroid Build Coastguard Worker %res = select <16 x i1> %mask, <16 x float> %r, <16 x float> zeroinitializer 465*9880d681SAndroid Build Coastguard Worker ret <16 x float>%res 466*9880d681SAndroid Build Coastguard Worker} 467*9880d681SAndroid Build Coastguard Worker 468*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test43(i8 * %addr, <16 x float> %mask1) { 469*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test43: 470*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 471*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9] 472*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpordps %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf1,0x7c,0x48,0xc2,0xc9,0x07] 473*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqps %zmm1, %zmm0, %k1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x49,0xc2,0xc9,0x04] 474*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovups (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xc9,0x10,0x07] 475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 476*9880d681SAndroid Build Coastguard Worker %mask = fcmp one <16 x float> %mask1, zeroinitializer 477*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <16 x float>* 478*9880d681SAndroid Build Coastguard Worker %r = load <16 x float>, <16 x float>* %vaddr, align 1 479*9880d681SAndroid Build Coastguard Worker %res = select <16 x i1> %mask, <16 x float> %r, <16 x float> zeroinitializer 480*9880d681SAndroid Build Coastguard Worker ret <16 x float>%res 481*9880d681SAndroid Build Coastguard Worker} 482*9880d681SAndroid Build Coastguard Worker 483*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test44(i8 * %addr, <8 x double> %old, <8 x double> %mask1) { 484*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test44: 485*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 486*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2] 487*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpordpd %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf1,0xf5,0x48,0xc2,0xca,0x07] 488*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqpd %zmm2, %zmm1, %k1 {%k1} ## encoding: [0x62,0xf1,0xf5,0x49,0xc2,0xca,0x04] 489*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vblendmpd (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0x65,0x07] 490*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 491*9880d681SAndroid Build Coastguard Worker %mask = fcmp one <8 x double> %mask1, zeroinitializer 492*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x double>* 493*9880d681SAndroid Build Coastguard Worker %r = load <8 x double>, <8 x double>* %vaddr, align 64 494*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x double> %r, <8 x double> %old 495*9880d681SAndroid Build Coastguard Worker ret <8 x double>%res 496*9880d681SAndroid Build Coastguard Worker} 497*9880d681SAndroid Build Coastguard Worker 498*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test45(i8 * %addr, <8 x double> %old, <8 x double> %mask1) { 499*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test45: 500*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 501*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm2, %zmm2, %zmm2 ## encoding: [0x62,0xf1,0x6d,0x48,0xef,0xd2] 502*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpordpd %zmm2, %zmm1, %k1 ## encoding: [0x62,0xf1,0xf5,0x48,0xc2,0xca,0x07] 503*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqpd %zmm2, %zmm1, %k1 {%k1} ## encoding: [0x62,0xf1,0xf5,0x49,0xc2,0xca,0x04] 504*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vblendmpd (%rdi), %zmm0, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0x65,0x07] 505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 506*9880d681SAndroid Build Coastguard Worker %mask = fcmp one <8 x double> %mask1, zeroinitializer 507*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x double>* 508*9880d681SAndroid Build Coastguard Worker %r = load <8 x double>, <8 x double>* %vaddr, align 1 509*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x double> %r, <8 x double> %old 510*9880d681SAndroid Build Coastguard Worker ret <8 x double>%res 511*9880d681SAndroid Build Coastguard Worker} 512*9880d681SAndroid Build Coastguard Worker 513*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test46(i8 * %addr, <8 x double> %mask1) { 514*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test46: 515*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9] 517*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpordpd %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf1,0xfd,0x48,0xc2,0xc9,0x07] 518*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqpd %zmm1, %zmm0, %k1 {%k1} ## encoding: [0x62,0xf1,0xfd,0x49,0xc2,0xc9,0x04] 519*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovapd (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0xc9,0x28,0x07] 520*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 521*9880d681SAndroid Build Coastguard Worker %mask = fcmp one <8 x double> %mask1, zeroinitializer 522*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x double>* 523*9880d681SAndroid Build Coastguard Worker %r = load <8 x double>, <8 x double>* %vaddr, align 64 524*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x double> %r, <8 x double> zeroinitializer 525*9880d681SAndroid Build Coastguard Worker ret <8 x double>%res 526*9880d681SAndroid Build Coastguard Worker} 527*9880d681SAndroid Build Coastguard Worker 528*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test47(i8 * %addr, <8 x double> %mask1) { 529*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test47: 530*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 531*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm1, %zmm1, %zmm1 ## encoding: [0x62,0xf1,0x75,0x48,0xef,0xc9] 532*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpordpd %zmm1, %zmm0, %k1 ## encoding: [0x62,0xf1,0xfd,0x48,0xc2,0xc9,0x07] 533*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqpd %zmm1, %zmm0, %k1 {%k1} ## encoding: [0x62,0xf1,0xfd,0x49,0xc2,0xc9,0x04] 534*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovupd (%rdi), %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0xc9,0x10,0x07] 535*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 536*9880d681SAndroid Build Coastguard Worker %mask = fcmp one <8 x double> %mask1, zeroinitializer 537*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x double>* 538*9880d681SAndroid Build Coastguard Worker %r = load <8 x double>, <8 x double>* %vaddr, align 1 539*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x double> %r, <8 x double> zeroinitializer 540*9880d681SAndroid Build Coastguard Worker ret <8 x double>%res 541*9880d681SAndroid Build Coastguard Worker} 542