[llvm] [DirectX] Introduce the DXILResourceAccess pass (PR #116726)
Justin Bogner via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 26 15:10:30 PST 2024
================
@@ -0,0 +1,196 @@
+//===- DXILResourceAccess.cpp - Resource access via load/store ------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "DXILResourceAccess.h"
+#include "DirectX.h"
+#include "llvm/Analysis/DXILResource.h"
+#include "llvm/IR/Dominators.h"
+#include "llvm/IR/IRBuilder.h"
+#include "llvm/IR/Instructions.h"
+#include "llvm/IR/IntrinsicInst.h"
+#include "llvm/IR/Intrinsics.h"
+#include "llvm/IR/IntrinsicsDirectX.h"
+#include "llvm/InitializePasses.h"
+
+#define DEBUG_TYPE "dxil-resource-access"
+
+using namespace llvm;
+
+static void replaceTypedBufferAccess(IntrinsicInst *II,
+ dxil::ResourceInfo &RI) {
+ const DataLayout &DL = II->getDataLayout();
+
+ auto *HandleType = cast<TargetExtType>(II->getOperand(0)->getType());
+ assert(HandleType->getName() == "dx.TypedBuffer" &&
+ "Unexpected typed buffer type");
+ Type *ContainedType = HandleType->getTypeParameter(0);
+ Type *ScalarType = ContainedType->getScalarType();
+ uint64_t ScalarSize = DL.getTypeSizeInBits(ScalarType) / 8;
----------------
bogner wrote:
Yes, this is the size of an individual element. I'm dividing the size in bits by 8 to get a size in bytes here - I'll add some comments and some whitespace to try to make these declarations a little clearer.
https://github.com/llvm/llvm-project/pull/116726
More information about the llvm-commits
mailing list