@@ -967,17 +967,17 @@ func.func @umod_fold(%arg0: i32) -> (i32, i32) {
967967 return %0 , %1: i32 , i32
968968}
969969
970- // CHECK-LABEL: @umod_fail_vector_fold
970+ // CHECK-LABEL: @umod_vector_fold
971971// 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 >) {
973973 // CHECK: %[[CONST4:.*]] = spirv.Constant dense<4> : vector<4xi32>
974974 // CHECK: %[[CONST32:.*]] = spirv.Constant dense<32> : vector<4xi32>
975975 %const1 = spirv.Constant dense <32 > : vector <4 xi32 >
976976 %0 = spirv.UMod %arg0 , %const1 : vector <4 xi32 >
977- // CHECK: %[[UMOD0:.*]] = spirv.UMod %[[ARG]], %[[CONST32]]
978977 %const2 = spirv.Constant dense <4 > : vector <4 xi32 >
979978 %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]]
981981 // CHECK: return %[[UMOD0]], %[[UMOD1]]
982982 return %0 , %1: vector <4 xi32 >, vector <4 xi32 >
983983}
@@ -996,9 +996,9 @@ func.func @umod_fold_same_divisor(%arg0: i32) -> (i32, i32) {
996996 return %0 , %1: i32 , i32
997997}
998998
999- // CHECK-LABEL: @umod_fail_fold
999+ // CHECK-LABEL: @umod_fail_1_fold
10001000// 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 ) {
10021002 // CHECK: %[[CONST5:.*]] = spirv.Constant 5
10031003 // CHECK: %[[CONST32:.*]] = spirv.Constant 32
10041004 %const1 = spirv.Constant 32 : i32
@@ -1011,6 +1011,51 @@ func.func @umod_fail_fold(%arg0: i32) -> (i32, i32) {
10111011 return %0 , %1: i32 , i32
10121012}
10131013
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+
10141059// -----
10151060
10161061//===----------------------------------------------------------------------===//
0 commit comments