summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorColin LeMahieu <colinl@codeaurora.org>2015-01-05 18:08:21 +0000
committerColin LeMahieu <colinl@codeaurora.org>2015-01-05 18:08:21 +0000
commit5e079577e12e4b709639f5a92bcbd3e04c93052b (patch)
tree8f17b1deab5b3a91275c1f47ba81299bd96013dc /llvm/lib
parent51477ad1a0c8fa45d21fafc15888ef2a513dbeab (diff)
downloadbcm5719-llvm-5e079577e12e4b709639f5a92bcbd3e04c93052b.tar.gz
bcm5719-llvm-5e079577e12e4b709639f5a92bcbd3e04c93052b.zip
[Hexagon] Adding round reg/imm and bitsplit instructions.
llvm-svn: 225188
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonInstrInfo.td7
-rw-r--r--llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td14
2 files changed, 21 insertions, 0 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonInstrInfo.td b/llvm/lib/Target/Hexagon/HexagonInstrInfo.td
index d73adc66b5c..7ce65f345ca 100644
--- a/llvm/lib/Target/Hexagon/HexagonInstrInfo.td
+++ b/llvm/lib/Target/Hexagon/HexagonInstrInfo.td
@@ -3220,6 +3220,13 @@ class T_S2op_2 <string mnemonic, bits<4> RegTyBits, RegisterClass RCOut,
let Inst{7-5} = MinOp;
let Inst{4-0} = dst;
}
+
+class T_S2op_2_di <string mnemonic, bits<3> MajOp, bits<3> MinOp>
+ : T_S2op_2 <mnemonic, 0b1000, DoubleRegs, IntRegs, MajOp, MinOp, 0, 0>;
+
+let hasNewValue = 1 in
+class T_S2op_2_id <string mnemonic, bits<3> MajOp, bits<3> MinOp>
+ : T_S2op_2 <mnemonic, 0b1000, IntRegs, DoubleRegs, MajOp, MinOp, 0, 0>;
let hasNewValue = 1 in
class T_S2op_2_ii <string mnemonic, bits<3> MajOp, bits<3> MinOp,
diff --git a/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td b/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td
index 07892edc3ea..6892b5c9bf8 100644
--- a/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td
+++ b/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td
@@ -1747,6 +1747,20 @@ def M4_xor_xacc
let Inst{12-8} = Rtt;
let Inst{4-0} = Rxx;
}
+
+// Split bitfield
+let isCodeGenOnly = 0 in
+def A4_bitspliti : T_S2op_2_di <"bitsplit", 0b110, 0b100>;
+
+// Arithmetic/Convergent round
+let isCodeGenOnly = 0 in
+def A4_cround_ri : T_S2op_2_ii <"cround", 0b111, 0b000>;
+
+let isCodeGenOnly = 0 in
+def A4_round_ri : T_S2op_2_ii <"round", 0b111, 0b100>;
+
+let Defs = [USR_OVF], isCodeGenOnly = 0 in
+def A4_round_ri_sat : T_S2op_2_ii <"round", 0b111, 0b110, 1>;
// Add and accumulate.
// Rd=add(Rs,add(Ru,#s6))
OpenPOWER on IntegriCloud