data.isa (7221:99ae09123a46) data.isa (7223:a2e1b4f22550)
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 buildRegDataInst("sasx", '''
432 int32_t midRes, geBits = 0;
433 resTemp = 0;
434 int64_t arg1Low = sext<16>(bits(Op1.sw, 15, 0));
435 int64_t arg1High = sext<16>(bits(Op1.sw, 31, 16));
436 int64_t arg2Low = sext<16>(bits(Op2.sw, 15, 0));
437 int64_t arg2High = sext<16>(bits(Op2.sw, 31, 16));
438 midRes = arg1Low - arg2High;
439 if (midRes >= 0) {
440 geBits = geBits | 0x3;
441 }
442 replaceBits(resTemp, 15, 0, midRes);
443 midRes = arg1High + arg2Low;
444 if (midRes >= 0) {
445 geBits = geBits | 0xc;
446 }
447 replaceBits(resTemp, 31, 16, midRes);
448 Dest = resTemp;
449 resTemp = geBits;
450 ''', flagType="ge", buildNonCc=True)
451 buildRegDataInst("ssax", '''
452 int32_t midRes, geBits = 0;
453 resTemp = 0;
454 int64_t arg1Low = sext<16>(bits(Op1.sw, 15, 0));
455 int64_t arg1High = sext<16>(bits(Op1.sw, 31, 16));
456 int64_t arg2Low = sext<16>(bits(Op2.sw, 15, 0));
457 int64_t arg2High = sext<16>(bits(Op2.sw, 31, 16));
458 midRes = arg1Low + arg2High;
459 if (midRes >= 0) {
460 geBits = geBits | 0x3;
461 }
462 replaceBits(resTemp, 15, 0, midRes);
463 midRes = arg1High - arg2Low;
464 if (midRes >= 0) {
465 geBits = geBits | 0xc;
466 }
467 replaceBits(resTemp, 31, 16, midRes);
468 Dest = resTemp;
469 resTemp = geBits;
470 ''', flagType="ge", buildNonCc=True)
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);

--- 171 unchanged lines hidden ---
471
472 buildRegDataInst("uqadd16", '''
473 uint32_t midRes;
474 for (unsigned i = 0; i < 2; i++) {
475 int high = (i + 1) * 16 - 1;
476 int low = i * 16;
477 uint64_t arg1 = bits(Op1, high, low);
478 uint64_t arg2 = bits(Op2, high, low);

--- 171 unchanged lines hidden ---