================ @@ -959,6 +967,32 @@ def : GCNPat < } } // let OtherPredicates = [HasShaderCyclesRegister] +def SIMM24bitPtr : ImmLeaf <iPTR, + [{return isInt<24>(Imm);}] +>; + +multiclass SMPrefetchPat<string type, int cache_type> { + def : GCNPat < + (smrd_prefetch (SMRDImm i64:$sbase, i32:$offset), timm, timm, (i32 cache_type)), + (!cast<SM_Prefetch_Pseudo>("S_PREFETCH_"#type) $sbase, $offset, (i32 SGPR_NULL), (i8 0)) + >; + + def : GCNPat < + (smrd_prefetch (i64 SReg_64:$sbase), timm, timm, (i32 cache_type)), + (!cast<SM_Prefetch_Pseudo>("S_PREFETCH_"#type) $sbase, 0, (i32 SGPR_NULL), (i8 0)) + >; + + def : GCNPat < + (prefetch SIMM24bitPtr:$offset, timm, timm, (i32 cache_type)), + (!cast<SM_Prefetch_Pseudo>("S_PREFETCH_"#type#"_PC_REL") (as_i32timm $offset), (i32 SGPR_NULL), (i8 0)) + > { + let AddedComplexity = 10; + } ---------------- arsenm wrote:
I would interpret this as using the absolute address, you would need something else to represent a PC relative input https://github.com/llvm/llvm-project/pull/74576 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits