diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/masked_gather_scatter.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/masked_gather_scatter.ll | 67 |
1 files changed, 35 insertions, 32 deletions
diff --git a/llvm/test/CodeGen/X86/masked_gather_scatter.ll b/llvm/test/CodeGen/X86/masked_gather_scatter.ll index a8cf982323f..04505a3e4b5 100644 --- a/llvm/test/CodeGen/X86/masked_gather_scatter.ll +++ b/llvm/test/CodeGen/X86/masked_gather_scatter.ll @@ -1,4 +1,3 @@ -; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512f < %s | FileCheck %s --check-prefix=KNL_64 ; RUN: llc -mtriple=i386-unknown-linux-gnu -mattr=+avx512f < %s | FileCheck %s --check-prefix=KNL_32 ; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512vl -mattr=+avx512dq < %s | FileCheck %s --check-prefix=SKX @@ -676,23 +675,25 @@ define <4 x float> @test15(float* %base, <4 x i32> %ind, <4 x i1> %mask) { ; ; KNL_64-LABEL: test15: ; KNL_64: # BB#0: -; KNL_64-NEXT: vpxor %ymm2, %ymm2, %ymm2 +; KNL_64: vpxor %ymm2, %ymm2, %ymm2 ; KNL_64-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7] ; KNL_64-NEXT: vpmovsxdq %ymm0, %zmm2 ; KNL_64-NEXT: vpslld $31, %ymm1, %ymm0 ; KNL_64-NEXT: vptestmd %zmm0, %zmm0, %k1 ; KNL_64-NEXT: vgatherqps (%rdi,%zmm2,4), %ymm0 {%k1} +; KNL_64-NEXT: # kill ; KNL_64-NEXT: retq ; ; KNL_32-LABEL: test15: ; KNL_32: # BB#0: -; KNL_32-NEXT: vpxor %ymm2, %ymm2, %ymm2 +; KNL_32: vpxor %ymm2, %ymm2, %ymm2 ; KNL_32-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7] ; KNL_32-NEXT: movl {{[0-9]+}}(%esp), %eax ; KNL_32-NEXT: vpmovsxdq %ymm0, %zmm2 ; KNL_32-NEXT: vpslld $31, %ymm1, %ymm0 ; KNL_32-NEXT: vptestmd %zmm0, %zmm0, %k1 ; KNL_32-NEXT: vgatherqps (%eax,%zmm2,4), %ymm0 {%k1} +; KNL_32-NEXT: # kill ; KNL_32-NEXT: retl ; ; SKX-LABEL: test15: @@ -723,7 +724,7 @@ define <4 x double> @test16(double* %base, <4 x i32> %ind, <4 x i1> %mask, <4 x ; ; KNL_64-LABEL: test16: ; KNL_64: # BB#0: -; KNL_64-NEXT: vpslld $31, %xmm1, %xmm1 +; KNL_64: vpslld $31, %xmm1, %xmm1 ; KNL_64-NEXT: vpsrad $31, %xmm1, %xmm1 ; KNL_64-NEXT: vpmovsxdq %xmm1, %ymm1 ; KNL_64-NEXT: vpxord %zmm3, %zmm3, %zmm3 @@ -737,7 +738,7 @@ define <4 x double> @test16(double* %base, <4 x i32> %ind, <4 x i1> %mask, <4 x ; ; KNL_32-LABEL: test16: ; KNL_32: # BB#0: -; KNL_32-NEXT: vpslld $31, %xmm1, %xmm1 +; KNL_32: vpslld $31, %xmm1, %xmm1 ; KNL_32-NEXT: vpsrad $31, %xmm1, %xmm1 ; KNL_32-NEXT: vpmovsxdq %xmm1, %ymm1 ; KNL_32-NEXT: vpxord %zmm3, %zmm3, %zmm3 @@ -777,7 +778,7 @@ define <2 x double> @test17(double* %base, <2 x i32> %ind, <2 x i1> %mask, <2 x ; ; KNL_64-LABEL: test17: ; KNL_64: # BB#0: -; KNL_64-NEXT: vpxord %zmm3, %zmm3, %zmm3 +; KNL_64: vpxord %zmm3, %zmm3, %zmm3 ; KNL_64-NEXT: vinserti32x4 $0, %xmm1, %zmm3, %zmm1 ; KNL_64-NEXT: vpsllq $63, %zmm1, %zmm1 ; KNL_64-NEXT: vptestmq %zmm1, %zmm1, %k1 @@ -787,7 +788,7 @@ define <2 x double> @test17(double* %base, <2 x i32> %ind, <2 x i1> %mask, <2 x ; ; KNL_32-LABEL: test17: ; KNL_32: # BB#0: -; KNL_32-NEXT: vpxord %zmm3, %zmm3, %zmm3 +; KNL_32: vpxord %zmm3, %zmm3, %zmm3 ; KNL_32-NEXT: vinserti32x4 $0, %xmm1, %zmm3, %zmm1 ; KNL_32-NEXT: movl {{[0-9]+}}(%esp), %eax ; KNL_32-NEXT: vpsllvq .LCPI16_0, %zmm1, %zmm1 @@ -829,7 +830,7 @@ define void @test18(<4 x i32>%a1, <4 x i32*> %ptr, <4 x i1>%mask) { ; ; KNL_64-LABEL: test18: ; KNL_64: # BB#0: -; KNL_64-NEXT: vpxor %ymm3, %ymm3, %ymm3 +; KNL_64: vpxor %ymm3, %ymm3, %ymm3 ; KNL_64-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm3[4,5,6,7] ; KNL_64-NEXT: vpslld $31, %ymm2, %ymm2 ; KNL_64-NEXT: vptestmd %zmm2, %zmm2, %k1 @@ -838,7 +839,7 @@ define void @test18(<4 x i32>%a1, <4 x i32*> %ptr, <4 x i1>%mask) { ; ; KNL_32-LABEL: test18: ; KNL_32: # BB#0: -; KNL_32-NEXT: vpxor %ymm3, %ymm3, %ymm3 +; KNL_32: vpxor %ymm3, %ymm3, %ymm3 ; KNL_32-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm3[4,5,6,7] ; KNL_32-NEXT: vpmovsxdq %ymm1, %zmm1 ; KNL_32-NEXT: vpslld $31, %ymm2, %ymm2 @@ -867,7 +868,7 @@ define void @test19(<4 x double>%a1, double* %ptr, <4 x i1>%mask, <4 x i64> %ind ; ; KNL_64-LABEL: test19: ; KNL_64: # BB#0: -; KNL_64-NEXT: vpslld $31, %xmm1, %xmm1 +; KNL_64: vpslld $31, %xmm1, %xmm1 ; KNL_64-NEXT: vpsrad $31, %xmm1, %xmm1 ; KNL_64-NEXT: vpmovsxdq %xmm1, %ymm1 ; KNL_64-NEXT: vpxord %zmm3, %zmm3, %zmm3 @@ -879,7 +880,7 @@ define void @test19(<4 x double>%a1, double* %ptr, <4 x i1>%mask, <4 x i64> %ind ; ; KNL_32-LABEL: test19: ; KNL_32: # BB#0: -; KNL_32-NEXT: vpslld $31, %xmm1, %xmm1 +; KNL_32: vpslld $31, %xmm1, %xmm1 ; KNL_32-NEXT: vpsrad $31, %xmm1, %xmm1 ; KNL_32-NEXT: vpmovsxdq %xmm1, %ymm1 ; KNL_32-NEXT: vpxord %zmm3, %zmm3, %zmm3 @@ -914,7 +915,7 @@ define void @test20(<2 x float>%a1, <2 x float*> %ptr, <2 x i1> %mask) { ; ; KNL_64-LABEL: test20: ; KNL_64: # BB#0: -; KNL_64-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] +; KNL_64: vpshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] ; KNL_64-NEXT: vmovq {{.*#+}} xmm2 = xmm2[0],zero ; KNL_64-NEXT: vpxor %ymm3, %ymm3, %ymm3 ; KNL_64-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm3[4,5,6,7] @@ -925,7 +926,7 @@ define void @test20(<2 x float>%a1, <2 x float*> %ptr, <2 x i1> %mask) { ; ; KNL_32-LABEL: test20: ; KNL_32: # BB#0: -; KNL_32-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] +; KNL_32: vpshufd {{.*#+}} xmm2 = xmm2[0,2,2,3] ; KNL_32-NEXT: vmovq {{.*#+}} xmm2 = xmm2[0],zero ; KNL_32-NEXT: vpxor %ymm3, %ymm3, %ymm3 ; KNL_32-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm3[4,5,6,7] @@ -938,7 +939,7 @@ define void @test20(<2 x float>%a1, <2 x float*> %ptr, <2 x i1> %mask) { ; ; SKX-LABEL: test20: ; SKX: # BB#0: -; SKX-NEXT: vpsllq $63, %xmm2, %xmm2 +; SKX: vpsllq $63, %xmm2, %xmm2 ; SKX-NEXT: vptestmq %xmm2, %xmm2, %k0 ; SKX-NEXT: kshiftlb $6, %k0, %k0 ; SKX-NEXT: kshiftrb $6, %k0, %k1 @@ -963,7 +964,7 @@ define void @test21(<2 x i32>%a1, <2 x i32*> %ptr, <2 x i1>%mask) { ; ; KNL_64-LABEL: test21: ; KNL_64: # BB#0: -; KNL_64-NEXT: vpxord %zmm3, %zmm3, %zmm3 +; KNL_64: vpxord %zmm3, %zmm3, %zmm3 ; KNL_64-NEXT: vinserti32x4 $0, %xmm2, %zmm3, %zmm2 ; KNL_64-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] ; KNL_64-NEXT: vpsllq $63, %zmm2, %zmm2 @@ -973,7 +974,7 @@ define void @test21(<2 x i32>%a1, <2 x i32*> %ptr, <2 x i1>%mask) { ; ; KNL_32-LABEL: test21: ; KNL_32: # BB#0: -; KNL_32-NEXT: vpxord %zmm3, %zmm3, %zmm3 +; KNL_32: vpxord %zmm3, %zmm3, %zmm3 ; KNL_32-NEXT: vinserti32x4 $0, %xmm2, %zmm3, %zmm2 ; KNL_32-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] ; KNL_32-NEXT: vpsllvq .LCPI20_0, %zmm2, %zmm2 @@ -983,7 +984,7 @@ define void @test21(<2 x i32>%a1, <2 x i32*> %ptr, <2 x i1>%mask) { ; ; SKX-LABEL: test21: ; SKX: # BB#0: -; SKX-NEXT: vpsllq $63, %xmm2, %xmm2 +; SKX: vpsllq $63, %xmm2, %xmm2 ; SKX-NEXT: vptestmq %xmm2, %xmm2, %k0 ; SKX-NEXT: kshiftlb $6, %k0, %k0 ; SKX-NEXT: kshiftrb $6, %k0, %k1 @@ -993,7 +994,7 @@ define void @test21(<2 x i32>%a1, <2 x i32*> %ptr, <2 x i1>%mask) { ; ; SKX_32-LABEL: test21: ; SKX_32: # BB#0: -; SKX_32-NEXT: vpsllq $63, %xmm2, %xmm2 +; SKX_32: vpsllq $63, %xmm2, %xmm2 ; SKX_32-NEXT: vptestmq %xmm2, %xmm2, %k0 ; SKX_32-NEXT: kshiftlb $6, %k0, %k0 ; SKX_32-NEXT: kshiftrb $6, %k0, %k1 @@ -1012,7 +1013,7 @@ define <2 x float> @test22(float* %base, <2 x i32> %ind, <2 x i1> %mask, <2 x fl ; ; KNL_64-LABEL: test22: ; KNL_64: # BB#0: -; KNL_64-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] +; KNL_64: vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] ; KNL_64-NEXT: vmovq {{.*#+}} xmm1 = xmm1[0],zero ; KNL_64-NEXT: vpxor %ymm3, %ymm3, %ymm3 ; KNL_64-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm3[4,5,6,7] @@ -1026,7 +1027,7 @@ define <2 x float> @test22(float* %base, <2 x i32> %ind, <2 x i1> %mask, <2 x fl ; ; KNL_32-LABEL: test22: ; KNL_32: # BB#0: -; KNL_32-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] +; KNL_32: vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3] ; KNL_32-NEXT: vmovq {{.*#+}} xmm1 = xmm1[0],zero ; KNL_32-NEXT: vpxor %ymm3, %ymm3, %ymm3 ; KNL_32-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm3[4,5,6,7] @@ -1074,7 +1075,7 @@ define <2 x i32> @test23(i32* %base, <2 x i32> %ind, <2 x i1> %mask, <2 x i32> % ; ; KNL_64-LABEL: test23: ; KNL_64: # BB#0: -; KNL_64-NEXT: vpxord %zmm3, %zmm3, %zmm3 +; KNL_64: vpxord %zmm3, %zmm3, %zmm3 ; KNL_64-NEXT: vinserti32x4 $0, %xmm1, %zmm3, %zmm1 ; KNL_64-NEXT: vpsllq $63, %zmm1, %zmm1 ; KNL_64-NEXT: vptestmq %zmm1, %zmm1, %k1 @@ -1084,7 +1085,7 @@ define <2 x i32> @test23(i32* %base, <2 x i32> %ind, <2 x i1> %mask, <2 x i32> % ; ; KNL_32-LABEL: test23: ; KNL_32: # BB#0: -; KNL_32-NEXT: vpxord %zmm3, %zmm3, %zmm3 +; KNL_32: vpxord %zmm3, %zmm3, %zmm3 ; KNL_32-NEXT: vinserti32x4 $0, %xmm1, %zmm3, %zmm1 ; KNL_32-NEXT: movl {{[0-9]+}}(%esp), %eax ; KNL_32-NEXT: vpsllvq .LCPI22_0, %zmm1, %zmm1 @@ -1118,7 +1119,7 @@ define <2 x i32> @test23(i32* %base, <2 x i32> %ind, <2 x i1> %mask, <2 x i32> % define <2 x i32> @test24(i32* %base, <2 x i32> %ind) { ; KNL_64-LABEL: test24: ; KNL_64: # BB#0: -; KNL_64-NEXT: movb $3, %al +; KNL_64: movb $3, %al ; KNL_64-NEXT: kmovw %eax, %k1 ; KNL_64-NEXT: vpgatherqq (%rdi,%zmm0,8), %zmm1 {%k1} ; KNL_64-NEXT: vmovaps %zmm1, %zmm0 @@ -1126,7 +1127,7 @@ define <2 x i32> @test24(i32* %base, <2 x i32> %ind) { ; ; KNL_32-LABEL: test24: ; KNL_32: # BB#0: -; KNL_32-NEXT: movl {{[0-9]+}}(%esp), %eax +; KNL_32: movl {{[0-9]+}}(%esp), %eax ; KNL_32-NEXT: vpxord %zmm1, %zmm1, %zmm1 ; KNL_32-NEXT: vinserti32x4 $0, .LCPI23_0, %zmm1, %zmm1 ; KNL_32-NEXT: vpsllvq .LCPI23_1, %zmm1, %zmm1 @@ -1159,7 +1160,7 @@ define <2 x i64> @test25(i64* %base, <2 x i32> %ind, <2 x i1> %mask, <2 x i64> % ; ; KNL_64-LABEL: test25: ; KNL_64: # BB#0: -; KNL_64-NEXT: vpxord %zmm3, %zmm3, %zmm3 +; KNL_64: vpxord %zmm3, %zmm3, %zmm3 ; KNL_64-NEXT: vinserti32x4 $0, %xmm1, %zmm3, %zmm1 ; KNL_64-NEXT: vpsllq $63, %zmm1, %zmm1 ; KNL_64-NEXT: vptestmq %zmm1, %zmm1, %k1 @@ -1169,7 +1170,7 @@ define <2 x i64> @test25(i64* %base, <2 x i32> %ind, <2 x i1> %mask, <2 x i64> % ; ; KNL_32-LABEL: test25: ; KNL_32: # BB#0: -; KNL_32-NEXT: vpxord %zmm3, %zmm3, %zmm3 +; KNL_32: vpxord %zmm3, %zmm3, %zmm3 ; KNL_32-NEXT: vinserti32x4 $0, %xmm1, %zmm3, %zmm1 ; KNL_32-NEXT: movl {{[0-9]+}}(%esp), %eax ; KNL_32-NEXT: vpsllvq .LCPI24_0, %zmm1, %zmm1 @@ -1204,7 +1205,7 @@ define <2 x i64> @test26(i64* %base, <2 x i32> %ind, <2 x i64> %src0) { ; ; KNL_64-LABEL: test26: ; KNL_64: # BB#0: -; KNL_64-NEXT: movb $3, %al +; KNL_64: movb $3, %al ; KNL_64-NEXT: kmovw %eax, %k1 ; KNL_64-NEXT: vpgatherqq (%rdi,%zmm0,8), %zmm1 {%k1} ; KNL_64-NEXT: vmovaps %zmm1, %zmm0 @@ -1212,7 +1213,7 @@ define <2 x i64> @test26(i64* %base, <2 x i32> %ind, <2 x i64> %src0) { ; ; KNL_32-LABEL: test26: ; KNL_32: # BB#0: -; KNL_32-NEXT: movl {{[0-9]+}}(%esp), %eax +; KNL_32: movl {{[0-9]+}}(%esp), %eax ; KNL_32-NEXT: vpxord %zmm2, %zmm2, %zmm2 ; KNL_32-NEXT: vinserti32x4 $0, .LCPI25_0, %zmm2, %zmm2 ; KNL_32-NEXT: vpsllvq .LCPI25_1, %zmm2, %zmm2 @@ -1251,6 +1252,7 @@ define <2 x float> @test27(float* %base, <2 x i32> %ind) { ; KNL_64-NEXT: movb $3, %al ; KNL_64-NEXT: kmovw %eax, %k1 ; KNL_64-NEXT: vgatherqps (%rdi,%zmm1,4), %ymm0 {%k1} +; KNL_64-NEXT: # kill ; KNL_64-NEXT: retq ; ; KNL_32-LABEL: test27: @@ -1261,6 +1263,7 @@ define <2 x float> @test27(float* %base, <2 x i32> %ind) { ; KNL_32-NEXT: movb $3, %cl ; KNL_32-NEXT: kmovw %ecx, %k1 ; KNL_32-NEXT: vgatherqps (%eax,%zmm1,4), %ymm0 {%k1} +; KNL_32-NEXT: # kill ; KNL_32-NEXT: retl ; ; SKX-LABEL: test27: @@ -1282,7 +1285,7 @@ define void @test28(<2 x i32>%a1, <2 x i32*> %ptr) { ; ; KNL_64-LABEL: test28: ; KNL_64: # BB#0: -; KNL_64-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] +; KNL_64: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] ; KNL_64-NEXT: movb $3, %al ; KNL_64-NEXT: kmovw %eax, %k1 ; KNL_64-NEXT: vpscatterqd %ymm0, (,%zmm1) {%k1} @@ -1290,7 +1293,7 @@ define void @test28(<2 x i32>%a1, <2 x i32*> %ptr) { ; ; KNL_32-LABEL: test28: ; KNL_32: # BB#0: -; KNL_32-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] +; KNL_32: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] ; KNL_32-NEXT: vpxord %zmm2, %zmm2, %zmm2 ; KNL_32-NEXT: vinserti32x4 $0, .LCPI27_0, %zmm2, %zmm2 ; KNL_32-NEXT: vpsllvq .LCPI27_1, %zmm2, %zmm2 @@ -1300,7 +1303,7 @@ define void @test28(<2 x i32>%a1, <2 x i32*> %ptr) { ; ; SKX-LABEL: test28: ; SKX: # BB#0: -; SKX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] +; SKX: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] ; SKX-NEXT: movb $3, %al ; SKX-NEXT: kmovb %eax, %k1 ; SKX-NEXT: vpscatterqd %xmm0, (,%ymm1) {%k1} @@ -1308,7 +1311,7 @@ define void @test28(<2 x i32>%a1, <2 x i32*> %ptr) { ; ; SKX_32-LABEL: test28: ; SKX_32: # BB#0: -; SKX_32-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] +; SKX_32: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3] ; SKX_32-NEXT: movb $3, %al ; SKX_32-NEXT: kmovb %eax, %k1 ; SKX_32-NEXT: vpscatterqd %xmm0, (,%ymm1) {%k1} |