Lines Matching defs:imm
491 uint64_t imm) {
493 VIXL_ASSERT(IsUint32(imm) || IsInt32(imm) || rd.Is64Bits());
516 if (OneInstrMoveImmediateHelper(masm, rd, imm)) {
523 // [imm3, imm2, imm1, imm0], where each imm is 16 bits.
531 if (CountClearHalfWords(~imm, reg_size) >
532 CountClearHalfWords(imm, reg_size)) {
551 uint64_t imm16 = (imm >> (16 * i)) & 0xffff;
1024 void MacroAssembler::Movi16bitHelper(const VRegister& vd, uint64_t imm) {
1025 VIXL_ASSERT(IsUint16(imm));
1026 int byte1 = (imm & 0xff);
1027 int byte2 = ((imm >> 8) & 0xff);
1041 movz(temp, imm);
1047 void MacroAssembler::Movi32bitHelper(const VRegister& vd, uint64_t imm) {
1048 VIXL_ASSERT(IsUint32(imm));
1050 uint8_t bytes[sizeof(imm)];
1051 memcpy(bytes, &imm, sizeof(imm));
1064 movi(vd.Is64Bits() ? vd.V1D() : vd.V2D(), ((imm << 32) | imm));
1071 if ((imm & (0xff << (i * 8))) == imm) {
1080 if ((imm & mask) == mask) {
1087 if ((imm & 0xff00ffff) == 0x0000ffff) {
1093 if ((imm & 0xffff00ff) == 0x000000ff) {
1099 if ((imm & 0xff00ffff) == 0xff000000) {
1104 if ((imm & 0xffff00ff) == 0xffff0000) {
1110 if (((imm >> 16) & 0xffff) == (imm & 0xffff)) {
1111 Movi16bitHelper(vd.Is64Bits() ? vd.V4H() : vd.V8H(), imm & 0xffff);
1119 Mov(temp, imm);
1125 void MacroAssembler::Movi64bitHelper(const VRegister& vd, uint64_t imm) {
1130 int byteval = (imm >> (i * 8)) & 0xff;
1137 movi(vd, imm);
1143 if (((imm >> 32) & 0xffffffff) == (imm & 0xffffffff)) {
1144 Movi32bitHelper(vd.Is64Bits() ? vd.V2S() : vd.V4S(), imm & 0xffffffff);
1152 Mov(temp, imm);
1163 uint64_t imm,
1169 movi(vd, imm, shift, shift_amount);
1172 VIXL_ASSERT(IsUint8(imm));
1173 movi(vd, imm);
1176 Movi16bitHelper(vd, imm);
1179 Movi32bitHelper(vd, imm);
1182 Movi64bitHelper(vd, imm);
1232 void MacroAssembler::Mov(const Register& rd, uint64_t imm) {
1234 MoveImmediateHelper(this, rd, imm);
1473 int64_t imm = right.GetEquivalentImmediate();
1475 if (imm == 0) {
1477 } else if (imm == 1) {
1480 VIXL_ASSERT(imm == -1);
1493 int64_t imm = operand.GetImmediate();
1494 if ((imm < 0) && (imm != std::numeric_limits<int64_t>::min()) &&
1495 IsImmAddSub(-imm)) {
1496 AddSubMacro(rd, rn, -imm, S, SUB);
1522 int64_t imm = op.GetImmediate(); \
1523 if (!RANGE(imm)) { \
1526 Mov(temp, imm); \
1581 int64_t imm = operand.GetImmediate();
1582 if ((imm < 0) && (imm != std::numeric_limits<int64_t>::min()) &&
1583 IsImmAddSub(-imm)) {
1584 AddSubMacro(rd, rn, -imm, S, ADD);
1633 void MacroAssembler::Fmov(VRegister vd, double imm) {
1637 uint64_t rawbits = DoubleToRawbits(imm);
1645 Fmov(vd, Float16(imm));
1650 Fmov(vd, static_cast<float>(imm));
1656 fmov(vd, imm);
1660 new Literal<double>(imm,
1662 allocator_.New<Literal<double>>(imm,
1673 void MacroAssembler::Fmov(VRegister vd, float imm) {
1677 uint32_t rawbits = FloatToRawbits(imm);
1685 Fmov(vd, Float16(imm));
1690 Fmov(vd, static_cast<double>(imm));
1696 fmov(vd, imm);
1700 new Literal<float>(imm,
1702 allocator_.New<Literal<float>>(imm,
1713 void MacroAssembler::Fmov(VRegister vd, Float16 imm) {
1718 Fmov(vd, FPToFloat(imm, kIgnoreDefaultNaN));
1723 Fmov(vd, FPToDouble(imm, kIgnoreDefaultNaN));
1728 uint16_t rawbits = Float16ToRawbits(imm);
1729 if (IsImmFP16(imm)) {
1730 fmov(vd, imm);
1767 uint64_t imm) {
1768 return OneInstrMoveImmediateHelper(this, dst, imm);
1773 uint64_t imm,
1778 if (TryOneInstrMoveImmediate(dst, imm)) {
1782 int shift_low = CountTrailingZeros(imm, reg_size);
1790 // TryOneInstrMoveImmediate handles `imm` with a value of zero, so shift_low
1793 // imm_low = imm >> shift_low (with sign extension)
1794 uint64_t imm_low = ExtractSignedBitfield64(63, shift_low, imm);
1798 int shift_high = CountLeadingZeros(imm, reg_size);
1800 uint64_t imm_high = (imm << shift_high) | GetUintMask(shift_high);
1811 Mov(dst, imm);