mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-08 03:26:34 +00:00
[ARM] Enable the use of SVC anywhere in an IT block
Differential Revision: https://reviews.llvm.org/D37374 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312908 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9942f5143c
commit
8bb02cf4a4
@ -8717,9 +8717,10 @@ template <> inline bool IsCPSRDead<MCInst>(const MCInst *Instr) {
|
||||
bool ARMAsmParser::isITBlockTerminator(MCInst &Inst) const {
|
||||
const MCInstrDesc &MCID = MII.get(Inst.getOpcode());
|
||||
|
||||
// All branch & call instructions terminate IT blocks.
|
||||
if (MCID.isTerminator() || MCID.isCall() || MCID.isReturn() ||
|
||||
MCID.isBranch() || MCID.isIndirectBranch())
|
||||
// All branch & call instructions terminate IT blocks with the exception of
|
||||
// SVC.
|
||||
if (MCID.isTerminator() || (MCID.isCall() && Inst.getOpcode() != ARM::tSVC) ||
|
||||
MCID.isReturn() || MCID.isBranch() || MCID.isIndirectBranch())
|
||||
return true;
|
||||
|
||||
// Any arithmetic instruction which writes to the PC also terminates the IT
|
||||
|
@ -3113,12 +3113,18 @@ _func:
|
||||
svceq #255
|
||||
it ne
|
||||
swine #33
|
||||
itt eq
|
||||
svceq #0
|
||||
svceq #1
|
||||
|
||||
@ CHECK: svc #0 @ encoding: [0x00,0xdf]
|
||||
@ CHECK: it eq @ encoding: [0x08,0xbf]
|
||||
@ CHECK: svceq #255 @ encoding: [0xff,0xdf]
|
||||
@ CHECK: it ne @ encoding: [0x18,0xbf]
|
||||
@ CHECK: svcne #33 @ encoding: [0x21,0xdf]
|
||||
@ CHECK: itt eq @ encoding: [0x04,0xbf]
|
||||
@ CHECK: svceq #0 @ encoding: [0x00,0xdf]
|
||||
@ CHECK: svceq #1 @ encoding: [0x01,0xdf]
|
||||
|
||||
|
||||
@------------------------------------------------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user