From 0ad37f13fcd28fc47386fdab4a2f7731aea9dfcc Mon Sep 17 00:00:00 2001
From: Peter Waegemann <waegemann@cs.fau.de>
Date: Fri, 15 Jul 2016 23:56:17 +0200
Subject: [PATCH] ARM: workaround to lower thumb pseudo loopbound instructions

---
 lib/Target/ARM/ARMInstrThumb.td | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/lib/Target/ARM/ARMInstrThumb.td b/lib/Target/ARM/ARMInstrThumb.td
index 73951854a1f..29b20b9446b 100644
--- a/lib/Target/ARM/ARMInstrThumb.td
+++ b/lib/Target/ARM/ARMInstrThumb.td
@@ -272,6 +272,20 @@ def tADJCALLSTACKDOWN :
 //def PSEUDO_LOOPBOUND : PseudoInst<(outs), (ins i32imm:$minv, i32imm:$maxv),
 //                          "#PSEUDO_LOOPBOUND", "[$minv,$maxv]",
 //                          [(loopbound (i32 imm:$minv), (i32 imm:$maxv))]>;
+//                          [(loopbound (i32 imm:$minv), (i32 imm:$maxv))]>;
+//
+// thumb pseudo instructions: tPseudoInst
+//def PSEUDO_LOOPBOUND : tPseudoInst<(outs), (ins i32imm:$minv, i32imm:$maxv),
+//                          "#PSEUDO_LOOPBOUND", "[$minv,$maxv]">
+//                          [(loopbound (i32 imm:$minv), (i32 imm:$maxv))]>;
+
+// let isReMaterializable = 1 in
+def PSEUDO_LOOPBOUND : PseudoInst<(outs), (ins i32imm:$minv, i32imm:$maxv),
+                             NoItinerary,
+               [(loopbound (i32 imm:$minv), (i32 imm:$maxv))]>,
+               Requires<[IsThumb, IsThumb1Only]>;
+
+
 
 class T1SystemEncoding<bits<8> opc>
   : T1Encoding<0b101111> {
-- 
GitLab