This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH][GCC][AArch64] optimize float immediate moves (2 /4) - HF/DF/SF mode.
In addition to James's comments:
Tamar Christina <Tamar.Christina@arm.com> writes:
> + [(const_int 0)]
> + "{
"{ ... }" isn't necessary, we can just use { ... }
> + unsigned HOST_WIDE_INT ival;
> + if (!aarch64_reinterpret_float_as_int (operands[1], &ival))
> + FAIL;
> +
> + rtx tmp = gen_reg_rtx (SImode);
> + aarch64_expand_mov_immediate (tmp, gen_int_mode (ival, SImode));
> + tmp = simplify_gen_subreg (HImode, tmp, SImode, 0);
This looks wrong for big-endian, and...
> + emit_move_insn (operands[0], gen_lowpart (HFmode, tmp));
...either it should be OK to go directly from tmp to the HFmode lowpart,
or we should move the HImode temporary into a fresh REG. Current
validate_subreg seems to suggest that we need the latter.
Isn't it possible to use a HImode move immediate instead of an SImode one?
Thanks,
Richard