data.isa (7201:253d16049184) data.isa (7210:10d2d0e1e39d)
1// Copyright (c) 2010 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

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

119 decode_block += '''
120 default:
121 return new Unknown(machInst);
122 }
123 }
124 '''
125}};
126
1// Copyright (c) 2010 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

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

119 decode_block += '''
120 default:
121 return new Unknown(machInst);
122 }
123 }
124 '''
125}};
126
127def format ArmPackUnpackSatReverse() {{
128 decode_block = '''
129 {
130 const uint32_t op1 = bits(machInst, 22, 20);
131 const uint32_t a = bits(machInst, 19, 16);
132 const uint32_t op2 = bits(machInst, 7, 5);
133 if (bits(op2, 0) == 0) {
134 if (op1 == 0) {
135 return new WarnUnimplemented("pkh", machInst);
136 } else if (bits(op1, 2, 1) == 1) {
137 return new WarnUnimplemented("ssat", machInst);
138 } else if (bits(op1, 2, 1) == 3) {
139 return new WarnUnimplemented("usat", machInst);
140 }
141 return new Unknown(machInst);
142 }
143 switch (op1) {
144 case 0x0:
145 if (op2 == 0x3) {
146 if (a == 0xf) {
147 return new WarnUnimplemented("sxtb16", machInst);
148 } else {
149 return new WarnUnimplemented("sxtab16", machInst);
150 }
151 } else if (op2 == 0x5) {
152 return new WarnUnimplemented("sel", machInst);
153 }
154 break;
155 case 0x2:
156 if (op2 == 0x1) {
157 return new WarnUnimplemented("ssat16", machInst);
158 } else if (op2 == 0x3) {
159 if (a == 0xf) {
160 return new WarnUnimplemented("sxtb", machInst);
161 } else {
162 return new WarnUnimplemented("sxtab", machInst);
163 }
164 }
165 break;
166 case 0x3:
167 if (op2 == 0x1) {
168 return new WarnUnimplemented("rev", machInst);
169 } else if (op2 == 0x3) {
170 if (a == 0xf) {
171 return new WarnUnimplemented("sxth", machInst);
172 } else {
173 return new WarnUnimplemented("sxtah", machInst);
174 }
175 } else if (op2 == 0x5) {
176 return new WarnUnimplemented("rev16", machInst);
177 }
178 break;
179 case 0x4:
180 if (op2 == 0x3) {
181 if (a == 0xf) {
182 return new WarnUnimplemented("uxtb16", machInst);
183 } else {
184 return new WarnUnimplemented("uxtab16", machInst);
185 }
186 }
187 break;
188 case 0x6:
189 if (op2 == 0x1) {
190 return new WarnUnimplemented("usat16", machInst);
191 } else if (op2 == 0x3) {
192 if (a == 0xf) {
193 return new WarnUnimplemented("uxtb", machInst);
194 } else {
195 return new WarnUnimplemented("uxtab", machInst);
196 }
197 }
198 break;
199 case 0x7:
200 if (op2 == 0x1) {
201 return new WarnUnimplemented("rbit", machInst);
202 } else if (op2 == 0x3) {
203 if (a == 0xf) {
204 return new WarnUnimplemented("uxth", machInst);
205 } else {
206 return new WarnUnimplemented("uxtah", machInst);
207 }
208 } else if (op2 == 0x5) {
209 return new WarnUnimplemented("revsh", machInst);
210 }
211 break;
212 }
213 return new Unknown(machInst);
214 }
215 '''
216}};
217
127def format ArmParallelAddSubtract() {{
128 decode_block='''
129 {
130 const uint32_t op1 = bits(machInst, 21, 20);
131 const uint32_t op2 = bits(machInst, 7, 5);
132 const IntRegIndex rn = (IntRegIndex)(uint32_t)bits(machInst, 19, 16);
133 const IntRegIndex rd = (IntRegIndex)(uint32_t)bits(machInst, 15, 12);
134 const IntRegIndex rm = (IntRegIndex)(uint32_t)bits(machInst, 3, 0);

--- 735 unchanged lines hidden ---
218def format ArmParallelAddSubtract() {{
219 decode_block='''
220 {
221 const uint32_t op1 = bits(machInst, 21, 20);
222 const uint32_t op2 = bits(machInst, 7, 5);
223 const IntRegIndex rn = (IntRegIndex)(uint32_t)bits(machInst, 19, 16);
224 const IntRegIndex rd = (IntRegIndex)(uint32_t)bits(machInst, 15, 12);
225 const IntRegIndex rm = (IntRegIndex)(uint32_t)bits(machInst, 3, 0);

--- 735 unchanged lines hidden ---