[llvm] [DirectX] add support for i64 buffer load/stores (PR #145047)
Farzon Lotfi via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 27 11:11:56 PDT 2025
================
@@ -570,22 +588,34 @@ static bool expandTypedBufferLoadIntrinsic(CallInst *Orig) {
ExtractElements.push_back(
Builder.CreateExtractElement(Extract, Builder.getInt32(I)));
- // combine into double(s)
+ // combine into double(s) or int64(s)
Value *Result = PoisonValue::get(BufferTy);
for (unsigned I = 0; I < ExtractNum; I += 2) {
- Value *Dbl =
- Builder.CreateIntrinsic(Builder.getDoubleTy(), Intrinsic::dx_asdouble,
- {ExtractElements[I], ExtractElements[I + 1]});
+ Value *Combined = nullptr;
+ if (IsDouble)
+ // For doubles, use dx_asdouble intrinsic
+ Combined =
+ Builder.CreateIntrinsic(Builder.getDoubleTy(), Intrinsic::dx_asdouble,
+ {ExtractElements[I], ExtractElements[I + 1]});
+ else
+ Combined = createCombinedi32toi64Expansion(Builder, ExtractElements[I],
+ ExtractElements[I + 1]);
----------------
farzonl wrote:
we reached a compromise to go back to the old behavior.
https://github.com/llvm/llvm-project/pull/145047
More information about the llvm-commits
mailing list