summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/patches/patch-r262415-llvm-r201994-sparc.diff
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/patches/patch-r262415-llvm-r201994-sparc.diff')
-rw-r--r--contrib/llvm/patches/patch-r262415-llvm-r201994-sparc.diff49
1 files changed, 49 insertions, 0 deletions
diff --git a/contrib/llvm/patches/patch-r262415-llvm-r201994-sparc.diff b/contrib/llvm/patches/patch-r262415-llvm-r201994-sparc.diff
new file mode 100644
index 0000000..4f9b916
--- /dev/null
+++ b/contrib/llvm/patches/patch-r262415-llvm-r201994-sparc.diff
@@ -0,0 +1,49 @@
+Pull in r201994 from upstream llvm trunk (by Benjamin Kramer):
+
+ SPARC: Implement TRAP lowering. Matches what GCC emits.
+
+Introduced here: http://svn.freebsd.org/changeset/base/262415
+
+Index: lib/Target/Sparc/SparcInstrInfo.td
+===================================================================
+--- lib/Target/Sparc/SparcInstrInfo.td
++++ lib/Target/Sparc/SparcInstrInfo.td
+@@ -312,6 +312,9 @@ let hasSideEffects = 1, mayStore = 1 in {
+ [(flushw)]>;
+ }
+
++let isBarrier = 1, isTerminator = 1, rd = 0b1000, rs1 = 0, simm13 = 5 in
++ def TA5 : F3_2<0b10, 0b111010, (outs), (ins), "ta 5", [(trap)]>;
++
+ let rd = 0 in
+ def UNIMP : F2_1<0b000, (outs), (ins i32imm:$val),
+ "unimp $val", []>;
+Index: lib/Target/Sparc/SparcISelLowering.cpp
+===================================================================
+--- lib/Target/Sparc/SparcISelLowering.cpp
++++ lib/Target/Sparc/SparcISelLowering.cpp
+@@ -1565,6 +1565,8 @@ SparcTargetLowering::SparcTargetLowering(TargetMac
+ // VAARG needs to be lowered to not do unaligned accesses for doubles.
+ setOperationAction(ISD::VAARG , MVT::Other, Custom);
+
++ setOperationAction(ISD::TRAP , MVT::Other, Legal);
++
+ // Use the default implementation.
+ setOperationAction(ISD::VACOPY , MVT::Other, Expand);
+ setOperationAction(ISD::VAEND , MVT::Other, Expand);
+Index: test/CodeGen/SPARC/trap.ll
+===================================================================
+--- test/CodeGen/SPARC/trap.ll
++++ test/CodeGen/SPARC/trap.ll
+@@ -0,0 +1,11 @@
++; RUN: llc -mtriple=sparc-linux-gnu < %s -show-mc-encoding | FileCheck %s
++
++define void @test1() {
++ tail call void @llvm.trap()
++ unreachable
++
++; CHECK-LABEL: test1:
++; CHECK: ta 5 ! encoding: [0x91,0xd0,0x20,0x05]
++}
++
++declare void @llvm.trap()
OpenPOWER on IntegriCloud