@@ -4274,6 +4274,20 @@ define i16 @or_zext_zext(i8 %x, i4 %y) {
42744274 ret i16 %r
42754275}
42764276
4277+ define i16 @or_disjoint_zext_zext (i8 %x , i4 %y ) {
4278+ ; CHECK-LABEL: define {{[^@]+}}@or_disjoint_zext_zext
4279+ ; CHECK-SAME: (i8 [[X:%.*]], i4 [[Y:%.*]]) {
4280+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i4 [[Y]] to i8
4281+ ; CHECK-NEXT: [[TMP2:%.*]] = or i8 [[X]], [[TMP1]]
4282+ ; CHECK-NEXT: [[R:%.*]] = zext i8 [[TMP2]] to i16
4283+ ; CHECK-NEXT: ret i16 [[R]]
4284+ ;
4285+ %zx = zext i8 %x to i16
4286+ %zy = zext i4 %y to i16
4287+ %r = or disjoint i16 %zy , %zx
4288+ ret i16 %r
4289+ }
4290+
42774291define <2 x i16 > @xor_zext_zext (<2 x i8 > %x , <2 x i4 > %y ) {
42784292; CHECK-LABEL: define {{[^@]+}}@xor_zext_zext
42794293; CHECK-SAME: (<2 x i8> [[X:%.*]], <2 x i4> [[Y:%.*]]) {
@@ -4316,6 +4330,20 @@ define i16 @or_sext_sext(i8 %x, i4 %y) {
43164330 ret i16 %r
43174331}
43184332
4333+ define i16 @or_disjoint_sext_sext (i8 %x , i4 %y ) {
4334+ ; CHECK-LABEL: define {{[^@]+}}@or_disjoint_sext_sext
4335+ ; CHECK-SAME: (i8 [[X:%.*]], i4 [[Y:%.*]]) {
4336+ ; CHECK-NEXT: [[TMP1:%.*]] = sext i4 [[Y]] to i8
4337+ ; CHECK-NEXT: [[TMP2:%.*]] = or i8 [[X]], [[TMP1]]
4338+ ; CHECK-NEXT: [[R:%.*]] = sext i8 [[TMP2]] to i16
4339+ ; CHECK-NEXT: ret i16 [[R]]
4340+ ;
4341+ %sx = sext i8 %x to i16
4342+ %sy = sext i4 %y to i16
4343+ %r = or disjoint i16 %sx , %sy
4344+ ret i16 %r
4345+ }
4346+
43194347define i16 @xor_sext_sext (i8 %x , i4 %y ) {
43204348; CHECK-LABEL: define {{[^@]+}}@xor_sext_sext
43214349; CHECK-SAME: (i8 [[X:%.*]], i4 [[Y:%.*]]) {
0 commit comments