mult.isa (7196:80c72fc2063b) mult.isa (7228:09302e193402)
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

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

160 bits(resTemp, 31);
161 ''', "overflow")
162 buildMult4InstCc ("smlad", '''Reg0 = resTemp =
163 sext<16>(bits(Reg1, 31, 16)) *
164 sext<16>(bits(Reg2, 31, 16)) +
165 sext<16>(bits(Reg1, 15, 0)) *
166 sext<16>(bits(Reg2, 15, 0)) +
167 Reg3.sw;
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

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

160 bits(resTemp, 31);
161 ''', "overflow")
162 buildMult4InstCc ("smlad", '''Reg0 = resTemp =
163 sext<16>(bits(Reg1, 31, 16)) *
164 sext<16>(bits(Reg2, 31, 16)) +
165 sext<16>(bits(Reg1, 15, 0)) *
166 sext<16>(bits(Reg2, 15, 0)) +
167 Reg3.sw;
168 resTemp = bits(resTemp, 32) !=
169 bits(resTemp, 31);
168 ''', "overflow")
169 buildMult4InstCc ("smladx", '''Reg0 = resTemp =
170 sext<16>(bits(Reg1, 31, 16)) *
171 sext<16>(bits(Reg2, 15, 0)) +
172 sext<16>(bits(Reg1, 15, 0)) *
173 sext<16>(bits(Reg2, 31, 16)) +
174 Reg3.sw;
170 ''', "overflow")
171 buildMult4InstCc ("smladx", '''Reg0 = resTemp =
172 sext<16>(bits(Reg1, 31, 16)) *
173 sext<16>(bits(Reg2, 15, 0)) +
174 sext<16>(bits(Reg1, 15, 0)) *
175 sext<16>(bits(Reg2, 31, 16)) +
176 Reg3.sw;
177 resTemp = bits(resTemp, 32) !=
178 bits(resTemp, 31);
175 ''', "overflow")
176 buildMult4Inst ("smlal", '''resTemp = sext<32>(Reg2) * sext<32>(Reg3) +
177 (int64_t)((Reg1.ud << 32) | Reg0.ud);
178 Reg0.ud = (uint32_t)resTemp;
179 Reg1.ud = (uint32_t)(resTemp >> 32);
180 ''', "llbit")
181 buildMult4InstUnCc("smlalbb", '''resTemp = sext<16>(bits(Reg2, 15, 0)) *
182 sext<16>(bits(Reg3, 15, 0)) +

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

241 bits(resTemp, 31);
242 ''', "overflow")
243 buildMult4InstCc ("smlsd", '''Reg0 = resTemp =
244 sext<16>(bits(Reg1, 15, 0)) *
245 sext<16>(bits(Reg2, 15, 0)) -
246 sext<16>(bits(Reg1, 31, 16)) *
247 sext<16>(bits(Reg2, 31, 16)) +
248 Reg3.sw;
179 ''', "overflow")
180 buildMult4Inst ("smlal", '''resTemp = sext<32>(Reg2) * sext<32>(Reg3) +
181 (int64_t)((Reg1.ud << 32) | Reg0.ud);
182 Reg0.ud = (uint32_t)resTemp;
183 Reg1.ud = (uint32_t)(resTemp >> 32);
184 ''', "llbit")
185 buildMult4InstUnCc("smlalbb", '''resTemp = sext<16>(bits(Reg2, 15, 0)) *
186 sext<16>(bits(Reg3, 15, 0)) +

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

