decoder.isa (3598:cf3d84886c9f) decoder.isa (3753:a95cd790181a)
1// Copyright (c) 2006 The Regents of The University of Michigan
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are
6// met: redistributions of source code must retain the above copyright
7// notice, this list of conditions and the following disclaimer;
8// redistributions in binary form must reproduce the above copyright

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

302 {{overflow || underflow}},
303 {{0}},
304 {{0}}
305 );
306 0x20: taddcc({{
307 int64_t resTemp, val2 = Rs2_or_imm13;
308 Rd = resTemp = Rs1 + val2;
309 int32_t overflow = Rs1<1:0> || val2<1:0> || (Rs1<31:> == val2<31:> && val2<31:> != resTemp<31:>);}},
1// Copyright (c) 2006 The Regents of The University of Michigan
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are
6// met: redistributions of source code must retain the above copyright
7// notice, this list of conditions and the following disclaimer;
8// redistributions in binary form must reproduce the above copyright

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

302 {{overflow || underflow}},
303 {{0}},
304 {{0}}
305 );
306 0x20: taddcc({{
307 int64_t resTemp, val2 = Rs2_or_imm13;
308 Rd = resTemp = Rs1 + val2;
309 int32_t overflow = Rs1<1:0> || val2<1:0> || (Rs1<31:> == val2<31:> && val2<31:> != resTemp<31:>);}},
310 {{((Rs1 & 0xFFFFFFFF + val2 & 0xFFFFFFFF) >> 31)}},
310 {{((Rs1<31:0> + val2<31:0>)<32:0>)}},
311 {{overflow}},
312 {{((Rs1 >> 1) + (val2 >> 1) + (Rs1 & val2 & 0x1))<63:>}},
313 {{Rs1<63:> == val2<63:> && val2<63:> != resTemp<63:>}}
314 );
315 0x21: tsubcc({{
316 int64_t resTemp, val2 = Rs2_or_imm13;
317 Rd = resTemp = Rs1 + val2;
318 int32_t overflow = Rs1<1:0> || val2<1:0> || (Rs1<31:> == val2<31:> && val2<31:> != resTemp<31:>);}},
311 {{overflow}},
312 {{((Rs1 >> 1) + (val2 >> 1) + (Rs1 & val2 & 0x1))<63:>}},
313 {{Rs1<63:> == val2<63:> && val2<63:> != resTemp<63:>}}
314 );
315 0x21: tsubcc({{
316 int64_t resTemp, val2 = Rs2_or_imm13;
317 Rd = resTemp = Rs1 + val2;
318 int32_t overflow = Rs1<1:0> || val2<1:0> || (Rs1<31:> == val2<31:> && val2<31:> != resTemp<31:>);}},
319 {{(Rs1 & 0xFFFFFFFF + val2 & 0xFFFFFFFF) >> 31}},
319 {{(Rs1<31:0> + val2<31:0>)<32:0>}},
320 {{overflow}},
321 {{((Rs1 >> 1) + (val2 >> 1) + (Rs1 & val2 & 0x1))<63:>}},
322 {{Rs1<63:> == val2<63:> && val2<63:> != resTemp<63:>}}
323 );
324 0x22: taddcctv({{
325 int64_t val2 = Rs2_or_imm13;
326 Rd = Rs1 + val2;
327 int32_t overflow = Rs1<1:0> || val2<1:0> ||
328 (Rs1<31:> == val2<31:> && val2<31:> != Rd<31:>);
329 if(overflow) fault = new TagOverflow;}},
320 {{overflow}},
321 {{((Rs1 >> 1) + (val2 >> 1) + (Rs1 & val2 & 0x1))<63:>}},
322 {{Rs1<63:> == val2<63:> && val2<63:> != resTemp<63:>}}
323 );
324 0x22: taddcctv({{
325 int64_t val2 = Rs2_or_imm13;
326 Rd = Rs1 + val2;
327 int32_t overflow = Rs1<1:0> || val2<1:0> ||
328 (Rs1<31:> == val2<31:> && val2<31:> != Rd<31:>);
329 if(overflow) fault = new TagOverflow;}},
330 {{((Rs1 & 0xFFFFFFFF + val2 & 0xFFFFFFFF) >> 31)}},
330 {{((Rs1<31:0> + val2<31:0>)<32:0>)}},
331 {{overflow}},
332 {{((Rs1 >> 1) + (val2 >> 1) + (Rs1 & val2 & 0x1))<63:>}},
333 {{Rs1<63:> == val2<63:> && val2<63:> != Rd<63:>}}
334 );
335 0x23: tsubcctv({{
336 int64_t resTemp, val2 = Rs2_or_imm13;
337 Rd = resTemp = Rs1 + val2;
338 int32_t overflow = Rs1<1:0> || val2<1:0> || (Rs1<31:> == val2<31:> && val2<31:> != resTemp<31:>);
339 if(overflow) fault = new TagOverflow;}},
331 {{overflow}},
332 {{((Rs1 >> 1) + (val2 >> 1) + (Rs1 & val2 & 0x1))<63:>}},
333 {{Rs1<63:> == val2<63:> && val2<63:> != Rd<63:>}}
334 );
335 0x23: tsubcctv({{
336 int64_t resTemp, val2 = Rs2_or_imm13;
337 Rd = resTemp = Rs1 + val2;
338 int32_t overflow = Rs1<1:0> || val2<1:0> || (Rs1<31:> == val2<31:> && val2<31:> != resTemp<31:>);
339 if(overflow) fault = new TagOverflow;}},
340 {{((Rs1 & 0xFFFFFFFF + val2 & 0xFFFFFFFF) >> 31)}},
340 {{((Rs1<31:0> + val2<31:0>)<32:0>)}},
341 {{overflow}},
342 {{((Rs1 >> 1) + (val2 >> 1) + (Rs1 & val2 & 0x1))<63:>}},
343 {{Rs1<63:> == val2<63:> && val2<63:> != resTemp<63:>}}
344 );
345 0x24: mulscc({{
346 int64_t resTemp, multiplicand = Rs2_or_imm13;
347 int32_t multiplier = Rs1<31:0>;
348 int32_t savedLSB = Rs1<0:>;
349 multiplier = multiplier<31:1> |
341 {{overflow}},
342 {{((Rs1 >> 1) + (val2 >> 1) + (Rs1 & val2 & 0x1))<63:>}},
343 {{Rs1<63:> == val2<63:> && val2<63:> != resTemp<63:>}}
344 );
345 0x24: mulscc({{
346 int64_t resTemp, multiplicand = Rs2_or_imm13;
347 int32_t multiplier = Rs1<31:0>;
348 int32_t savedLSB = Rs1<0:>;
349 multiplier = multiplier<31:1> |
350 ((Ccr<3:3>
351 ^ Ccr<1:1>) << 32);
350 ((Ccr<3:3> ^ Ccr<1:1>) << 32);
352 if(!Y<0:>)
353 multiplicand = 0;
354 Rd = resTemp = multiplicand + multiplier;
355 Y = Y<31:1> | (savedLSB << 31);}},
351 if(!Y<0:>)
352 multiplicand = 0;
353 Rd = resTemp = multiplicand + multiplier;
354 Y = Y<31:1> | (savedLSB << 31);}},
356 {{((multiplicand & 0xFFFFFFFF + multiplier & 0xFFFFFFFF) >> 31)}},
355 {{((multiplicand<31:0> + multiplier<31:0>)<32:0>)}},
357 {{multiplicand<31:> == multiplier<31:> && multiplier<31:> != resTemp<31:>}},
358 {{((multiplicand >> 1) + (multiplier >> 1) + (multiplicand & multiplier & 0x1))<63:>}},
359 {{multiplicand<63:> == multiplier<63:> && multiplier<63:> != resTemp<63:>}}
360 );
361 }
362 format IntOp
363 {
364 0x25: decode X {

--- 923 unchanged lines hidden ---
356 {{multiplicand<31:> == multiplier<31:> && multiplier<31:> != resTemp<31:>}},
357 {{((multiplicand >> 1) + (multiplier >> 1) + (multiplicand & multiplier & 0x1))<63:>}},
358 {{multiplicand<63:> == multiplier<63:> && multiplier<63:> != resTemp<63:>}}
359 );
360 }
361 format IntOp
362 {
363 0x25: decode X {

--- 923 unchanged lines hidden ---