summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2013-08-22 06:51:04 +0000
committerTim Northover <tnorthover@apple.com>2013-08-22 06:51:04 +0000
commit2ddeeed096d8a6570fd57b9a5f62732ddb88d477 (patch)
treefe967efe427e31c38ad72344ae07fe58146218ea /llvm/test
parentc571c810bf5bff1096705fecb534bd5ff41b3076 (diff)
downloadbcm5719-llvm-2ddeeed096d8a6570fd57b9a5f62732ddb88d477.tar.gz
bcm5719-llvm-2ddeeed096d8a6570fd57b9a5f62732ddb88d477.zip
ARM: respect tied 64-bit inlineasm operands when printing
The code for 'Q' and 'R' operand modifiers needs to look through tied operands to discover the register class. llvm-svn: 188990
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/ARM/inlineasm-64bit.ll10
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/ARM/inlineasm-64bit.ll b/llvm/test/CodeGen/ARM/inlineasm-64bit.ll
index 69b3860305f..683a0c4b7d3 100644
--- a/llvm/test/CodeGen/ARM/inlineasm-64bit.ll
+++ b/llvm/test/CodeGen/ARM/inlineasm-64bit.ll
@@ -94,3 +94,13 @@ define i64 @tied_64bit_test(i64 %in) nounwind {
call void asm "OUT($0), IN($1)", "=*rm,0"(i64* %addr, i64 %in)
ret i64 %in
}
+
+; If we explicitly name a tied operand, then the code should lookup the operand
+; we were tied to for information about register class and so on.
+define i64 @tied_64bit_lookback_test(i64 %in) nounwind {
+; CHECK-LABEL: tied_64bit_lookback_test:
+; CHECK: OUTLO([[LO:r[0-9]+]]) OUTHI([[HI:r[0-9]+]]) INLO([[LO]]) INHI([[HI]])
+ %vars = call {i64, i32, i64} asm "OUTLO(${2:Q}) OUTHI(${2:R}) INLO(${3:Q}) INHI(${3:R})", "=r,=r,=r,2"(i64 %in)
+ %res = extractvalue {i64, i32, i64} %vars, 2
+ ret i64 %res
+}
OpenPOWER on IntegriCloud