@@ -4274,6 +4274,20 @@ define i16 @or_zext_zext(i8 %x, i4 %y) {
4274
4274
ret i16 %r
4275
4275
}
4276
4276
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
+
4277
4291
define <2 x i16 > @xor_zext_zext (<2 x i8 > %x , <2 x i4 > %y ) {
4278
4292
; CHECK-LABEL: define {{[^@]+}}@xor_zext_zext
4279
4293
; CHECK-SAME: (<2 x i8> [[X:%.*]], <2 x i4> [[Y:%.*]]) {
@@ -4316,6 +4330,20 @@ define i16 @or_sext_sext(i8 %x, i4 %y) {
4316
4330
ret i16 %r
4317
4331
}
4318
4332
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
+
4319
4347
define i16 @xor_sext_sext (i8 %x , i4 %y ) {
4320
4348
; CHECK-LABEL: define {{[^@]+}}@xor_sext_sext
4321
4349
; CHECK-SAME: (i8 [[X:%.*]], i4 [[Y:%.*]]) {
0 commit comments