@@ -1052,16 +1052,15 @@ define noundef i64 @srem64_i32max(i64 noundef %i) {
1052
1052
; GFX9-NEXT: s_mov_b32 s6, 0x80000001
1053
1053
; GFX9-NEXT: v_ashrrev_i32_e32 v6, 31, v1
1054
1054
; GFX9-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v1, 3, v[2:3]
1055
- ; GFX9-NEXT: v_mul_i32_i24_e32 v8, 3 , v6
1056
- ; GFX9-NEXT: v_lshl_add_u32 v9, v6, 31, v6
1057
- ; GFX9-NEXT: v_mov_b32_e32 v10 , v5
1055
+ ; GFX9-NEXT: v_lshl_add_u32 v8, v6, 31 , v6
1056
+ ; GFX9-NEXT: v_mad_u64_u32 v[6:7], s[4:5], v6, 3, 0
1057
+ ; GFX9-NEXT: v_mov_b32_e32 v9 , v5
1058
1058
; GFX9-NEXT: v_mov_b32_e32 v5, v3
1059
1059
; GFX9-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v0, s6, v[4:5]
1060
- ; GFX9-NEXT: v_mad_u64_u32 v[6:7], s[4:5], v6, 3, 0
1061
- ; GFX9-NEXT: v_mov_b32_e32 v2, v3
1062
- ; GFX9-NEXT: v_add_co_u32_e32 v2, vcc, v10, v2
1063
- ; GFX9-NEXT: v_add3_u32 v7, v7, v9, v8
1060
+ ; GFX9-NEXT: v_add3_u32 v7, v7, v8, v6
1064
1061
; GFX9-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v0, -1, v[6:7]
1062
+ ; GFX9-NEXT: v_mov_b32_e32 v2, v3
1063
+ ; GFX9-NEXT: v_add_co_u32_e32 v2, vcc, v9, v2
1065
1064
; GFX9-NEXT: v_addc_co_u32_e64 v3, s[4:5], 0, 0, vcc
1066
1065
; GFX9-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v1, s6, v[2:3]
1067
1066
; GFX9-NEXT: v_sub_u32_e32 v5, v5, v1
@@ -1085,10 +1084,9 @@ define noundef i64 @srem64_i32max(i64 noundef %i) {
1085
1084
; GFX942: ; %bb.0: ; %entry
1086
1085
; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1087
1086
; GFX942-NEXT: v_ashrrev_i32_e32 v2, 31, v1
1088
- ; GFX942-NEXT: v_mul_i32_i24_e32 v4, 3, v2
1089
- ; GFX942-NEXT: v_lshl_add_u32 v5, v2, 31, v2
1087
+ ; GFX942-NEXT: v_lshl_add_u32 v4, v2, 31, v2
1090
1088
; GFX942-NEXT: v_mad_u64_u32 v[2:3], s[0:1], v2, 3, 0
1091
- ; GFX942-NEXT: v_add3_u32 v3, v3, v5, v4
1089
+ ; GFX942-NEXT: v_add3_u32 v3, v3, v4, v2
1092
1090
; GFX942-NEXT: v_mul_hi_u32 v4, v0, 3
1093
1091
; GFX942-NEXT: v_mov_b32_e32 v5, 0
1094
1092
; GFX942-NEXT: v_mad_u64_u32 v[6:7], s[0:1], v1, 3, v[4:5]
@@ -1125,17 +1123,16 @@ define noundef i64 @srem64_i32max(i64 noundef %i) {
1125
1123
; GFX1030-NEXT: v_mul_hi_u32 v2, v0, 3
1126
1124
; GFX1030-NEXT: v_mov_b32_e32 v3, 0
1127
1125
; GFX1030-NEXT: v_ashrrev_i32_e32 v6, 31, v1
1128
- ; GFX1030-NEXT: v_mul_i32_i24_e32 v7, 3, v6
1129
1126
; GFX1030-NEXT: v_mad_u64_u32 v[4:5], null, v1, 3, v[2:3]
1130
- ; GFX1030-NEXT: v_mov_b32_e32 v8 , v5
1127
+ ; GFX1030-NEXT: v_mov_b32_e32 v7 , v5
1131
1128
; GFX1030-NEXT: v_mov_b32_e32 v5, v3
1132
1129
; GFX1030-NEXT: v_mad_u64_u32 v[2:3], null, v6, 3, 0
1133
1130
; GFX1030-NEXT: v_lshl_add_u32 v6, v6, 31, v6
1134
1131
; GFX1030-NEXT: v_mad_u64_u32 v[4:5], null, 0x80000001, v0, v[4:5]
1135
- ; GFX1030-NEXT: v_add3_u32 v3, v3, v6, v7
1132
+ ; GFX1030-NEXT: v_add3_u32 v3, v3, v6, v2
1136
1133
; GFX1030-NEXT: v_mov_b32_e32 v4, v5
1137
1134
; GFX1030-NEXT: v_mad_u64_u32 v[2:3], null, v0, -1, v[2:3]
1138
- ; GFX1030-NEXT: v_add_co_u32 v4, s4, v8 , v4
1135
+ ; GFX1030-NEXT: v_add_co_u32 v4, s4, v7 , v4
1139
1136
; GFX1030-NEXT: v_add_co_ci_u32_e64 v5, null, 0, 0, s4
1140
1137
; GFX1030-NEXT: v_sub_nc_u32_e32 v6, v3, v1
1141
1138
; GFX1030-NEXT: v_mad_u64_u32 v[3:4], null, 0x80000001, v1, v[4:5]
@@ -1167,16 +1164,15 @@ define noundef i64 @sdiv64_i32max(i64 noundef %i) {
1167
1164
; GFX9-NEXT: s_mov_b32 s6, 0x80000001
1168
1165
; GFX9-NEXT: v_ashrrev_i32_e32 v6, 31, v1
1169
1166
; GFX9-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v1, 3, v[2:3]
1170
- ; GFX9-NEXT: v_mul_i32_i24_e32 v8, 3 , v6
1171
- ; GFX9-NEXT: v_lshl_add_u32 v9, v6, 31, v6
1172
- ; GFX9-NEXT: v_mov_b32_e32 v10 , v5
1167
+ ; GFX9-NEXT: v_lshl_add_u32 v8, v6, 31 , v6
1168
+ ; GFX9-NEXT: v_mad_u64_u32 v[6:7], s[4:5], v6, 3, 0
1169
+ ; GFX9-NEXT: v_mov_b32_e32 v9 , v5
1173
1170
; GFX9-NEXT: v_mov_b32_e32 v5, v3
1174
1171
; GFX9-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v0, s6, v[4:5]
1175
- ; GFX9-NEXT: v_mad_u64_u32 v[6:7], s[4:5], v6, 3, 0
1176
- ; GFX9-NEXT: v_mov_b32_e32 v2, v3
1177
- ; GFX9-NEXT: v_add_co_u32_e32 v2, vcc, v10, v2
1178
- ; GFX9-NEXT: v_add3_u32 v7, v7, v9, v8
1172
+ ; GFX9-NEXT: v_add3_u32 v7, v7, v8, v6
1179
1173
; GFX9-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v0, -1, v[6:7]
1174
+ ; GFX9-NEXT: v_mov_b32_e32 v2, v3
1175
+ ; GFX9-NEXT: v_add_co_u32_e32 v2, vcc, v9, v2
1180
1176
; GFX9-NEXT: v_addc_co_u32_e64 v3, s[4:5], 0, 0, vcc
1181
1177
; GFX9-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v1, s6, v[2:3]
1182
1178
; GFX9-NEXT: v_sub_u32_e32 v5, v5, v1
@@ -1195,10 +1191,9 @@ define noundef i64 @sdiv64_i32max(i64 noundef %i) {
1195
1191
; GFX942: ; %bb.0: ; %entry
1196
1192
; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1197
1193
; GFX942-NEXT: v_ashrrev_i32_e32 v2, 31, v1
1198
- ; GFX942-NEXT: v_mul_i32_i24_e32 v4, 3, v2
1199
- ; GFX942-NEXT: v_lshl_add_u32 v5, v2, 31, v2
1194
+ ; GFX942-NEXT: v_lshl_add_u32 v4, v2, 31, v2
1200
1195
; GFX942-NEXT: v_mad_u64_u32 v[2:3], s[0:1], v2, 3, 0
1201
- ; GFX942-NEXT: v_add3_u32 v3, v3, v5, v4
1196
+ ; GFX942-NEXT: v_add3_u32 v3, v3, v4, v2
1202
1197
; GFX942-NEXT: v_mul_hi_u32 v4, v0, 3
1203
1198
; GFX942-NEXT: v_mov_b32_e32 v5, 0
1204
1199
; GFX942-NEXT: v_mad_u64_u32 v[6:7], s[0:1], v1, 3, v[4:5]
@@ -1227,17 +1222,16 @@ define noundef i64 @sdiv64_i32max(i64 noundef %i) {
1227
1222
; GFX1030-NEXT: v_mul_hi_u32 v2, v0, 3
1228
1223
; GFX1030-NEXT: v_mov_b32_e32 v3, 0
1229
1224
; GFX1030-NEXT: v_ashrrev_i32_e32 v6, 31, v1
1230
- ; GFX1030-NEXT: v_mul_i32_i24_e32 v7, 3, v6
1231
1225
; GFX1030-NEXT: v_mad_u64_u32 v[4:5], null, v1, 3, v[2:3]
1232
- ; GFX1030-NEXT: v_mov_b32_e32 v8 , v5
1226
+ ; GFX1030-NEXT: v_mov_b32_e32 v7 , v5
1233
1227
; GFX1030-NEXT: v_mov_b32_e32 v5, v3
1234
1228
; GFX1030-NEXT: v_mad_u64_u32 v[2:3], null, v6, 3, 0
1235
1229
; GFX1030-NEXT: v_lshl_add_u32 v6, v6, 31, v6
1236
1230
; GFX1030-NEXT: v_mad_u64_u32 v[4:5], null, 0x80000001, v0, v[4:5]
1237
- ; GFX1030-NEXT: v_add3_u32 v3, v3, v6, v7
1231
+ ; GFX1030-NEXT: v_add3_u32 v3, v3, v6, v2
1238
1232
; GFX1030-NEXT: v_mov_b32_e32 v4, v5
1239
1233
; GFX1030-NEXT: v_mad_u64_u32 v[2:3], null, v0, -1, v[2:3]
1240
- ; GFX1030-NEXT: v_add_co_u32 v4, s4, v8 , v4
1234
+ ; GFX1030-NEXT: v_add_co_u32 v4, s4, v7 , v4
1241
1235
; GFX1030-NEXT: v_add_co_ci_u32_e64 v5, null, 0, 0, s4
1242
1236
; GFX1030-NEXT: v_sub_nc_u32_e32 v6, v3, v1
1243
1237
; GFX1030-NEXT: v_mad_u64_u32 v[3:4], null, 0x80000001, v1, v[4:5]
0 commit comments