branch64.hh (10037:5cac77888310) | branch64.hh (12616:4b463b4dc098) |
---|---|
1/* 2 * Copyright (c) 2011-2013 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 41 unchanged lines hidden (view full) --- 50 int64_t imm; 51 52 public: 53 BranchImm64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 54 int64_t _imm) : 55 ArmStaticInst(mnem, _machInst, __opClass), imm(_imm) 56 {} 57 | 1/* 2 * Copyright (c) 2011-2013 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 41 unchanged lines hidden (view full) --- 50 int64_t imm; 51 52 public: 53 BranchImm64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 54 int64_t _imm) : 55 ArmStaticInst(mnem, _machInst, __opClass), imm(_imm) 56 {} 57 |
58 ArmISA::PCState branchTarget(const ArmISA::PCState &branchPC) const; | 58 ArmISA::PCState branchTarget( 59 const ArmISA::PCState &branchPC) const override; |
59 60 /// Explicitly import the otherwise hidden branchTarget 61 using StaticInst::branchTarget; 62 | 60 61 /// Explicitly import the otherwise hidden branchTarget 62 using StaticInst::branchTarget; 63 |
63 std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; | 64 std::string generateDisassembly( 65 Addr pc, const SymbolTable *symtab) const override; |
64}; 65 66// Conditionally Branch to a target computed with an immediate 67class BranchImmCond64 : public BranchImm64 68{ 69 protected: 70 ConditionCode condCode; 71 72 public: 73 BranchImmCond64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 74 int64_t _imm, ConditionCode _condCode) : 75 BranchImm64(mnem, _machInst, __opClass, _imm), condCode(_condCode) 76 {} 77 | 66}; 67 68// Conditionally Branch to a target computed with an immediate 69class BranchImmCond64 : public BranchImm64 70{ 71 protected: 72 ConditionCode condCode; 73 74 public: 75 BranchImmCond64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 76 int64_t _imm, ConditionCode _condCode) : 77 BranchImm64(mnem, _machInst, __opClass, _imm), condCode(_condCode) 78 {} 79 |
78 std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; | 80 std::string generateDisassembly( 81 Addr pc, const SymbolTable *symtab) const override; |
79}; 80 81// Branch to a target computed with a register 82class BranchReg64 : public ArmStaticInst 83{ 84 protected: 85 IntRegIndex op1; 86 87 public: 88 BranchReg64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 89 IntRegIndex _op1) : 90 ArmStaticInst(mnem, _machInst, __opClass), op1(_op1) 91 {} 92 | 82}; 83 84// Branch to a target computed with a register 85class BranchReg64 : public ArmStaticInst 86{ 87 protected: 88 IntRegIndex op1; 89 90 public: 91 BranchReg64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 92 IntRegIndex _op1) : 93 ArmStaticInst(mnem, _machInst, __opClass), op1(_op1) 94 {} 95 |
93 std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; | 96 std::string generateDisassembly( 97 Addr pc, const SymbolTable *symtab) const override; |
94}; 95 96// Ret instruction 97class BranchRet64 : public BranchReg64 98{ 99 public: 100 BranchRet64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 101 IntRegIndex _op1) : 102 BranchReg64(mnem, _machInst, __opClass, _op1) 103 {} 104 | 98}; 99 100// Ret instruction 101class BranchRet64 : public BranchReg64 102{ 103 public: 104 BranchRet64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 105 IntRegIndex _op1) : 106 BranchReg64(mnem, _machInst, __opClass, _op1) 107 {} 108 |
105 std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; | 109 std::string generateDisassembly( 110 Addr pc, const SymbolTable *symtab) const override; |
106}; 107 108// Eret instruction 109class BranchEret64 : public ArmStaticInst 110{ 111 public: 112 BranchEret64(const char *mnem, ExtMachInst _machInst, OpClass __opClass) : 113 ArmStaticInst(mnem, _machInst, __opClass) 114 {} 115 | 111}; 112 113// Eret instruction 114class BranchEret64 : public ArmStaticInst 115{ 116 public: 117 BranchEret64(const char *mnem, ExtMachInst _machInst, OpClass __opClass) : 118 ArmStaticInst(mnem, _machInst, __opClass) 119 {} 120 |
116 std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; | 121 std::string generateDisassembly( 122 Addr pc, const SymbolTable *symtab) const override; |
117}; 118 119// Branch to a target computed with an immediate and a register 120class BranchImmReg64 : public ArmStaticInst 121{ 122 protected: 123 int64_t imm; 124 IntRegIndex op1; 125 126 public: 127 BranchImmReg64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 128 int64_t _imm, IntRegIndex _op1) : 129 ArmStaticInst(mnem, _machInst, __opClass), imm(_imm), op1(_op1) 130 {} 131 | 123}; 124 125// Branch to a target computed with an immediate and a register 126class BranchImmReg64 : public ArmStaticInst 127{ 128 protected: 129 int64_t imm; 130 IntRegIndex op1; 131 132 public: 133 BranchImmReg64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 134 int64_t _imm, IntRegIndex _op1) : 135 ArmStaticInst(mnem, _machInst, __opClass), imm(_imm), op1(_op1) 136 {} 137 |
132 ArmISA::PCState branchTarget(const ArmISA::PCState &branchPC) const; | 138 ArmISA::PCState branchTarget( 139 const ArmISA::PCState &branchPC) const override; |
133 134 /// Explicitly import the otherwise hidden branchTarget 135 using StaticInst::branchTarget; 136 | 140 141 /// Explicitly import the otherwise hidden branchTarget 142 using StaticInst::branchTarget; 143 |
137 std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; | 144 std::string generateDisassembly( 145 Addr pc, const SymbolTable *symtab) const override; |
138}; 139 140// Branch to a target computed with two immediates 141class BranchImmImmReg64 : public ArmStaticInst 142{ 143 protected: 144 int64_t imm1; 145 int64_t imm2; 146 IntRegIndex op1; 147 148 public: 149 BranchImmImmReg64(const char *mnem, ExtMachInst _machInst, 150 OpClass __opClass, int64_t _imm1, int64_t _imm2, 151 IntRegIndex _op1) : 152 ArmStaticInst(mnem, _machInst, __opClass), 153 imm1(_imm1), imm2(_imm2), op1(_op1) 154 {} 155 | 146}; 147 148// Branch to a target computed with two immediates 149class BranchImmImmReg64 : public ArmStaticInst 150{ 151 protected: 152 int64_t imm1; 153 int64_t imm2; 154 IntRegIndex op1; 155 156 public: 157 BranchImmImmReg64(const char *mnem, ExtMachInst _machInst, 158 OpClass __opClass, int64_t _imm1, int64_t _imm2, 159 IntRegIndex _op1) : 160 ArmStaticInst(mnem, _machInst, __opClass), 161 imm1(_imm1), imm2(_imm2), op1(_op1) 162 {} 163 |
156 ArmISA::PCState branchTarget(const ArmISA::PCState &branchPC) const; | 164 ArmISA::PCState branchTarget( 165 const ArmISA::PCState &branchPC) const override; |
157 158 /// Explicitly import the otherwise hidden branchTarget 159 using StaticInst::branchTarget; 160 | 166 167 /// Explicitly import the otherwise hidden branchTarget 168 using StaticInst::branchTarget; 169 |
161 std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; | 170 std::string generateDisassembly( 171 Addr pc, const SymbolTable *symtab) const override; |
162}; 163 164} 165 166#endif //__ARCH_ARM_INSTS_BRANCH_HH__ | 172}; 173 174} 175 176#endif //__ARCH_ARM_INSTS_BRANCH_HH__ |