diff options
author | Petar Avramovic <Petar.Avramovic@rt-rk.com> | 2019-09-05 11:16:37 +0000 |
---|---|---|
committer | Petar Avramovic <Petar.Avramovic@rt-rk.com> | 2019-09-05 11:16:37 +0000 |
commit | f5c7fe0795c8f2de8ee2c9fe6e8fbd89e1cf8bff (patch) | |
tree | ca8e1e66c61b9a6dc80c89f9f5e2e098a34605ed /llvm/lib | |
parent | d2574d79b64db47051f0ea19de184218302e322a (diff) | |
download | bcm5719-llvm-f5c7fe0795c8f2de8ee2c9fe6e8fbd89e1cf8bff.tar.gz bcm5719-llvm-f5c7fe0795c8f2de8ee2c9fe6e8fbd89e1cf8bff.zip |
[MIPS GlobalISel] Select llvm.trap intrinsic
Select G_INTRINSIC_W_SIDE_EFFECTS for Intrinsic::trap for MIPS32
via legalizeIntrinsic.
Differential Revision: https://reviews.llvm.org/D67180
llvm-svn: 371055
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/Mips/MipsLegalizerInfo.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/llvm/lib/Target/Mips/MipsLegalizerInfo.cpp b/llvm/lib/Target/Mips/MipsLegalizerInfo.cpp index d4de79c10a2..80a24a3ab42 100644 --- a/llvm/lib/Target/Mips/MipsLegalizerInfo.cpp +++ b/llvm/lib/Target/Mips/MipsLegalizerInfo.cpp @@ -219,8 +219,16 @@ bool MipsLegalizerInfo::legalizeCustom(MachineInstr &MI, return true; } -bool MipsLegalizerInfo::legalizeIntrinsic(MachineInstr &MI, MachineRegisterInfo &MRI, +bool MipsLegalizerInfo::legalizeIntrinsic(MachineInstr &MI, + MachineRegisterInfo &MRI, MachineIRBuilder &MIRBuilder) const { + const MipsSubtarget &ST = + static_cast<const MipsSubtarget &>(MI.getMF()->getSubtarget()); + const MipsInstrInfo &TII = *ST.getInstrInfo(); + const MipsRegisterInfo &TRI = *ST.getRegisterInfo(); + const RegisterBankInfo &RBI = *ST.getRegBankInfo(); + MIRBuilder.setInstr(MI); + switch (MI.getIntrinsicID()) { case Intrinsic::memcpy: case Intrinsic::memset: @@ -230,6 +238,11 @@ bool MipsLegalizerInfo::legalizeIntrinsic(MachineInstr &MI, MachineRegisterInfo return false; MI.eraseFromParent(); return true; + case Intrinsic::trap: { + MachineInstr *Trap = MIRBuilder.buildInstr(Mips::TRAP); + MI.eraseFromParent(); + return constrainSelectedInstRegOperands(*Trap, TII, TRI, RBI); + } default: break; } |