Using YMM registers causes an undefined label error

z z at z.com
Fri Mar 5 21:47:49 UTC 2021


On Friday, 5 March 2021 at 16:10:02 UTC, Rumbu wrote:
> First of all, in 64 bit ABI, parameters are not passed on 
> stack, therefore a[RBP] is a nonsense.
>
> void complement32(simdbytes* a, simdbytes* b)
>
> a is in RCX, b is in RDX on Windows
> a is in RDI, b is in RSI on Linux
I'm confused, with your help i've been able to find the function 
calling convention but on LDC-generated code, sometimes i see the 
layout being reversed(The function i was looking at is a 7 
argument function, all are pointers. The first argument is on the 
stack, the seventh and last is in RCX) and the offsets don't seem 
to make sense either(first arguemnt as ss:[rsp+38], second at 
ss:[rsp+30], and third at ss:[rsp+28])

> Secondly, there is no such thing as movaps YMMX, [RAX], but 
> vmovaps YMM3, [RAX]
> Same for vxorps, but there are 3 operands, not 2.
You're absolutely right, but apparently it only accepts the 
two-operand version from SSE.
Other AVX/AVX2/AVX512 instructions that have «v» prefixed aren't 
recognized either("Error: unknown opcode vmovaps"), is AVX(2) 
with YMM registers supported for «asm{}» statements?




More information about the Digitalmars-d-learn mailing list