@@ -2348,11 +2348,7 @@ define <vscale x 1 x i32> @add_to_or_scalable(<vscale x 1 x i32> %in) {
2348
2348
2349
2349
define i5 @zext_zext_not (i3 %x ) {
2350
2350
; CHECK-LABEL: @zext_zext_not(
2351
- ; CHECK-NEXT: [[ZX:%.*]] = zext i3 [[X:%.*]] to i5
2352
- ; CHECK-NEXT: [[NOTX:%.*]] = xor i3 [[X]], -1
2353
- ; CHECK-NEXT: [[ZNOTX:%.*]] = zext i3 [[NOTX]] to i5
2354
- ; CHECK-NEXT: [[R:%.*]] = add nuw nsw i5 [[ZX]], [[ZNOTX]]
2355
- ; CHECK-NEXT: ret i5 [[R]]
2351
+ ; CHECK-NEXT: ret i5 7
2356
2352
;
2357
2353
%zx = zext i3 %x to i5
2358
2354
%notx = xor i3 %x , -1
@@ -2363,11 +2359,7 @@ define i5 @zext_zext_not(i3 %x) {
2363
2359
2364
2360
define <2 x i5 > @zext_zext_not_commute (<2 x i3 > %x ) {
2365
2361
; CHECK-LABEL: @zext_zext_not_commute(
2366
- ; CHECK-NEXT: [[ZX:%.*]] = zext <2 x i3> [[X:%.*]] to <2 x i5>
2367
- ; CHECK-NEXT: [[NOTX:%.*]] = xor <2 x i3> [[X]], <i3 -1, i3 poison>
2368
- ; CHECK-NEXT: [[ZNOTX:%.*]] = zext <2 x i3> [[NOTX]] to <2 x i5>
2369
- ; CHECK-NEXT: [[R:%.*]] = add nuw nsw <2 x i5> [[ZNOTX]], [[ZX]]
2370
- ; CHECK-NEXT: ret <2 x i5> [[R]]
2362
+ ; CHECK-NEXT: ret <2 x i5> <i5 7, i5 7>
2371
2363
;
2372
2364
%zx = zext <2 x i3 > %x to <2 x i5 >
2373
2365
%notx = xor <2 x i3 > %x , <i3 -1 , i3 poison>
@@ -2378,11 +2370,7 @@ define <2 x i5> @zext_zext_not_commute(<2 x i3> %x) {
2378
2370
2379
2371
define i9 @sext_sext_not (i3 %x ) {
2380
2372
; CHECK-LABEL: @sext_sext_not(
2381
- ; CHECK-NEXT: [[SX:%.*]] = sext i3 [[X:%.*]] to i9
2382
- ; CHECK-NEXT: [[NOTX:%.*]] = xor i3 [[X]], -1
2383
- ; CHECK-NEXT: [[SNOTX:%.*]] = sext i3 [[NOTX]] to i9
2384
- ; CHECK-NEXT: [[R:%.*]] = add nsw i9 [[SX]], [[SNOTX]]
2385
- ; CHECK-NEXT: ret i9 [[R]]
2373
+ ; CHECK-NEXT: ret i9 -1
2386
2374
;
2387
2375
%sx = sext i3 %x to i9
2388
2376
%notx = xor i3 %x , -1
@@ -2395,10 +2383,7 @@ define i8 @sext_sext_not_commute(i3 %x) {
2395
2383
; CHECK-LABEL: @sext_sext_not_commute(
2396
2384
; CHECK-NEXT: [[SX:%.*]] = sext i3 [[X:%.*]] to i8
2397
2385
; CHECK-NEXT: call void @use(i8 [[SX]])
2398
- ; CHECK-NEXT: [[NOTX:%.*]] = xor i3 [[X]], -1
2399
- ; CHECK-NEXT: [[SNOTX:%.*]] = sext i3 [[NOTX]] to i8
2400
- ; CHECK-NEXT: [[R:%.*]] = add nsw i8 [[SNOTX]], [[SX]]
2401
- ; CHECK-NEXT: ret i8 [[R]]
2386
+ ; CHECK-NEXT: ret i8 -1
2402
2387
;
2403
2388
2404
2389
%sx = sext i3 %x to i8
@@ -2414,7 +2399,7 @@ define i5 @zext_sext_not(i4 %x) {
2414
2399
; CHECK-NEXT: [[ZX:%.*]] = zext i4 [[X:%.*]] to i5
2415
2400
; CHECK-NEXT: [[NOTX:%.*]] = xor i4 [[X]], -1
2416
2401
; CHECK-NEXT: [[SNOTX:%.*]] = sext i4 [[NOTX]] to i5
2417
- ; CHECK-NEXT: [[R:%.*]] = add i5 [[ZX]], [[SNOTX]]
2402
+ ; CHECK-NEXT: [[R:%.*]] = or i5 [[ZX]], [[SNOTX]]
2418
2403
; CHECK-NEXT: ret i5 [[R]]
2419
2404
;
2420
2405
%zx = zext i4 %x to i5
@@ -2431,7 +2416,7 @@ define i8 @zext_sext_not_commute(i4 %x) {
2431
2416
; CHECK-NEXT: [[NOTX:%.*]] = xor i4 [[X]], -1
2432
2417
; CHECK-NEXT: [[SNOTX:%.*]] = sext i4 [[NOTX]] to i8
2433
2418
; CHECK-NEXT: call void @use(i8 [[SNOTX]])
2434
- ; CHECK-NEXT: [[R:%.*]] = add nsw i8 [[SNOTX]], [[ZX]]
2419
+ ; CHECK-NEXT: [[R:%.*]] = or i8 [[SNOTX]], [[ZX]]
2435
2420
; CHECK-NEXT: ret i8 [[R]]
2436
2421
;
2437
2422
%zx = zext i4 %x to i8
@@ -2448,7 +2433,7 @@ define i9 @sext_zext_not(i4 %x) {
2448
2433
; CHECK-NEXT: [[SX:%.*]] = sext i4 [[X:%.*]] to i9
2449
2434
; CHECK-NEXT: [[NOTX:%.*]] = xor i4 [[X]], -1
2450
2435
; CHECK-NEXT: [[ZNOTX:%.*]] = zext i4 [[NOTX]] to i9
2451
- ; CHECK-NEXT: [[R:%.*]] = add nsw i9 [[SX]], [[ZNOTX]]
2436
+ ; CHECK-NEXT: [[R:%.*]] = or i9 [[SX]], [[ZNOTX]]
2452
2437
; CHECK-NEXT: ret i9 [[R]]
2453
2438
;
2454
2439
%sx = sext i4 %x to i9
@@ -2463,7 +2448,7 @@ define i9 @sext_zext_not_commute(i4 %x) {
2463
2448
; CHECK-NEXT: [[SX:%.*]] = sext i4 [[X:%.*]] to i9
2464
2449
; CHECK-NEXT: [[NOTX:%.*]] = xor i4 [[X]], -1
2465
2450
; CHECK-NEXT: [[ZNOTX:%.*]] = zext i4 [[NOTX]] to i9
2466
- ; CHECK-NEXT: [[R:%.*]] = add nsw i9 [[ZNOTX]], [[SX]]
2451
+ ; CHECK-NEXT: [[R:%.*]] = or i9 [[ZNOTX]], [[SX]]
2467
2452
; CHECK-NEXT: ret i9 [[R]]
2468
2453
;
2469
2454
%sx = sext i4 %x to i9
0 commit comments