A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/HIPAMD_8cpp_source.html below:

clang: lib/Driver/ToolChains/HIPAMD.cpp Source File

22#include "llvm/Support/Alignment.h" 23#include "llvm/Support/FileSystem.h" 24#include "llvm/Support/Path.h" 25#include "llvm/TargetParser/TargetParser.h" 30using namespace clang

;

33#if defined(_WIN32) || defined(_WIN64) 34#define NULL_FILE "nul" 36#define NULL_FILE "/dev/null" 39void

AMDGCN::Linker::constructLlvmLinkCommand(

Compilation

&

C

,

43 const

llvm::opt::ArgList &Args)

const

{

46

ArgStringList LlvmLinkArgs;

48

assert(!Inputs.empty() &&

"Must have at least one input."

);

50

LlvmLinkArgs.append({

"-o"

, Output.

getFilename

()});

51 for

(

auto

Input : Inputs)

52

LlvmLinkArgs.push_back(Input.getFilename());

56 auto

TargetID = Args.getLastArgValue(options::OPT_mcpu_EQ);

60 const char

*LlvmLink =

61

Args.MakeArgString(

getToolChain

().GetProgramPath(

"llvm-link"

));

63

LlvmLink, LlvmLinkArgs, Inputs,

70 const

llvm::opt::ArgList &Args)

const

{

73

ArgStringList LldArgs{

"-flavor"

,

79 "-plugin-opt=-amdgpu-internalize-symbols"

};

80 if

(Args.hasArg(options::OPT_hipstdpar))

81

LldArgs.push_back(

"-plugin-opt=-amdgpu-enable-hipstdpar"

);

83 auto

&TC = getToolChain();

84 auto

&

D

= TC.getDriver();

85

assert(!Inputs.empty() &&

"Must have at least one input."

);

86 bool

IsThinLTO =

D

.getOffloadLTOMode() ==

LTOK_Thin

;

87 addLTOOptions

(TC, Args, LldArgs, Output, Inputs[0], IsThinLTO);

90

std::vector<llvm::StringRef> Features;

94

std::string MAttrString =

"-plugin-opt=-mattr="

;

96

MAttrString.append(Args.MakeArgString(OneFeature));

97 if

(OneFeature != Features.back())

98

MAttrString.append(

","

);

100 if

(!Features.empty())

101

LldArgs.push_back(Args.MakeArgString(MAttrString));

107

LldArgs.push_back(Args.MakeArgString(

"-plugin-opt=-force-import-all"

));

109 for

(

const

Arg *A : Args.filtered(options::OPT_mllvm)) {

111

Args.MakeArgString(Twine(

"-plugin-opt="

) + A->getValue(0)));

114 if

(

C

.getDriver().isSaveTempsEnabled())

115

LldArgs.push_back(

"-save-temps"

);

129

LldArgs.push_back(

"--whole-archive"

);

131 for

(

auto

*Arg : Args.filtered(options::OPT_Xoffload_linker)) {

132

StringRef ArgVal = Arg->getValue(1);

133 auto

SplitArg = ArgVal.split(

"-mllvm="

);

134 if

(!SplitArg.second.empty()) {

136

Args.MakeArgString(Twine(

"-plugin-opt="

) + SplitArg.second));

138

LldArgs.push_back(Args.MakeArgString(ArgVal));

144 for

(

auto

Input : Inputs)

145

LldArgs.push_back(Input.getFilename());

149 auto

TargetID = Args.getLastArgValue(options::OPT_mcpu_EQ);

153

LldArgs.push_back(

"--no-whole-archive"

);

155 const char

*Lld = Args.MakeArgString(getToolChain().GetProgramPath(

"lld"

));

157

Lld, LldArgs, Inputs, Output));

166void

AMDGCN::Linker::constructLinkAndEmitSpirvCommand(

168 const InputInfo

&Output,

const

llvm::opt::ArgList &Args)

const

{

169

assert(!Inputs.empty() &&

"Must have at least one input."

);

171

constructLlvmLinkCommand(

C

, JA, Inputs, Output, Args);

176

llvm::opt::ArgStringList TrArgs{

177 "--spirv-max-version=1.6"

,

179 "--spirv-allow-unknown-intrinsics"

,

180 "--spirv-lower-const-expr"

,

181 "--spirv-preserve-auxdata"

,

182 "--spirv-debug-info-version=nonsemantic-shader-200"

};

193 const char

*LinkingOutput)

const

{

194 if

(Inputs.size() > 0 &&

195

Inputs[0].getType() == types::TY_Image &&

196

JA.

getType

() == types::TY_Object)

200 if

(JA.

getType

() == types::TY_HIP_FATBIN)

204 if

(JA.

getType

() == types::TY_LLVM_BC)

205 return

constructLlvmLinkCommand(

C

, JA, Inputs, Output, Args);

207 if

(getToolChain().getEffectiveTriple().isSPIRV())

208 return

constructLinkAndEmitSpirvCommand(

C

, JA, Inputs, Output, Args);

210 return

constructLldCommand(

C

, JA, Inputs, Output, Args);

214 const ToolChain

&HostTC,

const

ArgList &Args)

