From 54739f00876c586c7573c268fd908a8898736930 Mon Sep 17 00:00:00 2001 From: Sanjay Patel Date: Sat, 21 Jan 2017 17:43:06 +0000 Subject: [PATCH] [InstCombine] add tests for ashr-ashr; NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292724 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Transforms/InstCombine/shift-sra.ll | 53 +++++++++++++++++++++--- 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/test/Transforms/InstCombine/shift-sra.ll b/test/Transforms/InstCombine/shift-sra.ll index ebb6ab2cad5..1d6f79f54b1 100644 --- a/test/Transforms/InstCombine/shift-sra.ll +++ b/test/Transforms/InstCombine/shift-sra.ll @@ -114,15 +114,56 @@ E: ret i32 0 } +; (X >>s C1) >>s C2 --> X >>s (C1 + C2) + +define i32 @ashr_ashr(i32 %x) { +; CHECK-LABEL: @ashr_ashr( +; CHECK-NEXT: [[SH2:%.*]] = ashr i32 %x, 12 +; CHECK-NEXT: ret i32 [[SH2]] +; + %sh1 = ashr i32 %x, 5 + %sh2 = ashr i32 %sh1, 7 + ret i32 %sh2 +} + ; PR3851 +; (X >>s C1) >>s C2 --> X >>s (Bitwidth - 1) -define i32 @ashr_overshift(i32 %val) { +define i32 @ashr_overshift(i32 %x) { ; CHECK-LABEL: @ashr_overshift( -; CHECK-NEXT: [[SHR4:%.*]] = ashr i32 %val, 31 -; CHECK-NEXT: ret i32 [[SHR4]] +; CHECK-NEXT: [[SH2:%.*]] = ashr i32 %x, 31 +; CHECK-NEXT: ret i32 [[SH2]] +; + %sh1 = ashr i32 %x, 15 + %sh2 = ashr i32 %sh1, 17 + ret i32 %sh2 +} + +; FIXME: +; (X >>s C1) >>s C2 --> X >>s (C1 + C2) + +define <2 x i32> @ashr_ashr_splat_vec(<2 x i32> %x) { +; CHECK-LABEL: @ashr_ashr_splat_vec( +; CHECK-NEXT: [[SH1:%.*]] = ashr <2 x i32> %x, +; CHECK-NEXT: [[SH2:%.*]] = ashr <2 x i32> [[SH1]], +; CHECK-NEXT: ret <2 x i32> [[SH2]] +; + %sh1 = ashr <2 x i32> %x, + %sh2 = ashr <2 x i32> %sh1, + ret <2 x i32> %sh2 +} + +; FIXME: +; (X >>s C1) >>s C2 --> X >>s (Bitwidth - 1) + +define <2 x i32> @ashr_overshift_splat_vec(<2 x i32> %x) { +; CHECK-LABEL: @ashr_overshift_splat_vec( +; CHECK-NEXT: [[SH1:%.*]] = ashr <2 x i32> %x, +; CHECK-NEXT: [[SH2:%.*]] = ashr <2 x i32> [[SH1]], +; CHECK-NEXT: ret <2 x i32> [[SH2]] ; - %shr = ashr i32 %val, 15 - %shr4 = ashr i32 %shr, 17 - ret i32 %shr4 + %sh1 = ashr <2 x i32> %x, + %sh2 = ashr <2 x i32> %sh1, + ret <2 x i32> %sh2 } -- 2.40.0