diff options
| author | Colin LeMahieu <colinl@codeaurora.org> | 2015-01-05 18:08:21 +0000 |
|---|---|---|
| committer | Colin LeMahieu <colinl@codeaurora.org> | 2015-01-05 18:08:21 +0000 |
| commit | 5e079577e12e4b709639f5a92bcbd3e04c93052b (patch) | |
| tree | 8f17b1deab5b3a91275c1f47ba81299bd96013dc /llvm/lib | |
| parent | 51477ad1a0c8fa45d21fafc15888ef2a513dbeab (diff) | |
| download | bcm5719-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.td | 7 | ||||
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td | 14 |
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)) |

