Skip to content

Commit 0ecbb68

Browse files
committed
TableGen/GlobalISel: Make address space/align predicates consistent
The builtin predicate handling has a strange behavior where the code assumes that a PatFrag is a stack of PatFrags, and each level adds at most one predicate. I don't think this particularly makes sense, especially without a diagnostic to ensure you aren't trying to set multiple at once. This wasn't followed for address spaces and alignment, which could potentially fall through to report no builtin predicate was added. Just switch these to follow the existing convention for now.
1 parent 839f0ab commit 0ecbb68

File tree

7 files changed

+92
-126
lines changed

7 files changed

+92
-126
lines changed

llvm/lib/Target/AMDGPU/AMDGPUInstructions.td

Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -444,34 +444,28 @@ def load_#as : PatFrag<(ops node:$ptr), (unindexedload node:$ptr)> {
444444
let IsNonExtLoad = 1;
445445
}
446446

447-
def extloadi8_#as : PatFrag<(ops node:$ptr), (extload node:$ptr)> {
447+
def extloadi8_#as : PatFrag<(ops node:$ptr), (extloadi8 node:$ptr)> {
448448
let IsLoad = 1;
449-
let MemoryVT = i8;
450449
}
451450

452-
def extloadi16_#as : PatFrag<(ops node:$ptr), (extload node:$ptr)> {
451+
def extloadi16_#as : PatFrag<(ops node:$ptr), (extloadi16 node:$ptr)> {
453452
let IsLoad = 1;
454-
let MemoryVT = i16;
455453
}
456454

457-
def sextloadi8_#as : PatFrag<(ops node:$ptr), (sextload node:$ptr)> {
455+
def sextloadi8_#as : PatFrag<(ops node:$ptr), (sextloadi8 node:$ptr)> {
458456
let IsLoad = 1;
459-
let MemoryVT = i8;
460457
}
461458

462-
def sextloadi16_#as : PatFrag<(ops node:$ptr), (sextload node:$ptr)> {
459+
def sextloadi16_#as : PatFrag<(ops node:$ptr), (sextloadi16 node:$ptr)> {
463460
let IsLoad = 1;
464-
let MemoryVT = i16;
465461
}
466462

467-
def zextloadi8_#as : PatFrag<(ops node:$ptr), (zextload node:$ptr)> {
463+
def zextloadi8_#as : PatFrag<(ops node:$ptr), (zextloadi8 node:$ptr)> {
468464
let IsLoad = 1;
469-
let MemoryVT = i8;
470465
}
471466

472-
def zextloadi16_#as : PatFrag<(ops node:$ptr), (zextload node:$ptr)> {
467+
def zextloadi16_#as : PatFrag<(ops node:$ptr), (zextloadi16 node:$ptr)> {
473468
let IsLoad = 1;
474-
let MemoryVT = i16;
475469
}
476470

477471
def atomic_load_8_#as : PatFrag<(ops node:$ptr), (atomic_load_8 node:$ptr)> {
@@ -498,17 +492,15 @@ def atomic_load_64_#as : PatFrag<(ops node:$ptr), (atomic_load_64 node:$ptr)> {
498492

499493

