mult.isa (8520:f9a495adafd9) mult.isa (12595:b5a51007feac)
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

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

82 return new Smull(machInst, ra, rd, rn, rm);
83 }
84 case 0x7:
85 if (s) {
86 return new SmlalCc(machInst, ra, rd, rn, rm);
87 } else {
88 return new Smlal(machInst, ra, rd, rn, rm);
89 }
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

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

82 return new Smull(machInst, ra, rd, rn, rm);
83 }
84 case 0x7:
85 if (s) {
86 return new SmlalCc(machInst, ra, rd, rn, rm);
87 } else {
88 return new Smlal(machInst, ra, rd, rn, rm);
89 }
90 default:
91 M5_UNREACHABLE;
90 }
91 }
92 '''
93}};
94
95def format ArmHalfWordMultAndMultAcc() {{
96 decode_block = '''
97 {

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

107 case 0x0:
108 return new SmlabbCc(machInst, rd, rn, rm, ra);
109 case 0x1:
110 return new SmlatbCc(machInst, rd, rn, rm, ra);
111 case 0x2:
112 return new SmlabtCc(machInst, rd, rn, rm, ra);
113 case 0x3:
114 return new SmlattCc(machInst, rd, rn, rm, ra);
92 }
93 }
94 '''
95}};
96
97def format ArmHalfWordMultAndMultAcc() {{
98 decode_block = '''
99 {

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

109 case 0x0:
110 return new SmlabbCc(machInst, rd, rn, rm, ra);
111 case 0x1:
112 return new SmlatbCc(machInst, rd, rn, rm, ra);
113 case 0x2:
114 return new SmlabtCc(machInst, rd, rn, rm, ra);
115 case 0x3:
116 return new SmlattCc(machInst, rd, rn, rm, ra);
117 default:
118 M5_UNREACHABLE;
115 }
116 case 0x1:
117 if (op) {
118 if (bits(machInst, 6)) {
119 return new Smulwt(machInst, rd, rn, rm);
120 } else {
121 return new Smulwb(machInst, rd, rn, rm);
122 }

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

132 case 0x0:
133 return new Smlalbb(machInst, ra, rd, rn, rm);
134 case 0x1:
135 return new Smlaltb(machInst, ra, rd, rn, rm);
136 case 0x2:
137 return new Smlalbt(machInst, ra, rd, rn, rm);
138 case 0x3:
139 return new Smlaltt(machInst, ra, rd, rn, rm);
119 }
120 case 0x1:
121 if (op) {
122 if (bits(machInst, 6)) {
123 return new Smulwt(machInst, rd, rn, rm);
124 } else {
125 return new Smulwb(machInst, rd, rn, rm);
126 }

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

136 case 0x0:
137 return new Smlalbb(machInst, ra, rd, rn, rm);
138 case 0x1:
139 return new Smlaltb(machInst, ra, rd, rn, rm);
140 case 0x2:
141 return new Smlalbt(machInst, ra, rd, rn, rm);
142 case 0x3:
143 return new Smlaltt(machInst, ra, rd, rn, rm);
144 default:
145 M5_UNREACHABLE;
140 }
141 case 0x3:
142 switch (bits(machInst, 6, 5)) {
143 case 0x0:
144 return new Smulbb(machInst, rd, rn, rm);
145 case 0x1:
146 return new Smultb(machInst, rd, rn, rm);
147 case 0x2:
148 return new Smulbt(machInst, rd, rn, rm);
149 case 0x3:
150 return new Smultt(machInst, rd, rn, rm);
146 }
147 case 0x3:
148 switch (bits(machInst, 6, 5)) {
149 case 0x0:
150 return new Smulbb(machInst, rd, rn, rm);
151 case 0x1:
152 return new Smultb(machInst, rd, rn, rm);
153 case 0x2:
154 return new Smulbt(machInst, rd, rn, rm);
155 case 0x3:
156 return new Smultt(machInst, rd, rn, rm);
157 default:
158 M5_UNREACHABLE;
151 }
159 }
160 default:
161 M5_UNREACHABLE;
152 }
153 }
154 '''
155}};
156
157def format Thumb32MulMulAccAndAbsDiff() {{
158 decode_block = '''
159 {

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

196 case 0x1:
197 return new SmlabtCc(machInst, rd, rn, rm, ra);
198 case 0x2:
199 return new SmlatbCc(machInst, rd, rn, rm, ra);
200 case 0x3:
201 return new SmlattCc(machInst, rd, rn, rm, ra);
202 }
203 }
162 }
163 }
164 '''
165}};
166
167def format Thumb32MulMulAccAndAbsDiff() {{
168 decode_block = '''
169 {

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

206 case 0x1:
207 return new SmlabtCc(machInst, rd, rn, rm, ra);
208 case 0x2:
209 return new SmlatbCc(machInst, rd, rn, rm, ra);
210 case 0x3:
211 return new SmlattCc(machInst, rd, rn, rm, ra);
212 }
213 }
214 M5_UNREACHABLE;
204 case 0x2:
205 if (ra == 0xf) {
206 if (bits(machInst, 4)) {
207 return new SmuadxCc(machInst, rd, rn, rm);
208 } else {
209 return new SmuadCc(machInst, rd, rn, rm);
210 }
211 } else {

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

266 case 0x7:
267 if (op2 != 0x0) {
268 return new Unknown(machInst);
269 } else if (ra == 0xf) {
270 return new Usad8(machInst, rd, rn, rm);
271 } else {
272 return new Usada8(machInst, rd, rn, rm, ra);
273 }
215 case 0x2:
216 if (ra == 0xf) {
217 if (bits(machInst, 4)) {
218 return new SmuadxCc(machInst, rd, rn, rm);
219 } else {
220 return new SmuadCc(machInst, rd, rn, rm);
221 }
222 } else {

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

277 case 0x7:
278 if (op2 != 0x0) {
279 return new Unknown(machInst);
280 } else if (ra == 0xf) {
281 return new Usad8(machInst, rd, rn, rm);
282 } else {
283 return new Usada8(machInst, rd, rn, rm, ra);
284 }
285 default:
286 M5_UNREACHABLE;
274 }
275 }
276 '''
277}};
278
279def format Thumb32LongMulMulAccAndDiv() {{
280 decode_block = '''
281 {

--- 170 unchanged lines hidden ---
287 }
288 }
289 '''
290}};
291
292def format Thumb32LongMulMulAccAndDiv() {{
293 decode_block = '''
294 {

--- 170 unchanged lines hidden ---