This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] The use of ARM NEON vshll_n_u8 intrinsic results in compile error on valid code (Bugzilla ID 41196)


Hi,
the attached patch attempts to fix bug 41196 (the attachment here is the same as the attachment in bugzilla).


(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41196)

Please refer to comment #3 for the description of the fix and comment #4 for the change log.

Please let me know if OK to commit.

Thanks,
	Daniel.

--
Daniel Gutson
CodeSourcery
www.codesourcery.com
Index: src/gcc-mainline/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c
===================================================================
--- src/gcc-mainline/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c	(revision 0)
+++ src/gcc-mainline/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c	(revision 0)
@@ -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 } } */
Index: src/gcc-mainline/gcc/config/arm/neon.md
===================================================================
--- src/gcc-mainline/gcc/config/arm/neon.md	(revision 152180)
+++ src/gcc-mainline/gcc/config/arm/neon.md	(working copy)
@@ -3655,7 +3655,8 @@ (define_insn "neon_vshll_n<mode>"
 			  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")]

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]