[Mlir-commits] [mlir] [MLIR][AMDGPU] Added l2-prefetch op to AMDGPU (PR #188457)

Ravil Dorozhinskii llvmlistbot at llvm.org
Thu Mar 26 06:03:48 PDT 2026


================
@@ -3950,6 +3950,56 @@ struct AMDGPUTensorLoadStoreOpLowering
   }
 };
 
+struct GlobalPrefetchOpLowering
+    : public ConvertOpToLLVMPattern<GlobalPrefetchOp> {
+  GlobalPrefetchOpLowering(const LLVMTypeConverter &converter, Chipset chipset)
+      : ConvertOpToLLVMPattern<GlobalPrefetchOp>(converter), chipset(chipset) {}
+
+  LogicalResult
+  matchAndRewrite(GlobalPrefetchOp op, GlobalPrefetchOpAdaptor adaptor,
+                  ConversionPatternRewriter &rewriter) const override {
+    if (chipset < kGfx1250)
+      return op->emitOpError("is only supported on gfx1250+");
+
+    const TemporalHint hint = op.getTemporalHint();
+    const bool isSpeculative = op.getSpeculative();
+
+    int32_t llvmScopeValue = static_cast<int32_t>(hint);
+    if ((hint == TemporalHint::RT) || (hint == TemporalHint::HT))
+      llvmScopeValue = isSpeculative ? llvmScopeValue : llvmScopeValue | 1;
+
+    IntegerAttr scopeAttr = rewriter.getI32IntegerAttr(llvmScopeValue);
+
+    ValueRange indices = adaptor.getIndices();
+    Value memRef = adaptor.getSrc();
+    MemRefDescriptor descriptor(memRef);
+    Location loc = op->getLoc();
+    Value offset =
+        LLVM::ConstantOp::create(rewriter, loc, rewriter.getI64Type(), 0);
+    for (size_t i = 0; i < indices.size(); ++i) {
----------------
ravil-mobile wrote:

Not needed anymore. Using `getStridedElementPtr` instead

https://github.com/llvm/llvm-project/pull/188457


More information about the Mlir-commits mailing list