500494
foreach as = [ "global", "flat", "local", "private", "region" ] in {
501-
let AddressSpaces = !cast<AddressSpaceList>("StoreAddress_"#as).AddrSpaces in {
495+
let IsStore = 1, AddressSpaces = !cast<AddressSpaceList>("StoreAddress_"#as).AddrSpaces in {
502496
def store_#as : PatFrag<(ops node:$val, node:$ptr),
503497
(unindexedstore node:$val, node:$ptr)> {
504-
let IsStore = 1;
505498
let IsTruncStore = 0;
506499
}
507500

508501
// truncstore fragments.
509502
def truncstore_#as : PatFrag<(ops node:$val, node:$ptr),
510503
(unindexedstore node:$val, node:$ptr)> {
511-
let IsStore = 1;
512504
let IsTruncStore = 1;
513505
}
514506

@@ -517,24 +509,26 @@ def truncstore_#as : PatFrag<(ops node:$val, node:$ptr),
517509
// unnecessary check that the memory size is less than the value type
518510
// in the generated matcher table.
519511
def truncstorei8_#as : PatFrag<(ops node:$val, node:$ptr),
520-
(truncstore node:$val, node:$ptr)> {
521-
let IsStore = 1;
522-
let MemoryVT = i8;
523-
}
524-
512+
(truncstorei8 node:$val, node:$ptr)>;
525513
def truncstorei16_#as : PatFrag<(ops node:$val, node:$ptr),
526-
(truncstore node:$val, node:$ptr)> {
527-
let IsStore = 1;
528-
let MemoryVT = i16;
529-
}
514+
(truncstorei16 node:$val, node:$ptr)>;
530515

531516
def store_hi16_#as : StoreHi16 <truncstorei16, i16>;
532517
def truncstorei8_hi16_#as : StoreHi16<truncstorei8, i8>;
533518
def truncstorei16_hi16_#as : StoreHi16<truncstorei16, i16>;
534519

535-
defm atomic_store_#as : binary_atomic_op<atomic_store>;
520+
} // End let IsStore = 1, AddressSpaces = ...
536521

537-
} // End let AddressSpaces
522+
let IsAtomic = 1, AddressSpaces = !cast<AddressSpaceList>("StoreAddress_"#as).AddrSpaces in {
523+
def atomic_store_8_#as : PatFrag<(ops node:$ptr, node:$val),
524+
(atomic_store_8 node:$ptr, node:$val)>;
525+
def atomic_store_16_#as : PatFrag<(ops node:$ptr, node:$val),
526+
(atomic_store_16 node:$ptr, node:$val)>;
527+
def atomic_store_32_#as : PatFrag<(ops node:$ptr, node:$val),
528+
(atomic_store_32 node:$ptr, node:$val)>;
529+
def atomic_store_64_#as : PatFrag<(ops node:$ptr, node:$val),
530+
(atomic_store_64 node:$ptr, node:$val)>;
531+
}
538532
} // End foreach as
539533

540534
// TODO: Add GISelPredicateCode for the ret and noret PatFrags once
@@ -614,27 +608,23 @@ defm atomic_load_fadd_v2f16 : binary_atomic_op_all_as<atomic_load_fadd, 0>;
614608
defm AMDGPUatomic_cmp_swap : binary_atomic_op_all_as<AMDGPUatomic_cmp_swap>;
615609

