On Sunday, 18 June 2023 at 04:54:08 UTC, Cecil Ward wrote:
Is it true that this doesn’t work (in either branch)?
float4 a,b;
static if (__traits(compiles, a/b))
c = a / b;
else
c[] = a[] / b[];
I tried it with 4 x 64-bit ulongs in a 256-bit vector instead.
Hoping I have done things correctly, I got an error message
about requiring a destination variable as in c = a op b where I
tried simply "return a / b;" In the else branch, I got a type
conversion error. Is that because a[] is an array of 256-bit
vectors, in the else case, not an array of ulongs?
Correction I should have written ‘always work’ - I just copied
the example straight from the language documentation for simd and
adapted it to use ulongs and a wider vector.
I was using GDC.