@@ -140,7 +140,7 @@ define signext i32 @packh_i32(i32 signext %a, i32 signext %b) nounwind {
140140; RV64I-LABEL: packh_i32:
141141; RV64I: # %bb.0:
142142; RV64I-NEXT: lui a2, 16
143- ; RV64I-NEXT: andi a0, a0, 255
143+ ; RV64I-NEXT: zext.b a0, a0
144144; RV64I-NEXT: addiw a2, a2, -256
145145; RV64I-NEXT: slli a1, a1, 8
146146; RV64I-NEXT: and a1, a1, a2
@@ -150,7 +150,7 @@ define signext i32 @packh_i32(i32 signext %a, i32 signext %b) nounwind {
150150; RV64ZBKB-LABEL: packh_i32:
151151; RV64ZBKB: # %bb.0:
152152; RV64ZBKB-NEXT: lui a2, 16
153- ; RV64ZBKB-NEXT: andi a0, a0, 255
153+ ; RV64ZBKB-NEXT: zext.b a0, a0
154154; RV64ZBKB-NEXT: addiw a2, a2, -256
155155; RV64ZBKB-NEXT: slli a1, a1, 8
156156; RV64ZBKB-NEXT: and a1, a1, a2
@@ -166,8 +166,8 @@ define signext i32 @packh_i32(i32 signext %a, i32 signext %b) nounwind {
166166define i32 @packh_i32_2 (i32 %a , i32 %b ) nounwind {
167167; RV64I-LABEL: packh_i32_2:
168168; RV64I: # %bb.0:
169- ; RV64I-NEXT: andi a0, a0, 255
170- ; RV64I-NEXT: andi a1, a1, 255
169+ ; RV64I-NEXT: zext.b a0, a0
170+ ; RV64I-NEXT: zext.b a1, a1
171171; RV64I-NEXT: slli a1, a1, 8
172172; RV64I-NEXT: or a0, a1, a0
173173; RV64I-NEXT: ret
@@ -188,7 +188,7 @@ define i64 @packh_i64(i64 %a, i64 %b) nounwind {
188188; RV64I-LABEL: packh_i64:
189189; RV64I: # %bb.0:
190190; RV64I-NEXT: lui a2, 16
191- ; RV64I-NEXT: andi a0, a0, 255
191+ ; RV64I-NEXT: zext.b a0, a0
192192; RV64I-NEXT: addiw a2, a2, -256
193193; RV64I-NEXT: slli a1, a1, 8
194194; RV64I-NEXT: and a1, a1, a2
@@ -198,7 +198,7 @@ define i64 @packh_i64(i64 %a, i64 %b) nounwind {
198198; RV64ZBKB-LABEL: packh_i64:
199199; RV64ZBKB: # %bb.0:
200200; RV64ZBKB-NEXT: lui a2, 16
201- ; RV64ZBKB-NEXT: andi a0, a0, 255
201+ ; RV64ZBKB-NEXT: zext.b a0, a0
202202; RV64ZBKB-NEXT: addiw a2, a2, -256
203203; RV64ZBKB-NEXT: slli a1, a1, 8
204204; RV64ZBKB-NEXT: and a1, a1, a2
@@ -214,8 +214,8 @@ define i64 @packh_i64(i64 %a, i64 %b) nounwind {
214214define i64 @packh_i64_2 (i64 %a , i64 %b ) nounwind {
215215; RV64I-LABEL: packh_i64_2:
216216; RV64I: # %bb.0:
217- ; RV64I-NEXT: andi a0, a0, 255
218- ; RV64I-NEXT: andi a1, a1, 255
217+ ; RV64I-NEXT: zext.b a0, a0
218+ ; RV64I-NEXT: zext.b a1, a1
219219; RV64I-NEXT: slli a1, a1, 8
220220; RV64I-NEXT: or a0, a1, a0
221221; RV64I-NEXT: ret
@@ -253,7 +253,7 @@ define zeroext i16 @packh_i16_2(i8 zeroext %0, i8 zeroext %1, i8 zeroext %2) {
253253; RV64I-LABEL: packh_i16_2:
254254; RV64I: # %bb.0:
255255; RV64I-NEXT: add a0, a1, a0
256- ; RV64I-NEXT: andi a0, a0, 255
256+ ; RV64I-NEXT: zext.b a0, a0
257257; RV64I-NEXT: slli a0, a0, 8
258258; RV64I-NEXT: or a0, a0, a2
259259; RV64I-NEXT: ret
@@ -275,7 +275,7 @@ define void @packh_i16_3(i8 zeroext %0, i8 zeroext %1, i8 zeroext %2, ptr %p) {
275275; RV64I-LABEL: packh_i16_3:
276276; RV64I: # %bb.0:
277277; RV64I-NEXT: add a0, a1, a0
278- ; RV64I-NEXT: andi a0, a0, 255
278+ ; RV64I-NEXT: zext.b a0, a0
279279; RV64I-NEXT: slli a0, a0, 8
280280; RV64I-NEXT: or a0, a0, a2
281281; RV64I-NEXT: sh a0, 0(a3)
0 commit comments