summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Basic/Targets.cpp3
-rw-r--r--clang/test/CodeGen/hexagon-inline-asm.c6
2 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 01137b66b38..d488ed1dbd7 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -6887,6 +6887,9 @@ public:
return true;
}
break;
+ case 'a': // Modifier register m0-m1.
+ Info.setAllowsRegister();
+ return true;
case 's':
// Relocatable constant.
return true;
diff --git a/clang/test/CodeGen/hexagon-inline-asm.c b/clang/test/CodeGen/hexagon-inline-asm.c
index cda3d0dcb6b..8d1308ee5d8 100644
--- a/clang/test/CodeGen/hexagon-inline-asm.c
+++ b/clang/test/CodeGen/hexagon-inline-asm.c
@@ -15,3 +15,9 @@ void foo(v64 v0, v64 v1, v64 *p) {
asm ("%0 = memw(##%1)" : "=r"(r) : "s"(&g));
// CHECK: call i32 asm "$0 = memw(##$1)", "=r,s"(i32* @g)
}
+
+void fred(unsigned *p, unsigned m, unsigned v) {
+ asm ("memw(%0++%1) = %2" : : "r"(p),"a"(m),"r"(v) : "memory");
+// CHECK: call void asm sideeffect "memw($0++$1) = $2", "r,a,r,~{memory}"(i32* %0, i32 %1, i32 %2)
+}
+
OpenPOWER on IntegriCloud