diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-12-21 14:33:40 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-12-21 14:33:40 +0000 |
commit | 636510a702ca5bdf938942e1b59f840c23435265 (patch) | |
tree | 5e979054048f05f349d7be8b9e4700c8f5eb5daa | |
parent | eaeea04edf4eef8a8bd83fe768624e38925d047c (diff) | |
download | bcm5719-llvm-636510a702ca5bdf938942e1b59f840c23435265.tar.gz bcm5719-llvm-636510a702ca5bdf938942e1b59f840c23435265.zip |
[X86] Add (and (or x, C), D) -> D iff (C & D) == D non-splat vector test
llvm-svn: 321268
-rw-r--r-- | llvm/test/CodeGen/X86/combine-and.ll | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/combine-and.ll b/llvm/test/CodeGen/X86/combine-and.ll index e92237f524f..df89ee49173 100644 --- a/llvm/test/CodeGen/X86/combine-and.ll +++ b/llvm/test/CodeGen/X86/combine-and.ll @@ -220,6 +220,17 @@ define <4 x i32> @and_or_v4i32(<4 x i32> %a0) { ret <4 x i32> %2 } +define <8 x i16> @and_or_v8i16(<8 x i16> %a0) { +; CHECK-LABEL: and_or_v8i16: +; CHECK: # %bb.0: +; CHECK-NEXT: orps {{.*}}(%rip), %xmm0 +; CHECK-NEXT: andps {{.*}}(%rip), %xmm0 +; CHECK-NEXT: retq + %1 = or <8 x i16> %a0, <i16 255, i16 127, i16 63, i16 31, i16 15, i16 31, i16 63, i16 -1> + %2 = and <8 x i16> %1, <i16 15, i16 7, i16 3, i16 1, i16 14, i16 10, i16 2, i16 32767> + ret <8 x i16> %2 +} + ; ; known bits folding ; |