Skip to content

Commit 5124bf8

Browse files
committedApr 12, 2016
[AMDGPU] Add debugger related target options
Differential Revision: http://reviews.llvm.org/D18748 llvm-svn: 266133
1 parent d5faa26 commit 5124bf8

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed
 

‎clang/include/clang/Driver/Options.td

+12
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ def m_ppc_Features_Group : OptionGroup<"<ppc features group>">,
9595
Group<m_Group>;
9696
def m_wasm_Features_Group : OptionGroup<"<wasm features group>">,
9797
Group<m_Group>;
98+
def m_amdgpu_Features_Group : OptionGroup<"<amdgpu features group>">,
99+
Group<m_Group>;
98100

99101
def m_libc_Group : OptionGroup<"<m libc group>">, Group<m_Group>;
100102
def u_Group : OptionGroup<"<u group>">;
@@ -1446,6 +1448,16 @@ def ffixed_x18 : Flag<["-"], "ffixed-x18">, Group<m_aarch64_Features_Group>,
14461448
def msimd128 : Flag<["-"], "msimd128">, Group<m_wasm_Features_Group>;
14471449
def mno_simd128 : Flag<["-"], "mno-simd128">, Group<m_wasm_Features_Group>;
14481450

1451+
def mamdgpu_debugger_abi : Joined<["-"], "mamdgpu-debugger-abi=">,
1452+
Flags<[HelpHidden]>,
1453+
Group<m_Group>,
1454+
HelpText<"Generate additional code for specified <version> of debugger ABI (AMDGPU only)">,
1455+
MetaVarName<"<version>">;
1456+
def mamdgpu_debugger_insert_nops : Flag<["-"], "mamdgpu-debugger-insert-nops">,
1457+
Group<m_amdgpu_Features_Group>;
1458+
def mamdgpu_debugger_reserve_trap_regs : Flag<["-"], "mamdgpu-debugger-reserve-trap-regs">,
1459+
Group<m_amdgpu_Features_Group>;
1460+
14491461
def mvsx : Flag<["-"], "mvsx">, Group<m_ppc_Features_Group>;
14501462
def mno_vsx : Flag<["-"], "mno-vsx">, Group<m_ppc_Features_Group>;
14511463
def mpower8_vector : Flag<["-"], "mpower8-vector">,

‎clang/lib/Driver/Tools.cpp

+20
Original file line numberDiff line numberDiff line change
@@ -2391,6 +2391,22 @@ static void getWebAssemblyTargetFeatures(const ArgList &Args,
23912391
handleTargetFeaturesGroup(Args, Features, options::OPT_m_wasm_Features_Group);
23922392
}
23932393

2394+
static void getAMDGPUTargetFeatures(const Driver &D, const ArgList &Args,
2395+
std::vector<const char *> &Features) {
2396+
if (const Arg *dAbi = Args.getLastArg(options::OPT_mamdgpu_debugger_abi)) {
2397+
StringRef value = dAbi->getValue();
2398+
if (value == "1.0") {
2399+
Features.push_back("+amdgpu-debugger-insert-nops");
2400+
Features.push_back("+amdgpu-debugger-reserve-trap-regs");
2401+
} else {
2402+
D.Diag(diag::err_drv_clang_unsupported) << dAbi->getAsString(Args);
2403+
}
2404+
}
2405+
2406+
handleTargetFeaturesGroup(
2407+
Args, Features, options::OPT_m_amdgpu_Features_Group);
2408+
}
2409+
23942410
static void getTargetFeatures(const ToolChain &TC, const llvm::Triple &Triple,
23952411
const ArgList &Args, ArgStringList &CmdArgs,
23962412
bool ForAS) {
@@ -2436,6 +2452,10 @@ static void getTargetFeatures(const ToolChain &TC, const llvm::Triple &Triple,
24362452
case llvm::Triple::wasm64:
24372453
getWebAssemblyTargetFeatures(Args, Features);
24382454
break;
2455+
case llvm::Triple::r600:
2456+
case llvm::Triple::amdgcn:
2457+
getAMDGPUTargetFeatures(D, Args, Features);
2458+
break;
24392459
}
24402460

24412461
// Find the last of each feature.

‎clang/test/Driver/amdgpu-features.c

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Check handling of AMDGPU target features.
2+
//
3+
// -mamdgpu-debugger-abi=0.0
4+
// RUN: %clang -### -target amdgcn -x cl -S -emit-llvm -mcpu=kaveri -mamdgpu-debugger-abi=0.0 %s -o 2>&1 \
5+
// RUN: | FileCheck --check-prefix=CHECK-MAMDGPU-DEBUGGER-ABI-0-0 %s
6+
// CHECK-MAMDGPU-DEBUGGER-ABI-0-0: the clang compiler does not support '-mamdgpu-debugger-abi=0.0'
7+
//
8+
// -mamdgpu-debugger-abi=1.0
9+
// RUN: %clang -### -target amdgcn -x cl -S -emit-llvm -mcpu=kaveri -mamdgpu-debugger-abi=1.0 %s -o 2>&1 \
10+
// RUN: | FileCheck --check-prefix=CHECK-MAMDGPU-DEBUGGER-ABI-1-0 %s
11+
// CHECK-MAMDGPU-DEBUGGER-ABI-1-0: "-target-feature" "+amdgpu-debugger-insert-nops" "-target-feature" "+amdgpu-debugger-reserve-trap-regs"
12+
//
13+
// -mamdgpu-debugger-insert-nops
14+
// RUN: %clang -### -target amdgcn -x cl -S -emit-llvm -mcpu=kaveri -mamdgpu-debugger-insert-nops %s -o 2>&1 \
15+
// RUN: | FileCheck --check-prefix=CHECK-MAMDGPU-DEBUGGER-INSERT-NOPS %s
16+
// CHECK-MAMDGPU-DEBUGGER-INSERT-NOPS: "-target-feature" "+amdgpu-debugger-insert-nops"
17+
//
18+
// -mamdgpu-debugger-reserve-trap-regs
19+
// RUN: %clang -### -target amdgcn -x cl -S -emit-llvm -mcpu=kaveri -mamdgpu-debugger-reserve-trap-regs %s -o 2>&1 \
20+
// RUN: | FileCheck --check-prefix=CHECK-MAMDGPU-DEBUGGER-RESERVE-TRAP-REGS %s
21+
// CHECK-MAMDGPU-DEBUGGER-RESERVE-TRAP-REGS: "-target-feature" "+amdgpu-debugger-reserve-trap-regs"

0 commit comments

Comments
 (0)
Please sign in to comment.