mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-09 21:31:30 +08:00
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.
This commit is contained in:
parent
c35a304624
commit
5c06093ce9
@ -1,3 +1,8 @@
|
||||
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>
|
||||
|
||||
* doc/analyzer.texi (Overview): Add note about
|
||||
|
@ -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
|
||||
determines the mode of the operands and the mode with the narrower
|
||||
elements determines the reverse width. */
|
||||
machine_mode mode_with_wider_elts = GET_MODE (dest);
|
||||
machine_mode mode_with_narrower_elts = GET_MODE (src);
|
||||
machine_mode mode_with_wider_elts = aarch64_sve_int_mode (GET_MODE (dest));
|
||||
machine_mode mode_with_narrower_elts = aarch64_sve_int_mode (GET_MODE (src));
|
||||
if (GET_MODE_UNIT_SIZE (mode_with_wider_elts)
|
||||
< GET_MODE_UNIT_SIZE (mode_with_narrower_elts))
|
||||
std::swap (mode_with_wider_elts, mode_with_narrower_elts);
|
||||
|
Loading…
x
Reference in New Issue
Block a user