[AARCH64] Add support for vector and scalar floating-point immediate loads.
authorjgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 7 Jan 2013 15:22:06 +0000 (15:22 +0000)
committerjgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 7 Jan 2013 15:22:06 +0000 (15:22 +0000)
commit728413527fa99f1c11f1f80751b9d364c97df4f9
treeca823d5616cfead4bce12e22af35db3e1f5ddd9d
parent4a101a28e53e6035f85a3e3bb8beee31de8c41f2
[AARCH64] Add support for vector and scalar floating-point immediate loads.

gcc/

* config/aarch64/aarch64-protos.h
(aarch64_const_double_zero_rtx_p): Rename to...
(aarch64_float_const_zero_rtx_p): ...this.
(aarch64_float_const_representable_p): New.
(aarch64_output_simd_mov_immediate): Likewise.
* config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>): Refactor
move immediate case.
* config/aarch64/aarch64.c
(aarch64_const_double_zero_rtx_p): Rename to...
(aarch64_float_const_zero_rtx_p): ...this.
(aarch64_print_operand): Allow printing of new constants.
(aarch64_valid_floating_const): New.
(aarch64_legitimate_constant_p): Check for valid floating-point
constants.
(aarch64_simd_valid_immediate): Likewise.
(aarch64_vect_float_const_representable_p): New.
(aarch64_float_const_representable_p): Likewise.
(aarch64_simd_imm_zero_p): Also allow for floating-point 0.0.
(aarch64_output_simd_mov_immediate): New.
* config/aarch64/aarch64.md (*movsf_aarch64): Add new alternative.
(*movdf_aarch64): Likewise.
* config/aarch64/constraints.md (Ufc): New.
(Y): call aarch64_float_const_zero_rtx.
* config/aarch64/predicates.md (aarch64_fp_compare_operand): New.

gcc/testsuite/

* gcc.target/aarch64/fmovd.c: New.
* gcc.target/aarch64/fmovf.c: Likewise.
* gcc.target/aarch64/fmovd-zero.c: Likewise.
* gcc.target/aarch64/fmovf-zero.c: Likewise.
* gcc.target/aarch64/vect-fmovd.c: Likewise.
* gcc.target/aarch64/vect-fmovf.c: Likewise.
* gcc.target/aarch64/vect-fmovd-zero.c: Likewise.
* gcc.target/aarch64/vect-fmovf-zero.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@194972 138bc75d-0d04-0410-961f-82ee72b054a4
16 files changed:
gcc/ChangeLog
gcc/config/aarch64/aarch64-protos.h
gcc/config/aarch64/aarch64-simd.md
gcc/config/aarch64/aarch64.c
gcc/config/aarch64/aarch64.md
gcc/config/aarch64/constraints.md
gcc/config/aarch64/predicates.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/fmovd-zero.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/fmovd.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/fmovf-zero.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/fmovf.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/vect-fmovd-zero.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/vect-fmovd.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/vect-fmovf-zero.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/vect-fmovf.c [new file with mode: 0644]