1//===--- AMDGPU.cpp - AMDGPU Helpers for Tools ----------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "AMDGPU.h"
10#include "clang/Basic/TargetID.h"
11#include "clang/Driver/Driver.h"
12#include "clang/Options/Options.h"
13#include "llvm/TargetParser/TargetParser.h"
14
15using namespace clang::driver;
16using namespace clang::driver::tools;
17using namespace clang;
18using namespace llvm::opt;
19
20void AMDGPU::setArchNameInTriple(const Driver &D, const ArgList &Args,
21 types::ID InputType, llvm::Triple &Triple) {
22 StringRef MArch;
23 AMDGPU::getAMDGPUArchCPUFromArgs(Triple, Args, Arch&: MArch);
24
25 if (MArch == "amdgcnspirv") {
26 Triple.setArch(Kind: llvm::Triple::ArchType::spirv64);
27 return;
28 }
29}
30
31void AMDGPU::getAMDGPUArchCPUFromArgs(const llvm::Triple &Triple,
32 const llvm::opt::ArgList &Args,
33 llvm::StringRef &Arch) {
34 if (const Arg *MArch = Args.getLastArg(Ids: options::OPT_march_EQ))
35 Arch = MArch->getValue();
36 else if (const Arg *MCPU = Args.getLastArg(Ids: options::OPT_mcpu_EQ))
37 Arch = MCPU->getValue();
38}
39