@@ -735,6 +735,72 @@ func.func @doubleAddSub2(%arg0: index, %arg1 : index) -> index {
735
735
return %add : index
736
736
}
737
737
738
+ // CHECK-LABEL: @addiMuliToSubiRhsI32
739
+ // CHECK-SAME: (%[[ARG0:.+]]: i32, %[[ARG1:.+]]: i32)
740
+ // CHECK: %[[SUB:.+]] = arith.subi %[[ARG0]], %[[ARG1]] : i32
741
+ // CHECK: return %[[SUB]]
742
+ func.func @addiMuliToSubiRhsI32 (%arg0: i32 , %arg1: i32 ) -> i32 {
743
+ %c -1 = arith.constant -1 : i32
744
+ %neg = arith.muli %arg1 , %c -1 : i32
745
+ %add = arith.addi %arg0 , %neg : i32
746
+ return %add : i32
747
+ }
748
+
749
+ // CHECK-LABEL: @addiMuliToSubiRhsIndex
750
+ // CHECK-SAME: (%[[ARG0:.+]]: index, %[[ARG1:.+]]: index)
751
+ // CHECK: %[[SUB:.+]] = arith.subi %[[ARG0]], %[[ARG1]] : index
752
+ // CHECK: return %[[SUB]]
753
+ func.func @addiMuliToSubiRhsIndex (%arg0: index , %arg1: index ) -> index {
754
+ %c -1 = arith.constant -1 : index
755
+ %neg = arith.muli %arg1 , %c -1 : index
756
+ %add = arith.addi %arg0 , %neg : index
757
+ return %add : index
758
+ }
759
+
760
+ // CHECK-LABEL: @addiMuliToSubiRhsVector
761
+ // CHECK-SAME: (%[[ARG0:.+]]: vector<3xi64>, %[[ARG1:.+]]: vector<3xi64>)
762
+ // CHECK: %[[SUB:.+]] = arith.subi %[[ARG0]], %[[ARG1]] : vector<3xi64>
763
+ // CHECK: return %[[SUB]]
764
+ func.func @addiMuliToSubiRhsVector (%arg0: vector <3 xi64 >, %arg1: vector <3 xi64 >) -> vector <3 xi64 > {
765
+ %c -1 = arith.constant dense <-1 > : vector <3 xi64 >
766
+ %neg = arith.muli %arg1 , %c -1 : vector <3 xi64 >
767
+ %add = arith.addi %arg0 , %neg : vector <3 xi64 >
768
+ return %add : vector <3 xi64 >
769
+ }
770
+
771
+ // CHECK-LABEL: @addiMuliToSubiLhsI32
772
+ // CHECK-SAME: (%[[ARG0:.+]]: i32, %[[ARG1:.+]]: i32)
773
+ // CHECK: %[[SUB:.+]] = arith.subi %[[ARG0]], %[[ARG1]] : i32
774
+ // CHECK: return %[[SUB]]
775
+ func.func @addiMuliToSubiLhsI32 (%arg0: i32 , %arg1: i32 ) -> i32 {
776
+ %c -1 = arith.constant -1 : i32
777
+ %neg = arith.muli %arg1 , %c -1 : i32
778
+ %add = arith.addi %neg , %arg0 : i32
779
+ return %add : i32
780
+ }
781
+
782
+ // CHECK-LABEL: @addiMuliToSubiLhsIndex
783
+ // CHECK-SAME: (%[[ARG0:.+]]: index, %[[ARG1:.+]]: index)
784
+ // CHECK: %[[SUB:.+]] = arith.subi %[[ARG0]], %[[ARG1]] : index
785
+ // CHECK: return %[[SUB]]
786
+ func.func @addiMuliToSubiLhsIndex (%arg0: index , %arg1: index ) -> index {
787
+ %c -1 = arith.constant -1 : index
788
+ %neg = arith.muli %arg1 , %c -1 : index
789
+ %add = arith.addi %neg , %arg0 : index
790
+ return %add : index
791
+ }
792
+
793
+ // CHECK-LABEL: @addiMuliToSubiLhsVector
794
+ // CHECK-SAME: (%[[ARG0:.+]]: vector<3xi64>, %[[ARG1:.+]]: vector<3xi64>)
795
+ // CHECK: %[[SUB:.+]] = arith.subi %[[ARG0]], %[[ARG1]] : vector<3xi64>
796
+ // CHECK: return %[[SUB]]
797
+ func.func @addiMuliToSubiLhsVector (%arg0: vector <3 xi64 >, %arg1: vector <3 xi64 >) -> vector <3 xi64 > {
798
+ %c -1 = arith.constant dense <-1 > : vector <3 xi64 >
799
+ %neg = arith.muli %arg1 , %c -1 : vector <3 xi64 >
800
+ %add = arith.addi %neg , %arg0 : vector <3 xi64 >
801
+ return %add : vector <3 xi64 >
802
+ }
803
+
738
804
// CHECK-LABEL: @adduiExtendedZeroRhs
739
805
// CHECK-NEXT: %[[false:.+]] = arith.constant false
740
806
// CHECK-NEXT: return %arg0, %[[false]]
0 commit comments