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 -mattr=+avx512vl --show-mc-encoding| FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_256_1(i8 * %addr) { 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_1: 6*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu32 (%rdi), %ymm0 ## encoding: [0x62,0xf1,0x7e,0x28,0x6f,0x07] 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 9*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i32>* 10*9880d681SAndroid Build Coastguard Worker %res = load <8 x i32>, <8 x i32>* %vaddr, align 1 11*9880d681SAndroid Build Coastguard Worker ret <8 x i32>%res 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_256_2(i8 * %addr) { 15*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_2: 16*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa32 (%rdi), %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x6f,0x07] 18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 19*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i32>* 20*9880d681SAndroid Build Coastguard Worker %res = load <8 x i32>, <8 x i32>* %vaddr, align 32 21*9880d681SAndroid Build Coastguard Worker ret <8 x i32>%res 22*9880d681SAndroid Build Coastguard Worker} 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workerdefine void @test_256_3(i8 * %addr, <4 x i64> %data) { 25*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_3: 26*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa64 %ymm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x28,0x7f,0x07] 28*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 29*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i64>* 30*9880d681SAndroid Build Coastguard Worker store <4 x i64>%data, <4 x i64>* %vaddr, align 32 31*9880d681SAndroid Build Coastguard Worker ret void 32*9880d681SAndroid Build Coastguard Worker} 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerdefine void @test_256_4(i8 * %addr, <8 x i32> %data) { 35*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_4: 36*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 37*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu32 %ymm0, (%rdi) ## encoding: [0x62,0xf1,0x7e,0x28,0x7f,0x07] 38*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 39*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i32>* 40*9880d681SAndroid Build Coastguard Worker store <8 x i32>%data, <8 x i32>* %vaddr, align 1 41*9880d681SAndroid Build Coastguard Worker ret void 42*9880d681SAndroid Build Coastguard Worker} 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Workerdefine void @test_256_5(i8 * %addr, <8 x i32> %data) { 45*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_5: 46*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 47*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa32 %ymm0, (%rdi) ## encoding: [0x62,0xf1,0x7d,0x28,0x7f,0x07] 48*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 49*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i32>* 50*9880d681SAndroid Build Coastguard Worker store <8 x i32>%data, <8 x i32>* %vaddr, align 32 51*9880d681SAndroid Build Coastguard Worker ret void 52*9880d681SAndroid Build Coastguard Worker} 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_256_6(i8 * %addr) { 55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_6: 56*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa64 (%rdi), %ymm0 ## encoding: [0x62,0xf1,0xfd,0x28,0x6f,0x07] 58*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 59*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i64>* 60*9880d681SAndroid Build Coastguard Worker %res = load <4 x i64>, <4 x i64>* %vaddr, align 32 61*9880d681SAndroid Build Coastguard Worker ret <4 x i64>%res 62*9880d681SAndroid Build Coastguard Worker} 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Workerdefine void @test_256_7(i8 * %addr, <4 x i64> %data) { 65*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_7: 66*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu64 %ymm0, (%rdi) ## encoding: [0x62,0xf1,0xfe,0x28,0x7f,0x07] 68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 69*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i64>* 70*9880d681SAndroid Build Coastguard Worker store <4 x i64>%data, <4 x i64>* %vaddr, align 1 71*9880d681SAndroid Build Coastguard Worker ret void 72*9880d681SAndroid Build Coastguard Worker} 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_256_8(i8 * %addr) { 75*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_8: 76*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu64 (%rdi), %ymm0 ## encoding: [0x62,0xf1,0xfe,0x28,0x6f,0x07] 78*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 79*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i64>* 80*9880d681SAndroid Build Coastguard Worker %res = load <4 x i64>, <4 x i64>* %vaddr, align 1 81*9880d681SAndroid Build Coastguard Worker ret <4 x i64>%res 82*9880d681SAndroid Build Coastguard Worker} 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Workerdefine void @test_256_9(i8 * %addr, <4 x double> %data) { 85*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_9: 86*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 87*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovapd %ymm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x28,0x29,0x07] 88*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 89*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x double>* 90*9880d681SAndroid Build Coastguard Worker store <4 x double>%data, <4 x double>* %vaddr, align 32 91*9880d681SAndroid Build Coastguard Worker ret void 92*9880d681SAndroid Build Coastguard Worker} 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_256_10(i8 * %addr) { 95*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_10: 96*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 97*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovapd (%rdi), %ymm0 ## encoding: [0x62,0xf1,0xfd,0x28,0x28,0x07] 98*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 99*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x double>* 100*9880d681SAndroid Build Coastguard Worker %res = load <4 x double>, <4 x double>* %vaddr, align 32 101*9880d681SAndroid Build Coastguard Worker ret <4 x double>%res 102*9880d681SAndroid Build Coastguard Worker} 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Workerdefine void @test_256_11(i8 * %addr, <8 x float> %data) { 105*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_11: 106*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %ymm0, (%rdi) ## encoding: [0x62,0xf1,0x7c,0x28,0x29,0x07] 108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 109*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x float>* 110*9880d681SAndroid Build Coastguard Worker store <8 x float>%data, <8 x float>* %vaddr, align 32 111*9880d681SAndroid Build Coastguard Worker ret void 112*9880d681SAndroid Build Coastguard Worker} 113*9880d681SAndroid Build Coastguard Worker 114*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_256_12(i8 * %addr) { 115*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_12: 116*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps (%rdi), %ymm0 ## encoding: [0x62,0xf1,0x7c,0x28,0x28,0x07] 118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 119*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x float>* 120*9880d681SAndroid Build Coastguard Worker %res = load <8 x float>, <8 x float>* %vaddr, align 32 121*9880d681SAndroid Build Coastguard Worker ret <8 x float>%res 122*9880d681SAndroid Build Coastguard Worker} 123*9880d681SAndroid Build Coastguard Worker 124*9880d681SAndroid Build Coastguard Workerdefine void @test_256_13(i8 * %addr, <4 x double> %data) { 125*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_13: 126*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 127*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovupd %ymm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x28,0x11,0x07] 128*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 129*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x double>* 130*9880d681SAndroid Build Coastguard Worker store <4 x double>%data, <4 x double>* %vaddr, align 1 131*9880d681SAndroid Build Coastguard Worker ret void 132*9880d681SAndroid Build Coastguard Worker} 133*9880d681SAndroid Build Coastguard Worker 134*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_256_14(i8 * %addr) { 135*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_14: 136*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovupd (%rdi), %ymm0 ## encoding: [0x62,0xf1,0xfd,0x28,0x10,0x07] 138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 139*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x double>* 140*9880d681SAndroid Build Coastguard Worker %res = load <4 x double>, <4 x double>* %vaddr, align 1 141*9880d681SAndroid Build Coastguard Worker ret <4 x double>%res 142*9880d681SAndroid Build Coastguard Worker} 143*9880d681SAndroid Build Coastguard Worker 144*9880d681SAndroid Build Coastguard Workerdefine void @test_256_15(i8 * %addr, <8 x float> %data) { 145*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_15: 146*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 147*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovups %ymm0, (%rdi) ## encoding: [0x62,0xf1,0x7c,0x28,0x11,0x07] 148*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 149*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x float>* 150*9880d681SAndroid Build Coastguard Worker store <8 x float>%data, <8 x float>* %vaddr, align 1 151*9880d681SAndroid Build Coastguard Worker ret void 152*9880d681SAndroid Build Coastguard Worker} 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_256_16(i8 * %addr) { 155*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_16: 156*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovups (%rdi), %ymm0 ## encoding: [0x62,0xf1,0x7c,0x28,0x10,0x07] 158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 159*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x float>* 160*9880d681SAndroid Build Coastguard Worker %res = load <8 x float>, <8 x float>* %vaddr, align 1 161*9880d681SAndroid Build Coastguard Worker ret <8 x float>%res 162*9880d681SAndroid Build Coastguard Worker} 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_256_17(i8 * %addr, <8 x i32> %old, <8 x i32> %mask1) { 165*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_17: 166*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2] 168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf3,0x75,0x28,0x1f,0xca,0x04] 169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x64,0x07] 170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 171*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <8 x i32> %mask1, zeroinitializer 172*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i32>* 173*9880d681SAndroid Build Coastguard Worker %r = load <8 x i32>, <8 x i32>* %vaddr, align 32 174*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x i32> %r, <8 x i32> %old 175*9880d681SAndroid Build Coastguard Worker ret <8 x i32>%res 176*9880d681SAndroid Build Coastguard Worker} 177*9880d681SAndroid Build Coastguard Worker 178*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_256_18(i8 * %addr, <8 x i32> %old, <8 x i32> %mask1) { 179*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_18: 180*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2] 182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf3,0x75,0x28,0x1f,0xca,0x04] 183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x64,0x07] 184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 185*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <8 x i32> %mask1, zeroinitializer 186*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i32>* 187*9880d681SAndroid Build Coastguard Worker %r = load <8 x i32>, <8 x i32>* %vaddr, align 1 188*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x i32> %r, <8 x i32> %old 189*9880d681SAndroid Build Coastguard Worker ret <8 x i32>%res 190*9880d681SAndroid Build Coastguard Worker} 191*9880d681SAndroid Build Coastguard Worker 192*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_256_19(i8 * %addr, <8 x i32> %mask1) { 193*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_19: 194*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9] 196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x28,0x1f,0xc9,0x04] 197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa32 (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0x6f,0x07] 198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 199*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <8 x i32> %mask1, zeroinitializer 200*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i32>* 201*9880d681SAndroid Build Coastguard Worker %r = load <8 x i32>, <8 x i32>* %vaddr, align 32 202*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x i32> %r, <8 x i32> zeroinitializer 203*9880d681SAndroid Build Coastguard Worker ret <8 x i32>%res 204*9880d681SAndroid Build Coastguard Worker} 205*9880d681SAndroid Build Coastguard Worker 206*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_256_20(i8 * %addr, <8 x i32> %mask1) { 207*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_20: 208*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9] 210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x28,0x1f,0xc9,0x04] 211*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu32 (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7e,0xa9,0x6f,0x07] 212*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 213*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <8 x i32> %mask1, zeroinitializer 214*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x i32>* 215*9880d681SAndroid Build Coastguard Worker %r = load <8 x i32>, <8 x i32>* %vaddr, align 1 216*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x i32> %r, <8 x i32> zeroinitializer 217*9880d681SAndroid Build Coastguard Worker ret <8 x i32>%res 218*9880d681SAndroid Build Coastguard Worker} 219*9880d681SAndroid Build Coastguard Worker 220*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_256_21(i8 * %addr, <4 x i64> %old, <4 x i64> %mask1) { 221*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_21: 222*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 223*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2] 224*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x28,0x1f,0xca,0x04] 225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x64,0x07] 226*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 227*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i64> %mask1, zeroinitializer 228*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i64>* 229*9880d681SAndroid Build Coastguard Worker %r = load <4 x i64>, <4 x i64>* %vaddr, align 32 230*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x i64> %r, <4 x i64> %old 231*9880d681SAndroid Build Coastguard Worker ret <4 x i64>%res 232*9880d681SAndroid Build Coastguard Worker} 233*9880d681SAndroid Build Coastguard Worker 234*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_256_22(i8 * %addr, <4 x i64> %old, <4 x i64> %mask1) { 235*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_22: 236*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2] 238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x28,0x1f,0xca,0x04] 239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x64,0x07] 240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 241*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i64> %mask1, zeroinitializer 242*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i64>* 243*9880d681SAndroid Build Coastguard Worker %r = load <4 x i64>, <4 x i64>* %vaddr, align 1 244*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x i64> %r, <4 x i64> %old 245*9880d681SAndroid Build Coastguard Worker ret <4 x i64>%res 246*9880d681SAndroid Build Coastguard Worker} 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_256_23(i8 * %addr, <4 x i64> %mask1) { 249*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_23: 250*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9] 252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x28,0x1f,0xc9,0x04] 253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa64 (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0xa9,0x6f,0x07] 254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 255*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i64> %mask1, zeroinitializer 256*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i64>* 257*9880d681SAndroid Build Coastguard Worker %r = load <4 x i64>, <4 x i64>* %vaddr, align 32 258*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x i64> %r, <4 x i64> zeroinitializer 259*9880d681SAndroid Build Coastguard Worker ret <4 x i64>%res 260*9880d681SAndroid Build Coastguard Worker} 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_256_24(i8 * %addr, <4 x i64> %mask1) { 263*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_24: 264*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9] 266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x28,0x1f,0xc9,0x04] 267*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu64 (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfe,0xa9,0x6f,0x07] 268*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 269*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i64> %mask1, zeroinitializer 270*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i64>* 271*9880d681SAndroid Build Coastguard Worker %r = load <4 x i64>, <4 x i64>* %vaddr, align 1 272*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x i64> %r, <4 x i64> zeroinitializer 273*9880d681SAndroid Build Coastguard Worker ret <4 x i64>%res 274*9880d681SAndroid Build Coastguard Worker} 275*9880d681SAndroid Build Coastguard Worker 276*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_256_25(i8 * %addr, <8 x float> %old, <8 x float> %mask1) { 277*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_25: 278*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 279*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2] 280*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpordps %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf1,0x74,0x28,0xc2,0xca,0x07] 281*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqps %ymm2, %ymm1, %k1 {%k1} ## encoding: [0x62,0xf1,0x74,0x29,0xc2,0xca,0x04] 282*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vblendmps (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x65,0x07] 283*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 284*9880d681SAndroid Build Coastguard Worker %mask = fcmp one <8 x float> %mask1, zeroinitializer 285*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x float>* 286*9880d681SAndroid Build Coastguard Worker %r = load <8 x float>, <8 x float>* %vaddr, align 32 287*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x float> %r, <8 x float> %old 288*9880d681SAndroid Build Coastguard Worker ret <8 x float>%res 289*9880d681SAndroid Build Coastguard Worker} 290*9880d681SAndroid Build Coastguard Worker 291*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_256_26(i8 * %addr, <8 x float> %old, <8 x float> %mask1) { 292*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_26: 293*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 294*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2] 295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpordps %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf1,0x74,0x28,0xc2,0xca,0x07] 296*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqps %ymm2, %ymm1, %k1 {%k1} ## encoding: [0x62,0xf1,0x74,0x29,0xc2,0xca,0x04] 297*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vblendmps (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x65,0x07] 298*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 299*9880d681SAndroid Build Coastguard Worker %mask = fcmp one <8 x float> %mask1, zeroinitializer 300*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x float>* 301*9880d681SAndroid Build Coastguard Worker %r = load <8 x float>, <8 x float>* %vaddr, align 1 302*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x float> %r, <8 x float> %old 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 <8 x float> @test_256_27(i8 * %addr, <8 x float> %mask1) { 307*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_27: 308*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 309*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9] 310*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpordps %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf1,0x7c,0x28,0xc2,0xc9,0x07] 311*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqps %ymm1, %ymm0, %k1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x29,0xc2,0xc9,0x04] 312*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xa9,0x28,0x07] 313*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 314*9880d681SAndroid Build Coastguard Worker %mask = fcmp one <8 x float> %mask1, zeroinitializer 315*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x float>* 316*9880d681SAndroid Build Coastguard Worker %r = load <8 x float>, <8 x float>* %vaddr, align 32 317*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x float> %r, <8 x float> zeroinitializer 318*9880d681SAndroid Build Coastguard Worker ret <8 x float>%res 319*9880d681SAndroid Build Coastguard Worker} 320*9880d681SAndroid Build Coastguard Worker 321*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_256_28(i8 * %addr, <8 x float> %mask1) { 322*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_28: 323*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9] 325*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpordps %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf1,0x7c,0x28,0xc2,0xc9,0x07] 326*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqps %ymm1, %ymm0, %k1 {%k1} ## encoding: [0x62,0xf1,0x7c,0x29,0xc2,0xc9,0x04] 327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovups (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0xa9,0x10,0x07] 328*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 329*9880d681SAndroid Build Coastguard Worker %mask = fcmp one <8 x float> %mask1, zeroinitializer 330*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <8 x float>* 331*9880d681SAndroid Build Coastguard Worker %r = load <8 x float>, <8 x float>* %vaddr, align 1 332*9880d681SAndroid Build Coastguard Worker %res = select <8 x i1> %mask, <8 x float> %r, <8 x float> zeroinitializer 333*9880d681SAndroid Build Coastguard Worker ret <8 x float>%res 334*9880d681SAndroid Build Coastguard Worker} 335*9880d681SAndroid Build Coastguard Worker 336*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_256_29(i8 * %addr, <4 x double> %old, <4 x i64> %mask1) { 337*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_29: 338*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2] 340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x28,0x1f,0xca,0x04] 341*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vblendmpd (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x65,0x07] 342*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 343*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i64> %mask1, zeroinitializer 344*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x double>* 345*9880d681SAndroid Build Coastguard Worker %r = load <4 x double>, <4 x double>* %vaddr, align 32 346*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x double> %r, <4 x double> %old 347*9880d681SAndroid Build Coastguard Worker ret <4 x double>%res 348*9880d681SAndroid Build Coastguard Worker} 349*9880d681SAndroid Build Coastguard Worker 350*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_256_30(i8 * %addr, <4 x double> %old, <4 x i64> %mask1) { 351*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_30: 352*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 353*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm2, %ymm2, %ymm2 ## encoding: [0x62,0xf1,0x6d,0x28,0xef,0xd2] 354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %ymm2, %ymm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x28,0x1f,0xca,0x04] 355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vblendmpd (%rdi), %ymm0, %ymm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x65,0x07] 356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 357*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i64> %mask1, zeroinitializer 358*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x double>* 359*9880d681SAndroid Build Coastguard Worker %r = load <4 x double>, <4 x double>* %vaddr, align 1 360*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x double> %r, <4 x double> %old 361*9880d681SAndroid Build Coastguard Worker ret <4 x double>%res 362*9880d681SAndroid Build Coastguard Worker} 363*9880d681SAndroid Build Coastguard Worker 364*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_256_31(i8 * %addr, <4 x i64> %mask1) { 365*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_31: 366*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9] 368*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x28,0x1f,0xc9,0x04] 369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovapd (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0xa9,0x28,0x07] 370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 371*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i64> %mask1, zeroinitializer 372*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x double>* 373*9880d681SAndroid Build Coastguard Worker %r = load <4 x double>, <4 x double>* %vaddr, align 32 374*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x double> %r, <4 x double> zeroinitializer 375*9880d681SAndroid Build Coastguard Worker ret <4 x double>%res 376*9880d681SAndroid Build Coastguard Worker} 377*9880d681SAndroid Build Coastguard Worker 378*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_256_32(i8 * %addr, <4 x i64> %mask1) { 379*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_256_32: 380*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 381*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm1, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xef,0xc9] 382*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x28,0x1f,0xc9,0x04] 383*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovupd (%rdi), %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0xa9,0x10,0x07] 384*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 385*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i64> %mask1, zeroinitializer 386*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x double>* 387*9880d681SAndroid Build Coastguard Worker %r = load <4 x double>, <4 x double>* %vaddr, align 1 388*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x double> %r, <4 x double> zeroinitializer 389*9880d681SAndroid Build Coastguard Worker ret <4 x double>%res 390*9880d681SAndroid Build Coastguard Worker} 391*9880d681SAndroid Build Coastguard Worker 392*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_128_1(i8 * %addr) { 393*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_1: 394*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 395*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu32 (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7e,0x08,0x6f,0x07] 396*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 397*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i32>* 398*9880d681SAndroid Build Coastguard Worker %res = load <4 x i32>, <4 x i32>* %vaddr, align 1 399*9880d681SAndroid Build Coastguard Worker ret <4 x i32>%res 400*9880d681SAndroid Build Coastguard Worker} 401*9880d681SAndroid Build Coastguard Worker 402*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_128_2(i8 * %addr) { 403*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_2: 404*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 405*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa32 (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6f,0x07] 406*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 407*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i32>* 408*9880d681SAndroid Build Coastguard Worker %res = load <4 x i32>, <4 x i32>* %vaddr, align 16 409*9880d681SAndroid Build Coastguard Worker ret <4 x i32>%res 410*9880d681SAndroid Build Coastguard Worker} 411*9880d681SAndroid Build Coastguard Worker 412*9880d681SAndroid Build Coastguard Workerdefine void @test_128_3(i8 * %addr, <2 x i64> %data) { 413*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_3: 414*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 415*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa64 %xmm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x08,0x7f,0x07] 416*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 417*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x i64>* 418*9880d681SAndroid Build Coastguard Worker store <2 x i64>%data, <2 x i64>* %vaddr, align 16 419*9880d681SAndroid Build Coastguard Worker ret void 420*9880d681SAndroid Build Coastguard Worker} 421*9880d681SAndroid Build Coastguard Worker 422*9880d681SAndroid Build Coastguard Workerdefine void @test_128_4(i8 * %addr, <4 x i32> %data) { 423*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_4: 424*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 425*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu32 %xmm0, (%rdi) ## encoding: [0x62,0xf1,0x7e,0x08,0x7f,0x07] 426*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 427*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i32>* 428*9880d681SAndroid Build Coastguard Worker store <4 x i32>%data, <4 x i32>* %vaddr, align 1 429*9880d681SAndroid Build Coastguard Worker ret void 430*9880d681SAndroid Build Coastguard Worker} 431*9880d681SAndroid Build Coastguard Worker 432*9880d681SAndroid Build Coastguard Workerdefine void @test_128_5(i8 * %addr, <4 x i32> %data) { 433*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_5: 434*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 435*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa32 %xmm0, (%rdi) ## encoding: [0x62,0xf1,0x7d,0x08,0x7f,0x07] 436*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 437*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i32>* 438*9880d681SAndroid Build Coastguard Worker store <4 x i32>%data, <4 x i32>* %vaddr, align 16 439*9880d681SAndroid Build Coastguard Worker ret void 440*9880d681SAndroid Build Coastguard Worker} 441*9880d681SAndroid Build Coastguard Worker 442*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_128_6(i8 * %addr) { 443*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_6: 444*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 445*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa64 (%rdi), %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x6f,0x07] 446*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 447*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x i64>* 448*9880d681SAndroid Build Coastguard Worker %res = load <2 x i64>, <2 x i64>* %vaddr, align 16 449*9880d681SAndroid Build Coastguard Worker ret <2 x i64>%res 450*9880d681SAndroid Build Coastguard Worker} 451*9880d681SAndroid Build Coastguard Worker 452*9880d681SAndroid Build Coastguard Workerdefine void @test_128_7(i8 * %addr, <2 x i64> %data) { 453*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_7: 454*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 455*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu64 %xmm0, (%rdi) ## encoding: [0x62,0xf1,0xfe,0x08,0x7f,0x07] 456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 457*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x i64>* 458*9880d681SAndroid Build Coastguard Worker store <2 x i64>%data, <2 x i64>* %vaddr, align 1 459*9880d681SAndroid Build Coastguard Worker ret void 460*9880d681SAndroid Build Coastguard Worker} 461*9880d681SAndroid Build Coastguard Worker 462*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_128_8(i8 * %addr) { 463*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_8: 464*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 465*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu64 (%rdi), %xmm0 ## encoding: [0x62,0xf1,0xfe,0x08,0x6f,0x07] 466*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 467*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x i64>* 468*9880d681SAndroid Build Coastguard Worker %res = load <2 x i64>, <2 x i64>* %vaddr, align 1 469*9880d681SAndroid Build Coastguard Worker ret <2 x i64>%res 470*9880d681SAndroid Build Coastguard Worker} 471*9880d681SAndroid Build Coastguard Worker 472*9880d681SAndroid Build Coastguard Workerdefine void @test_128_9(i8 * %addr, <2 x double> %data) { 473*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_9: 474*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovapd %xmm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x08,0x29,0x07] 476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 477*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x double>* 478*9880d681SAndroid Build Coastguard Worker store <2 x double>%data, <2 x double>* %vaddr, align 16 479*9880d681SAndroid Build Coastguard Worker ret void 480*9880d681SAndroid Build Coastguard Worker} 481*9880d681SAndroid Build Coastguard Worker 482*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_128_10(i8 * %addr) { 483*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_10: 484*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 485*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovapd (%rdi), %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x28,0x07] 486*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 487*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x double>* 488*9880d681SAndroid Build Coastguard Worker %res = load <2 x double>, <2 x double>* %vaddr, align 16 489*9880d681SAndroid Build Coastguard Worker ret <2 x double>%res 490*9880d681SAndroid Build Coastguard Worker} 491*9880d681SAndroid Build Coastguard Worker 492*9880d681SAndroid Build Coastguard Workerdefine void @test_128_11(i8 * %addr, <4 x float> %data) { 493*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_11: 494*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 495*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %xmm0, (%rdi) ## encoding: [0x62,0xf1,0x7c,0x08,0x29,0x07] 496*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 497*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x float>* 498*9880d681SAndroid Build Coastguard Worker store <4 x float>%data, <4 x float>* %vaddr, align 16 499*9880d681SAndroid Build Coastguard Worker ret void 500*9880d681SAndroid Build Coastguard Worker} 501*9880d681SAndroid Build Coastguard Worker 502*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_128_12(i8 * %addr) { 503*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_12: 504*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7c,0x08,0x28,0x07] 506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 507*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x float>* 508*9880d681SAndroid Build Coastguard Worker %res = load <4 x float>, <4 x float>* %vaddr, align 16 509*9880d681SAndroid Build Coastguard Worker ret <4 x float>%res 510*9880d681SAndroid Build Coastguard Worker} 511*9880d681SAndroid Build Coastguard Worker 512*9880d681SAndroid Build Coastguard Workerdefine void @test_128_13(i8 * %addr, <2 x double> %data) { 513*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_13: 514*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 515*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovupd %xmm0, (%rdi) ## encoding: [0x62,0xf1,0xfd,0x08,0x11,0x07] 516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 517*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x double>* 518*9880d681SAndroid Build Coastguard Worker store <2 x double>%data, <2 x double>* %vaddr, align 1 519*9880d681SAndroid Build Coastguard Worker ret void 520*9880d681SAndroid Build Coastguard Worker} 521*9880d681SAndroid Build Coastguard Worker 522*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_128_14(i8 * %addr) { 523*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_14: 524*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 525*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovupd (%rdi), %xmm0 ## encoding: [0x62,0xf1,0xfd,0x08,0x10,0x07] 526*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 527*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x double>* 528*9880d681SAndroid Build Coastguard Worker %res = load <2 x double>, <2 x double>* %vaddr, align 1 529*9880d681SAndroid Build Coastguard Worker ret <2 x double>%res 530*9880d681SAndroid Build Coastguard Worker} 531*9880d681SAndroid Build Coastguard Worker 532*9880d681SAndroid Build Coastguard Workerdefine void @test_128_15(i8 * %addr, <4 x float> %data) { 533*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_15: 534*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 535*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovups %xmm0, (%rdi) ## encoding: [0x62,0xf1,0x7c,0x08,0x11,0x07] 536*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 537*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x float>* 538*9880d681SAndroid Build Coastguard Worker store <4 x float>%data, <4 x float>* %vaddr, align 1 539*9880d681SAndroid Build Coastguard Worker ret void 540*9880d681SAndroid Build Coastguard Worker} 541*9880d681SAndroid Build Coastguard Worker 542*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_128_16(i8 * %addr) { 543*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_16: 544*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 545*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovups (%rdi), %xmm0 ## encoding: [0x62,0xf1,0x7c,0x08,0x10,0x07] 546*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 547*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x float>* 548*9880d681SAndroid Build Coastguard Worker %res = load <4 x float>, <4 x float>* %vaddr, align 1 549*9880d681SAndroid Build Coastguard Worker ret <4 x float>%res 550*9880d681SAndroid Build Coastguard Worker} 551*9880d681SAndroid Build Coastguard Worker 552*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_128_17(i8 * %addr, <4 x i32> %old, <4 x i32> %mask1) { 553*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_17: 554*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 555*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2] 556*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0x75,0x08,0x1f,0xca,0x04] 557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x64,0x07] 558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 559*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i32> %mask1, zeroinitializer 560*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i32>* 561*9880d681SAndroid Build Coastguard Worker %r = load <4 x i32>, <4 x i32>* %vaddr, align 16 562*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x i32> %r, <4 x i32> %old 563*9880d681SAndroid Build Coastguard Worker ret <4 x i32>%res 564*9880d681SAndroid Build Coastguard Worker} 565*9880d681SAndroid Build Coastguard Worker 566*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_128_18(i8 * %addr, <4 x i32> %old, <4 x i32> %mask1) { 567*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_18: 568*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2] 570*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0x75,0x08,0x1f,0xca,0x04] 571*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x64,0x07] 572*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 573*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i32> %mask1, zeroinitializer 574*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i32>* 575*9880d681SAndroid Build Coastguard Worker %r = load <4 x i32>, <4 x i32>* %vaddr, align 1 576*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x i32> %r, <4 x i32> %old 577*9880d681SAndroid Build Coastguard Worker ret <4 x i32>%res 578*9880d681SAndroid Build Coastguard Worker} 579*9880d681SAndroid Build Coastguard Worker 580*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_128_19(i8 * %addr, <4 x i32> %mask1) { 581*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_19: 582*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 583*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9] 584*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x08,0x1f,0xc9,0x04] 585*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa32 (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0x6f,0x07] 586*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 587*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i32> %mask1, zeroinitializer 588*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i32>* 589*9880d681SAndroid Build Coastguard Worker %r = load <4 x i32>, <4 x i32>* %vaddr, align 16 590*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x i32> %r, <4 x i32> zeroinitializer 591*9880d681SAndroid Build Coastguard Worker ret <4 x i32>%res 592*9880d681SAndroid Build Coastguard Worker} 593*9880d681SAndroid Build Coastguard Worker 594*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_128_20(i8 * %addr, <4 x i32> %mask1) { 595*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_20: 596*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 597*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9] 598*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x08,0x1f,0xc9,0x04] 599*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu32 (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7e,0x89,0x6f,0x07] 600*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 601*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i32> %mask1, zeroinitializer 602*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x i32>* 603*9880d681SAndroid Build Coastguard Worker %r = load <4 x i32>, <4 x i32>* %vaddr, align 1 604*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x i32> %r, <4 x i32> zeroinitializer 605*9880d681SAndroid Build Coastguard Worker ret <4 x i32>%res 606*9880d681SAndroid Build Coastguard Worker} 607*9880d681SAndroid Build Coastguard Worker 608*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_128_21(i8 * %addr, <2 x i64> %old, <2 x i64> %mask1) { 609*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_21: 610*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 611*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2] 612*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x08,0x1f,0xca,0x04] 613*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x64,0x07] 614*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 615*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <2 x i64> %mask1, zeroinitializer 616*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x i64>* 617*9880d681SAndroid Build Coastguard Worker %r = load <2 x i64>, <2 x i64>* %vaddr, align 16 618*9880d681SAndroid Build Coastguard Worker %res = select <2 x i1> %mask, <2 x i64> %r, <2 x i64> %old 619*9880d681SAndroid Build Coastguard Worker ret <2 x i64>%res 620*9880d681SAndroid Build Coastguard Worker} 621*9880d681SAndroid Build Coastguard Worker 622*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_128_22(i8 * %addr, <2 x i64> %old, <2 x i64> %mask1) { 623*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_22: 624*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 625*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2] 626*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x08,0x1f,0xca,0x04] 627*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x64,0x07] 628*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 629*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <2 x i64> %mask1, zeroinitializer 630*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x i64>* 631*9880d681SAndroid Build Coastguard Worker %r = load <2 x i64>, <2 x i64>* %vaddr, align 1 632*9880d681SAndroid Build Coastguard Worker %res = select <2 x i1> %mask, <2 x i64> %r, <2 x i64> %old 633*9880d681SAndroid Build Coastguard Worker ret <2 x i64>%res 634*9880d681SAndroid Build Coastguard Worker} 635*9880d681SAndroid Build Coastguard Worker 636*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_128_23(i8 * %addr, <2 x i64> %mask1) { 637*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_23: 638*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 639*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9] 640*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x08,0x1f,0xc9,0x04] 641*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqa64 (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0x89,0x6f,0x07] 642*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 643*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <2 x i64> %mask1, zeroinitializer 644*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x i64>* 645*9880d681SAndroid Build Coastguard Worker %r = load <2 x i64>, <2 x i64>* %vaddr, align 16 646*9880d681SAndroid Build Coastguard Worker %res = select <2 x i1> %mask, <2 x i64> %r, <2 x i64> zeroinitializer 647*9880d681SAndroid Build Coastguard Worker ret <2 x i64>%res 648*9880d681SAndroid Build Coastguard Worker} 649*9880d681SAndroid Build Coastguard Worker 650*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_128_24(i8 * %addr, <2 x i64> %mask1) { 651*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_24: 652*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 653*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9] 654*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x08,0x1f,0xc9,0x04] 655*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovdqu64 (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfe,0x89,0x6f,0x07] 656*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 657*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <2 x i64> %mask1, zeroinitializer 658*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x i64>* 659*9880d681SAndroid Build Coastguard Worker %r = load <2 x i64>, <2 x i64>* %vaddr, align 1 660*9880d681SAndroid Build Coastguard Worker %res = select <2 x i1> %mask, <2 x i64> %r, <2 x i64> zeroinitializer 661*9880d681SAndroid Build Coastguard Worker ret <2 x i64>%res 662*9880d681SAndroid Build Coastguard Worker} 663*9880d681SAndroid Build Coastguard Worker 664*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_128_25(i8 * %addr, <4 x float> %old, <4 x i32> %mask1) { 665*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_25: 666*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 667*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2] 668*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0x75,0x08,0x1f,0xca,0x04] 669*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vblendmps (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x65,0x07] 670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 671*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i32> %mask1, zeroinitializer 672*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x float>* 673*9880d681SAndroid Build Coastguard Worker %r = load <4 x float>, <4 x float>* %vaddr, align 16 674*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x float> %r, <4 x float> %old 675*9880d681SAndroid Build Coastguard Worker ret <4 x float>%res 676*9880d681SAndroid Build Coastguard Worker} 677*9880d681SAndroid Build Coastguard Worker 678*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_128_26(i8 * %addr, <4 x float> %old, <4 x i32> %mask1) { 679*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_26: 680*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 681*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2] 682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0x75,0x08,0x1f,0xca,0x04] 683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vblendmps (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x65,0x07] 684*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 685*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i32> %mask1, zeroinitializer 686*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x float>* 687*9880d681SAndroid Build Coastguard Worker %r = load <4 x float>, <4 x float>* %vaddr, align 1 688*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x float> %r, <4 x float> %old 689*9880d681SAndroid Build Coastguard Worker ret <4 x float>%res 690*9880d681SAndroid Build Coastguard Worker} 691*9880d681SAndroid Build Coastguard Worker 692*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_128_27(i8 * %addr, <4 x i32> %mask1) { 693*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_27: 694*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 695*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9] 696*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x08,0x1f,0xc9,0x04] 697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x89,0x28,0x07] 698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 699*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i32> %mask1, zeroinitializer 700*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x float>* 701*9880d681SAndroid Build Coastguard Worker %r = load <4 x float>, <4 x float>* %vaddr, align 16 702*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x float> %r, <4 x float> zeroinitializer 703*9880d681SAndroid Build Coastguard Worker ret <4 x float>%res 704*9880d681SAndroid Build Coastguard Worker} 705*9880d681SAndroid Build Coastguard Worker 706*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_128_28(i8 * %addr, <4 x i32> %mask1) { 707*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_28: 708*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 709*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9] 710*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x08,0x1f,0xc9,0x04] 711*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovups (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7c,0x89,0x10,0x07] 712*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 713*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <4 x i32> %mask1, zeroinitializer 714*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <4 x float>* 715*9880d681SAndroid Build Coastguard Worker %r = load <4 x float>, <4 x float>* %vaddr, align 1 716*9880d681SAndroid Build Coastguard Worker %res = select <4 x i1> %mask, <4 x float> %r, <4 x float> zeroinitializer 717*9880d681SAndroid Build Coastguard Worker ret <4 x float>%res 718*9880d681SAndroid Build Coastguard Worker} 719*9880d681SAndroid Build Coastguard Worker 720*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_128_29(i8 * %addr, <2 x double> %old, <2 x i64> %mask1) { 721*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_29: 722*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 723*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2] 724*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x08,0x1f,0xca,0x04] 725*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vblendmpd (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x65,0x07] 726*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 727*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <2 x i64> %mask1, zeroinitializer 728*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x double>* 729*9880d681SAndroid Build Coastguard Worker %r = load <2 x double>, <2 x double>* %vaddr, align 16 730*9880d681SAndroid Build Coastguard Worker %res = select <2 x i1> %mask, <2 x double> %r, <2 x double> %old 731*9880d681SAndroid Build Coastguard Worker ret <2 x double>%res 732*9880d681SAndroid Build Coastguard Worker} 733*9880d681SAndroid Build Coastguard Worker 734*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_128_30(i8 * %addr, <2 x double> %old, <2 x i64> %mask1) { 735*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_30: 736*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 737*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm2, %xmm2, %xmm2 ## encoding: [0x62,0xf1,0x6d,0x08,0xef,0xd2] 738*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %xmm2, %xmm1, %k1 ## encoding: [0x62,0xf3,0xf5,0x08,0x1f,0xca,0x04] 739*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vblendmpd (%rdi), %xmm0, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x65,0x07] 740*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 741*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <2 x i64> %mask1, zeroinitializer 742*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x double>* 743*9880d681SAndroid Build Coastguard Worker %r = load <2 x double>, <2 x double>* %vaddr, align 1 744*9880d681SAndroid Build Coastguard Worker %res = select <2 x i1> %mask, <2 x double> %r, <2 x double> %old 745*9880d681SAndroid Build Coastguard Worker ret <2 x double>%res 746*9880d681SAndroid Build Coastguard Worker} 747*9880d681SAndroid Build Coastguard Worker 748*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_128_31(i8 * %addr, <2 x i64> %mask1) { 749*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_31: 750*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 751*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9] 752*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x08,0x1f,0xc9,0x04] 753*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovapd (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0x89,0x28,0x07] 754*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 755*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <2 x i64> %mask1, zeroinitializer 756*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x double>* 757*9880d681SAndroid Build Coastguard Worker %r = load <2 x double>, <2 x double>* %vaddr, align 16 758*9880d681SAndroid Build Coastguard Worker %res = select <2 x i1> %mask, <2 x double> %r, <2 x double> zeroinitializer 759*9880d681SAndroid Build Coastguard Worker ret <2 x double>%res 760*9880d681SAndroid Build Coastguard Worker} 761*9880d681SAndroid Build Coastguard Worker 762*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_128_32(i8 * %addr, <2 x i64> %mask1) { 763*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_128_32: 764*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 765*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm1, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xef,0xc9] 766*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x08,0x1f,0xc9,0x04] 767*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovupd (%rdi), %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xfd,0x89,0x10,0x07] 768*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 769*9880d681SAndroid Build Coastguard Worker %mask = icmp ne <2 x i64> %mask1, zeroinitializer 770*9880d681SAndroid Build Coastguard Worker %vaddr = bitcast i8* %addr to <2 x double>* 771*9880d681SAndroid Build Coastguard Worker %r = load <2 x double>, <2 x double>* %vaddr, align 1 772*9880d681SAndroid Build Coastguard Worker %res = select <2 x i1> %mask, <2 x double> %r, <2 x double> zeroinitializer 773*9880d681SAndroid Build Coastguard Worker ret <2 x double>%res 774*9880d681SAndroid Build Coastguard Worker} 775*9880d681SAndroid Build Coastguard Worker 776