Commit 5c06093c by Richard Sandiford

aarch64: Fix BE SVE mode punning involving floats

The patterns used by aarch64_split_sve_subreg_move only support
integer modes, so if the widest mode is a float, we should get
its integer equivalent.

Fixes gcc.target/aarch64/sel_3.c for big-endian targets.

2020-01-16  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* config/aarch64/aarch64.c (aarch64_split_sve_subreg_move): Apply
	aarch64_sve_int_mode to each mode.
parent c35a3046
2020-01-16 Richard Sandiford <richard.sandiford@arm.com>
* config/aarch64/aarch64.c (aarch64_split_sve_subreg_move): Apply
aarch64_sve_int_mode to each mode.
2020-01-15 David Malcolm <dmalcolm@redhat.com> 2020-01-15 David Malcolm <dmalcolm@redhat.com>
* doc/analyzer.texi (Overview): Add note about * doc/analyzer.texi (Overview): Add note about
......
...@@ -4827,8 +4827,8 @@ aarch64_split_sve_subreg_move (rtx dest, rtx ptrue, rtx src) ...@@ -4827,8 +4827,8 @@ aarch64_split_sve_subreg_move (rtx dest, rtx ptrue, rtx src)
/* Decide which REV operation we need. The mode with wider elements /* Decide which REV operation we need. The mode with wider elements
determines the mode of the operands and the mode with the narrower determines the mode of the operands and the mode with the narrower
elements determines the reverse width. */ elements determines the reverse width. */
machine_mode mode_with_wider_elts = GET_MODE (dest); machine_mode mode_with_wider_elts = aarch64_sve_int_mode (GET_MODE (dest));
machine_mode mode_with_narrower_elts = GET_MODE (src); machine_mode mode_with_narrower_elts = aarch64_sve_int_mode (GET_MODE (src));
if (GET_MODE_UNIT_SIZE (mode_with_wider_elts) if (GET_MODE_UNIT_SIZE (mode_with_wider_elts)
< GET_MODE_UNIT_SIZE (mode_with_narrower_elts)) < GET_MODE_UNIT_SIZE (mode_with_narrower_elts))
std::swap (mode_with_wider_elts, mode_with_narrower_elts); std::swap (mode_with_wider_elts, mode_with_narrower_elts);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment