diff options
author | Sanjay Patel <spatel@rotateright.com> | 2018-06-26 17:15:07 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2018-06-26 17:15:07 +0000 |
commit | 3d1e4d6fa6f88426d60dfed93d705599ffe0270a (patch) | |
tree | 329d2a550c4f838efddde65f666cdf3abe3007d6 | |
parent | 4928d51791008943875bbae556369afe7ee96e4e (diff) | |
download | bcm5719-llvm-3d1e4d6fa6f88426d60dfed93d705599ffe0270a.tar.gz bcm5719-llvm-3d1e4d6fa6f88426d60dfed93d705599ffe0270a.zip |
[InstSimplify] add tests for shifts by sext bool; NFC
llvm-svn: 335631
-rw-r--r-- | llvm/test/Transforms/InstSimplify/shift.ll | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstSimplify/shift.ll b/llvm/test/Transforms/InstSimplify/shift.ll index fe20939a3fa..ad572a1dbe3 100644 --- a/llvm/test/Transforms/InstSimplify/shift.ll +++ b/llvm/test/Transforms/InstSimplify/shift.ll @@ -121,3 +121,69 @@ define <3 x i8> @ashr_all_ones_vec_with_undef_elts(<3 x i8> %x, <3 x i8> %y) { ret <3 x i8> %sh } +define i8 @lshr_by_sext_bool(i1 %x, i8 %y) { +; CHECK-LABEL: @lshr_by_sext_bool( +; CHECK-NEXT: [[S:%.*]] = sext i1 [[X:%.*]] to i8 +; CHECK-NEXT: [[R:%.*]] = lshr i8 [[Y:%.*]], [[S]] +; CHECK-NEXT: ret i8 [[R]] +; + %s = sext i1 %x to i8 + %r = lshr i8 %y, %s + ret i8 %r +} + +define <2 x i8> @lshr_by_sext_bool_vec(<2 x i1> %x, <2 x i8> %y) { +; CHECK-LABEL: @lshr_by_sext_bool_vec( +; CHECK-NEXT: [[S:%.*]] = sext <2 x i1> [[X:%.*]] to <2 x i8> +; CHECK-NEXT: [[R:%.*]] = lshr <2 x i8> [[Y:%.*]], [[S]] +; CHECK-NEXT: ret <2 x i8> [[R]] +; + %s = sext <2 x i1> %x to <2 x i8> + %r = lshr <2 x i8> %y, %s + ret <2 x i8> %r +} + +define i8 @ashr_by_sext_bool(i1 %x, i8 %y) { +; CHECK-LABEL: @ashr_by_sext_bool( +; CHECK-NEXT: [[S:%.*]] = sext i1 [[X:%.*]] to i8 +; CHECK-NEXT: [[R:%.*]] = ashr i8 [[Y:%.*]], [[S]] +; CHECK-NEXT: ret i8 [[R]] +; + %s = sext i1 %x to i8 + %r = ashr i8 %y, %s + ret i8 %r +} + +define <2 x i8> @ashr_by_sext_bool_vec(<2 x i1> %x, <2 x i8> %y) { +; CHECK-LABEL: @ashr_by_sext_bool_vec( +; CHECK-NEXT: [[S:%.*]] = sext <2 x i1> [[X:%.*]] to <2 x i8> +; CHECK-NEXT: [[R:%.*]] = ashr <2 x i8> [[Y:%.*]], [[S]] +; CHECK-NEXT: ret <2 x i8> [[R]] +; + %s = sext <2 x i1> %x to <2 x i8> + %r = ashr <2 x i8> %y, %s + ret <2 x i8> %r +} + +define i8 @shl_by_sext_bool(i1 %x, i8 %y) { +; CHECK-LABEL: @shl_by_sext_bool( +; CHECK-NEXT: [[S:%.*]] = sext i1 [[X:%.*]] to i8 +; CHECK-NEXT: [[R:%.*]] = shl i8 [[Y:%.*]], [[S]] +; CHECK-NEXT: ret i8 [[R]] +; + %s = sext i1 %x to i8 + %r = shl i8 %y, %s + ret i8 %r +} + +define <2 x i8> @shl_by_sext_bool_vec(<2 x i1> %x, <2 x i8> %y) { +; CHECK-LABEL: @shl_by_sext_bool_vec( +; CHECK-NEXT: [[S:%.*]] = sext <2 x i1> [[X:%.*]] to <2 x i8> +; CHECK-NEXT: [[R:%.*]] = shl <2 x i8> [[Y:%.*]], [[S]] +; CHECK-NEXT: ret <2 x i8> [[R]] +; + %s = sext <2 x i1> %x to <2 x i8> + %r = shl <2 x i8> %y, %s + ret <2 x i8> %r +} + |