[llvm] 1fd7929 - [InstCombine] precommit some tests for reassociate add

Chenbing Zheng via llvm-commits llvm-commits at lists.llvm.org
Sat May 7 00:58:26 PDT 2022


Author: Chenbing Zheng
Date: 2022-05-07T15:52:28+08:00
New Revision: 1fd7929ae544addbecaec695124e42d4ec7e96b9

URL: https://github.com/llvm/llvm-project/commit/1fd7929ae544addbecaec695124e42d4ec7e96b9
DIFF: https://github.com/llvm/llvm-project/commit/1fd7929ae544addbecaec695124e42d4ec7e96b9.diff

LOG: [InstCombine] precommit some tests for reassociate add

Added: 
    

Modified: 
    llvm/test/Transforms/InstCombine/add.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstCombine/add.ll b/llvm/test/Transforms/InstCombine/add.ll
index 4738a555a47a..4218cb91ceec 100644
--- a/llvm/test/Transforms/InstCombine/add.ll
+++ b/llvm/test/Transforms/InstCombine/add.ll
@@ -1690,3 +1690,55 @@ define i8 @add_xor_and_var_extra_use(i8 %x, i8 %y) {
   %add = add i8 %xor, %x
   ret i8 %add
 }
+
+define i32 @add_add_add(i32 %A, i32 %B, i32 %C, i32 %D) {
+; CHECK-LABEL: @add_add_add(
+; CHECK-NEXT:    [[E:%.*]] = add i32 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT:    [[F:%.*]] = add i32 [[E]], [[C:%.*]]
+; CHECK-NEXT:    [[G:%.*]] = add i32 [[F]], [[D:%.*]]
+; CHECK-NEXT:    ret i32 [[G]]
+;
+  %E = add i32 %A, %B
+  %F = add i32 %E, %C
+  %G = add i32 %F, %D
+  ret i32 %G
+}
+
+define i32 @add_add_add_commute1(i32 %A, i32 %B, i32 %C, i32 %D) {
+; CHECK-LABEL: @add_add_add_commute1(
+; CHECK-NEXT:    [[E:%.*]] = add i32 [[B:%.*]], [[A:%.*]]
+; CHECK-NEXT:    [[F:%.*]] = add i32 [[E]], [[C:%.*]]
+; CHECK-NEXT:    [[G:%.*]] = add i32 [[F]], [[D:%.*]]
+; CHECK-NEXT:    ret i32 [[G]]
+;
+  %E = add i32 %B, %A
+  %F = add i32 %E, %C
+  %G = add i32 %F, %D
+  ret i32 %G
+}
+
+define i32 @add_add_add_commute2(i32 %A, i32 %B, i32 %C, i32 %D) {
+; CHECK-LABEL: @add_add_add_commute2(
+; CHECK-NEXT:    [[E:%.*]] = add i32 [[B:%.*]], [[A:%.*]]
+; CHECK-NEXT:    [[F:%.*]] = add i32 [[E]], [[C:%.*]]
+; CHECK-NEXT:    [[G:%.*]] = add i32 [[F]], [[D:%.*]]
+; CHECK-NEXT:    ret i32 [[G]]
+;
+  %E = add i32 %B, %A
+  %F = add i32 %C, %E
+  %G = add i32 %F, %D
+  ret i32 %G
+}
+
+define i32 @add_add_add_commute3(i32 %A, i32 %B, i32 %C, i32 %D) {
+; CHECK-LABEL: @add_add_add_commute3(
+; CHECK-NEXT:    [[E:%.*]] = add i32 [[B:%.*]], [[A:%.*]]
+; CHECK-NEXT:    [[F:%.*]] = add i32 [[E]], [[C:%.*]]
+; CHECK-NEXT:    [[G:%.*]] = add i32 [[F]], [[D:%.*]]
+; CHECK-NEXT:    ret i32 [[G]]
+;
+  %E = add i32 %B, %A
+  %F = add i32 %C, %E
+  %G = add i32 %D, %F
+  ret i32 %G
+}


        


More information about the llvm-commits mailing list