summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/avx512-intrinsics.ll
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2016-06-21 07:37:32 +0000
committerCraig Topper <craig.topper@gmail.com>2016-06-21 07:37:32 +0000
commit283418fbb6fe716460c7d514573de65cc8873e7c (patch)
tree99aa104b5f2b5dd22bce2d17956319d2b75fa106 /llvm/test/CodeGen/X86/avx512-intrinsics.ll
parent9038aa3001d41a797acc494ca43a3c004f5fe8e3 (diff)
downloadbcm5719-llvm-283418fbb6fe716460c7d514573de65cc8873e7c.tar.gz
bcm5719-llvm-283418fbb6fe716460c7d514573de65cc8873e7c.zip
[AVX512] Add patterns for any-extending a mask that use the def of KMOVW/KMOVB without going through an EXTRACT_SUBREG and a MOVZX.
llvm-svn: 273253
Diffstat (limited to 'llvm/test/CodeGen/X86/avx512-intrinsics.ll')
-rw-r--r--llvm/test/CodeGen/X86/avx512-intrinsics.ll352
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)
OpenPOWER on IntegriCloud