diff options
| author | Tim Northover <tnorthover@apple.com> | 2013-08-22 06:51:04 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2013-08-22 06:51:04 +0000 |
| commit | 2ddeeed096d8a6570fd57b9a5f62732ddb88d477 (patch) | |
| tree | fe967efe427e31c38ad72344ae07fe58146218ea /llvm/test | |
| parent | c571c810bf5bff1096705fecb534bd5ff41b3076 (diff) | |
| download | bcm5719-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.ll | 10 |
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 +} |

