@@ -754,26 +754,30 @@ foreach dim = [1, 2, 3, 4, 5] in {
754
754
755
755
defvar frag_pat = (int_nvvm_prefetch_tensormap node:$addr);
756
756
757
- def prefetch_tensormap_const : PatFrag<!setdagop(frag_pat, ops), frag_pat, AS_match.const>;
758
- def prefetch_tensormap_gen : PatFrag<!setdagop(frag_pat, ops), frag_pat, AS_match.generic>;
759
- def prefetch_tensormap_param : PatFrag<!setdagop(frag_pat, ops), frag_pat, AS_match.param>;
757
+ multiclass PREFETCH_TENSORMAP_PATFRAG<string suffix, code predicate> {
758
+ def !tolower(suffix) : PatFrag<!setdagop(frag_pat, ops), frag_pat, predicate>;
759
+ }
760
+
761
+ defm prefetch_tensormap_ : PREFETCH_TENSORMAP_PATFRAG<"CONST", AS_match.const>;
762
+ defm prefetch_tensormap_ : PREFETCH_TENSORMAP_PATFRAG<"GENERIC", AS_match.generic>;
763
+ defm prefetch_tensormap_ : PREFETCH_TENSORMAP_PATFRAG<"PARAM", AS_match.param>;
760
764
761
765
multiclass PREFETCH_TENSORMAP_INST<string addrspace_name, PatFrag pattern_frag> {
762
766
def "" : BasicNVPTXInst<(outs), (ins ADDR:$addr),
763
- !strconcat("prefetch", !if(!eq(addrspace_name, ""), "",
764
- !strconcat(".", addrspace_name)), ".tensormap [$addr];"),
767
+ "prefetch" # addrspace_name # ".tensormap",
765
768
[(pattern_frag addr:$addr)]>,
766
769
Requires<[hasPTX<80>, hasSM<90>]>;
767
770
}
768
771
769
- defm PREFETCH_CONST_TENSORMAP : PREFETCH_TENSORMAP_INST<"const", prefetch_tensormap_const>;
770
- defm PREFETCH_GENERIC_TENSORMAP : PREFETCH_TENSORMAP_INST<"", prefetch_tensormap_gen >;
771
- defm PREFETCH_PARAM_TENSORMAP : PREFETCH_TENSORMAP_INST<"param", prefetch_tensormap_param>;
772
+ defm PREFETCH_CONST_TENSORMAP : PREFETCH_TENSORMAP_INST<". const", prefetch_tensormap_const>;
773
+ defm PREFETCH_GENERIC_TENSORMAP : PREFETCH_TENSORMAP_INST<"", prefetch_tensormap_generic >;
774
+ defm PREFETCH_PARAM_TENSORMAP : PREFETCH_TENSORMAP_INST<". param", prefetch_tensormap_param>;
772
775
773
776
class PREFETCH_INTRS<string InstName, Intrinsic Intr> :
774
777
BasicNVPTXInst<(outs), (ins ADDR:$addr),
775
778
InstName,
776
- [(Intr addr:$addr)]>;
779
+ [(Intr addr:$addr)]>,
780
+ Requires<[hasPTX<80>, hasSM<90>]>;
777
781
778
782
def PREFETCHU_L1 : PREFETCH_INTRS<"prefetchu.L1", int_nvvm_prefetchu_L1>;
779
783
def PREFETCH_L1 : PREFETCH_INTRS<"prefetch.L1", int_nvvm_prefetch_L1>;
0 commit comments