616610
def load_align8_local : PatFrag<(ops node:$ptr), (load_local node:$ptr)>,
617-
Aligned<8> {
611+
Aligned<8> {
618612
let IsLoad = 1;
619-
let IsNonExtLoad = 1;
620613
}
621614

622615
def load_align16_local : PatFrag<(ops node:$ptr), (load_local node:$ptr)>,
623616
Aligned<16> {
624617
let IsLoad = 1;
625-
let IsNonExtLoad = 1;
626618
}
627619

628620
def store_align8_local: PatFrag<(ops node:$val, node:$ptr),
629621
(store_local node:$val, node:$ptr)>, Aligned<8> {
630622
let IsStore = 1;
631-
let IsTruncStore = 0;
632623
}
633624

634625
def store_align16_local: PatFrag<(ops node:$val, node:$ptr),
635626
(store_local node:$val, node:$ptr)>, Aligned<16> {
636627
let IsStore = 1;
637-
let IsTruncStore = 0;
638628
}
639629

640630
let AddressSpaces = StoreAddress_local.AddrSpaces in {

llvm/lib/Target/AMDGPU/BUFInstructions.td

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1806,12 +1806,12 @@ multiclass MUBUFStore_Atomic_Pattern <MUBUF_Pseudo Instr_ADDR64, MUBUF_Pseudo In
18061806
>;
18071807
}
18081808
let SubtargetPredicate = isGFX6GFX7 in {
1809-
defm : MUBUFStore_Atomic_Pattern <BUFFER_STORE_BYTE_ADDR64, BUFFER_STORE_BYTE_OFFSET, i32, atomic_store_global_8>;
1810-
defm : MUBUFStore_Atomic_Pattern <BUFFER_STORE_BYTE_ADDR64, BUFFER_STORE_BYTE_OFFSET, i16, atomic_store_global_8>;
1811-
defm : MUBUFStore_Atomic_Pattern <BUFFER_STORE_SHORT_ADDR64, BUFFER_STORE_SHORT_OFFSET, i32, atomic_store_global_16>;
1812-
defm : MUBUFStore_Atomic_Pattern <BUFFER_STORE_SHORT_ADDR64, BUFFER_STORE_SHORT_OFFSET, i16, atomic_store_global_16>;
1813-
defm : MUBUFStore_Atomic_Pattern <BUFFER_STORE_DWORD_ADDR64, BUFFER_STORE_DWORD_OFFSET, i32, atomic_store_global_32>;
1814-
defm : MUBUFStore_Atomic_Pattern <BUFFER_STORE_DWORDX2_ADDR64, BUFFER_STORE_DWORDX2_OFFSET, i64, atomic_store_global_64>;
1809+
defm : MUBUFStore_Atomic_Pattern <BUFFER_STORE_BYTE_ADDR64, BUFFER_STORE_BYTE_OFFSET, i32, atomic_store_8_global>;
1810+
defm : MUBUFStore_Atomic_Pattern <BUFFER_STORE_BYTE_ADDR64, BUFFER_STORE_BYTE_OFFSET, i16, atomic_store_8_global>;
1811+
defm : MUBUFStore_Atomic_Pattern <BUFFER_STORE_SHORT_ADDR64, BUFFER_STORE_SHORT_OFFSET, i32, atomic_store_16_global>;
1812+
defm : MUBUFStore_Atomic_Pattern <BUFFER_STORE_SHORT_ADDR64, BUFFER_STORE_SHORT_OFFSET, i16, atomic_store_16_global>;
1813+
defm : MUBUFStore_Atomic_Pattern <BUFFER_STORE_DWORD_ADDR64, BUFFER_STORE_DWORD_OFFSET, i32, atomic_store_32_global>;
1814+
defm : MUBUFStore_Atomic_Pattern <BUFFER_STORE_DWORDX2_ADDR64, BUFFER_STORE_DWORDX2_OFFSET, i64, atomic_store_64_global>;
18151815
} // End Predicates = isGFX6GFX7
18161816

18171817

llvm/lib/Target/AMDGPU/DSInstructions.td

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -786,12 +786,12 @@ foreach vt = Reg32Types.types in {
786786
defm : DSWritePat_mc <DS_WRITE_B32, vt, "store_local">;
787787
}
788788

789-
defm : DSAtomicWritePat_mc <DS_WRITE_B8, i16, "atomic_store_local_8">;
790-
defm : DSAtomicWritePat_mc <DS_WRITE_B8, i32, "atomic_store_local_8">;
791-
defm : DSAtomicWritePat_mc <DS_WRITE_B16, i16, "atomic_store_local_16">;
792-
defm : DSAtomicWritePat_mc <DS_WRITE_B16, i32, "atomic_store_local_16">;
793-
defm : DSAtomicWritePat_mc <DS_WRITE_B32, i32, "atomic_store_local_32">;
794-
defm : DSAtomicWritePat_mc <DS_WRITE_B64, i64, "atomic_store_local_64">;
789+
defm : DSAtomicWritePat_mc <DS_WRITE_B8, i16, "atomic_store_8_local">;
790+
defm : DSAtomicWritePat_mc <DS_WRITE_B8, i32, "atomic_store_8_local">;
791+
defm : DSAtomicWritePat_mc <DS_WRITE_B16, i16, "atomic_store_16_local">;
792+
defm : DSAtomicWritePat_mc <DS_WRITE_B16, i32, "atomic_store_16_local">;
793+
defm : DSAtomicWritePat_mc <DS_WRITE_B32, i32, "atomic_store_32_local">;
794+
defm : DSAtomicWritePat_mc <DS_WRITE_B64, i64, "atomic_store_64_local">;
795795

796796
let OtherPredicates = [HasD16LoadStore] in {
797797
def : DSWritePat <DS_WRITE_B16_D16_HI, i32, store_hi16_local>;

llvm/lib/Target/AMDGPU/FLATInstructions.td

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1134,13 +1134,12 @@ def : FlatLoadPat <FLAT_LOAD_DWORDX4, load_flat, vt>;
11341134
def : FlatStorePat <FLAT_STORE_DWORDX4, store_flat, vt>;
11351135
}
11361136

1137-
def : FlatStoreAtomicPat <FLAT_STORE_DWORD, atomic_store_flat_32, i32>;
1138-
def : FlatStoreAtomicPat <FLAT_STORE_DWORDX2, atomic_store_flat_64, i64>;
1139-
def : FlatStoreAtomicPat <FLAT_STORE_BYTE, atomic_store_flat_8, i32>;
1140-
def : FlatStoreAtomicPat <FLAT_STORE_BYTE, atomic_store_flat_8, i16>;
1141-
def : FlatStoreAtomicPat <FLAT_STORE_SHORT, atomic_store_flat_16, i32>;
1142-
def : FlatStoreAtomicPat <FLAT_STORE_SHORT, atomic_store_flat_16, i16>;
1143-
1137+
def : FlatStoreAtomicPat <FLAT_STORE_DWORD, atomic_store_32_flat, i32>;
1138+
def : FlatStoreAtomicPat <FLAT_STORE_DWORDX2, atomic_store_64_flat, i64>;
1139+
def : FlatStoreAtomicPat <FLAT_STORE_BYTE, atomic_store_8_flat, i32>;
1140+
def : FlatStoreAtomicPat <FLAT_STORE_BYTE, atomic_store_8_flat, i16>;
1141+
def : FlatStoreAtomicPat <FLAT_STORE_SHORT, atomic_store_16_flat, i32>;
1142+
def : FlatStoreAtomicPat <FLAT_STORE_SHORT, atomic_store_16_flat, i16>;
11441143

11451144
foreach as = [ "flat", "global" ] in {
11461145
defm : FlatAtomicPat <"FLAT_ATOMIC_ADD", "atomic_load_add_"#as, i32>;
@@ -1396,12 +1395,12 @@ defm : GlobalFLATLoadPats_D16 <GLOBAL_LOAD_SHORT_D16, load_d16_lo_global, v2i16>
13961395
defm : GlobalFLATLoadPats_D16 <GLOBAL_LOAD_SHORT_D16, load_d16_lo_global, v2f16>;
13971396
}
13981397

1399-
defm : GlobalFLATAtomicStorePats <GLOBAL_STORE_BYTE, atomic_store_global_8, i32>;
1400-
defm : GlobalFLATAtomicStorePats <GLOBAL_STORE_BYTE, atomic_store_global_8, i16>;
1401-
defm : GlobalFLATAtomicStorePats <GLOBAL_STORE_SHORT, atomic_store_global_16, i32>;
1402-
defm : GlobalFLATAtomicStorePats <GLOBAL_STORE_SHORT, atomic_store_global_16, i16>;
1403-
defm : GlobalFLATAtomicStorePats <GLOBAL_STORE_DWORD, atomic_store_global_32, i32>;
1404-
defm : GlobalFLATAtomicStorePats <GLOBAL_STORE_DWORDX2, atomic_store_global_64, i64>;
1398+
defm : GlobalFLATAtomicStorePats <GLOBAL_STORE_BYTE, atomic_store_8_global, i32>;
1399+
defm : GlobalFLATAtomicStorePats <GLOBAL_STORE_BYTE, atomic_store_8_global, i16>;
1400+
defm : GlobalFLATAtomicStorePats <GLOBAL_STORE_SHORT, atomic_store_16_global, i32>;
1401+
defm : GlobalFLATAtomicStorePats <GLOBAL_STORE_SHORT, atomic_store_16_global, i16>;
1402+
defm : GlobalFLATAtomicStorePats <GLOBAL_STORE_DWORD, atomic_store_32_global, i32>;
1403+
defm : GlobalFLATAtomicStorePats <GLOBAL_STORE_DWORDX2, atomic_store_64_global, i64>;
14051404

14061405
defm : GlobalFLATAtomicPats <"GLOBAL_ATOMIC_ADD", "atomic_load_add_global", i32>;
14071406
defm : GlobalFLATAtomicPats <"GLOBAL_ATOMIC_SUB", "atomic_load_sub_global", i32>;

llvm/lib/Target/AMDGPU/SIInstrInfo.td

Lines changed: 40 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -466,50 +466,36 @@ def load_local_m0 : PatFrag<(ops node:$ptr), (load_glue node:$ptr)> {
466466
let IsNonExtLoad = 1;
467467
}
468468

469-
let MemoryVT = i8 in {
470469
def extloadi8_local_m0 : PatFrag<(ops node:$ptr), (extloadi8_glue node:$ptr)>;
471470
def sextloadi8_local_m0 : PatFrag<(ops node:$ptr), (sextloadi8_glue node:$ptr)>;
472471
def zextloadi8_local_m0 : PatFrag<(ops node:$ptr), (zextloadi8_glue node:$ptr)>;
473-
}
474472

475-
let MemoryVT = i16 in {
476473
def extloadi16_local_m0 : PatFrag<(ops node:$ptr), (extloadi16_glue node:$ptr)>;
477474
def sextloadi16_local_m0 : PatFrag<(ops node:$ptr), (sextloadi16_glue node:$ptr)>;
478475
def zextloadi16_local_m0 : PatFrag<(ops node:$ptr), (zextloadi16_glue node:$ptr)>;
479-
}
476+
} // End IsLoad = 1, , AddressSpaces = LoadAddress_local.AddrSpaces
480477

