[clang] [libc] [lld] [llvm] Ugly example of building libc to spirv (PR #128585)

Farzon Lotfi via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 24 18:51:08 PST 2025


farzonl wrote:

@JonChesterfield even if you distinguish spirv64 from amdgpu in cmake clang 
doesn't make that distinction. A common pattern for spriv64 is to return null if its  not AMDGPU.

`clang/lib/CodeGen/CGBuiltin.cpp`
```
case llvm::Triple::spirv64:
    if (CGF->getTarget().getTriple().getOS() != llvm::Triple::OSType::AMDHSA)
      return nullptr;
    return CGF->EmitAMDGPUBuiltinExpr(BuiltinID, E);
```
`clang/lib/Basic/Targets.cpp`
```
case llvm::Triple::spirv64: {
    if (os != llvm::Triple::UnknownOS ||
        Triple.getEnvironment() != llvm::Triple::UnknownEnvironment) {
      if (os == llvm::Triple::OSType::AMDHSA)
        return std::make_unique<SPIRV64AMDGCNTargetInfo>(Triple, Opts);
      return nullptr;
    }
  }
```

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


More information about the llvm-commits mailing list