aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/TargetPassConfig.cpp
diff options
context:
space:
mode:
authorFabian Mora <fmora.dev@gmail.com>2025-09-03 10:11:38 -0400
committerGitHub <noreply@github.com>2025-09-03 10:11:38 -0400
commitd15998fe64619e1cc0d6285fbd24d5fe5429c9ef (patch)
tree13483a2dce82e78df41f5c0e3c8f01a6ecc6dcb4 /llvm/lib/CodeGen/TargetPassConfig.cpp
parent86879d46f6476386dc07772ede83cd43b6ddd739 (diff)
downloadllvm-d15998fe64619e1cc0d6285fbd24d5fe5429c9ef.zip
llvm-d15998fe64619e1cc0d6285fbd24d5fe5429c9ef.tar.gz
llvm-d15998fe64619e1cc0d6285fbd24d5fe5429c9ef.tar.bz2
[mlir][ptr] Add translations to LLVMIR for ptr ops. (#156355)
Implements translation from ptr dialect to LLVM IR for core pointer operations: - `ptr.ptr_add` -> `getelementptr` - `ptr.load` -> `load` with atomic ordering, volatility, and metadata support - `ptr.store` -> `store` with atomic ordering, volatility, and metadata support - `ptr.type_offset` -> GEP-based size computation Example: ```mlir llvm.func @test(%arg0: !ptr.ptr<#llvm.address_space<0>>) { %0 = ptr.type_offset f64 : i32 %1 = ptr.ptr_add inbounds %arg0, %0 : !ptr.ptr<#llvm.address_space<0>>, i32 %2 = ptr.load volatile %1 : !ptr.ptr<#llvm.address_space<0>> -> f64 ptr.store %2, %arg0 : f64, !ptr.ptr<#llvm.address_space<0>> llvm.return } ``` Translates to: ```llvm define void @test(ptr %0) { %2 = getelementptr inbounds i8, ptr %0, i32 8 %3 = load volatile double, ptr %2, align 8 store double %3, ptr %0, align 8 ret void } ```
Diffstat (limited to 'llvm/lib/CodeGen/TargetPassConfig.cpp')
0 files changed, 0 insertions, 0 deletions