@@ -72,39 +72,41 @@ define i64 @shl_metadata_cant_be_narrowed_to_i32(i64 %arg0, ptr %arg1.ptr) {
72
72
ret i64 %shl
73
73
}
74
74
75
- ; FIXME: This case should be reduced
76
75
define <2 x i64 > @shl_v2_metadata (<2 x i64 > %arg0 , ptr %arg1.ptr ) {
77
76
; CHECK-LABEL: shl_v2_metadata:
78
77
; CHECK: ; %bb.0:
79
78
; 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]
81
80
; 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
84
85
; CHECK-NEXT: s_setpc_b64 s[30:31]
85
86
%shift.amt = load <2 x i64 >, ptr %arg1.ptr , !range !0 , !noundef !{}
86
87
%shl = shl <2 x i64 > %arg0 , %shift.amt
87
88
ret <2 x i64 > %shl
88
89
}
89
90
90
- ; FIXME: This case should be reduced
91
91
define <3 x i64 > @shl_v3_metadata (<3 x i64 > %arg0 , ptr %arg1.ptr ) {
92
92
; CHECK-LABEL: shl_v3_metadata:
93
93
; CHECK: ; %bb.0:
94
94
; 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
96
96
; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[6:7]
97
97
; 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
101
104
; CHECK-NEXT: s_setpc_b64 s[30:31]
102
105
%shift.amt = load <3 x i64 >, ptr %arg1.ptr , !range !0 , !noundef !{}
103
106
%shl = shl <3 x i64 > %arg0 , %shift.amt
104
107
ret <3 x i64 > %shl
105
108
}
106
109
107
- ; FIXME: This case should be reduced
108
110
define <4 x i64 > @shl_v4_metadata (<4 x i64 > %arg0 , ptr %arg1.ptr ) {
109
111
; CHECK-LABEL: shl_v4_metadata:
110
112
; CHECK: ; %bb.0:
@@ -113,11 +115,15 @@ define <4 x i64> @shl_v4_metadata(<4 x i64> %arg0, ptr %arg1.ptr) {
113
115
; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
114
116
; CHECK-NEXT: flat_load_dwordx4 v[13:16], v[8:9] offset:16
115
117
; 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
118
120
; 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
121
127
; CHECK-NEXT: s_setpc_b64 s[30:31]
122
128
%shift.amt = load <4 x i64 >, ptr %arg1.ptr , !range !0 , !noundef !{}
123
129
%shl = shl <4 x i64 > %arg0 , %shift.amt
0 commit comments