245 bits(resTemp, 31);
246 ''', "overflow")
247 buildMult4InstCc ("smlsd", '''Reg0 = resTemp =
248 sext<16>(bits(Reg1, 15, 0)) *
249 sext<16>(bits(Reg2, 15, 0)) -
250 sext<16>(bits(Reg1, 31, 16)) *
251 sext<16>(bits(Reg2, 31, 16)) +
252 Reg3.sw;
253 resTemp = bits(resTemp, 32) !=
254 bits(resTemp, 31);
249 ''', "overflow")
250 buildMult4InstCc ("smlsdx", '''Reg0 = resTemp =
251 sext<16>(bits(Reg1, 15, 0)) *
252 sext<16>(bits(Reg2, 31, 16)) -
253 sext<16>(bits(Reg1, 31, 16)) *
254 sext<16>(bits(Reg2, 15, 0)) +
255 Reg3.sw;
255 ''', "overflow")
256 buildMult4InstCc ("smlsdx", '''Reg0 = resTemp =
257 sext<16>(bits(Reg1, 15, 0)) *
258 sext<16>(bits(Reg2, 31, 16)) -
259 sext<16>(bits(Reg1, 31, 16)) *
260 sext<16>(bits(Reg2, 15, 0)) +
261 Reg3.sw;
262 resTemp = bits(resTemp, 32) !=
263 bits(resTemp, 31);
256 ''', "overflow")
257 buildMult4InstUnCc("smlsld", '''resTemp =
258 sext<16>(bits(Reg2, 15, 0)) *
259 sext<16>(bits(Reg3, 15, 0)) -
260 sext<16>(bits(Reg2, 31, 16)) *
261 sext<16>(bits(Reg3, 31, 16)) +
262 (int64_t)((Reg1.ud << 32) |
263 Reg0.ud);

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

301 (int64_t)Reg2 +
302 ULL(0x80000000)) >> 32;
303 ''')
304 buildMult3InstCc ("smuad", '''Reg0 = resTemp =
305 sext<16>(bits(Reg1, 15, 0)) *
306 sext<16>(bits(Reg2, 15, 0)) +
307 sext<16>(bits(Reg1, 31, 16)) *
308 sext<16>(bits(Reg2, 31, 16));
264 ''', "overflow")
265 buildMult4InstUnCc("smlsld", '''resTemp =
266 sext<16>(bits(Reg2, 15, 0)) *
267 sext<16>(bits(Reg3, 15, 0)) -
268 sext<16>(bits(Reg2, 31, 16)) *
269 sext<16>(bits(Reg3, 31, 16)) +
270 (int64_t)((Reg1.ud << 32) |
271 Reg0.ud);

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

309 (int64_t)Reg2 +
310 ULL(0x80000000)) >> 32;
311 ''')
312 buildMult3InstCc ("smuad", '''Reg0 = resTemp =
313 sext<16>(bits(Reg1, 15, 0)) *
314 sext<16>(bits(Reg2, 15, 0)) +
315 sext<16>(bits(Reg1, 31, 16)) *
316 sext<16>(bits(Reg2, 31, 16));
317 resTemp = bits(resTemp, 32) !=
318 bits(resTemp, 31);
309 ''', "overflow")
310 buildMult3InstCc ("smuadx", '''Reg0 = resTemp =
311 sext<16>(bits(Reg1, 15, 0)) *
312 sext<16>(bits(Reg2, 31, 16)) +
313 sext<16>(bits(Reg1, 31, 16)) *
314 sext<16>(bits(Reg2, 15, 0));
319 ''', "overflow")
320 buildMult3InstCc ("smuadx", '''Reg0 = resTemp =
321 sext<16>(bits(Reg1, 15, 0)) *
322 sext<16>(bits(Reg2, 31, 16)) +
323 sext<16>(bits(Reg1, 31, 16)) *
324 sext<16>(bits(Reg2, 15, 0));
325 resTemp = bits(resTemp, 32) !=
326 bits(resTemp, 31);
315 ''', "overflow")
316 buildMult3InstUnCc("smulbb", '''Reg0 = resTemp =
317 sext<16>(bits(Reg1, 15, 0)) *
318 sext<16>(bits(Reg2, 15, 0));
319 ''')
320 buildMult3InstUnCc("smulbt", '''Reg0 = resTemp =
321 sext<16>(bits(Reg1, 15, 0)) *
322 sext<16>(bits(Reg2, 31, 16));

--- 49 unchanged lines hidden ---
327 ''', "overflow")
328 buildMult3InstUnCc("smulbb", '''Reg0 = resTemp =
329 sext<16>(bits(Reg1, 15, 0)) *
330 sext<16>(bits(Reg2, 15, 0));
331 ''')
332 buildMult3InstUnCc("smulbt", '''Reg0 = resTemp =
333 sext<16>(bits(Reg1, 15, 0)) *
334 sext<16>(bits(Reg2, 31, 16));

--- 49 unchanged lines hidden ---