@@ -4334,6 +4334,33 @@ define i16 @or_zext_zext_2_use1(i8 %x, i8 %y) {
43344334 ret i16 %r
43354335}
43364336
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+
43374364define <2 x i16 > @xor_zext_zext (<2 x i8 > %x , <2 x i4 > %y ) {
43384365; CHECK-LABEL: define {{[^@]+}}@xor_zext_zext
43394366; 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) {
44634490 ret i16 %r
44644491}
44654492
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+
44664520define i16 @xor_sext_sext (i8 %x , i4 %y ) {
44674521; CHECK-LABEL: define {{[^@]+}}@xor_sext_sext
44684522; CHECK-SAME: (i8 [[X:%.*]], i4 [[Y:%.*]]) {
0 commit comments