This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/47553] New: ARM neon vld1q_lane_u8 & co. don't accept lanes >= 8
- From: "richard.sandiford at linaro dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 31 Jan 2011 13:18:37 +0000
- Subject: [Bug target/47553] New: ARM neon vld1q_lane_u8 & co. don't accept lanes >= 8
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47553
Summary: ARM neon vld1q_lane_u8 & co. don't accept lanes >= 8
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: richard.sandiford@linaro.org
The testcase:
#include <arm_neon.h>
uint8x16_t
foo (uint8_t *a, uint8x16_t b)
{
vst1q_lane_u8 (a, b, 14);
return vld1q_lane_u8 (a + 0x100, b, 15);
}
fails with:
error: argument must be a constant
The v{ld,st}1q_lane_{u,s,p}8 intrinsic functions are supposed to take a range
between 0 and 15. The function is then converted to a vld1 or vst1 of one half
of the quad value. The problem is that the lane predicate doesn't account for
this, and only accepts the 0..7 range that are supported by vld1 and vst1.
The error could be a bit friendlier too; maybe "argument out of range" or
something. That's a problem in a separate piece of code though, so I'm not
treating it as part of this bug.