data.isa (7217:34621fef50c5) data.isa (7219:0c995c5f8245)
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

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

423 replaceBits(resTemp, high, low, midRes);
424 if (midRes >= 0) {
425 geBits = geBits | (0x3 << (i * 2));
426 }
427 }
428 Dest = resTemp;
429 resTemp = geBits;
430 ''', flagType="ge", buildNonCc=False)
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

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

423 replaceBits(resTemp, high, low, midRes);
424 if (midRes >= 0) {
425 geBits = geBits | (0x3 << (i * 2));
426 }
427 }
428 Dest = resTemp;
429 resTemp = geBits;
430 ''', flagType="ge", buildNonCc=False)
431
432 buildRegDataInst("uqadd16", '''
433 uint32_t midRes;
434 for (unsigned i = 0; i < 2; i++) {
435 int high = (i + 1) * 16 - 1;
436 int low = i * 16;
437 uint64_t arg1 = bits(Op1, high, low);
438 uint64_t arg2 = bits(Op2, high, low);
439 uSaturateOp<16>(midRes, arg1, arg2);
440 replaceBits(resTemp, high, low, midRes);
441 }
442 Dest = resTemp;
443 ''', flagType="none", buildCc=False)
444 buildRegDataInst("uqadd8", '''
445 uint32_t midRes;
446 for (unsigned i = 0; i < 4; i++) {
447 int high = (i + 1) * 8 - 1;
448 int low = i * 8;
449 uint64_t arg1 = bits(Op1, high, low);
450 uint64_t arg2 = bits(Op2, high, low);
451 uSaturateOp<8>(midRes, arg1, arg2);
452 replaceBits(resTemp, high, low, midRes);
453 }
454 Dest = resTemp;
455 ''', flagType="none", buildCc=False)
456 buildRegDataInst("uqsub16", '''
457 uint32_t midRes;
458 for (unsigned i = 0; i < 2; i++) {
459 int high = (i + 1) * 16 - 1;
460 int low = i * 16;
461 uint64_t arg1 = bits(Op1, high, low);
462 uint64_t arg2 = bits(Op2, high, low);
463 uSaturateOp<16>(midRes, arg1, arg2, true);
464 replaceBits(resTemp, high, low, midRes);
465 }
466 Dest = resTemp;
467 ''', flagType="none", buildCc=False)
468 buildRegDataInst("uqsub8", '''
469 uint32_t midRes;
470 for (unsigned i = 0; i < 4; i++) {
471 int high = (i + 1) * 8 - 1;
472 int low = i * 8;
473 uint64_t arg1 = bits(Op1, high, low);
474 uint64_t arg2 = bits(Op2, high, low);
475 uSaturateOp<8>(midRes, arg1, arg2, true);
476 replaceBits(resTemp, high, low, midRes);
477 }
478 Dest = resTemp;
479 ''', flagType="none", buildCc=False)
480 buildRegDataInst("uqasx", '''
481 uint32_t midRes;
482 uint64_t arg1Low = bits(Op1.sw, 15, 0);
483 uint64_t arg1High = bits(Op1.sw, 31, 16);
484 uint64_t arg2Low = bits(Op2.sw, 15, 0);
485 uint64_t arg2High = bits(Op2.sw, 31, 16);
486 uSaturateOp<16>(midRes, arg1Low, arg2High, true);
487 replaceBits(resTemp, 15, 0, midRes);
488 uSaturateOp<16>(midRes, arg1High, arg2Low);
489 replaceBits(resTemp, 31, 16, midRes);
490 Dest = resTemp;
491 ''', flagType="none", buildCc=False)
492 buildRegDataInst("uqsax", '''
493 uint32_t midRes;
494 uint64_t arg1Low = bits(Op1.sw, 15, 0);
495 uint64_t arg1High = bits(Op1.sw, 31, 16);
496 uint64_t arg2Low = bits(Op2.sw, 15, 0);
497 uint64_t arg2High = bits(Op2.sw, 31, 16);
498 uSaturateOp<16>(midRes, arg1Low, arg2High);
499 replaceBits(resTemp, 15, 0, midRes);
500 uSaturateOp<16>(midRes, arg1High, arg2Low, true);
501 replaceBits(resTemp, 31, 16, midRes);
502 Dest = resTemp;
503 ''', flagType="none", buildCc=False)
431}};
504}};