@@ -78,8 +78,10 @@ define <2 x i64> @shl_v2_metadata(<2 x i64> %arg0, ptr %arg1.ptr) {
78
78
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
79
79
; CHECK-NEXT: flat_load_dwordx4 v[3:6], v[4:5]
80
80
; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
81
- ; CHECK-NEXT: v_lshlrev_b32_e32 v1, v3, v0
82
- ; CHECK-NEXT: v_lshlrev_b32_e32 v3, v5, v2
81
+ ; CHECK-NEXT: v_and_b32_e32 v4, 31, v5
82
+ ; CHECK-NEXT: v_and_b32_e32 v1, 31, v3
83
+ ; CHECK-NEXT: v_lshlrev_b32_e32 v1, v1, v0
84
+ ; CHECK-NEXT: v_lshlrev_b32_e32 v3, v4, v2
83
85
; CHECK-NEXT: v_mov_b32_e32 v0, 0
84
86
; CHECK-NEXT: v_mov_b32_e32 v2, 0
85
87
; CHECK-NEXT: s_setpc_b64 s[30:31]
@@ -304,8 +306,10 @@ define <2 x i64> @shl_v2_or32(<2 x i64> %arg0, <2 x i64> %shift_amt) {
304
306
; CHECK-LABEL: shl_v2_or32:
305
307
; CHECK: ; %bb.0:
306
308
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
307
- ; CHECK-NEXT: v_lshlrev_b32_e32 v1, v4, v0
308
- ; CHECK-NEXT: v_lshlrev_b32_e32 v3, v6, v2
309
+ ; CHECK-NEXT: v_and_b32_e32 v3, 31, v6
310
+ ; CHECK-NEXT: v_and_b32_e32 v1, 31, v4
311
+ ; CHECK-NEXT: v_lshlrev_b32_e32 v1, v1, v0
312
+ ; CHECK-NEXT: v_lshlrev_b32_e32 v3, v3, v2
309
313
; CHECK-NEXT: v_mov_b32_e32 v0, 0
310
314
; CHECK-NEXT: v_mov_b32_e32 v2, 0
311
315
; CHECK-NEXT: s_setpc_b64 s[30:31]
@@ -367,8 +371,12 @@ define <2 x i64> @shl_v2_or32_sgpr(<2 x i64> inreg %arg0, <2 x i64> inreg %shift
367
371
; CHECK-LABEL: shl_v2_or32_sgpr:
368
372
; CHECK: ; %bb.0:
369
373
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
370
- ; CHECK-NEXT: s_lshl_b32 s4, s16, s20
371
- ; CHECK-NEXT: s_lshl_b32 s5, s18, s22
374
+ ; CHECK-NEXT: s_mov_b32 s4, 31
375
+ ; CHECK-NEXT: s_mov_b32 s21, s22
376
+ ; CHECK-NEXT: s_mov_b32 s5, s4
377
+ ; CHECK-NEXT: s_and_b64 s[4:5], s[20:21], s[4:5]
378
+ ; CHECK-NEXT: s_lshl_b32 s4, s16, s4
379
+ ; CHECK-NEXT: s_lshl_b32 s5, s18, s5
372
380
; CHECK-NEXT: v_mov_b32_e32 v0, 0
373
381
; CHECK-NEXT: v_mov_b32_e32 v1, s4
374
382
; CHECK-NEXT: v_mov_b32_e32 v2, 0
0 commit comments