mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Add support for ISD::TRAP to the XCore backend
llvm-svn: 60479
This commit is contained in:
parent
440e75e1d5
commit
e74ae9dbb7
@ -106,6 +106,8 @@ XCoreTargetLowering::XCoreTargetLowering(XCoreTargetMachine &XTM)
|
||||
setOperationAction(ISD::ROTL , MVT::i32, Expand);
|
||||
setOperationAction(ISD::ROTR , MVT::i32, Expand);
|
||||
|
||||
setOperationAction(ISD::TRAP, MVT::Other, Legal);
|
||||
|
||||
// Expand jump tables for now
|
||||
setOperationAction(ISD::BR_JT, MVT::Other, Expand);
|
||||
setOperationAction(ISD::JumpTable, MVT::i32, Custom);
|
||||
|
@ -762,7 +762,7 @@ def CLZ_l2r : _FL2R<(outs GRRegs:$dst), (ins GRRegs:$src),
|
||||
|
||||
// One operand short
|
||||
// TODO edu, eeu, waitet, waitef, freer, tstart, msync, mjoin, syncr, clrtp
|
||||
// bru, setdp, setcp, setv, setev, kcall, ecallt, ecallf
|
||||
// bru, setdp, setcp, setv, setev, kcall
|
||||
// dgetreg
|
||||
let isBranch=1, isIndirectBranch=1, isTerminator=1 in
|
||||
def BAU_1r : _F1R<(outs), (ins GRRegs:$addr),
|
||||
@ -774,6 +774,16 @@ def SETSP_1r : _F1R<(outs), (ins GRRegs:$src),
|
||||
"set sp, $src",
|
||||
[]>;
|
||||
|
||||
let isBarrier = 1, hasCtrlDep = 1 in
|
||||
def ECALLT_1r : _F1R<(outs), (ins GRRegs:$src),
|
||||
"ecallt $src",
|
||||
[]>;
|
||||
|
||||
let isBarrier = 1, hasCtrlDep = 1 in
|
||||
def ECALLF_1r : _F1R<(outs), (ins GRRegs:$src),
|
||||
"ecallf $src",
|
||||
[]>;
|
||||
|
||||
let isCall=1,
|
||||
// All calls clobber the the link register and the non-callee-saved registers:
|
||||
Defs = [R0, R1, R2, R3, R11, LR] in {
|
||||
@ -852,6 +862,9 @@ def : Pat<(store GRRegs:$val, GRRegs:$addr),
|
||||
/// cttz
|
||||
def : Pat<(cttz GRRegs:$src), (CLZ_l2r (BITREV_l2r GRRegs:$src))>;
|
||||
|
||||
/// trap
|
||||
def : Pat<(trap), (ECALLF_1r (LDC_ru6 0))>;
|
||||
|
||||
///
|
||||
/// branch patterns
|
||||
///
|
||||
|
11
test/CodeGen/XCore/trap.ll
Normal file
11
test/CodeGen/XCore/trap.ll
Normal file
@ -0,0 +1,11 @@
|
||||
; RUN: llvm-as < %s | llc -march=xcore > %t1.s
|
||||
; RUN: grep "ecallf" %t1.s | count 1
|
||||
; RUN: grep "ldc" %t1.s | count 1
|
||||
define i32 @test() noreturn nounwind {
|
||||
entry:
|
||||
tail call void @llvm.trap( )
|
||||
unreachable
|
||||
}
|
||||
|
||||
declare void @llvm.trap() nounwind
|
||||
|
Loading…
Reference in New Issue
Block a user