diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2019-01-27 20:52:34 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2019-01-27 20:52:34 +0000 |
| commit | e5cf88401837fe9aaa8d2c3813e0a97dc6b5537d (patch) | |
| tree | d80e592d0426c319af889be05e40745c7718d01a /llvm/test/CodeGen | |
| parent | f10b6623cc1db4f48c6b57876139e0054a34f0aa (diff) | |
| download | bcm5719-llvm-e5cf88401837fe9aaa8d2c3813e0a97dc6b5537d.tar.gz bcm5719-llvm-e5cf88401837fe9aaa8d2c3813e0a97dc6b5537d.zip | |
[X86][SSE] Add UNDEF test case for combineSelect ISD::USUBSAT matching (PR40083)
llvm-svn: 352329
Diffstat (limited to 'llvm/test/CodeGen')
| -rw-r--r-- | llvm/test/CodeGen/X86/psubus.ll | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/psubus.ll b/llvm/test/CodeGen/X86/psubus.ll index 13415e837db..a0d25ae0417 100644 --- a/llvm/test/CodeGen/X86/psubus.ll +++ b/llvm/test/CodeGen/X86/psubus.ll @@ -2747,3 +2747,48 @@ entry: %4 = extractelement <2 x i64> %3, i32 0 ret i64 %4 } + +; PR40083 +define i64 @test31(<2 x i64> %x) { +; SSE-LABEL: test31: +; SSE: # %bb.0: +; SSE-NEXT: movdqa {{.*#+}} xmm1 = <70,70,70,70,70,70,70,70,u,u,u,u,u,u,u,u> +; SSE-NEXT: pminub %xmm0, %xmm1 +; SSE-NEXT: pcmpeqb %xmm0, %xmm1 +; SSE-NEXT: paddb {{.*}}(%rip), %xmm0 +; SSE-NEXT: pandn %xmm0, %xmm1 +; SSE-NEXT: movq %xmm1, %rax +; SSE-NEXT: retq +; +; AVX1-LABEL: test31: +; AVX1: # %bb.0: +; AVX1-NEXT: vpminub {{.*}}(%rip), %xmm0, %xmm1 +; AVX1-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm1 +; AVX1-NEXT: vpaddb {{.*}}(%rip), %xmm0, %xmm0 +; AVX1-NEXT: vpandn %xmm0, %xmm1, %xmm0 +; AVX1-NEXT: vmovq %xmm0, %rax +; AVX1-NEXT: retq +; +; AVX2-LABEL: test31: +; AVX2: # %bb.0: +; AVX2-NEXT: vpminub {{.*}}(%rip), %xmm0, %xmm1 +; AVX2-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm1 +; AVX2-NEXT: vpaddb {{.*}}(%rip), %xmm0, %xmm0 +; AVX2-NEXT: vpandn %xmm0, %xmm1, %xmm0 +; AVX2-NEXT: vmovq %xmm0, %rax +; AVX2-NEXT: retq +; +; AVX512-LABEL: test31: +; AVX512: # %bb.0: +; AVX512-NEXT: vpcmpnleub {{.*}}(%rip), %xmm0, %k1 +; AVX512-NEXT: vpaddb {{.*}}(%rip), %xmm0, %xmm0 {%k1} {z} +; AVX512-NEXT: vmovq %xmm0, %rax +; AVX512-NEXT: retq + %t0 = bitcast <2 x i64> %x to <16 x i8> + %cmp = icmp ugt <16 x i8> %t0, <i8 70, i8 70, i8 70, i8 70, i8 70, i8 70, i8 70, i8 70, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef> + %bop = add <16 x i8> %t0, <i8 -71, i8 -71, i8 -71, i8 -71, i8 -71, i8 -71, i8 -71, i8 -71, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef> + %sel = select <16 x i1> %cmp, <16 x i8> %bop, <16 x i8> zeroinitializer + %bc = bitcast <16 x i8> %sel to <2 x i64> + %ext = extractelement <2 x i64> %bc, i32 0 + ret i64 %ext +} |

