@@ -320,3 +320,245 @@ body: |
320
320
RET_ReallyLR
321
321
322
322
...
323
+ ---
324
+ name : rhs_add_nuw
325
+ alignment : 4
326
+ liveins :
327
+ - { reg: '$x0' }
328
+ - { reg: '$x1' }
329
+ body : |
330
+ bb.1:
331
+ liveins: $x0, $x1
332
+
333
+ ; CHECK-LABEL: name: rhs_add_nuw
334
+ ; CHECK: liveins: $x0, $x1
335
+ ; CHECK-NEXT: {{ $}}
336
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
337
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
338
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
339
+ ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[COPY1]](s64)
340
+ ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[PTR_ADD]], [[C]](s64)
341
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8))
342
+ ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)
343
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
344
+ %0:_(p0) = COPY $x0
345
+ %1:_(s64) = COPY $x1
346
+ %2:_(s64) = G_CONSTANT i64 1
347
+ %3:_(s64) = nuw G_ADD %1, %2
348
+ %4:_(p0) = nuw G_PTR_ADD %0, %3(s64)
349
+ %7:_(s32) = G_LOAD %4(p0) :: (load 1)
350
+ $w0 = COPY %7(s32)
351
+ RET_ReallyLR implicit $w0
352
+
353
+ ...
354
+ ---
355
+ name : rhs_add_nuw_nusw
356
+ alignment : 4
357
+ liveins :
358
+ - { reg: '$x0' }
359
+ - { reg: '$x1' }
360
+ body : |
361
+ bb.1:
362
+ liveins: $x0, $x1
363
+
364
+ ; CHECK-LABEL: name: rhs_add_nuw_nusw
365
+ ; CHECK: liveins: $x0, $x1
366
+ ; CHECK-NEXT: {{ $}}
367
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
368
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
369
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
370
+ ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw nusw G_PTR_ADD [[COPY]], [[COPY1]](s64)
371
+ ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw nusw G_PTR_ADD [[PTR_ADD]], [[C]](s64)
372
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8))
373
+ ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)
374
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
375
+ %0:_(p0) = COPY $x0
376
+ %1:_(s64) = COPY $x1
377
+ %2:_(s64) = G_CONSTANT i64 1
378
+ %3:_(s64) = nuw G_ADD %1, %2
379
+ %4:_(p0) = nuw nusw G_PTR_ADD %0, %3(s64)
380
+ %7:_(s32) = G_LOAD %4(p0) :: (load 1)
381
+ $w0 = COPY %7(s32)
382
+ RET_ReallyLR implicit $w0
383
+
384
+ ...
385
+ ---
386
+ name : rhs_add_nuw_inbounds
387
+ alignment : 4
388
+ liveins :
389
+ - { reg: '$x0' }
390
+ - { reg: '$x1' }
391
+ body : |
392
+ bb.1:
393
+ liveins: $x0, $x1
394
+
395
+ ; CHECK-LABEL: name: rhs_add_nuw_inbounds
396
+ ; CHECK: liveins: $x0, $x1
397
+ ; CHECK-NEXT: {{ $}}
398
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
399
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
400
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
401
+ ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw nusw inbounds G_PTR_ADD [[COPY]], [[COPY1]](s64)
402
+ ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw nusw inbounds G_PTR_ADD [[PTR_ADD]], [[C]](s64)
403
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8))
404
+ ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)
405
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
406
+ %0:_(p0) = COPY $x0
407
+ %1:_(s64) = COPY $x1
408
+ %2:_(s64) = G_CONSTANT i64 1
409
+ %3:_(s64) = nuw G_ADD %1, %2
410
+ %4:_(p0) = nuw nusw inbounds G_PTR_ADD %0, %3(s64)
411
+ %7:_(s32) = G_LOAD %4(p0) :: (load 1)
412
+ $w0 = COPY %7(s32)
413
+ RET_ReallyLR implicit $w0
414
+
415
+ ...
416
+ ---
417
+ name : reassoc_nuw
418
+ alignment : 4
419
+ liveins :
420
+ - { reg: '$x0' }
421
+ - { reg: '$x1' }
422
+ body : |
423
+ bb.1:
424
+ liveins: $x0, $x1
425
+
426
+ ; CHECK-LABEL: name: reassoc_nuw
427
+ ; CHECK: liveins: $x0, $x1
428
+ ; CHECK-NEXT: {{ $}}
429
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
430
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
431
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
432
+ ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[COPY1]](s64)
433
+ ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[PTR_ADD]], [[C]](s64)
434
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8))
435
+ ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)
436
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
437
+ %0:_(p0) = COPY $x0
438
+ %1:_(s64) = COPY $x1
439
+ %2:_(s64) = G_CONSTANT i64 1
440
+ %3:_(p0) = nuw G_PTR_ADD %0, %2(s64)
441
+ %4:_(p0) = nuw G_PTR_ADD %3(p0), %1
442
+ %7:_(s32) = G_LOAD %4(p0) :: (load 1)
443
+ $w0 = COPY %7(s32)
444
+ RET_ReallyLR implicit $w0
445
+
446
+ ...
447
+ ---
448
+ name : reassoc_nuw_nusw
449
+ alignment : 4
450
+ liveins :
451
+ - { reg: '$x0' }
452
+ - { reg: '$x1' }
453
+ body : |
454
+ bb.1:
455
+ liveins: $x0, $x1
456
+
457
+ ; CHECK-LABEL: name: reassoc_nuw_nusw
458
+ ; CHECK: liveins: $x0, $x1
459
+ ; CHECK-NEXT: {{ $}}
460
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
461
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
462
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
463
+ ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw nusw G_PTR_ADD [[COPY]], [[COPY1]](s64)
464
+ ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw nusw G_PTR_ADD [[PTR_ADD]], [[C]](s64)
465
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8))
466
+ ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)
467
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
468
+ %0:_(p0) = COPY $x0
469
+ %1:_(s64) = COPY $x1
470
+ %2:_(s64) = G_CONSTANT i64 1
471
+ %3:_(p0) = nuw nusw G_PTR_ADD %0, %2(s64)
472
+ %4:_(p0) = nuw nusw G_PTR_ADD %3(p0), %1
473
+ %7:_(s32) = G_LOAD %4(p0) :: (load 1)
474
+ $w0 = COPY %7(s32)
475
+ RET_ReallyLR implicit $w0
476
+
477
+ ...
478
+ ---
479
+ name : reassoc_nuw_inbounds
480
+ alignment : 4
481
+ liveins :
482
+ - { reg: '$x0' }
483
+ - { reg: '$x1' }
484
+ body : |
485
+ bb.1:
486
+ liveins: $x0, $x1
487
+
488
+ ; CHECK-LABEL: name: reassoc_nuw_inbounds
489
+ ; CHECK: liveins: $x0, $x1
490
+ ; CHECK-NEXT: {{ $}}
491
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
492
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
493
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
494
+ ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw nusw inbounds G_PTR_ADD [[COPY]], [[COPY1]](s64)
495
+ ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw nusw inbounds G_PTR_ADD [[PTR_ADD]], [[C]](s64)
496
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8))
497
+ ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)
498
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
499
+ %0:_(p0) = COPY $x0
500
+ %1:_(s64) = COPY $x1
501
+ %2:_(s64) = G_CONSTANT i64 1
502
+ %3:_(p0) = nuw nusw inbounds G_PTR_ADD %0, %2(s64)
503
+ %4:_(p0) = nuw nusw inbounds G_PTR_ADD %3(p0), %1
504
+ %7:_(s32) = G_LOAD %4(p0) :: (load 1)
505
+ $w0 = COPY %7(s32)
506
+ RET_ReallyLR implicit $w0
507
+
508
+ ...
509
+ ---
510
+ name : combine_offsets_nuw
511
+ alignment : 4
512
+ liveins :
513
+ - { reg: '$x0' }
514
+ body : |
515
+ bb.1:
516
+ liveins: $x0
517
+
518
+ ; CHECK-LABEL: name: combine_offsets_nuw
519
+ ; CHECK: liveins: $x0
520
+ ; CHECK-NEXT: {{ $}}
521
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
522
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 11
523
+ ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C]](s64)
524
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s8))
525
+ ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)
526
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
527
+ %0:_(p0) = COPY $x0
528
+ %1:_(s64) = G_CONSTANT i64 10
529
+ %2:_(s64) = G_CONSTANT i64 1
530
+ %3:_(p0) = nuw G_PTR_ADD %0, %1
531
+ %4:_(p0) = nuw G_PTR_ADD %3(p0), %2
532
+ %7:_(s32) = G_LOAD %4(p0) :: (load 1)
533
+ $w0 = COPY %7(s32)
534
+ RET_ReallyLR implicit $w0
535
+
536
+ ...
537
+ ---
538
+ name : combine_offsets_nuw_inbounds
539
+ alignment : 4
540
+ liveins :
541
+ - { reg: '$x0' }
542
+ body : |
543
+ bb.1:
544
+ liveins: $x0
545
+
546
+ ; CHECK-LABEL: name: combine_offsets_nuw_inbounds
547
+ ; CHECK: liveins: $x0
548
+ ; CHECK-NEXT: {{ $}}
549
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
550
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 11
551
+ ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw nusw inbounds G_PTR_ADD [[COPY]], [[C]](s64)
552
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s8))
553
+ ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)
554
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
555
+ %0:_(p0) = COPY $x0
556
+ %1:_(s64) = G_CONSTANT i64 10
557
+ %2:_(s64) = G_CONSTANT i64 1
558
+ %3:_(p0) = nuw nusw inbounds G_PTR_ADD %0, %1
559
+ %4:_(p0) = nuw nusw inbounds G_PTR_ADD %3(p0), %2
560
+ %7:_(s32) = G_LOAD %4(p0) :: (load 1)
561
+ $w0 = COPY %7(s32)
562
+ RET_ReallyLR implicit $w0
563
+
564
+ ...
0 commit comments