@@ -4334,6 +4334,33 @@ 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 disjoint 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
+
4351
+ define i16 @or_disjoint_zext_zext_2 (i8 %x , i8 %y ) {
4352
+ ; CHECK-LABEL: define {{[^@]+}}@or_disjoint_zext_zext_2
4353
+ ; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
4354
+ ; CHECK-NEXT: [[R1:%.*]] = or disjoint i8 [[Y]], [[X]]
4355
+ ; CHECK-NEXT: [[R:%.*]] = zext i8 [[R1]] to i16
4356
+ ; CHECK-NEXT: ret i16 [[R]]
4357
+ ;
4358
+ %zx = zext i8 %x to i16
4359
+ %zy = zext i8 %y to i16
4360
+ %r = or disjoint i16 %zy , %zx
4361
+ ret i16 %r
4362
+ }
4363
+
4337
4364
define <2 x i16 > @xor_zext_zext (<2 x i8 > %x , <2 x i4 > %y ) {
4338
4365
; CHECK-LABEL: define {{[^@]+}}@xor_zext_zext
4339
4366
; CHECK-SAME: (<2 x i8> [[X:%.*]], <2 x i4> [[Y:%.*]]) {
@@ -4463,6 +4490,33 @@ define i16 @or_sext_sext_2_use1(i8 %x, i8 %y) {
4463
4490
ret i16 %r
4464
4491
}
4465
4492
4493
+ define i16 @or_disjoint_sext_sext (i8 %x , i4 %y ) {
4494
+ ; CHECK-LABEL: define {{[^@]+}}@or_disjoint_sext_sext
4495
+ ; CHECK-SAME: (i8 [[X:%.*]], i4 [[Y:%.*]]) {
4496
+ ; CHECK-NEXT: [[TMP1:%.*]] = sext i4 [[Y]] to i8
4497
+ ; CHECK-NEXT: [[R1:%.*]] = or disjoint i8 [[X]], [[TMP1]]
4498
+ ; CHECK-NEXT: [[R:%.*]] = sext i8 [[R1]] to i16
4499
+ ; CHECK-NEXT: ret i16 [[R]]
4500
+ ;
4501
+ %sx = sext i8 %x to i16
4502
+ %sy = sext i4 %y to i16
4503
+ %r = or disjoint i16 %sx , %sy
4504
+ ret i16 %r
4505
+ }
4506
+
4507
+ define i16 @or_disjoint_sext_sext_2 (i8 %x , i8 %y ) {
4508
+ ; CHECK-LABEL: define {{[^@]+}}@or_disjoint_sext_sext_2
4509
+ ; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
4510
+ ; CHECK-NEXT: [[R1:%.*]] = or disjoint i8 [[X]], [[Y]]
4511
+ ; CHECK-NEXT: [[R:%.*]] = sext i8 [[R1]] to i16
4512
+ ; CHECK-NEXT: ret i16 [[R]]
4513
+ ;
4514
+ %sx = sext i8 %x to i16
4515
+ %sy = sext i8 %y to i16
4516
+ %r = or disjoint i16 %sx , %sy
4517
+ ret i16 %r
4518
+ }
4519
+
4466
4520
define i16 @xor_sext_sext (i8 %x , i4 %y ) {
4467
4521
; CHECK-LABEL: define {{[^@]+}}@xor_sext_sext
4468
4522
; CHECK-SAME: (i8 [[X:%.*]], i4 [[Y:%.*]]) {
0 commit comments