[llvm] r296496 - [x86] add alternate IR tests for select of constants; NFC

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 28 10:02:38 PST 2017


Author: spatel
Date: Tue Feb 28 12:02:38 2017
New Revision: 296496

URL: http://llvm.org/viewvc/llvm-project?rev=296496&view=rev
Log:
[x86] add alternate IR tests for select of constants; NFC

Modified:
    llvm/trunk/test/CodeGen/X86/avx512-insert-extract.ll

Modified: llvm/trunk/test/CodeGen/X86/avx512-insert-extract.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx512-insert-extract.ll?rev=296496&r1=296495&r2=296496&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/avx512-insert-extract.ll (original)
+++ llvm/trunk/test/CodeGen/X86/avx512-insert-extract.ll Tue Feb 28 12:02:38 2017
@@ -1419,6 +1419,40 @@ define zeroext i8 @test_extractelement_v
   ret i8 %res
 }
 
+define zeroext i8 @extractelement_v2i1_alt(<2 x i64> %a, <2 x i64> %b) {
+; KNL-LABEL: extractelement_v2i1_alt:
+; KNL:       ## BB#0:
+; KNL-NEXT:    vmovdqa {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]
+; KNL-NEXT:    vpxor %xmm2, %xmm1, %xmm1
+; KNL-NEXT:    vpxor %xmm2, %xmm0, %xmm0
+; KNL-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm0
+; KNL-NEXT:    vpextrb $0, %xmm0, %eax
+; KNL-NEXT:    addb $4, %al
+; KNL-NEXT:    movzbl %al, %eax
+; KNL-NEXT:    retq
+;
+; SKX-LABEL: extractelement_v2i1_alt:
+; SKX:       ## BB#0:
+; SKX-NEXT:    vpcmpnleuq %xmm1, %xmm0, %k0
+; SKX-NEXT:    kshiftlw $15, %k0, %k0
+; SKX-NEXT:    kshiftrw $15, %k0, %k0
+; SKX-NEXT:    kmovw %k0, %eax
+; SKX-NEXT:    andl $1, %eax
+; SKX-NEXT:    testb %al, %al
+; SKX-NEXT:    je LBB51_2
+; SKX-NEXT:  ## BB#1:
+; SKX-NEXT:    movb $-1, %al
+; SKX-NEXT:  LBB51_2:
+; SKX-NEXT:    addb $4, %al
+; SKX-NEXT:    movzbl %al, %eax
+; SKX-NEXT:    retq
+  %t1 = icmp ugt <2 x i64> %a, %b
+  %t2 = extractelement <2 x i1> %t1, i32 0
+  %sext = sext i1 %t2 to i8
+  %res = add i8 %sext, 4
+  ret i8 %res
+}
+
 define zeroext i8 @test_extractelement_v4i1(<4 x i32> %a, <4 x i32> %b) {
 ; KNL-LABEL: test_extractelement_v4i1:
 ; KNL:       ## BB#0:
@@ -1501,6 +1535,40 @@ define zeroext i8 @test_extractelement_v
   ret i8 %res
 }
 
+define zeroext i8 @extractelement_v64i1_alt(<64 x i8> %a, <64 x i8> %b) {
+; KNL-LABEL: extractelement_v64i1_alt:
+; KNL:       ## BB#0:
+; KNL-NEXT:    vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
+; KNL-NEXT:    vpxor %ymm0, %ymm3, %ymm2
+; KNL-NEXT:    vpxor %ymm0, %ymm1, %ymm0
+; KNL-NEXT:    vpcmpgtb %ymm2, %ymm0, %ymm0
+; KNL-NEXT:    vextracti128 $1, %ymm0, %xmm0
+; KNL-NEXT:    vpextrb $15, %xmm0, %eax
+; KNL-NEXT:    addb $4, %al
+; KNL-NEXT:    movzbl %al, %eax
+; KNL-NEXT:    retq
+;
+; SKX-LABEL: extractelement_v64i1_alt:
+; SKX:       ## BB#0:
+; SKX-NEXT:    vpcmpnleub %zmm1, %zmm0, %k0
+; SKX-NEXT:    kshiftrq $63, %k0, %k0
+; SKX-NEXT:    kmovw %k0, %eax
+; SKX-NEXT:    andl $1, %eax
+; SKX-NEXT:    testb %al, %al
+; SKX-NEXT:    je LBB55_2
+; SKX-NEXT:  ## BB#1:
+; SKX-NEXT:    movb $-1, %al
+; SKX-NEXT:  LBB55_2:
+; SKX-NEXT:    addb $4, %al
+; SKX-NEXT:    movzbl %al, %eax
+; SKX-NEXT:    retq
+  %t1 = icmp ugt <64 x i8> %a, %b
+  %t2 = extractelement <64 x i1> %t1, i32 63
+  %sext = sext i1 %t2 to i8
+  %res = add i8 %sext, 4
+  ret i8 %res
+}
+
 define i64 @test_extractelement_variable_v2i64(<2 x i64> %t1, i32 %index) {
 ; KNL-LABEL: test_extractelement_variable_v2i64:
 ; KNL:       ## BB#0:




More information about the llvm-commits mailing list