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<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:>);}}, |
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;}}, |
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;}}, |
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> | |
350 ((Ccr<3:3> ^ Ccr<1:1>) << 32); |
351 if(!Y<0:>) 352 multiplicand = 0; 353 Rd = resTemp = multiplicand + multiplier; 354 Y = Y<31:1> | (savedLSB << 31);}}, |
355 {{((multiplicand<31:0> + multiplier<31:0>)<32:0>)}}, |
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 --- |