[PATCH] D18272: Add AMDGPU specific target options: -mamdgpu-tools-insert-nops and -mamdgpu-tools-reserve-trap-vgprs + add test

Konstantin Zhuravlyov via cfe-commits cfe-commits at lists.llvm.org
Fri Mar 18 10:46:20 PDT 2016


kzhuravl-AMD created this revision.
kzhuravl-AMD added reviewers: arsenm, tstellarAMD.
kzhuravl-AMD added subscribers: bpurnomo, cfe-commits.

http://reviews.llvm.org/D18272

Files:
  include/clang/Driver/Options.td
  lib/Driver/Tools.cpp
  test/Driver/amdgpu-features.c

Index: test/Driver/amdgpu-features.c
===================================================================
--- /dev/null
+++ test/Driver/amdgpu-features.c
@@ -0,0 +1,11 @@
+// Check handling of AMDGPU specific features.
+//
+// -mamdgpu-tools-insert-nops
+// RUN: %clang -### -target amdgcn -x cl -S -emit-llvm -mcpu=kaveri -mamdgpu-tools-insert-nops %s -o 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-MAMDGPU-TOOLS-INSERT-NOPS %s
+// CHECK-MAMDGPU-TOOLS-INSERT-NOPS: "-target-feature" "+amdgpu-tools-insert-nops"
+//
+// -mamdgpu-tools-reserve-trap-vgprs
+// RUN: %clang -### -target amdgcn -x cl -S -emit-llvm -mcpu=kaveri -mamdgpu-tools-reserve-trap-vgprs %s -o 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-MAMDGPU-TOOLS-RESERVE-TRAP-VGPRS %s
+// CHECK-MAMDGPU-TOOLS-RESERVE-TRAP-VGPRS: "-target-feature" "+amdgpu-tools-reserve-trap-vgprs"
Index: lib/Driver/Tools.cpp
===================================================================
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -2355,6 +2355,16 @@
   handleTargetFeaturesGroup(Args, Features, options::OPT_m_wasm_Features_Group);
 }
 
+static void getAMDGPUTargetFeatures(const ArgList &Args,
+                                    std::vector<const char *> &Features) {
+  if (Args.hasArg(options::OPT_mamdgpu_tools_insert_nops)) {
+    Features.push_back("+amdgpu-tools-insert-nops");
+  }
+  if (Args.hasArg(options::OPT_mamdgpu_tools_reserve_trap_vgprs)) {
+    Features.push_back("+amdgpu-tools-reserve-trap-vgprs");
+  }
+}
+
 static void getTargetFeatures(const ToolChain &TC, const llvm::Triple &Triple,
                               const ArgList &Args, ArgStringList &CmdArgs,
                               bool ForAS) {
@@ -2400,6 +2410,10 @@
   case llvm::Triple::wasm64:
     getWebAssemblyTargetFeatures(Args, Features);
     break;
+  case llvm::Triple::r600:
+  case llvm::Triple::amdgcn:
+    getAMDGPUTargetFeatures(Args, Features);
+    break;
   }
 
   // Find the last of each feature.
Index: include/clang/Driver/Options.td
===================================================================
--- include/clang/Driver/Options.td
+++ include/clang/Driver/Options.td
@@ -1496,6 +1496,14 @@
 def mzvector : Flag<["-"], "mzvector">, Alias<fzvector>;
 def mno_zvector : Flag<["-"], "mno-zvector">, Alias<fno_zvector>;
 
+def mamdgpu_tools_insert_nops : Flag<["-"], "mamdgpu-tools-insert-nops">,
+  Flags<[HelpHidden]>,
+  Group<m_Group>,
+  HelpText<"Insert two nop instructions for each high level source statement (AMDGPU only)">;
+def mamdgpu_tools_reserve_trap_vgprs : Flag<["-"], "mamdgpu-tools-reserve-trap-vgprs">,
+  Flags<[HelpHidden]>,
+  Group<m_Group>,
+  HelpText<"Reserve vector registers for trap handler (AMDGPU only)">;
 def mno_warn_nonportable_cfstrings : Flag<["-"], "mno-warn-nonportable-cfstrings">, Group<m_Group>;
 def mno_omit_leaf_frame_pointer : Flag<["-"], "mno-omit-leaf-frame-pointer">, Group<m_Group>;
 def momit_leaf_frame_pointer : Flag<["-"], "momit-leaf-frame-pointer">, Group<m_Group>,


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D18272.51042.patch
Type: text/x-patch
Size: 3012 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160318/ce74be3d/attachment-0001.bin>


More information about the cfe-commits mailing list