@@ -72,39 +72,41 @@ define i64 @shl_metadata_cant_be_narrowed_to_i32(i64 %arg0, ptr %arg1.ptr) {
7272 ret i64 %shl
7373}
7474
75- ; FIXME: This case should be reduced
7675define <2 x i64 > @shl_v2_metadata (<2 x i64 > %arg0 , ptr %arg1.ptr ) {
7776; CHECK-LABEL: shl_v2_metadata:
7877; CHECK: ; %bb.0:
7978; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
80- ; CHECK-NEXT: flat_load_dwordx4 v[4:7 ], v[4:5]
79+ ; CHECK-NEXT: flat_load_dwordx4 v[3:6 ], v[4:5]
8180; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
82- ; CHECK-NEXT: v_lshlrev_b64 v[0:1], v4, v[0:1]
83- ; CHECK-NEXT: v_lshlrev_b64 v[2:3], v6, v[2:3]
81+ ; CHECK-NEXT: v_lshlrev_b32_e32 v1, v3, v0
82+ ; CHECK-NEXT: v_lshlrev_b32_e32 v3, v5, v2
83+ ; CHECK-NEXT: v_mov_b32_e32 v0, 0
84+ ; CHECK-NEXT: v_mov_b32_e32 v2, 0
8485; CHECK-NEXT: s_setpc_b64 s[30:31]
8586 %shift.amt = load <2 x i64 >, ptr %arg1.ptr , !range !0 , !noundef !{}
8687 %shl = shl <2 x i64 > %arg0 , %shift.amt
8788 ret <2 x i64 > %shl
8889}
8990
90- ; FIXME: This case should be reduced
9191define <3 x i64 > @shl_v3_metadata (<3 x i64 > %arg0 , ptr %arg1.ptr ) {
9292; CHECK-LABEL: shl_v3_metadata:
9393; CHECK: ; %bb.0:
9494; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
95- ; CHECK-NEXT: flat_load_dword v12 , v[6:7] offset:16
95+ ; CHECK-NEXT: flat_load_dword v1 , v[6:7] offset:16
9696; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[6:7]
9797; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
98- ; CHECK-NEXT: v_lshlrev_b64 v[4:5], v12, v[4:5]
99- ; CHECK-NEXT: v_lshlrev_b64 v[0:1], v8, v[0:1]
100- ; CHECK-NEXT: v_lshlrev_b64 v[2:3], v10, v[2:3]
98+ ; CHECK-NEXT: v_lshlrev_b32_e32 v5, v1, v4
99+ ; CHECK-NEXT: v_lshlrev_b32_e32 v1, v8, v0
100+ ; CHECK-NEXT: v_lshlrev_b32_e32 v3, v10, v2
101+ ; CHECK-NEXT: v_mov_b32_e32 v0, 0
102+ ; CHECK-NEXT: v_mov_b32_e32 v2, 0
103+ ; CHECK-NEXT: v_mov_b32_e32 v4, 0
101104; CHECK-NEXT: s_setpc_b64 s[30:31]
102105 %shift.amt = load <3 x i64 >, ptr %arg1.ptr , !range !0 , !noundef !{}
103106 %shl = shl <3 x i64 > %arg0 , %shift.amt
104107 ret <3 x i64 > %shl
105108}
106109
107- ; FIXME: This case should be reduced
108110define <4 x i64 > @shl_v4_metadata (<4 x i64 > %arg0 , ptr %arg1.ptr ) {
109111; CHECK-LABEL: shl_v4_metadata:
110112; CHECK: ; %bb.0:
@@ -113,11 +115,15 @@ define <4 x i64> @shl_v4_metadata(<4 x i64> %arg0, ptr %arg1.ptr) {
113115; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
114116; CHECK-NEXT: flat_load_dwordx4 v[13:16], v[8:9] offset:16
115117; CHECK-NEXT: ; kill: killed $vgpr8 killed $vgpr9
116- ; CHECK-NEXT: v_lshlrev_b64 v[0:1] , v10, v[0:1]
117- ; CHECK-NEXT: v_lshlrev_b64 v[2:3] , v12, v[2:3]
118+ ; CHECK-NEXT: v_lshlrev_b32_e32 v1 , v10, v0
119+ ; CHECK-NEXT: v_lshlrev_b32_e32 v3 , v12, v2
118120; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
119- ; CHECK-NEXT: v_lshlrev_b64 v[4:5], v13, v[4:5]
120- ; CHECK-NEXT: v_lshlrev_b64 v[6:7], v15, v[6:7]
121+ ; CHECK-NEXT: v_lshlrev_b32_e32 v5, v13, v4
122+ ; CHECK-NEXT: v_lshlrev_b32_e32 v7, v15, v6
123+ ; CHECK-NEXT: v_mov_b32_e32 v0, 0
124+ ; CHECK-NEXT: v_mov_b32_e32 v2, 0
125+ ; CHECK-NEXT: v_mov_b32_e32 v4, 0
126+ ; CHECK-NEXT: v_mov_b32_e32 v6, 0
121127; CHECK-NEXT: s_setpc_b64 s[30:31]
122128 %shift.amt = load <4 x i64 >, ptr %arg1.ptr , !range !0 , !noundef !{}
123129 %shl = shl <4 x i64 > %arg0 , %shift.amt
0 commit comments