fp.isa (7178:7f0ac1abc621) fp.isa (7321:d0fdf3452086)
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

--- 193 unchanged lines hidden (view full) ---

202 } else if (bits(opcode, 1, 0) == 0x1) {
203 return new WarnUnimplemented("vldr", machInst);
204 }
205 }
206 return new Unknown(machInst);
207 }
208 '''
209}};
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

--- 193 unchanged lines hidden (view full) ---

202 } else if (bits(opcode, 1, 0) == 0x1) {
203 return new WarnUnimplemented("vldr", machInst);
204 }
205 }
206 return new Unknown(machInst);
207 }
208 '''
209}};
210
211def format ShortFpTransfer() {{
212 decode_block = '''
213 {
214 const uint32_t l = bits(machInst, 20);
215 const uint32_t c = bits(machInst, 8);
216 const uint32_t a = bits(machInst, 23, 21);
217 const uint32_t b = bits(machInst, 6, 5);
218 if ((machInst.thumb == 1 && bits(machInst, 28) == 1) ||
219 (machInst.thumb == 0 && machInst.condCode == 0xf)) {
220 return new Unknown(machInst);
221 }
222 if (l == 0 && c == 0) {
223 if (a == 0) {
224 // A8-648
225 return new WarnUnimplemented("vmov", machInst);
226 } else if (a == 0x7) {
227 // A8-660
228 // B6-29
229 return new WarnUnimplemented("vmsr", machInst);
230 }
231 } else if (l == 0 && c == 1) {
232 if (bits(a, 2) == 0) {
233 // A8-644
234 return new WarnUnimplemented("vmov", machInst);
235 } else if (bits(b, 1) == 0) {
236 // A8-594
237 return new WarnUnimplemented("vdup", machInst);
238 }
239 } else if (l == 1 && c == 0) {
240 if (a == 0) {
241 // A8-648
242 return new WarnUnimplemented("vmov", machInst);
243 } else if (a == 7) {
244 // A8-658
245 // B6-27
246 return new WarnUnimplemented("vmrs", machInst);
247 }
248 } else {
249 // A8-646
250 return new WarnUnimplemented("vmov", machInst);
251 }
252 return new Unknown(machInst);
253 }
254 '''
255}};