diff options
author | Daniel Gutson <dgutson@codesourcery.com> | 2009-10-14 19:18:20 +0000 |
---|---|---|
committer | Daniel Gutson <dgutson@gcc.gnu.org> | 2009-10-14 19:18:20 +0000 |
commit | 8cb32ff23b85651ff9363e06ba9c7171bc66216e (patch) | |
tree | d6408057494eb7f1765a76b663addc95d33edc8a | |
parent | 88ca1146aa66e3526c58468f1da16174fdc84c54 (diff) | |
download | gcc-8cb32ff23b85651ff9363e06ba9c7171bc66216e.zip gcc-8cb32ff23b85651ff9363e06ba9c7171bc66216e.tar.gz gcc-8cb32ff23b85651ff9363e06ba9c7171bc66216e.tar.bz2 |
neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
2009-10-14 Daniel Gutson <dgutson@codesourcery.com>
gcc/
* config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds
fixed.
gcc/testsuite/
* gcc.target/arm/neon/vfp-shift-a2t2.c: New test case.
From-SVN: r152777
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/arm/neon.md | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c | 27 |
3 files changed, 38 insertions, 1 deletions
@@ -1,3 +1,12 @@ +2009-10-14 Daniel Gutson <dgutson@codesourcery.com> + + gcc/ + * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds + fixed. + + gcc/testsuite/ + * gcc.target/arm/neon/vfp-shift-a2t2.c: New test case. + 2009-10-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> * configure.ac: Add 'lto' to enable_languages, not diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md index 85bc3ee..7d1ef11 100644 --- a/gcc/config/arm/neon.md +++ b/gcc/config/arm/neon.md @@ -3655,7 +3655,8 @@ UNSPEC_VSHLL_N))] "TARGET_NEON" { - neon_const_bounds (operands[2], 0, neon_element_bits (<MODE>mode)); + /* The boundaries are: 0 < imm <= size. */ + neon_const_bounds (operands[2], 0, neon_element_bits (<MODE>mode) + 1); return "vshll.%T3%#<V_sz_elem>\t%q0, %P1, %2"; } [(set_attr "neon_type" "neon_shift_1")] diff --git a/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c b/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c new file mode 100644 index 0000000..2541df8 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c @@ -0,0 +1,27 @@ +/* Check that NEON vector shifts support immediate values == size. /* + +/* { dg-do compile } */ +/* { dg-require-effective-target arm_neon_ok } */ +/* { dg-options "-save-temps -mfpu=neon -mfloat-abi=softfp" } */ + +#include <arm_neon.h> + +uint16x8_t test_vshll_n_u8 (uint8x8_t a) +{ + return vshll_n_u8(a, 8); +} + +uint32x4_t test_vshll_n_u16 (uint16x4_t a) +{ + return vshll_n_u16(a, 16); +} + +uint64x2_t test_vshll_n_u32 (uint32x2_t a) +{ + return vshll_n_u32(a, 32); +} + +/* { dg-final { scan-assembler "vshll\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { scan-assembler "vshll\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { scan-assembler "vshll\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ |