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 ---