neon64.isa (10037:5cac77888310) neon64.isa (11165:d90aec9435bd)
1// Copyright (c) 2012-2013 ARM Limited
2// All rights reserved
3//
4// The license below extends only to copyright in the software and shall
5// not be construed as granting a license to any other intellectual
6// property including but not limited to intellectual property relating
7// to a hardware implementation of the functionality of the software
8// licensed hereunder. You may use the software subject to the license

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

35//
36// Authors: Giacomo Gabrielli
37// Mbou Eyole
38
39output header {{
40namespace Aarch64
41{
42 // AdvSIMD three same
1// Copyright (c) 2012-2013 ARM Limited
2// All rights reserved
3//
4// The license below extends only to copyright in the software and shall
5// not be construed as granting a license to any other intellectual
6// property including but not limited to intellectual property relating
7// to a hardware implementation of the functionality of the software
8// licensed hereunder. You may use the software subject to the license

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

35//
36// Authors: Giacomo Gabrielli
37// Mbou Eyole
38
39output header {{
40namespace Aarch64
41{
42 // AdvSIMD three same
43 template <typename DecoderFeatures>
43 StaticInstPtr decodeNeon3Same(ExtMachInst machInst);
44 // AdvSIMD three different
44 StaticInstPtr decodeNeon3Same(ExtMachInst machInst);
45 // AdvSIMD three different
45 StaticInstPtr decodeNeon3Diff(ExtMachInst machInst);
46 inline StaticInstPtr decodeNeon3Diff(ExtMachInst machInst);
46 // AdvSIMD two-reg misc
47 // AdvSIMD two-reg misc
47 StaticInstPtr decodeNeon2RegMisc(ExtMachInst machInst);
48 inline StaticInstPtr decodeNeon2RegMisc(ExtMachInst machInst);
48 // AdvSIMD across lanes
49 // AdvSIMD across lanes
49 StaticInstPtr decodeNeonAcrossLanes(ExtMachInst machInst);
50 inline StaticInstPtr decodeNeonAcrossLanes(ExtMachInst machInst);
50 // AdvSIMD copy
51 // AdvSIMD copy
51 StaticInstPtr decodeNeonCopy(ExtMachInst machInst);
52 inline StaticInstPtr decodeNeonCopy(ExtMachInst machInst);
52 // AdvSIMD vector x indexed element
53 // AdvSIMD vector x indexed element
54 template <typename DecoderFeatures>
53 StaticInstPtr decodeNeonIndexedElem(ExtMachInst machInst);
54 // AdvSIMD modified immediate
55 StaticInstPtr decodeNeonIndexedElem(ExtMachInst machInst);
56 // AdvSIMD modified immediate
55 StaticInstPtr decodeNeonModImm(ExtMachInst machInst);
57 inline StaticInstPtr decodeNeonModImm(ExtMachInst machInst);
56 // AdvSIMD shift by immediate
58 // AdvSIMD shift by immediate
57 StaticInstPtr decodeNeonShiftByImm(ExtMachInst machInst);
59 inline StaticInstPtr decodeNeonShiftByImm(ExtMachInst machInst);
58 // AdvSIMD TBL/TBX
60 // AdvSIMD TBL/TBX
59 StaticInstPtr decodeNeonTblTbx(ExtMachInst machInst);
61 inline StaticInstPtr decodeNeonTblTbx(ExtMachInst machInst);
60 // AdvSIMD ZIP/UZP/TRN
62 // AdvSIMD ZIP/UZP/TRN
61 StaticInstPtr decodeNeonZipUzpTrn(ExtMachInst machInst);
63 inline StaticInstPtr decodeNeonZipUzpTrn(ExtMachInst machInst);
62 // AdvSIMD EXT
64 // AdvSIMD EXT
63 StaticInstPtr decodeNeonExt(ExtMachInst machInst);
65 inline StaticInstPtr decodeNeonExt(ExtMachInst machInst);
64
65 // AdvSIMD scalar three same
66
67 // AdvSIMD scalar three same
66 StaticInstPtr decodeNeonSc3Same(ExtMachInst machInst);
68 inline StaticInstPtr decodeNeonSc3Same(ExtMachInst machInst);
67 // AdvSIMD scalar three different
69 // AdvSIMD scalar three different
68 StaticInstPtr decodeNeonSc3Diff(ExtMachInst machInst);
70 inline StaticInstPtr decodeNeonSc3Diff(ExtMachInst machInst);
69 // AdvSIMD scalar two-reg misc
71 // AdvSIMD scalar two-reg misc
70 StaticInstPtr decodeNeonSc2RegMisc(ExtMachInst machInst);
72 inline StaticInstPtr decodeNeonSc2RegMisc(ExtMachInst machInst);
71 // AdvSIMD scalar pairwise
73 // AdvSIMD scalar pairwise
72 StaticInstPtr decodeNeonScPwise(ExtMachInst machInst);
74 inline StaticInstPtr decodeNeonScPwise(ExtMachInst machInst);
73 // AdvSIMD scalar copy
75 // AdvSIMD scalar copy
74 StaticInstPtr decodeNeonScCopy(ExtMachInst machInst);
76 inline StaticInstPtr decodeNeonScCopy(ExtMachInst machInst);
75 // AdvSIMD scalar x indexed element
77 // AdvSIMD scalar x indexed element
76 StaticInstPtr decodeNeonScIndexedElem(ExtMachInst machInst);
78 inline StaticInstPtr decodeNeonScIndexedElem(ExtMachInst machInst);
77 // AdvSIMD scalar shift by immediate
79 // AdvSIMD scalar shift by immediate
78 StaticInstPtr decodeNeonScShiftByImm(ExtMachInst machInst);
80 inline StaticInstPtr decodeNeonScShiftByImm(ExtMachInst machInst);
79
80 // AdvSIMD load/store
81
82 // AdvSIMD load/store
81 StaticInstPtr decodeNeonMem(ExtMachInst machInst);
83 inline StaticInstPtr decodeNeonMem(ExtMachInst machInst);
82}
83}};
84
85output decoder {{
86namespace Aarch64
87{
84}
85}};
86
87output decoder {{
88namespace Aarch64
89{
90 template <typename DecoderFeatures>
88 StaticInstPtr
89 decodeNeon3Same(ExtMachInst machInst)
90 {
91 uint8_t q = bits(machInst, 30);
92 uint8_t u = bits(machInst, 29);
93 uint8_t size = bits(machInst, 23, 22);
94 uint8_t opcode = bits(machInst, 15, 11);
95

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

1262 default:
1263 return new Unknown64(machInst);
1264 }
1265 default:
1266 return new Unknown64(machInst);
1267 }
1268 }
1269
91 StaticInstPtr
92 decodeNeon3Same(ExtMachInst machInst)
93 {
94 uint8_t q = bits(machInst, 30);
95 uint8_t u = bits(machInst, 29);
96 uint8_t size = bits(machInst, 23, 22);
97 uint8_t opcode = bits(machInst, 15, 11);
98

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

1265 default:
1266 return new Unknown64(machInst);
1267 }
1268 default:
1269 return new Unknown64(machInst);
1270 }
1271 }
1272
1273 template <typename DecoderFeatures>
1270 StaticInstPtr
1271 decodeNeonIndexedElem(ExtMachInst machInst)
1272 {
1273 uint8_t q = bits(machInst, 30);
1274 uint8_t u = bits(machInst, 29);
1275 uint8_t size = bits(machInst, 23, 22);
1276 uint8_t L = bits(machInst, 21);
1277 uint8_t M = bits(machInst, 20);

--- 1349 unchanged lines hidden ---
1274 StaticInstPtr
1275 decodeNeonIndexedElem(ExtMachInst machInst)
1276 {
1277 uint8_t q = bits(machInst, 30);
1278 uint8_t u = bits(machInst, 29);
1279 uint8_t size = bits(machInst, 23, 22);
1280 uint8_t L = bits(machInst, 21);
1281 uint8_t M = bits(machInst, 20);

--- 1349 unchanged lines hidden ---