summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorSimon Dardis <simon.dardis@mips.com>2018-06-04 12:50:32 +0000
committerSimon Dardis <simon.dardis@mips.com>2018-06-04 12:50:32 +0000
commitfb4dde114228d8b889763fed422576125889cd29 (patch)
tree68cf208369f22ab70a431ff296e999a40c1d4874 /llvm
parent96f51f09d4ecc034ad5c3b4afa6887b0e18c1b65 (diff)
downloadbcm5719-llvm-fb4dde114228d8b889763fed422576125889cd29.tar.gz
bcm5719-llvm-fb4dde114228d8b889763fed422576125889cd29.zip
[mips] Restore the availablity of trap for microMIPS
Reviewers: smaksimovic, atanasyan, abeserminji Differential Revision: https://reviews.llvm.org/D47584 llvm-svn: 333895
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/Mips/MicroMipsInstrInfo.td1
-rw-r--r--llvm/test/CodeGen/Mips/llvm-ir/trap.ll34
2 files changed, 35 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/MicroMipsInstrInfo.td b/llvm/lib/Target/Mips/MicroMipsInstrInfo.td
index c645c1d3131..3c70db6a092 100644
--- a/llvm/lib/Target/Mips/MicroMipsInstrInfo.td
+++ b/llvm/lib/Target/Mips/MicroMipsInstrInfo.td
@@ -1024,6 +1024,7 @@ let DecoderNamespace = "MicroMips" in {
ISA_MICROMIPS;
def DI_MM : MMRel, DEI_FT<"di", GPR32Opnd, II_DI>, EI_FM_MM<0x11d>,
ISA_MICROMIPS;
+ def TRAP_MM : TrapBase<BREAK_MM>, ISA_MICROMIPS;
/// Trap Instructions
def TEQ_MM : MMRel, TEQ_FT<"teq", GPR32Opnd, uimm4, II_TEQ>, TEQ_FM_MM<0x0>,
diff --git a/llvm/test/CodeGen/Mips/llvm-ir/trap.ll b/llvm/test/CodeGen/Mips/llvm-ir/trap.ll
new file mode 100644
index 00000000000..f9096b9a4bb
--- /dev/null
+++ b/llvm/test/CodeGen/Mips/llvm-ir/trap.ll
@@ -0,0 +1,34 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc -mtriple=mips-mti-linux-gnu < %s --show-mc-encoding | FileCheck %s --check-prefix=MTI
+; RUN: llc -mtriple=mips-mti-linux-gnu -mattr=+micromips < %s --show-mc-encoding | FileCheck %s --check-prefix=MM
+; RUN: llc -mtriple=mips-img-linux-gnu < %s --show-mc-encoding | FileCheck %s --check-prefix=IMG
+; RUN: llc -mtriple=mips-img-linux-gnu -mattr=+micromips < %s --show-mc-encoding | FileCheck %s --check-prefix=MMR6
+
+define void @test() noreturn nounwind {
+; MTI-LABEL: test:
+; MTI: # %bb.0: # %entry
+; MTI-NEXT: break # encoding: [0x00,0x00,0x00,0x0d]
+; MTI-NEXT: jr $ra # encoding: [0x03,0xe0,0x00,0x08]
+; MTI-NEXT: nop # encoding: [0x00,0x00,0x00,0x00]
+;
+; MM-LABEL: test:
+; MM: # %bb.0: # %entry
+; MM-NEXT: break # encoding: [0x00,0x00,0x00,0x07]
+; MM-NEXT: jrc $ra # encoding: [0x45,0xbf]
+;
+; IMG-LABEL: test:
+; IMG: # %bb.0: # %entry
+; IMG-NEXT: break # encoding: [0x00,0x00,0x00,0x0d]
+; IMG-NEXT: jr $ra # encoding: [0x03,0xe0,0x00,0x08]
+; IMG-NEXT: nop # encoding: [0x00,0x00,0x00,0x00]
+;
+; MMR6-LABEL: test:
+; MMR6: # %bb.0: # %entry
+; MMR6-NEXT: break # encoding: [0x00,0x00,0x00,0x07]
+; MMR6-NEXT: jrc $ra # encoding: [0x45,0xbf]
+entry:
+ tail call void @llvm.trap( )
+ ret void
+}
+
+declare void @llvm.trap() nounwind
OpenPOWER on IntegriCloud