@@ -135,31 +135,31 @@ define i32 @select_sdiv_lhs_opaque_const0_i32(i1 %cond) {
135
135
; GCN-NEXT: s_waitcnt lgkmcnt(0)
136
136
; GCN-NEXT: v_mov_b32_e32 v1, s4
137
137
; GCN-NEXT: v_cndmask_b32_e32 v0, 5, v1, vcc
138
- ; GCN-NEXT: v_ashrrev_i32_e32 v1, 31, v0
139
- ; GCN-NEXT: v_add_u32_e32 v0, vcc, v0, v1
140
- ; GCN-NEXT: v_xor_b32_e32 v0, v0, v1
141
- ; GCN-NEXT: v_cvt_f32_u32_e32 v2, v0
142
- ; GCN-NEXT: v_sub_u32_e32 v3, vcc, 0, v0
138
+ ; GCN-NEXT: v_sub_u32_e32 v1, vcc, 0, v0
139
+ ; GCN-NEXT: v_max_i32_e32 v1, v0, v1
140
+ ; GCN-NEXT: v_cvt_f32_u32_e32 v2, v1
141
+ ; GCN-NEXT: v_sub_u32_e32 v3, vcc, 0, v1
143
142
; GCN-NEXT: s_mov_b32 s4, 0xf4240
144
143
; GCN-NEXT: v_rcp_iflag_f32_e32 v2, v2
144
+ ; GCN-NEXT: v_ashrrev_i32_e32 v0, 31, v0
145
145
; GCN-NEXT: v_mul_f32_e32 v2, 0x4f7ffffe, v2
146
146
; GCN-NEXT: v_cvt_u32_f32_e32 v2, v2
147
147
; GCN-NEXT: v_mul_lo_u32 v3, v3, v2
148
148
; GCN-NEXT: v_mul_hi_u32 v3, v2, v3
149
149
; GCN-NEXT: v_add_u32_e32 v2, vcc, v2, v3
150
150
; GCN-NEXT: v_mul_hi_u32 v2, v2, s4
151
- ; GCN-NEXT: v_mul_lo_u32 v3, v2, v0
151
+ ; GCN-NEXT: v_mul_lo_u32 v3, v2, v1
152
152
; GCN-NEXT: v_add_u32_e32 v4, vcc, 1, v2
153
153
; GCN-NEXT: v_sub_u32_e32 v3, vcc, 0xf4240, v3
154
- ; GCN-NEXT: v_cmp_ge_u32_e32 vcc, v3, v0
154
+ ; GCN-NEXT: v_cmp_ge_u32_e32 vcc, v3, v1
155
155
; GCN-NEXT: v_cndmask_b32_e32 v2, v2, v4, vcc
156
- ; GCN-NEXT: v_sub_u32_e64 v4, s[4:5], v3, v0
156
+ ; GCN-NEXT: v_sub_u32_e64 v4, s[4:5], v3, v1
157
157
; GCN-NEXT: v_cndmask_b32_e32 v3, v3, v4, vcc
158
158
; GCN-NEXT: v_add_u32_e32 v4, vcc, 1, v2
159
- ; GCN-NEXT: v_cmp_ge_u32_e32 vcc, v3, v0
160
- ; GCN-NEXT: v_cndmask_b32_e32 v0 , v2, v4, vcc
161
- ; GCN-NEXT: v_xor_b32_e32 v0, v0, v1
162
- ; GCN-NEXT: v_sub_u32_e32 v0, vcc, v0, v1
159
+ ; GCN-NEXT: v_cmp_ge_u32_e32 vcc, v3, v1
160
+ ; GCN-NEXT: v_cndmask_b32_e32 v1 , v2, v4, vcc
161
+ ; GCN-NEXT: v_xor_b32_e32 v1, v1, v0
162
+ ; GCN-NEXT: v_sub_u32_e32 v0, vcc, v1, v0
163
163
; GCN-NEXT: s_setpc_b64 s[30:31]
164
164
%select = select i1 %cond , i32 ptrtoint (ptr addrspace (1 ) @gv to i32 ), i32 5
165
165
%op = sdiv i32 1000000 , %select
@@ -217,31 +217,31 @@ define i32 @select_sdiv_lhs_opaque_const1_i32(i1 %cond) {
217
217
; GCN-NEXT: s_waitcnt lgkmcnt(0)
218
218
; GCN-NEXT: v_mov_b32_e32 v1, s4
219
219
; GCN-NEXT: v_cndmask_b32_e64 v0, v1, 5, vcc
220
- ; GCN-NEXT: v_ashrrev_i32_e32 v1, 31, v0
221
- ; GCN-NEXT: v_add_u32_e32 v0, vcc, v0, v1
222
- ; GCN-NEXT: v_xor_b32_e32 v0, v0, v1
223
- ; GCN-NEXT: v_cvt_f32_u32_e32 v2, v0
224
- ; GCN-NEXT: v_sub_u32_e32 v3, vcc, 0, v0
220
+ ; GCN-NEXT: v_sub_u32_e32 v1, vcc, 0, v0
221
+ ; GCN-NEXT: v_max_i32_e32 v1, v0, v1
222
+ ; GCN-NEXT: v_cvt_f32_u32_e32 v2, v1
223
+ ; GCN-NEXT: v_sub_u32_e32 v3, vcc, 0, v1
225
224
; GCN-NEXT: s_mov_b32 s4, 0xf4240
226
225
; GCN-NEXT: v_rcp_iflag_f32_e32 v2, v2
226
+ ; GCN-NEXT: v_ashrrev_i32_e32 v0, 31, v0
227
227
; GCN-NEXT: v_mul_f32_e32 v2, 0x4f7ffffe, v2
228
228
; GCN-NEXT: v_cvt_u32_f32_e32 v2, v2
229
229
; GCN-NEXT: v_mul_lo_u32 v3, v3, v2
230
230
; GCN-NEXT: v_mul_hi_u32 v3, v2, v3
231
231
; GCN-NEXT: v_add_u32_e32 v2, vcc, v2, v3
232
232
; GCN-NEXT: v_mul_hi_u32 v2, v2, s4
233
- ; GCN-NEXT: v_mul_lo_u32 v3, v2, v0
233
+ ; GCN-NEXT: v_mul_lo_u32 v3, v2, v1
234
234
; GCN-NEXT: v_add_u32_e32 v4, vcc, 1, v2
235
235
; GCN-NEXT: v_sub_u32_e32 v3, vcc, 0xf4240, v3
236
- ; GCN-NEXT: v_cmp_ge_u32_e32 vcc, v3, v0
236
+ ; GCN-NEXT: v_cmp_ge_u32_e32 vcc, v3, v1
237
237
; GCN-NEXT: v_cndmask_b32_e32 v2, v2, v4, vcc
238
- ; GCN-NEXT: v_sub_u32_e64 v4, s[4:5], v3, v0
238
+ ; GCN-NEXT: v_sub_u32_e64 v4, s[4:5], v3, v1
239
239
; GCN-NEXT: v_cndmask_b32_e32 v3, v3, v4, vcc
240
240
; GCN-NEXT: v_add_u32_e32 v4, vcc, 1, v2
241
- ; GCN-NEXT: v_cmp_ge_u32_e32 vcc, v3, v0
242
- ; GCN-NEXT: v_cndmask_b32_e32 v0 , v2, v4, vcc
243
- ; GCN-NEXT: v_xor_b32_e32 v0, v0, v1
244
- ; GCN-NEXT: v_sub_u32_e32 v0, vcc, v0, v1
241
+ ; GCN-NEXT: v_cmp_ge_u32_e32 vcc, v3, v1
242
+ ; GCN-NEXT: v_cndmask_b32_e32 v1 , v2, v4, vcc
243
+ ; GCN-NEXT: v_xor_b32_e32 v1, v1, v0
244
+ ; GCN-NEXT: v_sub_u32_e32 v0, vcc, v1, v0
245
245
; GCN-NEXT: s_setpc_b64 s[30:31]
246
246
%select = select i1 %cond , i32 5 , i32 ptrtoint (ptr addrspace (1 ) @gv to i32 )
247
247
%op = sdiv i32 1000000 , %select
0 commit comments