diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:01:22 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:01:22 +0000 |
commit | 71d5a2540a98c81f5bcaeb48805e0e2881f530ef (patch) | |
tree | 5343938942df402b49ec7300a1c25a2d4ccd5821 /test/CodeGen/X86/combine-and.ll | |
parent | 31bbf64f3a4974a2d6c8b3b27ad2f519caf74057 (diff) | |
download | src-test-71d5a2540a98c81f5bcaeb48805e0e2881f530ef.tar.gz src-test-71d5a2540a98c81f5bcaeb48805e0e2881f530ef.zip |
Notes
Diffstat (limited to 'test/CodeGen/X86/combine-and.ll')
-rw-r--r-- | test/CodeGen/X86/combine-and.ll | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/CodeGen/X86/combine-and.ll b/test/CodeGen/X86/combine-and.ll index 6f310d9b7b123..f30fa61bbfbe6 100644 --- a/test/CodeGen/X86/combine-and.ll +++ b/test/CodeGen/X86/combine-and.ll @@ -245,3 +245,28 @@ define <4 x i32> @and_or_zext_v4i16(<4 x i16> %a0) { %3 = and <4 x i32> %2, <i32 65536, i32 65536, i32 65536, i32 65536> ret <4 x i32> %3 } + +; +; known sign bits folding +; + +define <8 x i16> @ashr_mask1_v8i16(<8 x i16> %a0) { +; CHECK-LABEL: ashr_mask1_v8i16: +; CHECK: # BB#0: +; CHECK-NEXT: psrlw $15, %xmm0 +; CHECK-NEXT: retq + %1 = ashr <8 x i16> %a0, <i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15> + %2 = and <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> + ret <8 x i16> %2 +} + +define <4 x i32> @ashr_mask7_v4i32(<4 x i32> %a0) { +; CHECK-LABEL: ashr_mask7_v4i32: +; CHECK: # BB#0: +; CHECK-NEXT: psrad $31, %xmm0 +; CHECK-NEXT: psrld $29, %xmm0 +; CHECK-NEXT: retq + %1 = ashr <4 x i32> %a0, <i32 31, i32 31, i32 31, i32 31> + %2 = and <4 x i32> %1, <i32 7, i32 7, i32 7, i32 7> + ret <4 x i32> %2 +} |