[PATCH] D51991: [WebAssembly] Make tied inline asm operands work again
Heejin Ahn via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 12 14:35:55 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL342084: [WebAssembly] Make tied inline asm operands work again (authored by aheejin, committed by ).
Repository:
rL LLVM
https://reviews.llvm.org/D51991
Files:
llvm/trunk/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
llvm/trunk/test/CodeGen/WebAssembly/inline-asm.ll
Index: llvm/trunk/test/CodeGen/WebAssembly/inline-asm.ll
===================================================================
--- llvm/trunk/test/CodeGen/WebAssembly/inline-asm.ll
+++ llvm/trunk/test/CodeGen/WebAssembly/inline-asm.ll
@@ -97,6 +97,15 @@
ret i32 %t0
}
+; CHECK-LABEL: tied_operands
+; CHECK: get_local $push0=, 0
+; CHECK: return $pop0
+define i32 @tied_operands(i32 %var) {
+entry:
+ %ret = call i32 asm "", "=r,0"(i32 %var)
+ ret i32 %ret
+}
+
attributes #0 = { nounwind }
!0 = !{i32 47}
Index: llvm/trunk/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
===================================================================
--- llvm/trunk/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
+++ llvm/trunk/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
@@ -316,6 +316,9 @@
if (MO.isDef()) {
assert(MI.getOpcode() == TargetOpcode::INLINEASM);
unsigned LocalId = getLocalId(Reg2Local, CurLocal, OldReg);
+ // If this register operand is tied to another operand, we can't
+ // change it to an immediate. Untie it first.
+ MI.untieRegOperand(MI.getOperandNo(&MO));
MO.ChangeToImmediate(LocalId);
continue;
}
@@ -331,6 +334,8 @@
// indices as immediates.
if (MI.getOpcode() == TargetOpcode::INLINEASM) {
unsigned LocalId = getLocalId(Reg2Local, CurLocal, OldReg);
+ // Untie it first if this reg operand is tied to another operand.
+ MI.untieRegOperand(MI.getOperandNo(&MO));
MO.ChangeToImmediate(LocalId);
continue;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D51991.165155.patch
Type: text/x-patch
Size: 1623 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180912/ebef4cdb/attachment-0001.bin>
More information about the llvm-commits
mailing list