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