[Hexagon] Add inline-asm constraint 'a' for modifier register class

For example
  asm ("memw(%0++%1) = %2" : : "r"(addr),"a"(mod),"r"(val) : "memory")

llvm-svn: 308763
This commit is contained in:
Krzysztof Parzyszek
2017-07-21 18:07:15 +00:00
parent 37a58e03c7
commit 33e67ad098
2 changed files with 9 additions and 0 deletions

View File

@@ -6887,6 +6887,9 @@ public:
return true;
}
break;
case 'a': // Modifier register m0-m1.
Info.setAllowsRegister();
return true;
case 's':
// Relocatable constant.
return true;

View File

@@ -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)
}