@@ -967,17 +967,17 @@ func.func @umod_fold(%arg0: i32) -> (i32, i32) {
967
967
return %0 , %1: i32 , i32
968
968
}
969
969
970
- // CHECK-LABEL: @umod_fail_vector_fold
970
+ // CHECK-LABEL: @umod_vector_fold
971
971
// CHECK-SAME: (%[[ARG:.*]]: vector<4xi32>)
972
- func.func @umod_fail_vector_fold (%arg0: vector <4 xi32 >) -> (vector <4 xi32 >, vector <4 xi32 >) {
972
+ func.func @umod_vector_fold (%arg0: vector <4 xi32 >) -> (vector <4 xi32 >, vector <4 xi32 >) {
973
973
// CHECK: %[[CONST4:.*]] = spirv.Constant dense<4> : vector<4xi32>
974
974
// CHECK: %[[CONST32:.*]] = spirv.Constant dense<32> : vector<4xi32>
975
975
%const1 = spirv.Constant dense <32 > : vector <4 xi32 >
976
976
%0 = spirv.UMod %arg0 , %const1 : vector <4 xi32 >
977
- // CHECK: %[[UMOD0:.*]] = spirv.UMod %[[ARG]], %[[CONST32]]
978
977
%const2 = spirv.Constant dense <4 > : vector <4 xi32 >
979
978
%1 = spirv.UMod %0 , %const2 : vector <4 xi32 >
980
- // CHECK: %[[UMOD1:.*]] = spirv.UMod %[[UMOD0]], %[[CONST4]]
979
+ // CHECK: %[[UMOD0:.*]] = spirv.UMod %[[ARG]], %[[CONST32]]
980
+ // CHECK: %[[UMOD1:.*]] = spirv.UMod %[[ARG]], %[[CONST4]]
981
981
// CHECK: return %[[UMOD0]], %[[UMOD1]]
982
982
return %0 , %1: vector <4 xi32 >, vector <4 xi32 >
983
983
}
@@ -996,9 +996,9 @@ func.func @umod_fold_same_divisor(%arg0: i32) -> (i32, i32) {
996
996
return %0 , %1: i32 , i32
997
997
}
998
998
999
- // CHECK-LABEL: @umod_fail_fold
999
+ // CHECK-LABEL: @umod_fail_1_fold
1000
1000
// CHECK-SAME: (%[[ARG:.*]]: i32)
1001
- func.func @umod_fail_fold (%arg0: i32 ) -> (i32 , i32 ) {
1001
+ func.func @umod_fail_1_fold (%arg0: i32 ) -> (i32 , i32 ) {
1002
1002
// CHECK: %[[CONST5:.*]] = spirv.Constant 5
1003
1003
// CHECK: %[[CONST32:.*]] = spirv.Constant 32
1004
1004
%const1 = spirv.Constant 32 : i32
@@ -1011,6 +1011,51 @@ func.func @umod_fail_fold(%arg0: i32) -> (i32, i32) {
1011
1011
return %0 , %1: i32 , i32
1012
1012
}
1013
1013
1014
+ // CHECK-LABEL: @umod_fail_2_fold
1015
+ // CHECK-SAME: (%[[ARG:.*]]: i32)
1016
+ func.func @umod_fail_2_fold (%arg0: i32 ) -> (i32 , i32 ) {
1017
+ // CHECK: %[[CONST32:.*]] = spirv.Constant 32
1018
+ // CHECK: %[[CONST4:.*]] = spirv.Constant 4
1019
+ %const1 = spirv.Constant 4 : i32
1020
+ %0 = spirv.UMod %arg0 , %const1 : i32
1021
+ // CHECK: %[[UMOD0:.*]] = spirv.UMod %[[ARG]], %[[CONST4]]
1022
+ %const2 = spirv.Constant 32 : i32
1023
+ %1 = spirv.UMod %0 , %const2 : i32
1024
+ // CHECK: %[[UMOD1:.*]] = spirv.UMod %[[UMOD0]], %[[CONST32]]
1025
+ // CHECK: return %[[UMOD0]], %[[UMOD1]]
1026
+ return %0 , %1: i32 , i32
1027
+ }
1028
+
1029
+ // CHECK-LABEL: @umod_vector_fail_1_fold
1030
+ // CHECK-SAME: (%[[ARG:.*]]: vector<4xi32>)
1031
+ func.func @umod_vector_fail_1_fold (%arg0: vector <4 xi32 >) -> (vector <4 xi32 >, vector <4 xi32 >) {
1032
+ // CHECK: %[[CONST9:.*]] = spirv.Constant dense<9> : vector<4xi32>
1033
+ // CHECK: %[[CONST64:.*]] = spirv.Constant dense<64> : vector<4xi32>
1034
+ %const1 = spirv.Constant dense <64 > : vector <4 xi32 >
1035
+ %0 = spirv.UMod %arg0 , %const1 : vector <4 xi32 >
1036
+ // CHECK: %[[UMOD0:.*]] = spirv.UMod %[[ARG]], %[[CONST64]]
1037
+ %const2 = spirv.Constant dense <9 > : vector <4 xi32 >
1038
+ %1 = spirv.UMod %0 , %const2 : vector <4 xi32 >
1039
+ // CHECK: %[[UMOD1:.*]] = spirv.UMod %[[UMOD0]], %[[CONST9]]
1040
+ // CHECK: return %[[UMOD0]], %[[UMOD1]]
1041
+ return %0 , %1: vector <4 xi32 >, vector <4 xi32 >
1042
+ }
1043
+
1044
+ // CHECK-LABEL: @umod_vector_fail_2_fold
1045
+ // CHECK-SAME: (%[[ARG:.*]]: vector<4xi32>)
1046
+ func.func @umod_vector_fail_2_fold (%arg0: vector <4 xi32 >) -> (vector <4 xi32 >, vector <4 xi32 >) {
1047
+ // CHECK: %[[CONST32:.*]] = spirv.Constant dense<32> : vector<4xi32>
1048
+ // CHECK: %[[CONST4:.*]] = spirv.Constant dense<4> : vector<4xi32>
1049
+ %const1 = spirv.Constant dense <4 > : vector <4 xi32 >
1050
+ %0 = spirv.UMod %arg0 , %const1 : vector <4 xi32 >
1051
+ // CHECK: %[[UMOD0:.*]] = spirv.UMod %[[ARG]], %[[CONST4]]
1052
+ %const2 = spirv.Constant dense <32 > : vector <4 xi32 >
1053
+ %1 = spirv.UMod %0 , %const2 : vector <4 xi32 >
1054
+ // CHECK: %[[UMOD1:.*]] = spirv.UMod %[[UMOD0]], %[[CONST32]]
1055
+ // CHECK: return %[[UMOD0]], %[[UMOD1]]
1056
+ return %0 , %1: vector <4 xi32 >, vector <4 xi32 >
1057
+ }
1058
+
1014
1059
// -----
1015
1060
1016
1061
//===----------------------------------------------------------------------===//
0 commit comments