[llvm] dce03e3 - [InstCombine] Tweak funnel by constant tests for better shl/lshr commutation coverage
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 7 03:55:00 PDT 2020
Author: Simon Pilgrim
Date: 2020-10-07T11:47:03+01:00
New Revision: dce03e3059f06ca28d3c9f6fc83839933e16e0e2
URL: https://github.com/llvm/llvm-project/commit/dce03e3059f06ca28d3c9f6fc83839933e16e0e2
DIFF: https://github.com/llvm/llvm-project/commit/dce03e3059f06ca28d3c9f6fc83839933e16e0e2.diff
LOG: [InstCombine] Tweak funnel by constant tests for better shl/lshr commutation coverage
Added:
Modified:
llvm/test/Transforms/InstCombine/funnel.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/InstCombine/funnel.ll b/llvm/test/Transforms/InstCombine/funnel.ll
index f8844519ee74..fca73a4ffb88 100644
--- a/llvm/test/Transforms/InstCombine/funnel.ll
+++ b/llvm/test/Transforms/InstCombine/funnel.ll
@@ -23,13 +23,13 @@ define i32 @fshl_i32_constant(i32 %x, i32 %y) {
define i42 @fshr_i42_constant(i42 %x, i42 %y) {
; CHECK-LABEL: @fshr_i42_constant(
-; CHECK-NEXT: [[SHL:%.*]] = shl i42 [[X:%.*]], 31
-; CHECK-NEXT: [[SHR:%.*]] = lshr i42 [[Y:%.*]], 11
+; CHECK-NEXT: [[SHR:%.*]] = lshr i42 [[X:%.*]], 31
+; CHECK-NEXT: [[SHL:%.*]] = shl i42 [[Y:%.*]], 11
; CHECK-NEXT: [[R:%.*]] = or i42 [[SHR]], [[SHL]]
; CHECK-NEXT: ret i42 [[R]]
;
- %shl = shl i42 %x, 31
- %shr = lshr i42 %y, 11
+ %shr = lshr i42 %x, 31
+ %shl = shl i42 %y, 11
%r = or i42 %shr, %shl
ret i42 %r
}
@@ -79,39 +79,39 @@ define <2 x i16> @fshl_v2i16_constant_splat_undef1(<2 x i16> %x, <2 x i16> %y) {
define <2 x i17> @fshr_v2i17_constant_splat(<2 x i17> %x, <2 x i17> %y) {
; CHECK-LABEL: @fshr_v2i17_constant_splat(
-; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i17> [[X:%.*]], <i17 12, i17 12>
-; CHECK-NEXT: [[SHR:%.*]] = lshr <2 x i17> [[Y:%.*]], <i17 5, i17 5>
+; CHECK-NEXT: [[SHR:%.*]] = lshr <2 x i17> [[X:%.*]], <i17 12, i17 12>
+; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i17> [[Y:%.*]], <i17 5, i17 5>
; CHECK-NEXT: [[R:%.*]] = or <2 x i17> [[SHR]], [[SHL]]
; CHECK-NEXT: ret <2 x i17> [[R]]
;
- %shl = shl <2 x i17> %x, <i17 12, i17 12>
- %shr = lshr <2 x i17> %y, <i17 5, i17 5>
+ %shr = lshr <2 x i17> %x, <i17 12, i17 12>
+ %shl = shl <2 x i17> %y, <i17 5, i17 5>
%r = or <2 x i17> %shr, %shl
ret <2 x i17> %r
}
define <2 x i17> @fshr_v2i17_constant_splat_undef0(<2 x i17> %x, <2 x i17> %y) {
; CHECK-LABEL: @fshr_v2i17_constant_splat_undef0(
-; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i17> [[X:%.*]], <i17 12, i17 undef>
-; CHECK-NEXT: [[SHR:%.*]] = lshr <2 x i17> [[Y:%.*]], <i17 undef, i17 5>
+; CHECK-NEXT: [[SHR:%.*]] = lshr <2 x i17> [[X:%.*]], <i17 12, i17 undef>
+; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i17> [[Y:%.*]], <i17 undef, i17 5>
; CHECK-NEXT: [[R:%.*]] = or <2 x i17> [[SHR]], [[SHL]]
; CHECK-NEXT: ret <2 x i17> [[R]]
;
- %shl = shl <2 x i17> %x, <i17 12, i17 undef>
- %shr = lshr <2 x i17> %y, <i17 undef, i17 5>
+ %shr = lshr <2 x i17> %x, <i17 12, i17 undef>
+ %shl = shl <2 x i17> %y, <i17 undef, i17 5>
%r = or <2 x i17> %shr, %shl
ret <2 x i17> %r
}
define <2 x i17> @fshr_v2i17_constant_splat_undef1(<2 x i17> %x, <2 x i17> %y) {
; CHECK-LABEL: @fshr_v2i17_constant_splat_undef1(
-; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i17> [[X:%.*]], <i17 12, i17 undef>
-; CHECK-NEXT: [[SHR:%.*]] = lshr <2 x i17> [[Y:%.*]], <i17 5, i17 undef>
+; CHECK-NEXT: [[SHR:%.*]] = lshr <2 x i17> [[X:%.*]], <i17 12, i17 undef>
+; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i17> [[Y:%.*]], <i17 5, i17 undef>
; CHECK-NEXT: [[R:%.*]] = or <2 x i17> [[SHR]], [[SHL]]
; CHECK-NEXT: ret <2 x i17> [[R]]
;
- %shl = shl <2 x i17> %x, <i17 12, i17 undef>
- %shr = lshr <2 x i17> %y, <i17 5, i17 undef>
+ %shr = lshr <2 x i17> %x, <i17 12, i17 undef>
+ %shl = shl <2 x i17> %y, <i17 5, i17 undef>
%r = or <2 x i17> %shr, %shl
ret <2 x i17> %r
}
@@ -120,39 +120,39 @@ define <2 x i17> @fshr_v2i17_constant_splat_undef1(<2 x i17> %x, <2 x i17> %y) {
define <2 x i32> @fshr_v2i32_constant_nonsplat(<2 x i32> %x, <2 x i32> %y) {
; CHECK-LABEL: @fshr_v2i32_constant_nonsplat(
-; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i32> [[X:%.*]], <i32 17, i32 19>
-; CHECK-NEXT: [[SHR:%.*]] = lshr <2 x i32> [[Y:%.*]], <i32 15, i32 13>
+; CHECK-NEXT: [[SHR:%.*]] = lshr <2 x i32> [[X:%.*]], <i32 17, i32 19>
+; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i32> [[Y:%.*]], <i32 15, i32 13>
; CHECK-NEXT: [[R:%.*]] = or <2 x i32> [[SHL]], [[SHR]]
; CHECK-NEXT: ret <2 x i32> [[R]]
;
- %shl = shl <2 x i32> %x, <i32 17, i32 19>
- %shr = lshr <2 x i32> %y, <i32 15, i32 13>
+ %shr = lshr <2 x i32> %x, <i32 17, i32 19>
+ %shl = shl <2 x i32> %y, <i32 15, i32 13>
%r = or <2 x i32> %shl, %shr
ret <2 x i32> %r
}
define <2 x i32> @fshr_v2i32_constant_nonsplat_undef0(<2 x i32> %x, <2 x i32> %y) {
; CHECK-LABEL: @fshr_v2i32_constant_nonsplat_undef0(
-; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i32> [[X:%.*]], <i32 undef, i32 19>
-; CHECK-NEXT: [[SHR:%.*]] = lshr <2 x i32> [[Y:%.*]], <i32 15, i32 13>
+; CHECK-NEXT: [[SHR:%.*]] = lshr <2 x i32> [[X:%.*]], <i32 undef, i32 19>
+; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i32> [[Y:%.*]], <i32 15, i32 13>
; CHECK-NEXT: [[R:%.*]] = or <2 x i32> [[SHL]], [[SHR]]
; CHECK-NEXT: ret <2 x i32> [[R]]
;
- %shl = shl <2 x i32> %x, <i32 undef, i32 19>
- %shr = lshr <2 x i32> %y, <i32 15, i32 13>
+ %shr = lshr <2 x i32> %x, <i32 undef, i32 19>
+ %shl = shl <2 x i32> %y, <i32 15, i32 13>
%r = or <2 x i32> %shl, %shr
ret <2 x i32> %r
}
define <2 x i32> @fshr_v2i32_constant_nonsplat_undef1(<2 x i32> %x, <2 x i32> %y) {
; CHECK-LABEL: @fshr_v2i32_constant_nonsplat_undef1(
-; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i32> [[X:%.*]], <i32 17, i32 19>
-; CHECK-NEXT: [[SHR:%.*]] = lshr <2 x i32> [[Y:%.*]], <i32 15, i32 undef>
+; CHECK-NEXT: [[SHR:%.*]] = lshr <2 x i32> [[X:%.*]], <i32 17, i32 19>
+; CHECK-NEXT: [[SHL:%.*]] = shl <2 x i32> [[Y:%.*]], <i32 15, i32 undef>
; CHECK-NEXT: [[R:%.*]] = or <2 x i32> [[SHL]], [[SHR]]
; CHECK-NEXT: ret <2 x i32> [[R]]
;
- %shl = shl <2 x i32> %x, <i32 17, i32 19>
- %shr = lshr <2 x i32> %y, <i32 15, i32 undef>
+ %shr = lshr <2 x i32> %x, <i32 17, i32 19>
+ %shl = shl <2 x i32> %y, <i32 15, i32 undef>
%r = or <2 x i32> %shl, %shr
ret <2 x i32> %r
}
More information about the llvm-commits
mailing list