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 --- |