diff options
author | Sanjay Patel <spatel@rotateright.com> | 2017-02-28 18:02:38 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2017-02-28 18:02:38 +0000 |
commit | 74ca880749ed560accfb436620dc073a95a0b725 (patch) | |
tree | e6003744cf04acc5b2d1695f6425ee5afd4b7506 | |
parent | 8b3f2160d54468603dd298dcca9f6b70852c57c1 (diff) | |
download | bcm5719-llvm-74ca880749ed560accfb436620dc073a95a0b725.tar.gz bcm5719-llvm-74ca880749ed560accfb436620dc073a95a0b725.zip |
[x86] add alternate IR tests for select of constants; NFC
llvm-svn: 296496
-rw-r--r-- | llvm/test/CodeGen/X86/avx512-insert-extract.ll | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/avx512-insert-extract.ll b/llvm/test/CodeGen/X86/avx512-insert-extract.ll index e2ba4ef4cc5..9a5ce66ec48 100644 --- a/llvm/test/CodeGen/X86/avx512-insert-extract.ll +++ b/llvm/test/CodeGen/X86/avx512-insert-extract.ll @@ -1419,6 +1419,40 @@ define zeroext i8 @test_extractelement_v2i1(<2 x i64> %a, <2 x i64> %b) { 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_v64i1(<64 x i8> %a, <64 x i8> %b) { 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: |