> Right and as Richard said I can munge the modes during expansion of
> existing builtins when needed.
OK, but you precisely shouldn't need to do it since the type is fixed.
--
Eric Botcazou
From: Eric Botcazou
Date: Fri, 14 Oct 2011 00:41:42 +0200
>> Unfortunately, that would involve some ABI changes for the VIS
>> builtins. I'm trending towards considering just changing things
>> anyways since the VIS intrinsics were next to unusable beforehand.
>
> Could you elaborate? The call
> Unfortunately, that would involve some ABI changes for the VIS
> builtins. I'm trending towards considering just changing things
> anyways since the VIS intrinsics were next to unusable beforehand.
Could you elaborate? The calling conventions for vectors (like for the other
classes) shouldn't
From: Richard Henderson
Date: Thu, 13 Oct 2011 13:06:19 -0700
> On 10/13/2011 12:55 PM, David Miller wrote:
>> -(define_insn "_vis"
>> +(define_insn ""
>
> Missing a "3" on the end. Otherwise these look ok.
Thanks for finding that.
>> Unfortunately, that would involve some ABI changes for the
On 10/13/2011 12:55 PM, David Miller wrote:
> -(define_insn "_vis"
> +(define_insn ""
Missing a "3" on the end. Otherwise these look ok.
> Unfortunately, that would involve some ABI changes for the VIS
> builtins. I'm trending towards considering just changing things
> anyways since the VIS int
From: Richard Henderson
Date: Wed, 12 Oct 2011 17:49:19 -0700
> The comment for fpmerge_vis is not correct.
> I believe that the operation is representable with
>
> (vec_select:V8QI
> (vec_concat:V8QI
> (match_operand:V4QI 1 ...)
> (match_operand:V4QI 2 ...)
> (parallel [
>
On 10/13/2011 11:26 AM, David Miller wrote:
> Therefore, I think this "16 x 16 multiply" operation isn't the kind
> you think it is, and it's therefore not appropriate to use this in the
> compiler for vector multiplies.
Ah, I see the magic word in the docs now: "fixed point".
I.e. class MODE_ACCU
From: David Miller
Date: Thu, 13 Oct 2011 14:26:36 -0400 (EDT)
> product = src1 * src2;
>
> scaled = (product & 0x0000) >> 8;
> if (product & 0x80)
> scaled++;
In fact, all of the partitioned multiply instructions scale the result
by 8 bits with rounding towa
From: Richard Henderson
Date: Wed, 12 Oct 2011 17:49:19 -0700
> There's a code sample 7-1 that illustrates a 16x16 multiply:
>
> fmul8sux16 %f0, %f1, %f2
> fmul8ulx16 %f0, %f1, %f3
> fpadd16%f2, %f3, %f4
Be wary of code examples that don't even assemble (even numbered
floa