Lines Matching +defs:label +defs:offset
65 /* Extract the symbol or label from UNSPEC wrapper X. */
79 A natural register + offset address. The register satisfies
80 riscv_valid_base_register_p and the offset is a const_arith_operand.
122 /* The offset of arg_pointer_rtx from the bottom of the frame. */
158 /* The offset of the first register used, provided num_gprs is nonzero.
165 /* The offset of the first register used, provided num_fprs is nonzero. */
175 REG is the base register and OFFSET is the constant offset.
186 rtx offset;
244 /* If non-zero, this is an offset to be added to SP to redefine the CFA
569 rtx offset;
571 split_const (x, &x, &offset);
584 rtx offset;
586 split_const (x, &x, &offset);
597 if (offset == const0_rtx)
607 return sext_hwi (INTVAL (offset), 32) == INTVAL (offset);
643 rtx base, offset;
650 split_const (x, &base, &offset);
655 if (SMALL_OPERAND (INTVAL (offset)) && riscv_symbol_insns (type) > 0)
763 rtx offset;
766 split_const (x, &x, &offset);
810 info->offset = const0_rtx;
816 info->offset = XEXP (x, 1);
818 && riscv_valid_offset_p (info->offset, mode));
823 info->offset = XEXP (x, 1);
827 adds an offset to a LO_SUM must prove that the offset will not
834 = riscv_classify_symbolic_expression (info->offset);
836 && riscv_valid_lo_sum_p (info->symbol_type, mode, info->offset));
876 preferring symbols over register plus offset. */
898 rtx offset;
927 /* Otherwise try splitting the constant into a base and offset. */
928 split_const (x, &x, &offset);
929 if (offset != 0)
933 return n + riscv_integer_cost (INTVAL (offset));
1046 /* Wrap symbol or label BASE in an UNSPEC address of type SYMBOL_TYPE,
1050 riscv_unspec_address_offset (rtx base, rtx offset,
1055 if (offset != const0_rtx)
1056 base = gen_rtx_PLUS (Pmode, base, offset);
1066 rtx base, offset;
1068 split_const (address, &base, &offset);
1069 return riscv_unspec_address_offset (base, offset, symbol_type);
1078 rtx base, offset;
1080 split_const (op, &base, &offset);
1082 op = plus_constant (Pmode, UNSPEC_ADDRESS (base), INTVAL (offset));
1170 rtx label;
1175 label = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
1176 SYMBOL_REF_FLAGS (label) |= SYMBOL_FLAG_LOCAL;
1181 SYMBOL_REF_WEAK (label) = 1;
1191 *low_out = gen_rtx_LO_SUM (Pmode, temp, label);
1209 riscv_add_offset (rtx temp, rtx reg, HOST_WIDE_INT offset)
1211 if (!SMALL_OPERAND (offset))
1215 /* Leave OFFSET as a 16-bit offset and put the excess in HIGH.
1218 high = gen_int_mode (CONST_HIGH_PART (offset), Pmode);
1219 offset = CONST_LOW_PART (offset);
1224 return plus_constant (Pmode, reg, offset);
1343 HOST_WIDE_INT offset = INTVAL (XEXP (x, 1));
1347 addr = riscv_add_offset (NULL, base, offset);
1405 rtx base, offset;
1428 /* If we have (const (plus symbol offset)), and that expression cannot
1429 be forced into memory, load the symbol first and add in the offset. Also
1432 split_const (src, &base, &offset);
1433 if (offset != const0_rtx
1437 riscv_emit_move (dest, riscv_add_offset (NULL, base, INTVAL (offset)));
2355 riscv_expand_conditional_branch (rtx label, rtx_code code, rtx op0, rtx op1)
2363 emit_jump_insn (gen_condjump (condition, label));
2416 HOST_WIDE_INT offset;
2425 int n, HOST_WIDE_INT offset,
2453 HOST_WIDE_INT pos = offset + int_byte_position (f);
2470 subfields, 0, offset,
2496 fields[n++].offset += i * tree_to_uhwi (elt_size);
2513 fields[0].offset = offset;
2515 fields[1].offset = offset + elt_size;
2531 fields[n].offset = offset;
2645 HOST_WIDE_INT offset)
2651 x = gen_rtx_EXPR_LIST (VOIDmode, x, GEN_INT (offset));
2659 byte offset for the first value, likewise MODE2 and OFFSET2 for the
2714 fields[0].offset);
2719 fields[0].offset,
2722 fields[1].offset);
2757 fields[0].offset,
2759 fields[1].offset);
3047 unsigned HOST_WIDE_INT offset, delta;
3064 for (offset = 0, i = 0; offset + delta <= length; offset += delta, i++)
3067 riscv_emit_move (regs[i], adjust_address (src, mode, offset));
3071 for (offset = 0, i = 0; offset + delta <= length; offset += delta, i++)
3072 riscv_emit_move (adjust_address (dest, mode, offset), regs[i]);
3075 if (offset < length)
3077 src = adjust_address (src, BLKmode, offset);
3078 dest = adjust_address (dest, BLKmode, offset);
3079 move_by_pieces (dest, src, length - offset,
3112 rtx label, src_reg, dest_reg, final_src, test;
3128 label = gen_label_rtx ();
3129 emit_label (label);
3141 emit_jump_insn (gen_cbranchdi4 (test, src_reg, final_src, label));
3143 emit_jump_insn (gen_cbranchsi4 (test, src_reg, final_src, label));
3371 riscv_print_operand (file, addr.offset, 0);
3376 riscv_print_operand_reloc (file, addr.offset, false);
3632 HOST_WIDE_INT offset;
3673 offset = RISCV_STACK_ALIGN (crtl->outgoing_args_size);
3675 offset += RISCV_STACK_ALIGN (get_frame_size ());
3677 frame->frame_pointer_offset = offset;
3680 offset += RISCV_STACK_ALIGN (num_f_saved * UNITS_PER_FP_REG);
3681 frame->fp_sp_offset = offset - UNITS_PER_FP_REG;
3699 offset += x_save_size;
3701 frame->gp_sp_offset = offset - UNITS_PER_WORD;
3703 frame->hard_frame_pointer_offset = offset;
3705 offset += RISCV_STACK_ALIGN (cfun->machine->varargs_size);
3707 offset += RISCV_STACK_ALIGN (crtl->args.pretend_args_size);
3710 frame->arg_pointer_offset = offset - crtl->args.pretend_args_size;
3711 frame->total_size = offset;
3788 mode and OFFSET is the offset of its save slot from the current
3793 HOST_WIDE_INT offset, riscv_save_restore_fn fn)
3797 mem = gen_frame_mem (mode, plus_constant (Pmode, stack_pointer_rtx, offset));
3802 SP_OFFSET is the offset of the current stack pointer from the start
3809 HOST_WIDE_INT offset;
3812 offset = cfun->machine->frame.gp_sp_offset - sp_offset;
3837 riscv_save_restore_reg (word_mode, regno, offset, fn);
3838 offset -= UNITS_PER_WORD;
3843 offset = cfun->machine->frame.fp_sp_offset - sp_offset;
3849 riscv_save_restore_reg (mode, regno, offset, fn);
3850 offset -= GET_MODE_SIZE (mode);
3932 int offset;
3939 offset = saved_size - UNITS_PER_WORD;
3941 offset = saved_size - UNITS_PER_WORD * 2;
3943 offset = saved_size - UNITS_PER_WORD * 3;
3945 offset = saved_size - ((regno - S2_REGNUM + 4) * UNITS_PER_WORD);
3950 offset));
4557 rtx offset = GEN_INT (delta);
4560 riscv_emit_move (temp1, offset);
4561 offset = temp1;
4563 emit_insn (gen_add3_insn (this_rtx, this_rtx, offset));
4577 /* Load the offset and add it to THIS_RTX. */