[clang] 3c6c2ec - [AMDGPU] Added 'A' constraint for inline assembler

Dmitry Preobrazhensky via cfe-commits cfe-commits at lists.llvm.org
Mon May 25 07:47:31 PDT 2020


Author: Dmitry Preobrazhensky
Date: 2020-05-25T17:47:06+03:00
New Revision: 3c6c2ecd6efa393e7a8422d88e5d4ada0970e47e

URL: https://github.com/llvm/llvm-project/commit/3c6c2ecd6efa393e7a8422d88e5d4ada0970e47e
DIFF: https://github.com/llvm/llvm-project/commit/3c6c2ecd6efa393e7a8422d88e5d4ada0970e47e.diff

LOG: [AMDGPU] Added 'A' constraint for inline assembler

Summary: 'A' constraint requires an immediate int or fp constant that can be inlined in an instruction encoding.
This is the second part of the change. The llvm part has been committed as b087b91c9170.
See https://reviews.llvm.org/D78494

Reviewers: arsenm, rampitec

Differential Revision: https://reviews.llvm.org/D79493

Added: 
    

Modified: 
    clang/lib/Basic/Targets/AMDGPU.h
    clang/test/Sema/inline-asm-validate-amdgpu.cl

Removed: 
    


################################################################################
diff  --git a/clang/lib/Basic/Targets/AMDGPU.h b/clang/lib/Basic/Targets/AMDGPU.h
index d0e88e223e95..6c9060aa3f7b 100644
--- a/clang/lib/Basic/Targets/AMDGPU.h
+++ b/clang/lib/Basic/Targets/AMDGPU.h
@@ -131,6 +131,11 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUTargetInfo final : public TargetInfo {
     });
 
     StringRef S(Name);
+    if (S == "A") {
+      Info.setRequiresImmediate();
+      return true;
+    }
+
     bool HasLeftParen = false;
     if (S.front() == '{') {
       HasLeftParen = true;

diff  --git a/clang/test/Sema/inline-asm-validate-amdgpu.cl b/clang/test/Sema/inline-asm-validate-amdgpu.cl
index 51009ecb3f1e..3d6488227ef2 100644
--- a/clang/test/Sema/inline-asm-validate-amdgpu.cl
+++ b/clang/test/Sema/inline-asm-validate-amdgpu.cl
@@ -17,6 +17,10 @@ kernel void test () {
 
   // vgpr constraints
   __asm__ ("v_mov_b32 %0, %1" : "=v" (vgpr) : "v" (imm) : );
+
+  // 'A' constraint
+  __asm__ ("s_mov_b32 %0, %1" : "=s" (sgpr) : "A" (imm) : );
+
 }
 
 __kernel void


        


More information about the cfe-commits mailing list