@@ -25,11 +25,16 @@ define i32 @pack_i32(i32 %a, i32 %b) nounwind {
2525}
2626
2727define i32 @pack_i32_2 (i16 zeroext %a , i16 zeroext %b ) nounwind {
28- ; CHECK-LABEL: pack_i32_2:
29- ; CHECK: # %bb.0:
30- ; CHECK-NEXT: slli a1, a1, 16
31- ; CHECK-NEXT: or a0, a1, a0
32- ; CHECK-NEXT: ret
28+ ; RV32I-LABEL: pack_i32_2:
29+ ; RV32I: # %bb.0:
30+ ; RV32I-NEXT: slli a1, a1, 16
31+ ; RV32I-NEXT: or a0, a1, a0
32+ ; RV32I-NEXT: ret
33+ ;
34+ ; RV32ZBKB-LABEL: pack_i32_2:
35+ ; RV32ZBKB: # %bb.0:
36+ ; RV32ZBKB-NEXT: pack a0, a0, a1
37+ ; RV32ZBKB-NEXT: ret
3338 %zexta = zext i16 %a to i32
3439 %zextb = zext i16 %b to i32
3540 %shl1 = shl i32 %zextb , 16
@@ -38,12 +43,18 @@ define i32 @pack_i32_2(i16 zeroext %a, i16 zeroext %b) nounwind {
3843}
3944
4045define i32 @pack_i32_3 (i16 zeroext %0 , i16 zeroext %1 , i32 %2 ) {
41- ; CHECK-LABEL: pack_i32_3:
42- ; CHECK: # %bb.0:
43- ; CHECK-NEXT: slli a0, a0, 16
44- ; CHECK-NEXT: or a0, a0, a1
45- ; CHECK-NEXT: add a0, a0, a2
46- ; CHECK-NEXT: ret
46+ ; RV32I-LABEL: pack_i32_3:
47+ ; RV32I: # %bb.0:
48+ ; RV32I-NEXT: slli a0, a0, 16
49+ ; RV32I-NEXT: or a0, a0, a1
50+ ; RV32I-NEXT: add a0, a0, a2
51+ ; RV32I-NEXT: ret
52+ ;
53+ ; RV32ZBKB-LABEL: pack_i32_3:
54+ ; RV32ZBKB: # %bb.0:
55+ ; RV32ZBKB-NEXT: pack a0, a1, a0
56+ ; RV32ZBKB-NEXT: add a0, a0, a2
57+ ; RV32ZBKB-NEXT: ret
4758 %4 = zext i16 %0 to i32
4859 %5 = shl nuw i32 %4 , 16
4960 %6 = zext i16 %1 to i32
@@ -175,11 +186,16 @@ define i64 @packh_i64_2(i64 %a, i64 %b) nounwind {
175186
176187
177188define zeroext i16 @packh_i16 (i8 zeroext %a , i8 zeroext %b ) nounwind {
178- ; CHECK-LABEL: packh_i16:
179- ; CHECK: # %bb.0:
180- ; CHECK-NEXT: slli a1, a1, 8
181- ; CHECK-NEXT: or a0, a1, a0
182- ; CHECK-NEXT: ret
189+ ; RV32I-LABEL: packh_i16:
190+ ; RV32I: # %bb.0:
191+ ; RV32I-NEXT: slli a1, a1, 8
192+ ; RV32I-NEXT: or a0, a1, a0
193+ ; RV32I-NEXT: ret
194+ ;
195+ ; RV32ZBKB-LABEL: packh_i16:
196+ ; RV32ZBKB: # %bb.0:
197+ ; RV32ZBKB-NEXT: packh a0, a0, a1
198+ ; RV32ZBKB-NEXT: ret
183199 %zext = zext i8 %a to i16
184200 %zext1 = zext i8 %b to i16
185201 %shl = shl i16 %zext1 , 8
@@ -189,13 +205,19 @@ define zeroext i16 @packh_i16(i8 zeroext %a, i8 zeroext %b) nounwind {
189205
190206
191207define zeroext i16 @packh_i16_2 (i8 zeroext %0 , i8 zeroext %1 , i8 zeroext %2 ) {
192- ; CHECK-LABEL: packh_i16_2:
193- ; CHECK: # %bb.0:
194- ; CHECK-NEXT: add a0, a1, a0
195- ; CHECK-NEXT: andi a0, a0, 255
196- ; CHECK-NEXT: slli a0, a0, 8
197- ; CHECK-NEXT: or a0, a0, a2
198- ; CHECK-NEXT: ret
208+ ; RV32I-LABEL: packh_i16_2:
209+ ; RV32I: # %bb.0:
210+ ; RV32I-NEXT: add a0, a1, a0
211+ ; RV32I-NEXT: andi a0, a0, 255
212+ ; RV32I-NEXT: slli a0, a0, 8
213+ ; RV32I-NEXT: or a0, a0, a2
214+ ; RV32I-NEXT: ret
215+ ;
216+ ; RV32ZBKB-LABEL: packh_i16_2:
217+ ; RV32ZBKB: # %bb.0:
218+ ; RV32ZBKB-NEXT: add a0, a1, a0
219+ ; RV32ZBKB-NEXT: packh a0, a2, a0
220+ ; RV32ZBKB-NEXT: ret
199221 %4 = add i8 %1 , %0
200222 %5 = zext i8 %4 to i16
201223 %6 = shl i16 %5 , 8
@@ -205,14 +227,21 @@ define zeroext i16 @packh_i16_2(i8 zeroext %0, i8 zeroext %1, i8 zeroext %2) {
205227}
206228
207229define void @packh_i16_3 (i8 zeroext %0 , i8 zeroext %1 , i8 zeroext %2 , ptr %p ) {
208- ; CHECK-LABEL: packh_i16_3:
209- ; CHECK: # %bb.0:
210- ; CHECK-NEXT: add a0, a1, a0
211- ; CHECK-NEXT: andi a0, a0, 255
212- ; CHECK-NEXT: slli a0, a0, 8
213- ; CHECK-NEXT: or a0, a0, a2
214- ; CHECK-NEXT: sh a0, 0(a3)
215- ; CHECK-NEXT: ret
230+ ; RV32I-LABEL: packh_i16_3:
231+ ; RV32I: # %bb.0:
232+ ; RV32I-NEXT: add a0, a1, a0
233+ ; RV32I-NEXT: andi a0, a0, 255
234+ ; RV32I-NEXT: slli a0, a0, 8
235+ ; RV32I-NEXT: or a0, a0, a2
236+ ; RV32I-NEXT: sh a0, 0(a3)
237+ ; RV32I-NEXT: ret
238+ ;
239+ ; RV32ZBKB-LABEL: packh_i16_3:
240+ ; RV32ZBKB: # %bb.0:
241+ ; RV32ZBKB-NEXT: add a0, a1, a0
242+ ; RV32ZBKB-NEXT: packh a0, a2, a0
243+ ; RV32ZBKB-NEXT: sh a0, 0(a3)
244+ ; RV32ZBKB-NEXT: ret
216245 %4 = add i8 %1 , %0
217246 %5 = zext i8 %4 to i16
218247 %6 = shl i16 %5 , 8
0 commit comments