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) |
504}}; |