[llvm] [NVPTX] Add intrinsics and codegen for tensormap.replace (PR #172458)
Srinivasa Ravi via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 17 00:12:55 PST 2025
================
@@ -6233,3 +6233,67 @@ foreach sp = [0, 1] in {
}
}
+//
+// tensormap.replace Instructions
+//
+
+class TensormapReplaceInst_2<string state_space, string field_name,
+ string regclass_name, NVPTXRegClass val_RC, ValueType ValTy, Intrinsic Intrin,
+ code predicate> :
+ BasicNVPTXInst<(outs),
+ (ins ADDR:$addr, val_RC:$val),
+ "tensormap.replace.tile." # field_name # "." # state_space # ".b1024." # regclass_name,
+ [(PatFrag<(ops node:$addr, node:$val),
+ (Intrin node:$addr, node:$val), predicate>
+ addr:$addr, ValTy:$val)]>;
+
+class TensormapReplaceInst_3<string state_space, string field_name,
+ string regclass_name, NVPTXRegClass val_RC, ValueType ValTy, Intrinsic Intrin,
+ code predicate> :
+ BasicNVPTXInst<(outs),
+ (ins ADDR:$addr, B32:$ord, val_RC:$val),
+ "tensormap.replace.tile." # field_name # "." # state_space # ".b1024." # regclass_name,
+ [(PatFrag<(ops node:$addr, node:$ord, node:$val),
+ (Intrin node:$addr, node:$ord, node:$val), predicate>
+ addr:$addr, i32:$ord, ValTy:$val)]>;
+
+foreach state_space = ["GLOBAL", "SHARED_CTA"] in {
+ defvar pred = !if(!eq(state_space, "GLOBAL"), AS_match.global, AS_match.shared);
+ defvar ss_ptx = !tolower(!subst("_", "::", state_space));
+ let Predicates = [callSubtarget<"hasTensormapReplaceSupport">] in {
+ def TMAP_REPLACE_TILE_GLOBAL_ADDRESS_ # state_space :
----------------
Wolfram70 wrote:
Makes sense, fixed!
https://github.com/llvm/llvm-project/pull/172458
More information about the llvm-commits
mailing list