481478
def load_align8_local_m0 : PatFrag<(ops node:$ptr),
482-
(load_local_m0 node:$ptr)>, Aligned<8> {
479+
(load_local_m0 node:$ptr)> {
483480
let IsLoad = 1;
484-
let IsNonExtLoad = 1;
481+
int MinAlignment = 8;
485482
}
486483

487484
def load_align16_local_m0 : PatFrag<(ops node:$ptr),
488-
(load_local_m0 node:$ptr)>, Aligned<16> {
485+
(load_local_m0 node:$ptr)> {
489486
let IsLoad = 1;
490-
let IsNonExtLoad = 1;
487+
int MinAlignment = 16;
491488
}
492489

493-
} // End IsLoad = 1
494-
495490
let IsAtomic = 1, AddressSpaces = LoadAddress_local.AddrSpaces in {
496491
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)>;
500493
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)>;
504495
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)>;
508497
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)>;
513499
} // End let AddressSpaces = LoadAddress_local.AddrSpaces
514500

515501

@@ -543,46 +529,35 @@ def truncstorei8_glue : PatFrag<(ops node:$val, node:$ptr),
543529
(truncstore_glue node:$val, node:$ptr)> {
544530
let IsStore = 1;
545531
let MemoryVT = i8;
532+
let IsTruncStore = 1;
546533
}
547534

548535
def truncstorei16_glue : PatFrag<(ops node:$val, node:$ptr),
549536
(truncstore_glue node:$val, node:$ptr)> {
550537
let IsStore = 1;
551538
let MemoryVT = i16;
539+
let IsTruncStore = 1;
552540
}
553541

554542
let IsStore = 1, AddressSpaces = StoreAddress_local.AddrSpaces in {
555543
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)>;
561545
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)>;
567547
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)>;
572549
}
573550

574551
def store_align8_local_m0 : PatFrag <(ops node:$value, node:$ptr),
575552
(store_local_m0 node:$value, node:$ptr)>,
576553
Aligned<8> {
577554
let IsStore = 1;
578-
let IsTruncStore = 0;
579555
}
580556

581557
def store_align16_local_m0 : PatFrag <(ops node:$value, node:$ptr),
582558
(store_local_m0 node:$value, node:$ptr)>,
583559
Aligned<16> {
584560
let IsStore = 1;
585-
let IsTruncStore = 0;
586561
}
587562

588563
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),
613588
}
614589
}
615590

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)> {
621594
let IsAtomic = 1;
622595
let MemoryVT = i8;
623596
}
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)> {
627601
let IsAtomic = 1;
628602
let MemoryVT = i16;
629603
}
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)> {
633608
let IsAtomic = 1;
634609
let MemoryVT = i32;
635610
}
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)> {
639615
let IsAtomic = 1;
640616
let MemoryVT = i64;
641617
}
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
643629

644630

645631
def si_setcc_uniform : PatFrag <

0 commit comments

Comments
 (0)