@@ -466,50 +466,36 @@ def load_local_m0 : PatFrag<(ops node:$ptr), (load_glue node:$ptr)> {
466
466
let IsNonExtLoad = 1;
467
467
}
468
468
469
- let MemoryVT = i8 in {
470
469
def extloadi8_local_m0 : PatFrag<(ops node:$ptr), (extloadi8_glue node:$ptr)>;
471
470
def sextloadi8_local_m0 : PatFrag<(ops node:$ptr), (sextloadi8_glue node:$ptr)>;
472
471
def zextloadi8_local_m0 : PatFrag<(ops node:$ptr), (zextloadi8_glue node:$ptr)>;
473
- }
474
472
475
- let MemoryVT = i16 in {
476
473
def extloadi16_local_m0 : PatFrag<(ops node:$ptr), (extloadi16_glue node:$ptr)>;
477
474
def sextloadi16_local_m0 : PatFrag<(ops node:$ptr), (sextloadi16_glue node:$ptr)>;
478
475
def zextloadi16_local_m0 : PatFrag<(ops node:$ptr), (zextloadi16_glue node:$ptr)>;
479
- }
476
+ } // End IsLoad = 1, , AddressSpaces = LoadAddress_local.AddrSpaces
480
477
481
478
def load_align8_local_m0 : PatFrag<(ops node:$ptr),
482
- (load_local_m0 node:$ptr)>, Aligned<8> {
479
+ (load_local_m0 node:$ptr)> {
483
480
let IsLoad = 1;
484
- let IsNonExtLoad = 1 ;
481
+ int MinAlignment = 8 ;
485
482
}
486
483
487
484
def load_align16_local_m0 : PatFrag<(ops node:$ptr),
488
- (load_local_m0 node:$ptr)>, Aligned<16> {
485
+ (load_local_m0 node:$ptr)> {
489
486
let IsLoad = 1;
490
- let IsNonExtLoad = 1 ;
487
+ int MinAlignment = 16 ;
491
488
}
492
489
493
- } // End IsLoad = 1
494
-
495
490
let IsAtomic = 1, AddressSpaces = LoadAddress_local.AddrSpaces in {
496
491
def atomic_load_8_local_m0 : PatFrag<(ops node:$ptr),
497
- (atomic_load_8_glue node:$ptr)> {
498
- let MemoryVT = i8;
499
- }
492
+ (atomic_load_8_glue node:$ptr)>;
500
493
def atomic_load_16_local_m0 : PatFrag<(ops node:$ptr),
501
- (atomic_load_16_glue node:$ptr)> {
502
- let MemoryVT = i16;
503
- }
494
+ (atomic_load_16_glue node:$ptr)>;
504
495
def atomic_load_32_local_m0 : PatFrag<(ops node:$ptr),
505
- (atomic_load_32_glue node:$ptr)> {
506
- let MemoryVT = i32;
507
- }
496
+ (atomic_load_32_glue node:$ptr)>;
508
497
def atomic_load_64_local_m0 : PatFrag<(ops node:$ptr),
509
- (atomic_load_64_glue node:$ptr)> {
510
- let MemoryVT = i64;
511
- }
512
-
498
+ (atomic_load_64_glue node:$ptr)>;
513
499
} // End let AddressSpaces = LoadAddress_local.AddrSpaces
514
500
515
501
@@ -543,46 +529,35 @@ def truncstorei8_glue : PatFrag<(ops node:$val, node:$ptr),
543
529
(truncstore_glue node:$val, node:$ptr)> {
544
530
let IsStore = 1;
545
531
let MemoryVT = i8;
532
+ let IsTruncStore = 1;
546
533
}
547
534
548
535
def truncstorei16_glue : PatFrag<(ops node:$val, node:$ptr),
549
536
(truncstore_glue node:$val, node:$ptr)> {
550
537
let IsStore = 1;
551
538
let MemoryVT = i16;
539
+ let IsTruncStore = 1;
552
540
}
553
541
554
542
let IsStore = 1, AddressSpaces = StoreAddress_local.AddrSpaces in {
555
543
def store_local_m0 : PatFrag<(ops node:$val, node:$ptr),
556
- (store_glue node:$val, node:$ptr)> {
557
- let IsStore = 1;
558
- let IsTruncStore = 0;
559
- }
560
-
544
+ (store_glue node:$val, node:$ptr)>;
561
545
def truncstorei8_local_m0 : PatFrag<(ops node:$val, node:$ptr),
562
- (unindexedstore_glue node:$val, node:$ptr)> {
563
- let IsStore = 1;
564
- let MemoryVT = i8;
565
- }
566
-
546
+ (truncstorei8_glue node:$val, node:$ptr)>;
567
547
def truncstorei16_local_m0 : PatFrag<(ops node:$val, node:$ptr),
568
- (unindexedstore_glue node:$val, node:$ptr)> {
569
- let IsStore = 1;
570
- let MemoryVT = i16;
571
- }
548
+ (truncstorei16_glue node:$val, node:$ptr)>;
572
549
}
573
550
574
551
def store_align8_local_m0 : PatFrag <(ops node:$value, node:$ptr),
575
552
(store_local_m0 node:$value, node:$ptr)>,
576
553
Aligned<8> {
577
554
let IsStore = 1;
578
- let IsTruncStore = 0;
579
555
}
580
556
581
557
def store_align16_local_m0 : PatFrag <(ops node:$value, node:$ptr),
582
558
(store_local_m0 node:$value, node:$ptr)>,
583
559
Aligned<16> {
584
560
let IsStore = 1;
585
- let IsTruncStore = 0;
586
561
}
587
562
588
563
let PredicateCode = [{return cast<MemSDNode>(N)->getAlignment() < 4;}],
@@ -613,33 +588,44 @@ def store_align_less_than_4_local_m0 : PatFrag <(ops node:$value, node:$ptr),
613
588
}
614
589
}
615
590
616
- let AddressSpaces = StoreAddress_local.AddrSpaces in {
617
-
618
- def atomic_store_local_8_m0 : PatFrag <
619
- (ops node:$value, node:$ptr),
620
- (AMDGPUatomic_st_glue node:$value, node:$ptr)> {
591
+ def atomic_store_8_glue : PatFrag <
592
+ (ops node:$ptr, node:$value),
593
+ (AMDGPUatomic_st_glue node:$ptr, node:$value)> {
621
594
let IsAtomic = 1;
622
595
let MemoryVT = i8;
623
596
}
624
- def atomic_store_local_16_m0 : PatFrag <
625
- (ops node:$value, node:$ptr),
626
- (AMDGPUatomic_st_glue node:$value, node:$ptr)> {
597
+
598
+ def atomic_store_16_glue : PatFrag <
599
+ (ops node:$ptr, node:$value),
600
+ (AMDGPUatomic_st_glue node:$ptr, node:$value)> {
627
601
let IsAtomic = 1;
628
602
let MemoryVT = i16;
629
603
}
630
- def atomic_store_local_32_m0 : PatFrag <
631
- (ops node:$value, node:$ptr),
632
- (AMDGPUatomic_st_glue node:$value, node:$ptr)> {
604
+
605
+ def atomic_store_32_glue : PatFrag <
606
+ (ops node:$ptr, node:$value),
607
+ (AMDGPUatomic_st_glue node:$ptr, node:$value)> {
633
608
let IsAtomic = 1;
634
609
let MemoryVT = i32;
635
610
}
636
- def atomic_store_local_64_m0 : PatFrag <
637
- (ops node:$value, node:$ptr),
638
- (AMDGPUatomic_st_glue node:$value, node:$ptr)> {
611
+
612
+ def atomic_store_64_glue : PatFrag <
613
+ (ops node:$ptr, node:$value),
614
+ (AMDGPUatomic_st_glue node:$ptr, node:$value)> {
639
615
let IsAtomic = 1;
640
616
let MemoryVT = i64;
641
617
}
642
- } // End let AddressSpaces = StoreAddress_local.AddrSpaces
618
+
619
+ let IsAtomic = 1, AddressSpaces = StoreAddress_local.AddrSpaces in {
620
+ def atomic_store_8_local_m0 : PatFrag<(ops node:$ptr, node:$val),
621
+ (atomic_store_8_glue node:$ptr, node:$val)>;
622
+ def atomic_store_16_local_m0 : PatFrag<(ops node:$ptr, node:$val),
623
+ (atomic_store_16_glue node:$ptr, node:$val)>;
624
+ def atomic_store_32_local_m0 : PatFrag<(ops node:$ptr, node:$val),
625
+ (atomic_store_32_glue node:$ptr, node:$val)>;
626
+ def atomic_store_64_local_m0 : PatFrag<(ops node:$ptr, node:$val),
627
+ (atomic_store_64_glue node:$ptr, node:$val)>;
628
+ } // End let IsAtomic = 1, AddressSpaces = StoreAddress_local.AddrSpaces
643
629
644
630
645
631
def si_setcc_uniform : PatFrag <
0 commit comments