Lines Matching refs:Val
48 static void generateInstSeqImpl(int64_t Val, const MCSubtargetInfo &STI, in generateInstSeqImpl() argument
53 if (STI.hasFeature(RISCV::FeatureStdExtZbs) && isPowerOf2_64(Val) && in generateInstSeqImpl()
54 (!isInt<32>(Val) || Val == 0x800)) { in generateInstSeqImpl()
55 Res.emplace_back(RISCV::BSETI, Log2_64(Val)); in generateInstSeqImpl()
59 if (isInt<32>(Val)) { in generateInstSeqImpl()
67 int64_t Hi20 = ((Val + 0x800) >> 12) & 0xFFFFF; in generateInstSeqImpl()
68 int64_t Lo12 = SignExtend64<12>(Val); in generateInstSeqImpl()
105 int64_t Lo12 = SignExtend64<12>(Val); in generateInstSeqImpl()
106 Val = (uint64_t)Val - (uint64_t)Lo12; in generateInstSeqImpl()
112 if (!isInt<32>(Val)) { in generateInstSeqImpl()
113 ShiftAmount = llvm::countr_zero((uint64_t)Val); in generateInstSeqImpl()
114 Val >>= ShiftAmount; in generateInstSeqImpl()
118 if (ShiftAmount > 12 && !isInt<12>(Val)) { in generateInstSeqImpl()
119 if (isInt<32>((uint64_t)Val << 12)) { in generateInstSeqImpl()
122 Val = (uint64_t)Val << 12; in generateInstSeqImpl()
123 } else if (isUInt<32>((uint64_t)Val << 12) && in generateInstSeqImpl()
128 Val = ((uint64_t)Val << 12) | (0xffffffffull << 32); in generateInstSeqImpl()
134 if (isUInt<32>((uint64_t)Val) && !isInt<32>((uint64_t)Val) && in generateInstSeqImpl()
138 Val = ((uint64_t)Val) | (0xffffffffull << 32); in generateInstSeqImpl()
143 generateInstSeqImpl(Val, STI, Res); in generateInstSeqImpl()
155 static unsigned extractRotateInfo(int64_t Val) { in extractRotateInfo() argument
157 unsigned LeadingOnes = llvm::countl_one((uint64_t)Val); in extractRotateInfo()
158 unsigned TrailingOnes = llvm::countr_one((uint64_t)Val); in extractRotateInfo()
164 unsigned UpperTrailingOnes = llvm::countr_one(Hi_32(Val)); in extractRotateInfo()
165 unsigned LowerLeadingOnes = llvm::countl_one(Lo_32(Val)); in extractRotateInfo()
173 static void generateInstSeqLeadingZeros(int64_t Val, const MCSubtargetInfo &STI, in generateInstSeqLeadingZeros() argument
175 assert(Val > 0 && "Expected postive val"); in generateInstSeqLeadingZeros()
177 unsigned LeadingZeros = llvm::countl_zero((uint64_t)Val); in generateInstSeqLeadingZeros()
178 uint64_t ShiftedVal = (uint64_t)Val << LeadingZeros; in generateInstSeqLeadingZeros()
210 uint64_t LeadingOnesVal = Val | maskLeadingOnes<uint64_t>(LeadingZeros); in generateInstSeqLeadingZeros()
224 InstSeq generateInstSeq(int64_t Val, const MCSubtargetInfo &STI) { in generateInstSeq() argument
226 generateInstSeqImpl(Val, STI, Res); in generateInstSeq()
231 if ((Val & 0xfff) != 0 && (Val & 1) == 0 && Res.size() >= 2) { in generateInstSeq()
232 unsigned TrailingZeros = llvm::countr_zero((uint64_t)Val); in generateInstSeq()
233 int64_t ShiftedVal = Val >> TrailingZeros; in generateInstSeq()
263 if ((Val & 0xfff) != 0 && (Val & 0x1800) == 0x1000) { in generateInstSeq()
264 int64_t Imm12 = -(0x800 - (Val & 0xfff)); in generateInstSeq()
265 int64_t AdjustedVal = Val - Imm12; in generateInstSeq()
278 if (Val > 0 && Res.size() > 2) { in generateInstSeq()
279 generateInstSeqLeadingZeros(Val, STI, Res); in generateInstSeq()
284 if (Val < 0 && Res.size() > 3) { in generateInstSeq()
285 uint64_t InvertedVal = ~(uint64_t)Val; in generateInstSeq()
300 int64_t LoVal = SignExtend64<32>(Val); in generateInstSeq()
301 int64_t HiVal = SignExtend64<32>(Val >> 32); in generateInstSeq()
322 if (Val < 0) { in generateInstSeq()
324 NewVal = Val | 0x80000000ll; in generateInstSeq()
327 NewVal = Val & ~0x80000000ll; in generateInstSeq()
341 int32_t Lo = Lo_32(Val); in generateInstSeq()
342 uint32_t Hi = Hi_32(Val); in generateInstSeq()
371 if ((Val % 3) == 0 && isInt<32>(Val / 3)) { in generateInstSeq()
374 } else if ((Val % 5) == 0 && isInt<32>(Val / 5)) { in generateInstSeq()
377 } else if ((Val % 9) == 0 && isInt<32>(Val / 9)) { in generateInstSeq()
383 generateInstSeqImpl(Val / Div, STI, TmpSeq); in generateInstSeq()
390 int64_t Hi52 = ((uint64_t)Val + 0x800ull) & ~0xfffull; in generateInstSeq()
391 int64_t Lo12 = SignExtend64<12>(Val); in generateInstSeq()
424 if (unsigned Rotate = extractRotateInfo(Val)) { in generateInstSeq()
426 uint64_t NegImm12 = llvm::rotl<uint64_t>(Val, Rotate); in generateInstSeq()
439 InstSeq generateTwoRegInstSeq(int64_t Val, const MCSubtargetInfo &STI, in generateTwoRegInstSeq() argument
441 int64_t LoVal = SignExtend64<32>(Val); in generateTwoRegInstSeq()
446 uint64_t Tmp = (uint64_t)Val - (uint64_t)LoVal; in generateTwoRegInstSeq()
463 if (STI.hasFeature(RISCV::FeatureStdExtZba) && Lo_32(Val) == Hi_32(Val)) { in generateTwoRegInstSeq()
472 int getIntMatCost(const APInt &Val, unsigned Size, const MCSubtargetInfo &STI, in getIntMatCost() argument
483 APInt Chunk = Val.ashr(ShiftVal).sextOrTrunc(PlatRegSize); in getIntMatCost()