diff options
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)) |