221 if

(!Args.hasFlag(options::OPT_fgpu_sanitize, options::OPT_fno_gpu_sanitize,

224 for

(

auto

*A : Args.filtered(options::OPT_fsanitize_EQ)) {

226 if

(K != SanitizerKind::Address)

227 D

.getDiags().Report(clang::diag::warn_drv_unsupported_option_for_target)

228

<< A->getAsString(Args) <<

getTriple

().str();

233 const

llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args,

238 "Only HIP offloading kinds are supported for GPUs."

);

240

CC1Args.append({

"-fcuda-is-device"

,

"-fno-threadsafe-statics"

});

242 if

(!DriverArgs.hasFlag(options::OPT_fgpu_rdc, options::OPT_fno_gpu_rdc,

244

CC1Args.append({

"-mllvm"

,

"-amdgpu-internalize-symbols"

});

245 if

(DriverArgs.hasArgNoClaim(options::OPT_hipstdpar))

246

CC1Args.append({

"-mllvm"

,

"-amdgpu-enable-hipstdpar"

});

248

StringRef MaxThreadsPerBlock =

249

DriverArgs.getLastArgValue(options::OPT_gpu_max_threads_per_block_EQ);

250 if

(!MaxThreadsPerBlock.empty()) {

252

(Twine(

"--gpu-max-threads-per-block="

) + MaxThreadsPerBlock).str();

253

CC1Args.push_back(DriverArgs.MakeArgStringRef(ArgStr));

256

CC1Args.push_back(

"-fcuda-allow-variadic-functions"

);

260 if

(!DriverArgs.hasArg(options::OPT_fvisibility_EQ,

261

options::OPT_fvisibility_ms_compat)) {

262

CC1Args.append({

"-fvisibility=hidden"

});

263

CC1Args.push_back(

"-fapply-global-visibility-to-externs"

);

270 if

(!DriverArgs.hasArg(options::OPT_fembed_bitcode_marker))

271

CC1Args.push_back(

"-fembed-bitcode=marker"

);

276

CC1Args.push_back(BCFile.ShouldInternalize ?

"-mlink-builtin-bitcode" 277

:

"-mlink-bitcode-file"

);

278

CC1Args.push_back(DriverArgs.MakeArgString(BCFile.Path));

282

llvm::opt::DerivedArgList *

286

DerivedArgList *DAL =

289

DAL =

new

DerivedArgList(Args.getBaseArgs());

293 for

(Arg *A : Args) {

298 if

(!BoundArch.empty()) {

299

DAL->eraseArg(options::OPT_mcpu_EQ);

300

DAL->AddJoinedArg(

nullptr

, Opts.getOption(options::OPT_mcpu_EQ), BoundArch);

324

ArgStringList &CC1Args)

const

{

329 const

ArgList &Args, ArgStringList &CC1Args)

const

{

334

ArgStringList &CC1Args)

const

{

339

ArgStringList &CC1Args)

const

{

357 const

ArgList &Args)

const

{

364 if

(DriverArgs.hasArg(options::OPT_nogpulib) ||

367

ArgStringList LibraryPaths;

371

LibraryPaths.push_back(DriverArgs.MakeArgString(

Path

));

376 auto

BCLibArgs = DriverArgs.getAllArgValues(options::OPT_hip_device_lib_EQ);

377 if

(!BCLibArgs.empty()) {

378

llvm::for_each(BCLibArgs, [&](StringRef BCName) {

380 for

(StringRef LibraryPath : LibraryPaths) {

382

llvm::sys::path::append(

Path

, BCName);

384 if

(llvm::sys::fs::exists(

FullName

)) {

397

assert(!GpuArch.empty() &&

"Must have an explicit GPU arch."

);

404

BCLibs.emplace_back(N);

408

DriverArgs.getLastArgValue(options::OPT_gpu_instrument_lib_EQ);

411 if

(llvm::sys::fs::exists(InstLib))

412

BCLibs.emplace_back(InstLib);

421 const

llvm::opt::ArgList &DriverArgs)

const

{

423 if

(PTID.OptionalTargetID && !PTID.OptionalGPUArch &&

424

PTID.OptionalTargetID !=

"amdgcnspirv"

)

426

<< *PTID.OptionalTargetID;

types::ID getType() const

Compilation - A set of tasks to perform for a single driver invocation.

Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...

DiagnosticBuilder Diag(unsigned DiagID) const

const llvm::opt::OptTable & getOpts() const

InputInfo - Wrapper for information about an input source.

const char * getFilename() const

The JSON file list parser is used to communicate input to InstallAPI.

SanitizerMask parseSanitizerValue(StringRef Value, bool AllowGroups)

Parse a single value from a -fsanitize= or -fno-sanitize= value list.

static constexpr ResponseFileSupport None()

Returns a ResponseFileSupport indicating that response files are not supported.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4