diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/avx512-intrinsics.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/avx512-intrinsics.ll | 352 |
1 files changed, 160 insertions, 192 deletions
diff --git a/llvm/test/CodeGen/X86/avx512-intrinsics.ll b/llvm/test/CodeGen/X86/avx512-intrinsics.ll index d44a0fdc01a..015dbd32c7d 100644 --- a/llvm/test/CodeGen/X86/avx512-intrinsics.ll +++ b/llvm/test/CodeGen/X86/avx512-intrinsics.ll @@ -974,29 +974,29 @@ define <8 x i16> @test_cmp_d_512(<16 x i32> %a0, <16 x i32> %a1) { ; CHECK-LABEL: test_cmp_d_512: ; CHECK: ## BB#0: ; CHECK-NEXT: vpcmpeqd %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %r8d -; CHECK-NEXT: vpcmpltd %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %r9d -; CHECK-NEXT: vpcmpled %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %r10d -; CHECK-NEXT: vpcmpunordd %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %esi -; CHECK-NEXT: vpcmpneqd %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %edi -; CHECK-NEXT: vpcmpnltd %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %eax -; CHECK-NEXT: vpcmpnled %zmm1, %zmm0, %k0 +; CHECK-NEXT: vpcmpltd %zmm1, %zmm0, %k1 +; CHECK-NEXT: vpcmpled %zmm1, %zmm0, %k2 +; CHECK-NEXT: vpcmpunordd %zmm1, %zmm0, %k3 +; CHECK-NEXT: vpcmpneqd %zmm1, %zmm0, %k4 +; CHECK-NEXT: vpcmpnltd %zmm1, %zmm0, %k5 +; CHECK-NEXT: vpcmpnled %zmm1, %zmm0, %k6 +; CHECK-NEXT: vpcmpordd %zmm1, %zmm0, %k7 +; CHECK-NEXT: kmovw %k1, %eax ; CHECK-NEXT: kmovw %k0, %ecx -; CHECK-NEXT: vpcmpordd %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %edx -; CHECK-NEXT: vmovd %r8d, %xmm0 -; CHECK-NEXT: vpinsrw $1, %r9d, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $2, %r10d, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $3, %esi, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $4, %edi, %xmm0, %xmm0 +; CHECK-NEXT: vmovd %ecx, %xmm0 +; CHECK-NEXT: vpinsrw $1, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k2, %eax +; CHECK-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k3, %eax +; CHECK-NEXT: vpinsrw $3, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k4, %eax +; CHECK-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k5, %eax ; CHECK-NEXT: vpinsrw $5, %eax, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $6, %ecx, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $7, %edx, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k6, %eax +; CHECK-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k7, %eax +; CHECK-NEXT: vpinsrw $7, %eax, %xmm0, %xmm0 ; CHECK-NEXT: retq %res0 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 0, i16 -1) %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0 @@ -1022,29 +1022,29 @@ define <8 x i16> @test_mask_cmp_d_512(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) ; CHECK: ## BB#0: ; CHECK-NEXT: kmovw %edi, %k1 ; CHECK-NEXT: vpcmpeqd %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %r8d -; CHECK-NEXT: vpcmpltd %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %r9d -; CHECK-NEXT: vpcmpled %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %r10d -; CHECK-NEXT: vpcmpunordd %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %esi -; CHECK-NEXT: vpcmpneqd %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %edi -; CHECK-NEXT: vpcmpnltd %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %eax -; CHECK-NEXT: vpcmpnled %zmm1, %zmm0, %k0 {%k1} +; CHECK-NEXT: vpcmpltd %zmm1, %zmm0, %k2 {%k1} +; CHECK-NEXT: vpcmpled %zmm1, %zmm0, %k3 {%k1} +; CHECK-NEXT: vpcmpunordd %zmm1, %zmm0, %k4 {%k1} +; CHECK-NEXT: vpcmpneqd %zmm1, %zmm0, %k5 {%k1} +; CHECK-NEXT: vpcmpnltd %zmm1, %zmm0, %k6 {%k1} +; CHECK-NEXT: vpcmpnled %zmm1, %zmm0, %k7 {%k1} +; CHECK-NEXT: vpcmpordd %zmm1, %zmm0, %k1 {%k1} +; CHECK-NEXT: kmovw %k2, %eax ; CHECK-NEXT: kmovw %k0, %ecx -; CHECK-NEXT: vpcmpordd %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %edx -; CHECK-NEXT: vmovd %r8d, %xmm0 -; CHECK-NEXT: vpinsrw $1, %r9d, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $2, %r10d, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $3, %esi, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $4, %edi, %xmm0, %xmm0 +; CHECK-NEXT: vmovd %ecx, %xmm0 +; CHECK-NEXT: vpinsrw $1, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k3, %eax +; CHECK-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k4, %eax +; CHECK-NEXT: vpinsrw $3, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k5, %eax +; CHECK-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k6, %eax ; CHECK-NEXT: vpinsrw $5, %eax, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $6, %ecx, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $7, %edx, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k7, %eax +; CHECK-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k1, %eax +; CHECK-NEXT: vpinsrw $7, %eax, %xmm0, %xmm0 ; CHECK-NEXT: retq %res0 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 0, i16 %mask) %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0 @@ -1071,29 +1071,29 @@ define <8 x i16> @test_ucmp_d_512(<16 x i32> %a0, <16 x i32> %a1) { ; CHECK-LABEL: test_ucmp_d_512: ; CHECK: ## BB#0: ; CHECK-NEXT: vpcmpequd %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %r8d -; CHECK-NEXT: vpcmpltud %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %r9d -; CHECK-NEXT: vpcmpleud %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %r10d -; CHECK-NEXT: vpcmpunordud %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %esi -; CHECK-NEXT: vpcmpnequd %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %edi -; CHECK-NEXT: vpcmpnltud %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %eax -; CHECK-NEXT: vpcmpnleud %zmm1, %zmm0, %k0 +; CHECK-NEXT: vpcmpltud %zmm1, %zmm0, %k1 +; CHECK-NEXT: vpcmpleud %zmm1, %zmm0, %k2 +; CHECK-NEXT: vpcmpunordud %zmm1, %zmm0, %k3 +; CHECK-NEXT: vpcmpnequd %zmm1, %zmm0, %k4 +; CHECK-NEXT: vpcmpnltud %zmm1, %zmm0, %k5 +; CHECK-NEXT: vpcmpnleud %zmm1, %zmm0, %k6 +; CHECK-NEXT: vpcmpordud %zmm1, %zmm0, %k7 +; CHECK-NEXT: kmovw %k1, %eax ; CHECK-NEXT: kmovw %k0, %ecx -; CHECK-NEXT: vpcmpordud %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %edx -; CHECK-NEXT: vmovd %r8d, %xmm0 -; CHECK-NEXT: vpinsrw $1, %r9d, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $2, %r10d, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $3, %esi, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $4, %edi, %xmm0, %xmm0 +; CHECK-NEXT: vmovd %ecx, %xmm0 +; CHECK-NEXT: vpinsrw $1, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k2, %eax +; CHECK-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k3, %eax +; CHECK-NEXT: vpinsrw $3, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k4, %eax +; CHECK-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k5, %eax ; CHECK-NEXT: vpinsrw $5, %eax, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $6, %ecx, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $7, %edx, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k6, %eax +; CHECK-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k7, %eax +; CHECK-NEXT: vpinsrw $7, %eax, %xmm0, %xmm0 ; CHECK-NEXT: retq %res0 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 0, i16 -1) %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0 @@ -1119,29 +1119,29 @@ define <8 x i16> @test_mask_ucmp_d_512(<16 x i32> %a0, <16 x i32> %a1, i16 %mask ; CHECK: ## BB#0: ; CHECK-NEXT: kmovw %edi, %k1 ; CHECK-NEXT: vpcmpequd %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %r8d -; CHECK-NEXT: vpcmpltud %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %r9d -; CHECK-NEXT: vpcmpleud %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %r10d -; CHECK-NEXT: vpcmpunordud %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %esi -; CHECK-NEXT: vpcmpnequd %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %edi -; CHECK-NEXT: vpcmpnltud %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %eax -; CHECK-NEXT: vpcmpnleud %zmm1, %zmm0, %k0 {%k1} +; CHECK-NEXT: vpcmpltud %zmm1, %zmm0, %k2 {%k1} +; CHECK-NEXT: vpcmpleud %zmm1, %zmm0, %k3 {%k1} +; CHECK-NEXT: vpcmpunordud %zmm1, %zmm0, %k4 {%k1} +; CHECK-NEXT: vpcmpnequd %zmm1, %zmm0, %k5 {%k1} +; CHECK-NEXT: vpcmpnltud %zmm1, %zmm0, %k6 {%k1} +; CHECK-NEXT: vpcmpnleud %zmm1, %zmm0, %k7 {%k1} +; CHECK-NEXT: vpcmpordud %zmm1, %zmm0, %k1 {%k1} +; CHECK-NEXT: kmovw %k2, %eax ; CHECK-NEXT: kmovw %k0, %ecx -; CHECK-NEXT: vpcmpordud %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %edx -; CHECK-NEXT: vmovd %r8d, %xmm0 -; CHECK-NEXT: vpinsrw $1, %r9d, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $2, %r10d, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $3, %esi, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $4, %edi, %xmm0, %xmm0 +; CHECK-NEXT: vmovd %ecx, %xmm0 +; CHECK-NEXT: vpinsrw $1, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k3, %eax +; CHECK-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k4, %eax +; CHECK-NEXT: vpinsrw $3, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k5, %eax +; CHECK-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k6, %eax ; CHECK-NEXT: vpinsrw $5, %eax, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $6, %ecx, %xmm0, %xmm0 -; CHECK-NEXT: vpinsrw $7, %edx, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k7, %eax +; CHECK-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k1, %eax +; CHECK-NEXT: vpinsrw $7, %eax, %xmm0, %xmm0 ; CHECK-NEXT: retq %res0 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 0, i16 %mask) %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0 @@ -1168,36 +1168,28 @@ define <8 x i8> @test_cmp_q_512(<8 x i64> %a0, <8 x i64> %a1) { ; CHECK-LABEL: test_cmp_q_512: ; CHECK: ## BB#0: ; CHECK-NEXT: vpcmpeqq %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %r8d -; CHECK-NEXT: vpcmpltq %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %r9d -; CHECK-NEXT: vpcmpleq %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %r10d -; CHECK-NEXT: vpcmpunordq %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %r11d -; CHECK-NEXT: vpcmpneqq %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %edi -; CHECK-NEXT: vpcmpnltq %zmm1, %zmm0, %k0 +; CHECK-NEXT: vpcmpltq %zmm1, %zmm0, %k1 +; CHECK-NEXT: vpcmpleq %zmm1, %zmm0, %k2 +; CHECK-NEXT: vpcmpunordq %zmm1, %zmm0, %k3 +; CHECK-NEXT: vpcmpneqq %zmm1, %zmm0, %k4 +; CHECK-NEXT: vpcmpnltq %zmm1, %zmm0, %k5 +; CHECK-NEXT: vpcmpnleq %zmm1, %zmm0, %k6 +; CHECK-NEXT: vpcmpordq %zmm1, %zmm0, %k7 ; CHECK-NEXT: kmovw %k0, %eax -; CHECK-NEXT: vpcmpnleq %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %ecx -; CHECK-NEXT: vpcmpordq %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %edx -; CHECK-NEXT: movzbl %r8b, %esi -; CHECK-NEXT: vpinsrb $0, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %r9b, %esi -; CHECK-NEXT: vpinsrb $2, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %r10b, %esi -; CHECK-NEXT: vpinsrb $4, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %r11b, %esi -; CHECK-NEXT: vpinsrb $6, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %dil, %esi -; CHECK-NEXT: vpinsrb $8, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %al, %eax +; CHECK-NEXT: vpinsrb $0, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k1, %eax +; CHECK-NEXT: vpinsrb $2, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k2, %eax +; CHECK-NEXT: vpinsrb $4, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k3, %eax +; CHECK-NEXT: vpinsrb $6, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k4, %eax +; CHECK-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k5, %eax ; CHECK-NEXT: vpinsrb $10, %eax, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %cl, %eax +; CHECK-NEXT: kmovw %k6, %eax ; CHECK-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %dl, %eax +; CHECK-NEXT: kmovw %k7, %eax ; CHECK-NEXT: vpinsrb $14, %eax, %xmm0, %xmm0 ; CHECK-NEXT: retq %res0 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 0, i8 -1) @@ -1224,36 +1216,28 @@ define <8 x i8> @test_mask_cmp_q_512(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) { ; CHECK: ## BB#0: ; CHECK-NEXT: kmovw %edi, %k1 ; CHECK-NEXT: vpcmpeqq %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %r8d -; CHECK-NEXT: vpcmpltq %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %r9d -; CHECK-NEXT: vpcmpleq %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %r10d -; CHECK-NEXT: vpcmpunordq %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %r11d -; CHECK-NEXT: vpcmpneqq %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %edi -; CHECK-NEXT: vpcmpnltq %zmm1, %zmm0, %k0 {%k1} +; CHECK-NEXT: vpcmpltq %zmm1, %zmm0, %k2 {%k1} +; CHECK-NEXT: vpcmpleq %zmm1, %zmm0, %k3 {%k1} +; CHECK-NEXT: vpcmpunordq %zmm1, %zmm0, %k4 {%k1} +; CHECK-NEXT: vpcmpneqq %zmm1, %zmm0, %k5 {%k1} +; CHECK-NEXT: vpcmpnltq %zmm1, %zmm0, %k6 {%k1} +; CHECK-NEXT: vpcmpnleq %zmm1, %zmm0, %k7 {%k1} +; CHECK-NEXT: vpcmpordq %zmm1, %zmm0, %k1 {%k1} ; CHECK-NEXT: kmovw %k0, %eax -; CHECK-NEXT: vpcmpnleq %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %ecx -; CHECK-NEXT: vpcmpordq %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %edx -; CHECK-NEXT: movzbl %r8b, %esi -; CHECK-NEXT: vpinsrb $0, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %r9b, %esi -; CHECK-NEXT: vpinsrb $2, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %r10b, %esi -; CHECK-NEXT: vpinsrb $4, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %r11b, %esi -; CHECK-NEXT: vpinsrb $6, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %dil, %esi -; CHECK-NEXT: vpinsrb $8, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %al, %eax +; CHECK-NEXT: vpinsrb $0, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k2, %eax +; CHECK-NEXT: vpinsrb $2, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k3, %eax +; CHECK-NEXT: vpinsrb $4, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k4, %eax +; CHECK-NEXT: vpinsrb $6, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k5, %eax +; CHECK-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k6, %eax ; CHECK-NEXT: vpinsrb $10, %eax, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %cl, %eax +; CHECK-NEXT: kmovw %k7, %eax ; CHECK-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %dl, %eax +; CHECK-NEXT: kmovw %k1, %eax ; CHECK-NEXT: vpinsrb $14, %eax, %xmm0, %xmm0 ; CHECK-NEXT: retq %res0 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 0, i8 %mask) @@ -1281,36 +1265,28 @@ define <8 x i8> @test_ucmp_q_512(<8 x i64> %a0, <8 x i64> %a1) { ; CHECK-LABEL: test_ucmp_q_512: ; CHECK: ## BB#0: ; CHECK-NEXT: vpcmpequq %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %r8d -; CHECK-NEXT: vpcmpltuq %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %r9d -; CHECK-NEXT: vpcmpleuq %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %r10d -; CHECK-NEXT: vpcmpunorduq %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %r11d -; CHECK-NEXT: vpcmpnequq %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %edi -; CHECK-NEXT: vpcmpnltuq %zmm1, %zmm0, %k0 +; CHECK-NEXT: vpcmpltuq %zmm1, %zmm0, %k1 +; CHECK-NEXT: vpcmpleuq %zmm1, %zmm0, %k2 +; CHECK-NEXT: vpcmpunorduq %zmm1, %zmm0, %k3 +; CHECK-NEXT: vpcmpnequq %zmm1, %zmm0, %k4 +; CHECK-NEXT: vpcmpnltuq %zmm1, %zmm0, %k5 +; CHECK-NEXT: vpcmpnleuq %zmm1, %zmm0, %k6 +; CHECK-NEXT: vpcmporduq %zmm1, %zmm0, %k7 ; CHECK-NEXT: kmovw %k0, %eax -; CHECK-NEXT: vpcmpnleuq %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %ecx -; CHECK-NEXT: vpcmporduq %zmm1, %zmm0, %k0 -; CHECK-NEXT: kmovw %k0, %edx -; CHECK-NEXT: movzbl %r8b, %esi -; CHECK-NEXT: vpinsrb $0, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %r9b, %esi -; CHECK-NEXT: vpinsrb $2, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %r10b, %esi -; CHECK-NEXT: vpinsrb $4, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %r11b, %esi -; CHECK-NEXT: vpinsrb $6, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %dil, %esi -; CHECK-NEXT: vpinsrb $8, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %al, %eax +; CHECK-NEXT: vpinsrb $0, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k1, %eax +; CHECK-NEXT: vpinsrb $2, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k2, %eax +; CHECK-NEXT: vpinsrb $4, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k3, %eax +; CHECK-NEXT: vpinsrb $6, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k4, %eax +; CHECK-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k5, %eax ; CHECK-NEXT: vpinsrb $10, %eax, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %cl, %eax +; CHECK-NEXT: kmovw %k6, %eax ; CHECK-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %dl, %eax +; CHECK-NEXT: kmovw %k7, %eax ; CHECK-NEXT: vpinsrb $14, %eax, %xmm0, %xmm0 ; CHECK-NEXT: retq %res0 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 0, i8 -1) @@ -1337,36 +1313,28 @@ define <8 x i8> @test_mask_ucmp_q_512(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) { ; CHECK: ## BB#0: ; CHECK-NEXT: kmovw %edi, %k1 ; CHECK-NEXT: vpcmpequq %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %r8d -; CHECK-NEXT: vpcmpltuq %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %r9d -; CHECK-NEXT: vpcmpleuq %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %r10d -; CHECK-NEXT: vpcmpunorduq %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %r11d -; CHECK-NEXT: vpcmpnequq %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %edi -; CHECK-NEXT: vpcmpnltuq %zmm1, %zmm0, %k0 {%k1} +; CHECK-NEXT: vpcmpltuq %zmm1, %zmm0, %k2 {%k1} +; CHECK-NEXT: vpcmpleuq %zmm1, %zmm0, %k3 {%k1} +; CHECK-NEXT: vpcmpunorduq %zmm1, %zmm0, %k4 {%k1} +; CHECK-NEXT: vpcmpnequq %zmm1, %zmm0, %k5 {%k1} +; CHECK-NEXT: vpcmpnltuq %zmm1, %zmm0, %k6 {%k1} +; CHECK-NEXT: vpcmpnleuq %zmm1, %zmm0, %k7 {%k1} +; CHECK-NEXT: vpcmporduq %zmm1, %zmm0, %k1 {%k1} ; CHECK-NEXT: kmovw %k0, %eax -; CHECK-NEXT: vpcmpnleuq %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %ecx -; CHECK-NEXT: vpcmporduq %zmm1, %zmm0, %k0 {%k1} -; CHECK-NEXT: kmovw %k0, %edx -; CHECK-NEXT: movzbl %r8b, %esi -; CHECK-NEXT: vpinsrb $0, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %r9b, %esi -; CHECK-NEXT: vpinsrb $2, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %r10b, %esi -; CHECK-NEXT: vpinsrb $4, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %r11b, %esi -; CHECK-NEXT: vpinsrb $6, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %dil, %esi -; CHECK-NEXT: vpinsrb $8, %esi, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %al, %eax +; CHECK-NEXT: vpinsrb $0, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k2, %eax +; CHECK-NEXT: vpinsrb $2, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k3, %eax +; CHECK-NEXT: vpinsrb $4, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k4, %eax +; CHECK-NEXT: vpinsrb $6, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k5, %eax +; CHECK-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0 +; CHECK-NEXT: kmovw %k6, %eax ; CHECK-NEXT: vpinsrb $10, %eax, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %cl, %eax +; CHECK-NEXT: kmovw %k7, %eax ; CHECK-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 -; CHECK-NEXT: movzbl %dl, %eax +; CHECK-NEXT: kmovw %k1, %eax ; CHECK-NEXT: vpinsrb $14, %eax, %xmm0, %xmm0 ; CHECK-NEXT: retq %res0 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 0, i8 %mask) |