diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2017-01-20 14:36:57 +0000 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@gcc.gnu.org> | 2017-01-20 14:36:57 +0000 |
commit | 8b0fb476f24b0cec64502a2c2bed16a0c429f8d2 (patch) | |
tree | ae824565d2d7a60900ea91c4f3667c5decc41e4d /gcc/config/arm | |
parent | ebed71751b2c030de7f1ad9d284b54b34cfe0a20 (diff) | |
download | gcc-8b0fb476f24b0cec64502a2c2bed16a0c429f8d2.zip gcc-8b0fb476f24b0cec64502a2c2bed16a0c429f8d2.tar.gz gcc-8b0fb476f24b0cec64502a2c2bed16a0c429f8d2.tar.bz2 |
[ARM] PR target/71270 fix neon_valid_immediate for big-endian
PR target/71270
* config/arm/arm.c (neon_valid_immediate): Reject vector constants
in big-endian mode when they are not a single duplicated value.
From-SVN: r244716
Diffstat (limited to 'gcc/config/arm')
-rw-r--r-- | gcc/config/arm/arm.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 96777f0..934f5d1 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -11667,6 +11667,12 @@ neon_valid_immediate (rtx op, machine_mode mode, int inverse, return 18; } + /* The tricks done in the code below apply for little-endian vector layout. + For big-endian vectors only allow vectors of the form { a, a, a..., a }. + FIXME: Implement logic for big-endian vectors. */ + if (BYTES_BIG_ENDIAN && vector && !const_vec_duplicate_p (op)) + return -1; + /* Splat vector constant out into a byte vector. */ for (i = 0; i < n_elts; i++) { |