core.simd woes

Iain Buclaw ibuclaw at ubuntu.com
Wed Oct 3 06:40:00 PDT 2012


On 3 October 2012 02:31, jerro <a at a.com> wrote:
>> import core.simd, std.stdio;
>>
>> void main()
>> {
>>   float4 a = 1, b = 2;
>>   writeln((a + b).array); // WORKS: [3, 3, 3, 3]
>>
>>   float4 c = [1, 2, 3, 4]; // ERROR: "Stored value type does
>>                            // not match pointer operand type!"
>>                            // [..a bunch of LLVM error code..]
>>
>>   float4 c = 0, d = 1;
>>   c.array[0] = 4;
>>   c.ptr[1] = 4;
>>   writeln((c + d).array); // WRONG: [1, 1, 1, 1]
>> }
>
>
> Oh, that doesn't work for me either. I never tried to use those, so I didn't
> notice that before. This code gives me internal compiler errors with GDC and
> DMD too (with "float4 c = [1, 2, 3, 4]" commented out). I'm using DMD 2.060
> and a recent versions of GDC and LDC on 64 bit Linux.

Then don't just talk about it, raise a bug - otherwise how do you
expect it to get fixed!  ( http://www.gdcproject.org/bugzilla )

I've made a note of the error you get with `__vector(float[4]) c =
[1,2,3,4];' - That is because vector expressions implementation is
very basic at the moment.  Look forward to hear from all your
experiences so we can make vector support rock solid in GDC. ;-)


-- 
Iain Buclaw

*(p < e ? p++ : p) = (c & 0x0f) + '0';


More information about the Digitalmars-d mailing list