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(); |
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(); |
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 --- |