https://github.com/Keenuts updated https://github.com/llvm/llvm-project/pull/118312
From e8c3d6da73e95fd03e5ccdf8e08bdc99ff52e6f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathan=20Gau=C3=ABr?= <brio...@google.com> Date: Mon, 2 Dec 2024 16:50:47 +0100 Subject: [PATCH 1/2] Revert "[SPIR-V] Fixup storage class for global private (#116636)" This reverts commit aa7fe1c10e5d6d0d3aacdb345fed995de413e142. --- clang/include/clang/Basic/AddressSpaces.h | 1 - clang/lib/AST/TypePrinter.cpp | 2 - clang/lib/Basic/TargetInfo.cpp | 1 - clang/lib/Basic/Targets/AArch64.h | 1 - clang/lib/Basic/Targets/AMDGPU.cpp | 2 - clang/lib/Basic/Targets/DirectX.h | 19 ++++----- clang/lib/Basic/Targets/NVPTX.h | 1 - clang/lib/Basic/Targets/SPIR.h | 42 +++++++++---------- clang/lib/Basic/Targets/SystemZ.h | 1 - clang/lib/Basic/Targets/TCE.h | 1 - clang/lib/Basic/Targets/WebAssembly.h | 41 +++++++++--------- clang/lib/Basic/Targets/X86.h | 1 - .../SemaTemplate/address_space-dependent.cpp | 4 +- .../Target/SPIRV/SPIRVInstructionSelector.cpp | 30 +++++-------- llvm/lib/Target/SPIRV/SPIRVLegalizerInfo.cpp | 5 +-- llvm/lib/Target/SPIRV/SPIRVUtils.cpp | 4 -- llvm/lib/Target/SPIRV/SPIRVUtils.h | 4 -- .../SPIRV/pointers/global-addrspacecast.ll | 17 -------- .../pointers/variables-storage-class-vk.ll | 15 ------- .../SPIRV/pointers/variables-storage-class.ll | 23 +++------- 20 files changed, 68 insertions(+), 147 deletions(-) delete mode 100644 llvm/test/CodeGen/SPIRV/pointers/global-addrspacecast.ll delete mode 100644 llvm/test/CodeGen/SPIRV/pointers/variables-storage-class-vk.ll diff --git a/clang/include/clang/Basic/AddressSpaces.h b/clang/include/clang/Basic/AddressSpaces.h index 8563d373d87367..7b723d508fff17 100644 --- a/clang/include/clang/Basic/AddressSpaces.h +++ b/clang/include/clang/Basic/AddressSpaces.h @@ -58,7 +58,6 @@ enum class LangAS : unsigned { // HLSL specific address spaces. hlsl_groupshared, - hlsl_private, // Wasm specific address spaces. wasm_funcref, diff --git a/clang/lib/AST/TypePrinter.cpp b/clang/lib/AST/TypePrinter.cpp index 1a273c76f71c41..7caebfb061a50b 100644 --- a/clang/lib/AST/TypePrinter.cpp +++ b/clang/lib/AST/TypePrinter.cpp @@ -2553,8 +2553,6 @@ std::string Qualifiers::getAddrSpaceAsString(LangAS AS) { return "__funcref"; case LangAS::hlsl_groupshared: return "groupshared"; - case LangAS::hlsl_private: - return "hlsl_private"; default: return std::to_string(toTargetAddressSpace(AS)); } diff --git a/clang/lib/Basic/TargetInfo.cpp b/clang/lib/Basic/TargetInfo.cpp index 80aa212afc5c91..86befb1cbc74fc 100644 --- a/clang/lib/Basic/TargetInfo.cpp +++ b/clang/lib/Basic/TargetInfo.cpp @@ -47,7 +47,6 @@ static const LangASMap FakeAddrSpaceMap = { 11, // ptr32_uptr 12, // ptr64 13, // hlsl_groupshared - 14, // hlsl_private 20, // wasm_funcref }; diff --git a/clang/lib/Basic/Targets/AArch64.h b/clang/lib/Basic/Targets/AArch64.h index 6ef38fac6da280..68a8b1ebad8cde 100644 --- a/clang/lib/Basic/Targets/AArch64.h +++ b/clang/lib/Basic/Targets/AArch64.h @@ -44,7 +44,6 @@ static const unsigned ARM64AddrSpaceMap[] = { static_cast<unsigned>(AArch64AddrSpace::ptr32_uptr), static_cast<unsigned>(AArch64AddrSpace::ptr64), 0, // hlsl_groupshared - 0, // hlsl_private // Wasm address space values for this target are dummy values, // as it is only enabled for Wasm targets. 20, // wasm_funcref diff --git a/clang/lib/Basic/Targets/AMDGPU.cpp b/clang/lib/Basic/Targets/AMDGPU.cpp index 83aac92e2ea3ca..99f8f2944e2796 100644 --- a/clang/lib/Basic/Targets/AMDGPU.cpp +++ b/clang/lib/Basic/Targets/AMDGPU.cpp @@ -59,7 +59,6 @@ const LangASMap AMDGPUTargetInfo::AMDGPUDefIsGenMap = { llvm::AMDGPUAS::FLAT_ADDRESS, // ptr32_uptr llvm::AMDGPUAS::FLAT_ADDRESS, // ptr64 llvm::AMDGPUAS::FLAT_ADDRESS, // hlsl_groupshared - llvm::AMDGPUAS::FLAT_ADDRESS, // hlsl_private }; const LangASMap AMDGPUTargetInfo::AMDGPUDefIsPrivMap = { @@ -84,7 +83,6 @@ const LangASMap AMDGPUTargetInfo::AMDGPUDefIsPrivMap = { llvm::AMDGPUAS::FLAT_ADDRESS, // ptr32_uptr llvm::AMDGPUAS::FLAT_ADDRESS, // ptr64 llvm::AMDGPUAS::FLAT_ADDRESS, // hlsl_groupshared - llvm::AMDGPUAS::FLAT_ADDRESS, // hlsl_private }; } // namespace targets diff --git a/clang/lib/Basic/Targets/DirectX.h b/clang/lib/Basic/Targets/DirectX.h index 2cbb724386870e..ab22d1281a4df7 100644 --- a/clang/lib/Basic/Targets/DirectX.h +++ b/clang/lib/Basic/Targets/DirectX.h @@ -33,16 +33,15 @@ static const unsigned DirectXAddrSpaceMap[] = { 0, // cuda_constant 0, // cuda_shared // SYCL address space values for this map are dummy - 0, // sycl_global - 0, // sycl_global_device - 0, // sycl_global_host - 0, // sycl_local - 0, // sycl_private - 0, // ptr32_sptr - 0, // ptr32_uptr - 0, // ptr64 - 3, // hlsl_groupshared - 10, // hlsl_private + 0, // sycl_global + 0, // sycl_global_device + 0, // sycl_global_host + 0, // sycl_local + 0, // sycl_private + 0, // ptr32_sptr + 0, // ptr32_uptr + 0, // ptr64 + 3, // hlsl_groupshared // Wasm address space values for this target are dummy values, // as it is only enabled for Wasm targets. 20, // wasm_funcref diff --git a/clang/lib/Basic/Targets/NVPTX.h b/clang/lib/Basic/Targets/NVPTX.h index c6f4e1938a04df..d81b89a7f24ac0 100644 --- a/clang/lib/Basic/Targets/NVPTX.h +++ b/clang/lib/Basic/Targets/NVPTX.h @@ -46,7 +46,6 @@ static const unsigned NVPTXAddrSpaceMap[] = { 0, // ptr32_uptr 0, // ptr64 0, // hlsl_groupshared - 0, // hlsl_private // Wasm address space values for this target are dummy values, // as it is only enabled for Wasm targets. 20, // wasm_funcref diff --git a/clang/lib/Basic/Targets/SPIR.h b/clang/lib/Basic/Targets/SPIR.h index a2fb9bc5e29d73..85e4bd920d8535 100644 --- a/clang/lib/Basic/Targets/SPIR.h +++ b/clang/lib/Basic/Targets/SPIR.h @@ -38,16 +38,15 @@ static const unsigned SPIRDefIsPrivMap[] = { 0, // cuda_constant 0, // cuda_shared // SYCL address space values for this map are dummy - 0, // sycl_global - 0, // sycl_global_device - 0, // sycl_global_host - 0, // sycl_local - 0, // sycl_private - 0, // ptr32_sptr - 0, // ptr32_uptr - 0, // ptr64 - 0, // hlsl_groupshared - 10, // hlsl_private + 0, // sycl_global + 0, // sycl_global_device + 0, // sycl_global_host + 0, // sycl_local + 0, // sycl_private + 0, // ptr32_sptr + 0, // ptr32_uptr + 0, // ptr64 + 0, // hlsl_groupshared // Wasm address space values for this target are dummy values, // as it is only enabled for Wasm targets. 20, // wasm_funcref @@ -70,18 +69,17 @@ static const unsigned SPIRDefIsGenMap[] = { // cuda_constant pointer can be casted to default/"flat" pointer, but in // SPIR-V casts between constant and generic pointers are not allowed. For // this reason cuda_constant is mapped to SPIR-V CrossWorkgroup. - 1, // cuda_constant - 3, // cuda_shared - 1, // sycl_global - 5, // sycl_global_device - 6, // sycl_global_host - 3, // sycl_local - 0, // sycl_private - 0, // ptr32_sptr - 0, // ptr32_uptr - 0, // ptr64 - 0, // hlsl_groupshared - 10, // hlsl_private + 1, // cuda_constant + 3, // cuda_shared + 1, // sycl_global + 5, // sycl_global_device + 6, // sycl_global_host + 3, // sycl_local + 0, // sycl_private + 0, // ptr32_sptr + 0, // ptr32_uptr + 0, // ptr64 + 0, // hlsl_groupshared // Wasm address space values for this target are dummy values, // as it is only enabled for Wasm targets. 20, // wasm_funcref diff --git a/clang/lib/Basic/Targets/SystemZ.h b/clang/lib/Basic/Targets/SystemZ.h index 66b18f245b0c3c..ef9a07033a6e4f 100644 --- a/clang/lib/Basic/Targets/SystemZ.h +++ b/clang/lib/Basic/Targets/SystemZ.h @@ -42,7 +42,6 @@ static const unsigned ZOSAddressMap[] = { 1, // ptr32_uptr 0, // ptr64 0, // hlsl_groupshared - 0, // hlsl_private 0 // wasm_funcref }; diff --git a/clang/lib/Basic/Targets/TCE.h b/clang/lib/Basic/Targets/TCE.h index c2e9b9681f0a89..d6280b02f07b25 100644 --- a/clang/lib/Basic/Targets/TCE.h +++ b/clang/lib/Basic/Targets/TCE.h @@ -51,7 +51,6 @@ static const unsigned TCEOpenCLAddrSpaceMap[] = { 0, // ptr32_uptr 0, // ptr64 0, // hlsl_groupshared - 0, // hlsl_private // Wasm address space values for this target are dummy values, // as it is only enabled for Wasm targets. 20, // wasm_funcref diff --git a/clang/lib/Basic/Targets/WebAssembly.h b/clang/lib/Basic/Targets/WebAssembly.h index 8ddb45aa578448..6c2fe8049ff47a 100644 --- a/clang/lib/Basic/Targets/WebAssembly.h +++ b/clang/lib/Basic/Targets/WebAssembly.h @@ -22,27 +22,26 @@ namespace clang { namespace targets { static const unsigned WebAssemblyAddrSpaceMap[] = { - 0, // Default - 0, // opencl_global - 0, // opencl_local - 0, // opencl_constant - 0, // opencl_private - 0, // opencl_generic - 0, // opencl_global_device - 0, // opencl_global_host - 0, // cuda_device - 0, // cuda_constant - 0, // cuda_shared - 0, // sycl_global - 0, // sycl_global_device - 0, // sycl_global_host - 0, // sycl_local - 0, // sycl_private - 0, // ptr32_sptr - 0, // ptr32_uptr - 0, // ptr64 - 0, // hlsl_groupshared - 0, // hlsl_private + 0, // Default + 0, // opencl_global + 0, // opencl_local + 0, // opencl_constant + 0, // opencl_private + 0, // opencl_generic + 0, // opencl_global_device + 0, // opencl_global_host + 0, // cuda_device + 0, // cuda_constant + 0, // cuda_shared + 0, // sycl_global + 0, // sycl_global_device + 0, // sycl_global_host + 0, // sycl_local + 0, // sycl_private + 0, // ptr32_sptr + 0, // ptr32_uptr + 0, // ptr64 + 0, // hlsl_groupshared 20, // wasm_funcref }; diff --git a/clang/lib/Basic/Targets/X86.h b/clang/lib/Basic/Targets/X86.h index 618b81df35ef61..3ed36c8fa724b5 100644 --- a/clang/lib/Basic/Targets/X86.h +++ b/clang/lib/Basic/Targets/X86.h @@ -46,7 +46,6 @@ static const unsigned X86AddrSpaceMap[] = { 271, // ptr32_uptr 272, // ptr64 0, // hlsl_groupshared - 0, // hlsl_private // Wasm address space values for this target are dummy values, // as it is only enabled for Wasm targets. 20, // wasm_funcref diff --git a/clang/test/SemaTemplate/address_space-dependent.cpp b/clang/test/SemaTemplate/address_space-dependent.cpp index bb22d3a8a9a1ce..2ca9b8007ab418 100644 --- a/clang/test/SemaTemplate/address_space-dependent.cpp +++ b/clang/test/SemaTemplate/address_space-dependent.cpp @@ -43,7 +43,7 @@ void neg() { template <long int I> void tooBig() { - __attribute__((address_space(I))) int *bounds; // expected-error {{address space is larger than the maximum supported (8388585)}} + __attribute__((address_space(I))) int *bounds; // expected-error {{address space is larger than the maximum supported (8388586)}} } template <long int I> @@ -102,7 +102,7 @@ int main() { HasASTemplateFields<1> HASTF; neg<-1>(); // expected-note {{in instantiation of function template specialization 'neg<-1>' requested here}} correct<0x7FFFE9>(); - tooBig<8388651>(); // expected-note {{in instantiation of function template specialization 'tooBig<8388651L>' requested here}} + tooBig<8388650>(); // expected-note {{in instantiation of function template specialization 'tooBig<8388650L>' requested here}} __attribute__((address_space(1))) char *x; __attribute__((address_space(2))) char *y; diff --git a/llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp b/llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp index 3547ac66430a87..d0335117cbe129 100644 --- a/llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp @@ -1460,16 +1460,6 @@ bool SPIRVInstructionSelector::selectAddrSpaceCast(Register ResVReg, .addUse(SrcPtr) .constrainAllUses(TII, TRI, RBI); - if ((SrcSC == SPIRV::StorageClass::Function && - DstSC == SPIRV::StorageClass::Private) || - (DstSC == SPIRV::StorageClass::Function && - SrcSC == SPIRV::StorageClass::Private)) { - return BuildMI(BB, I, DL, TII.get(TargetOpcode::COPY)) - .addDef(ResVReg) - .addUse(SrcPtr) - .constrainAllUses(TII, TRI, RBI); - } - // Casting from an eligible pointer to Generic. if (DstSC == SPIRV::StorageClass::Generic && isGenericCastablePtr(SrcSC)) return selectUnOp(ResVReg, ResType, I, SPIRV::OpPtrCastToGeneric); @@ -3471,7 +3461,11 @@ bool SPIRVInstructionSelector::selectGlobalValue( if (HasInit && !Init) return true; - bool HasLnkTy = GV->getLinkage() != GlobalValue::InternalLinkage; + unsigned AddrSpace = GV->getAddressSpace(); + SPIRV::StorageClass::StorageClass Storage = + addressSpaceToStorageClass(AddrSpace, STI); + bool HasLnkTy = GV->getLinkage() != GlobalValue::InternalLinkage && + Storage != SPIRV::StorageClass::Function; SPIRV::LinkageType::LinkageType LnkType = (GV->isDeclaration() || GV->hasAvailableExternallyLinkage()) ? SPIRV::LinkageType::Import @@ -3480,14 +3474,12 @@ bool SPIRVInstructionSelector::selectGlobalValue( ? SPIRV::LinkageType::LinkOnceODR : SPIRV::LinkageType::Export); - const unsigned AddrSpace = GV->getAddressSpace(); - SPIRV::StorageClass::StorageClass StorageClass = - addressSpaceToStorageClass(AddrSpace, STI); - SPIRVType *ResType = - GR.getOrCreateSPIRVPointerType(PointerBaseType, I, TII, StorageClass); - Register Reg = GR.buildGlobalVariable( - ResVReg, ResType, GlobalIdent, GV, StorageClass, Init, - GlobalVar->isConstant(), HasLnkTy, LnkType, MIRBuilder, true); + SPIRVType *ResType = GR.getOrCreateSPIRVPointerType( + PointerBaseType, I, TII, + addressSpaceToStorageClass(GV->getAddressSpace(), STI)); + Register Reg = GR.buildGlobalVariable(ResVReg, ResType, GlobalIdent, GV, + Storage, Init, GlobalVar->isConstant(), + HasLnkTy, LnkType, MIRBuilder, true); return Reg.isValid(); } diff --git a/llvm/lib/Target/SPIRV/SPIRVLegalizerInfo.cpp b/llvm/lib/Target/SPIRV/SPIRVLegalizerInfo.cpp index 432ab4dedd53da..90898b8bd72503 100644 --- a/llvm/lib/Target/SPIRV/SPIRVLegalizerInfo.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVLegalizerInfo.cpp @@ -112,9 +112,6 @@ SPIRVLegalizerInfo::SPIRVLegalizerInfo(const SPIRVSubtarget &ST) { const LLT p5 = LLT::pointer(5, PSize); // Input, SPV_INTEL_usm_storage_classes (Device) const LLT p6 = LLT::pointer(6, PSize); // SPV_INTEL_usm_storage_classes (Host) - const LLT p7 = LLT::pointer(7, PSize); // Input - const LLT p8 = LLT::pointer(8, PSize); // Output - const LLT p10 = LLT::pointer(10, PSize); // Private // TODO: remove copy-pasting here by using concatenation in some way. auto allPtrsScalarsAndVectors = { @@ -151,7 +148,7 @@ SPIRVLegalizerInfo::SPIRVLegalizerInfo(const SPIRVSubtarget &ST) { auto allFloatAndIntScalarsAndPtrs = {s8, s16, s32, s64, p0, p1, p2, p3, p4, p5, p6}; - auto allPtrs = {p0, p1, p2, p3, p4, p5, p6, p7, p8, p10}; + auto allPtrs = {p0, p1, p2, p3, p4, p5, p6}; bool IsExtendedInts = ST.canUseExtension( diff --git a/llvm/lib/Target/SPIRV/SPIRVUtils.cpp b/llvm/lib/Target/SPIRV/SPIRVUtils.cpp index 50338f5df90281..1ece3044aaa7bb 100644 --- a/llvm/lib/Target/SPIRV/SPIRVUtils.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVUtils.cpp @@ -207,12 +207,8 @@ addressSpaceToStorageClass(unsigned AddrSpace, const SPIRVSubtarget &STI) { : SPIRV::StorageClass::CrossWorkgroup; case 7: return SPIRV::StorageClass::Input; - case 8: - return SPIRV::StorageClass::Output; case 9: return SPIRV::StorageClass::CodeSectionINTEL; - case 10: - return SPIRV::StorageClass::Private; default: report_fatal_error("Unknown address space"); } diff --git a/llvm/lib/Target/SPIRV/SPIRVUtils.h b/llvm/lib/Target/SPIRV/SPIRVUtils.h index 6fefe63f44decd..c0569549039d5c 100644 --- a/llvm/lib/Target/SPIRV/SPIRVUtils.h +++ b/llvm/lib/Target/SPIRV/SPIRVUtils.h @@ -170,12 +170,8 @@ storageClassToAddressSpace(SPIRV::StorageClass::StorageClass SC) { return 6; case SPIRV::StorageClass::Input: return 7; - case SPIRV::StorageClass::Output: - return 8; case SPIRV::StorageClass::CodeSectionINTEL: return 9; - case SPIRV::StorageClass::Private: - return 10; default: report_fatal_error("Unable to get address space id"); } diff --git a/llvm/test/CodeGen/SPIRV/pointers/global-addrspacecast.ll b/llvm/test/CodeGen/SPIRV/pointers/global-addrspacecast.ll deleted file mode 100644 index 544c657da8488a..00000000000000 --- a/llvm/test/CodeGen/SPIRV/pointers/global-addrspacecast.ll +++ /dev/null @@ -1,17 +0,0 @@ -; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s -; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %} - -@PrivInternal = internal addrspace(10) global i32 456 -; CHECK-DAG: %[[#type:]] = OpTypeInt 32 0 -; CHECK-DAG: %[[#ptrty:]] = OpTypePointer Private %[[#type]] -; CHECK-DAG: %[[#value:]] = OpConstant %[[#type]] 456 -; CHECK-DAG: %[[#var:]] = OpVariable %[[#ptrty]] Private %[[#value]] - -define spir_kernel void @Foo() { - %p = addrspacecast ptr addrspace(10) @PrivInternal to ptr - %v = load i32, ptr %p, align 4 - ret void -; CHECK: OpLabel -; CHECK-NEXT: OpLoad %[[#type]] %[[#var]] Aligned 4 -; CHECK-Next: OpReturn -} diff --git a/llvm/test/CodeGen/SPIRV/pointers/variables-storage-class-vk.ll b/llvm/test/CodeGen/SPIRV/pointers/variables-storage-class-vk.ll deleted file mode 100644 index e8b1dc263f1503..00000000000000 --- a/llvm/test/CodeGen/SPIRV/pointers/variables-storage-class-vk.ll +++ /dev/null @@ -1,15 +0,0 @@ -; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv-unknown-vulkan1.3-compute %s -o - | FileCheck %s -; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-vulkan1.3-compute %s -o - -filetype=obj | spirv-val %} - -; CHECK-DAG: %[[#U32:]] = OpTypeInt 32 0 - -; CHECK-DAG: %[[#VAL:]] = OpConstant %[[#U32]] 456 -; CHECK-DAG: %[[#VTYPE:]] = OpTypePointer Private %[[#U32]] -; CHECK-DAG: %[[#VAR:]] = OpVariable %[[#VTYPE]] Private %[[#VAL]] -; CHECK-NOT: OpDecorate %[[#VAR]] LinkageAttributes -@PrivInternal = internal addrspace(10) global i32 456 - -define void @main() { - %l = load i32, ptr addrspace(10) @PrivInternal - ret void -} diff --git a/llvm/test/CodeGen/SPIRV/pointers/variables-storage-class.ll b/llvm/test/CodeGen/SPIRV/pointers/variables-storage-class.ll index dfb386a1c2a561..2d4c805ac9df15 100644 --- a/llvm/test/CodeGen/SPIRV/pointers/variables-storage-class.ll +++ b/llvm/test/CodeGen/SPIRV/pointers/variables-storage-class.ll @@ -1,31 +1,18 @@ ; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %} -; CHECK-DAG: %[[#U8:]] = OpTypeInt 8 0 -; CHECK-DAG: %[[#U32:]] = OpTypeInt 32 0 - -; CHECK-DAG: %[[#TYPE:]] = OpTypePointer CrossWorkgroup %[[#U8]] -; CHECK-DAG: %[[#VAL:]] = OpConstantNull %[[#TYPE]] -; CHECK-DAG: %[[#VTYPE:]] = OpTypePointer CrossWorkgroup %[[#TYPE]] -; CHECK-DAG: %[[#PTR:]] = OpVariable %[[#VTYPE]] CrossWorkgroup %[[#VAL]] @Ptr = addrspace(1) global ptr addrspace(1) null - -; CHECK-DAG: %[[#VAL:]] = OpConstant %[[#U32]] 123 -; CHECK-DAG: %[[#VTYPE:]] = OpTypePointer UniformConstant %[[#U32]] -; CHECK-DAG: %[[#INIT:]] = OpVariable %[[#VTYPE]] UniformConstant %[[#VAL]] @Init = private addrspace(2) constant i32 123 -; CHECK-DAG: %[[#VAL:]] = OpConstant %[[#U32]] 456 -; CHECK-DAG: %[[#VTYPE:]] = OpTypePointer Private %[[#U32]] -; CHECK-DAG: %[[#]] = OpVariable %[[#VTYPE]] Private %[[#VAL]] -@PrivInternal = internal addrspace(10) global i32 456 +; CHECK-DAG: %[[#PTR:]] = OpVariable %[[#]] UniformConstant %[[#]] +; CHECK-DAG: %[[#INIT:]] = OpVariable %[[#]] CrossWorkgroup %[[#]] + +; CHECK: %[[#]] = OpLoad %[[#]] %[[#INIT]] Aligned 8 +; CHECK: OpCopyMemorySized %[[#]] %[[#PTR]] %[[#]] Aligned 4 define spir_kernel void @Foo() { -; CHECK: %[[#]] = OpLoad %[[#]] %[[#PTR]] Aligned 8 %l = load ptr addrspace(1), ptr addrspace(1) @Ptr, align 8 -; CHECK: OpCopyMemorySized %[[#]] %[[#INIT]] %[[#]] Aligned 4 call void @llvm.memcpy.p1.p2.i64(ptr addrspace(1) align 4 %l, ptr addrspace(2) align 1 @Init, i64 4, i1 false) - ret void } From 6b7c9a4d657e25aba530cee674dac1fe7e6bf6c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathan=20Gau=C3=ABr?= <brio...@google.com> Date: Mon, 2 Dec 2024 16:56:06 +0100 Subject: [PATCH 2/2] clang-format --- clang/lib/Basic/Targets/WebAssembly.h | 40 +++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/clang/lib/Basic/Targets/WebAssembly.h b/clang/lib/Basic/Targets/WebAssembly.h index 6c2fe8049ff47a..d8ed88b4c840f1 100644 --- a/clang/lib/Basic/Targets/WebAssembly.h +++ b/clang/lib/Basic/Targets/WebAssembly.h @@ -22,26 +22,26 @@ namespace clang { namespace targets { static const unsigned WebAssemblyAddrSpaceMap[] = { - 0, // Default - 0, // opencl_global - 0, // opencl_local - 0, // opencl_constant - 0, // opencl_private - 0, // opencl_generic - 0, // opencl_global_device - 0, // opencl_global_host - 0, // cuda_device - 0, // cuda_constant - 0, // cuda_shared - 0, // sycl_global - 0, // sycl_global_device - 0, // sycl_global_host - 0, // sycl_local - 0, // sycl_private - 0, // ptr32_sptr - 0, // ptr32_uptr - 0, // ptr64 - 0, // hlsl_groupshared + 0, // Default + 0, // opencl_global + 0, // opencl_local + 0, // opencl_constant + 0, // opencl_private + 0, // opencl_generic + 0, // opencl_global_device + 0, // opencl_global_host + 0, // cuda_device + 0, // cuda_constant + 0, // cuda_shared + 0, // sycl_global + 0, // sycl_global_device + 0, // sycl_global_host + 0, // sycl_local + 0, // sycl_private + 0, // ptr32_sptr + 0, // ptr32_uptr + 0, // ptr64 + 0, // hlsl_groupshared 20, // wasm_funcref }; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits