@@ -4334,6 +4334,20 @@ define i16 @or_zext_zext_2_use1(i8 %x, i8 %y) {
4334
4334
ret i16 %r
4335
4335
}
4336
4336
4337
+ define i16 @or_disjoint_zext_zext (i8 %x , i4 %y ) {
4338
+ ; CHECK-LABEL: define {{[^@]+}}@or_disjoint_zext_zext
4339
+ ; CHECK-SAME: (i8 [[X:%.*]], i4 [[Y:%.*]]) {
4340
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i4 [[Y]] to i8
4341
+ ; CHECK-NEXT: [[R1:%.*]] = or i8 [[X]], [[TMP1]]
4342
+ ; CHECK-NEXT: [[R:%.*]] = zext i8 [[R1]] to i16
4343
+ ; CHECK-NEXT: ret i16 [[R]]
4344
+ ;
4345
+ %zx = zext i8 %x to i16
4346
+ %zy = zext i4 %y to i16
4347
+ %r = or disjoint i16 %zy , %zx
4348
+ ret i16 %r
4349
+ }
4350
+
4337
4351
define <2 x i16 > @xor_zext_zext (<2 x i8 > %x , <2 x i4 > %y ) {
4338
4352
; CHECK-LABEL: define {{[^@]+}}@xor_zext_zext
4339
4353
; CHECK-SAME: (<2 x i8> [[X:%.*]], <2 x i4> [[Y:%.*]]) {
@@ -4463,6 +4477,20 @@ define i16 @or_sext_sext_2_use1(i8 %x, i8 %y) {
4463
4477
ret i16 %r
4464
4478
}
4465
4479
4480
+ define i16 @or_disjoint_sext_sext (i8 %x , i4 %y ) {
4481
+ ; CHECK-LABEL: define {{[^@]+}}@or_disjoint_sext_sext
4482
+ ; CHECK-SAME: (i8 [[X:%.*]], i4 [[Y:%.*]]) {
4483
+ ; CHECK-NEXT: [[TMP1:%.*]] = sext i4 [[Y]] to i8
4484
+ ; CHECK-NEXT: [[R1:%.*]] = or i8 [[X]], [[TMP1]]
4485
+ ; CHECK-NEXT: [[R:%.*]] = sext i8 [[R1]] to i16
4486
+ ; CHECK-NEXT: ret i16 [[R]]
4487
+ ;
4488
+ %sx = sext i8 %x to i16
4489
+ %sy = sext i4 %y to i16
4490
+ %r = or disjoint i16 %sx , %sy
4491
+ ret i16 %r
4492
+ }
4493
+
4466
4494
define i16 @xor_sext_sext (i8 %x , i4 %y ) {
4467
4495
; CHECK-LABEL: define {{[^@]+}}@xor_sext_sext
4468
4496
; CHECK-SAME: (i8 [[X:%.*]], i4 [[Y:%.*]]) {
0 commit comments