This is the mail archive of the
mailing list for the GCC project.
Re: [gomp4] mangle linear step of 1 with just 'l'
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Aldy Hernandez <aldyh at redhat dot com>
- Cc: "Iyer, Balaji V" <balaji dot v dot iyer at intel dot com>, gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Sat, 2 Nov 2013 16:50:47 +0100
- Subject: Re: [gomp4] mangle linear step of 1 with just 'l'
- Authentication-results: sourceware.org; auth=none
- References: <5274FD48 dot 3060303 at redhat dot com>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Sat, Nov 02, 2013 at 08:25:28AM -0500, Aldy Hernandez wrote:
> Your patch mangling negative linear steps caused a regression in
> simd-clones-2.c. Well, it already had a failure, but now it has two
> The problem is that AFAIU, a linear step of 1, is mangled with just
> 'l', not 'l1'.
> I am not completely sure of this, and was hoping Balaji could clear
> this up, but on page 7 of the Intel vector ABI document, the example
> __declspec(vector(uniform(a), aligned(a:32), linear(k:1)))
> extern float setArray(float *a, float x, int k)
> ...is mangled as _ZGVxN4ua32vl_setArray, and in the subsequent
> explanatory paragraph, the document specifically says:
> âlâ indicates linear(k:1) â k is a linear variable whose stride is 1.
> However, since the spec itself says nothing about a default linear
> stride 1, I don't know whether this is an oversight in the BNF
> grammar or a typo in the example. Balaji?
Ah, I was reading just the grammar and it didn't look like the number was
BTW, as I said on IRC yesterday, for say:
#pragma omp declare simd simdlen(8) notinbranch
int foo (int a, int b);
in the 'x' ISA (i.e. SSE2), we are supposed to pass it as
typedef int V __attribute__((vector_size (16)));
foo (V a.1, V a.2, V b.1, V b.2)
which probably isn't that hard for arguments, but are supposed to return
also the return value in two V registers (%xmm0/%xmm1). We can't pass that
as vector(8) int, so perhaps pretend the return value is ARRAY_TYPE of
2 vector(4) ints and have some special code in the backend to pass that
return value in two xmm registers. Similarly for 4 and 8.