Approximately revert D103431. LDS variables are allocated at kernel launch and deallocated at kernel exit. The address is therefore kernel execution dependent. Global variables are initialized by values written to .data, which can't be done for a LDS variable as there is no kernel running, or by a global constructor. Initializing the global to the address of some LDS allocated by a global constructor is possible but indistinguishable from undef. Assigning the address of a LDS variable to a global should be a sema error. It isn't for openmp, haven't checked other languages. Failing that it could be set to undef, perhaps in this pass. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D115413
39 lines
1.2 KiB
C++
39 lines
1.2 KiB
C++
//===- AMDGPULDSUtils.h - LDS related helper functions -*- C++ -*----------===//
|
|
//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// AMDGPU LDS related helper utility functions.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LIB_TARGET_AMDGPU_UTILS_AMDGPULDSUTILS_H
|
|
#define LLVM_LIB_TARGET_AMDGPU_UTILS_AMDGPULDSUTILS_H
|
|
|
|
#include "llvm/ADT/DenseMap.h"
|
|
#include "llvm/IR/Constants.h"
|
|
|
|
namespace llvm {
|
|
|
|
class ConstantExpr;
|
|
|
|
namespace AMDGPU {
|
|
|
|
bool isKernelCC(const Function *Func);
|
|
|
|
Align getAlign(DataLayout const &DL, const GlobalVariable *GV);
|
|
|
|
std::vector<GlobalVariable *> findVariablesToLower(Module &M,
|
|
const Function *F = nullptr);
|
|
|
|
/// Replace all uses of constant \p C with instructions in \p F.
|
|
void replaceConstantUsesInFunction(ConstantExpr *C, const Function *F);
|
|
} // end namespace AMDGPU
|
|
|
|
} // end namespace llvm
|
|
|
|
#endif // LLVM_LIB_TARGET_AMDGPU_UTILS_AMDGPULDSUTILS_H
|