From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26039 invoked by alias); 31 Aug 2009 12:14:22 -0000 Received: (qmail 25994 invoked by uid 48); 31 Aug 2009 12:14:07 -0000 Date: Mon, 31 Aug 2009 12:14:00 -0000 Subject: [Bug c/41196] New: The use of ARM NEON vshll_n_u8 intrinsic results in compile error on valid code X-Bugzilla-Reason: CC Message-ID: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "siarhei dot siamashka at gmail dot com" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2009-08/txt/msg02360.txt.bz2 When using vshll_n_u8 intrinsic, gcc 4.4.1 incorrectly rejects shift operand having value >= 8, claiming that it is out of range. When using the following test code /*************/ #include uint16x8_t test_vshll_n_u8 (uint8x8_t a) { return vshll_n_u8(a, 8); } /*************/ Test with gcc 4.4.1: # gcc -c -O2 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer test.c test.c: In function ‘test_vshll_n_u8’: test.c:6: error: constant out of range It used to work fine with cs2007q3: # gcc -c -O2 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer test.c # objdump -d test.o test.o: file format elf32-littlearm Disassembly of section .text: 00000000 : 0: ec410b17 vmov d7, r0, r1 4: f3b26307 vshll.i8 q3, d7, #8 8: ec510b16 vmov r0, r1, d6 c: ec532b17 vmov r2, r3, d7 10: e12fff1e bx lr -- Summary: The use of ARM NEON vshll_n_u8 intrinsic results in compile error on valid code Product: gcc Version: 4.4.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: siarhei dot siamashka at gmail dot com GCC build triplet: armv4tl-softfloat-linux-gnueabi GCC host triplet: armv4tl-softfloat-linux-gnueabi GCC target triplet: armv4tl-softfloat-linux-gnueabi http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41196