core.simd woes

Iain Buclaw ibuclaw at ubuntu.com
Mon Oct 8 14:37:05 PDT 2012


On 8 October 2012 22:34, Manu <turkeyman at gmail.com> wrote:
> On 9 October 2012 00:30, Iain Buclaw <ibuclaw at ubuntu.com> wrote:
>>
>> On 8 October 2012 22:18, F i L <witte2008 at gmail.com> wrote:
>> > Iain Buclaw wrote:
>> >>
>> >> I fixed them again.
>> >>
>> >>
>> >>
>> >> https://github.com/D-Programming-GDC/GDC/commit/9402516e0b07031e841a15849f5dc94ae81dccdc#L4R1201
>> >>
>> >>
>> >> float a = 1, b = 2, c = 3, d = 4;
>> >> float4 f = [a,b,c,d];
>> >>
>> >> ===>
>> >>         movss   -16(%rbp), %xmm0
>> >>         movss   -12(%rbp), %xmm1
>> >
>> >
>> > Nice, not even DMD can do this yet. Can these changes be pushed
>> > upstream?
>> >
>> > On a side note, I understand GDC doesn't support the
>> > core.simd.__simd(...)
>> > command, and I'm sure you have good reasons for this. However, it would
>> > still be nice if:
>> >
>> > a) this interface was supported through function-wrappers, or..
>> > b) DMD/LDC could find common ground with GDC in SIMD instructions
>> >
>> > I just think this sort of difference should be worked out early on. If
>> > this
>> > simply can't or won't be changed, would you mind giving a short
>> > explanation
>> > as to why? (Please forgive if you've explained this already before). Is
>> > core.simd designed to really never be used and Manu's std.simd is really
>> > the
>> > starting place for libraries? (I believe I remember him mentioning that)
>> >
>>
>> I'm refusing to implement any intrinsic that is tied to a specific
>> architecture.
>
>
> GCC offers perfectly good intrinsics anyway. And they're superior to the DMD
> intrinsics too.
>

Provided that a) the architecture provides them, and b) you have the
right -march/-mtune flags turned on.


-- 
Iain Buclaw

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


More information about the Digitalmars-d mailing list