Lines Matching defs:pcrel
103 bool pcrel; /* applies to first const */
828 bool pcrel = instr->branch_target && src.value == 0;
836 /* pcrel constants are unique, so don't match */
837 if (found && !pcrel)
846 if (pcrel)
1379 bi_rewrite_constants_to_pass(bi_tuple *tuple, uint64_t constant, bool pcrel)
1394 assert(pcrel);
1397 } else if (pcrel) {
1410 * postcondition that pcrel applies to the first constant by convention,
1421 .pcrel = tuple->add && tuple->add->branch_target,
1424 /* pcrel applies to the first constant by convention, and
1427 if (consts.pcrel && consts.constants[0]) {
1439 * more than one tuple has pcrel:
1442 * pcrel, it must be the high constant to use the M1=4 modification [sx64(E0) +
1455 bi_merge_u32(uint32_t c0, uint32_t c1, bool pcrel)
1457 /* At this point in the constant merge algorithm, pcrel constants are
1458 * treated as zero, so pcrel implies at least one constants is zero */
1459 assert(!pcrel || (c0 == 0 || c1 == 0));
1461 /* Order: pcrel, maximum non-pcrel, minimum non-pcrel */
1462 uint32_t hi = pcrel ? 0 : MAX2(c0, c1);
1480 consts[t].constants[1], consts[t].pcrel);
1482 /* Skip the pcrel pair if assigned, because if one is assigned,
1483 * this one is not pcrel by uniqueness so it's a mismatch */
1495 if (consts[t].pcrel)
1518 /* Try to match, but don't match pcrel with non-pcrel, even
1519 * though we can merge a pcrel with a non-pcrel single */
1525 if (match && !consts[t].pcrel) {
1535 assert(!(pending_pcrel && consts[t].pcrel));
1536 bool pcrel = pending_pcrel || consts[t].pcrel;
1538 if (pcrel)
1541 pairs[pair_count++] = bi_merge_u32(pending_single, val, pcrel);
1546 pending_pcrel = consts[t].pcrel;
1822 if (st->constant_count == 0 || st->constants[0] || st->constants[1] || st->pcrel)