arm.isa (7134:60fe8a00b36e) | arm.isa (7139:20b265c1515f) |
---|---|
1// -*- mode:c++ -*- 2 3// Copyright (c) 2010 ARM Limited 4// All rights reserved 5// 6// The license below extends only to copyright in the software and shall 7// not be construed as granting a license to any other intellectual 8// property including but not limited to intellectual property relating --- 79 unchanged lines hidden (view full) --- 88 0x14: WarnUnimpl::swpb(); 89 0x18: WarnUnimpl::strex(); 90 0x19: WarnUnimpl::ldrex(); 91 } 92 } 93 0xb, 0xd, 0xf: AddrMode3::addrMode3(); 94 } 95 0: decode IS_MISC { | 1// -*- mode:c++ -*- 2 3// Copyright (c) 2010 ARM Limited 4// All rights reserved 5// 6// The license below extends only to copyright in the software and shall 7// not be construed as granting a license to any other intellectual 8// property including but not limited to intellectual property relating --- 79 unchanged lines hidden (view full) --- 88 0x14: WarnUnimpl::swpb(); 89 0x18: WarnUnimpl::strex(); 90 0x19: WarnUnimpl::ldrex(); 91 } 92 } 93 0xb, 0xd, 0xf: AddrMode3::addrMode3(); 94 } 95 0: decode IS_MISC { |
96 0: decode OPCODE { 97 0x0: and({{ Rd = resTemp = Rn & op2; }}); 98 0x1: eor({{ Rd = resTemp = Rn ^ op2; }}); 99 0x2: sub({{ Rd = resTemp = Rn - op2; }}, sub); 100 0x3: rsb({{ Rd = resTemp = op2 - Rn; }}, rsb); 101 0x4: add({{ Rd = resTemp = Rn + op2; }}, add); 102 0x5: adc({{ Rd = resTemp = Rn + op2 + CondCodes<29:>; }}, add); 103 0x6: sbc({{ Rd = resTemp = Rn - op2 - !CondCodes<29:>; }}, sub); 104 0x7: rsc({{ Rd = resTemp = op2 - Rn - !CondCodes<29:>; }}, rsb); 105 0x8: tst({{ resTemp = Rn & op2; }}); 106 0x9: teq({{ resTemp = Rn ^ op2; }}); 107 0xa: cmp({{ resTemp = Rn - op2; }}, sub); 108 0xb: cmn({{ resTemp = Rn + op2; }}, add); 109 0xc: orr({{ Rd = resTemp = Rn | op2; }}); 110 0xd: mov({{ Rd = resTemp = op2; }}); 111 0xe: bic({{ Rd = resTemp = Rn & ~op2; }}); 112 0xf: mvn({{ Rd = resTemp = ~op2; }}); 113 } | 96 0: ArmDataProcReg::armDataProcReg(); |
114 1: decode MISC_OPCODE { 115 0x0: decode OPCODE { 116 0x8: PredOp::mrs_cpsr({{ 117 Rd = (Cpsr | CondCodes) & 0xF8FF03DF; 118 }}); 119 0x9: decode USEIMM { 120 // The mask field is the same as the RN index. 121 0: PredOp::msr_cpsr_reg({{ --- 68 unchanged lines hidden (view full) --- 190 }}, none); 191 0xa: WarnUnimpl::smlaltt(); 192 0xb: smultt({{ Rn = resTemp = sext<16>(Rm<31:16>) * sext<16>(Rs<31:16>); }}, none); 193 } 194 } 195 } 196 } 197 0x1: decode IS_MISC { | 97 1: decode MISC_OPCODE { 98 0x0: decode OPCODE { 99 0x8: PredOp::mrs_cpsr({{ 100 Rd = (Cpsr | CondCodes) & 0xF8FF03DF; 101 }}); 102 0x9: decode USEIMM { 103 // The mask field is the same as the RN index. 104 0: PredOp::msr_cpsr_reg({{ --- 68 unchanged lines hidden (view full) --- 173 }}, none); 174 0xa: WarnUnimpl::smlaltt(); 175 0xb: smultt({{ Rn = resTemp = sext<16>(Rm<31:16>) * sext<16>(Rs<31:16>); }}, none); 176 } 177 } 178 } 179 } 180 0x1: decode IS_MISC { |
198 0: decode OPCODE { 199 format DataImmOp { 200 0x0: andi({{ Rd = resTemp = Rn & rotated_imm; }}); 201 0x1: eori({{ Rd = resTemp = Rn ^ rotated_imm; }}); 202 0x2: subi({{ Rd = resTemp = Rn - rotated_imm; }}, sub); 203 0x3: rsbi({{ Rd = resTemp = rotated_imm - Rn; }}, rsb); 204 0x4: addi({{ Rd = resTemp = Rn + rotated_imm; }}, add); 205 0x5: adci({{ 206 Rd = resTemp = Rn + rotated_imm + CondCodes<29:>; 207 }}, add); 208 0x6: sbci({{ 209 Rd = resTemp = Rn -rotated_imm - !CondCodes<29:>; 210 }}, sub); 211 0x7: rsci({{ 212 Rd = resTemp = rotated_imm - Rn - !CondCodes<29:>; 213 }}, rsb); 214 0x8: tsti({{ resTemp = Rn & rotated_imm; }}); 215 0x9: teqi({{ resTemp = Rn ^ rotated_imm; }}); 216 0xa: cmpi({{ resTemp = Rn - rotated_imm; }}, sub); 217 0xb: cmni({{ resTemp = Rn + rotated_imm; }}, add); 218 0xc: orri({{ Rd = resTemp = Rn | rotated_imm; }}); 219 0xd: movi({{ Rd = resTemp = rotated_imm; }}); 220 0xe: bici({{ Rd = resTemp = Rn & ~rotated_imm; }}); 221 0xf: mvni({{ Rd = resTemp = ~rotated_imm; }}); 222 } 223 } | 181 0: ArmDataProcImm::armDataProcImm(); |
224 1: decode OPCODE { 225 // The following two instructions aren't supposed to be defined 226 0x8: DataOp::movw({{ Rd = IMMED_11_0 | (RN << 12) ; }}); 227 0x9: decode RN { 228 0: decode IMM { 229 0: PredImmOp::nop({{ ; }}); 230 1: WarnUnimpl::yield(); 231 2: WarnUnimpl::wfe(); --- 202 unchanged lines hidden --- | 182 1: decode OPCODE { 183 // The following two instructions aren't supposed to be defined 184 0x8: DataOp::movw({{ Rd = IMMED_11_0 | (RN << 12) ; }}); 185 0x9: decode RN { 186 0: decode IMM { 187 0: PredImmOp::nop({{ ; }}); 188 1: WarnUnimpl::yield(); 189 2: WarnUnimpl::wfe(); --- 202 unchanged lines hidden --- |