Skip to content

Commit

Permalink
[GlobalISel][InlineAsm] Add early return for memory inputs that need …
Browse files Browse the repository at this point in the history
…to be indirectified

Summary:
D78319 introduced basic support for inline asm input operands in GlobalISel.
However, that patch did not handle the case where a memory input operand still needs to
be indirectified. Later code asserts that the memory operand is already indirect.

This patch adds an early return false to trigger the SelectionDAG fallback for now.

Reviewers: arsenm, paquette

Reviewed By: arsenm

Subscribers: wdng, rovka, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D79955
  • Loading branch information
konstantinschwarz committed May 14, 2020
1 parent b085e51 commit 887dfee
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
6 changes: 6 additions & 0 deletions llvm/lib/CodeGen/GlobalISel/InlineAsmLowering.cpp
Expand Up @@ -306,6 +306,12 @@ bool InlineAsmLowering::lowerInlineAsm(
// Compute the constraint code and ConstraintType to use.
computeConstraintToUse(TLI, OpInfo);

if (OpInfo.ConstraintType == TargetLowering::C_Memory &&
!OpInfo.isIndirect) {
LLVM_DEBUG(dbgs() << "Cannot indirectify memory input operands yet\n");
return false;
}

// The selected constraint type might expose new sideeffects
ExtraInfo.update(OpInfo);
}
Expand Down
9 changes: 9 additions & 0 deletions llvm/test/CodeGen/AArch64/GlobalISel/arm64-fallback.ll
Expand Up @@ -210,3 +210,12 @@ define i64 @strict_align_feature(i64* %p) #0 {
}

attributes #0 = { "target-features"="+strict-align" }

; FALLBACK-WITH-REPORT-ERR: remark: <unknown>:0:0: unable to translate instruction: call
; FALLBACK-WITH-REPORT-ERR: warning: Instruction selection used fallback path for direct_mem
; FALLBACK-WITH-REPORT-OUT-LABEL: direct_mem
define void @direct_mem(i32 %x, i32 %y) {
entry:
tail call void asm sideeffect "", "imr,imr,~{memory}"(i32 %x, i32 %y)
ret void
}

0 comments on commit 887dfee

Please sign in to comment.