'Invalid register name' when using ymm registers other than ymm0-1 in ATT asmmode
Original Reporter info from Mantis: km
-
Reporter name: Kieran
Original Reporter info from Mantis: km
- Reporter name: Kieran
Description:
Firstly - i'm not certain I'm doing this right. The included example results in the below errors. I've tried a clean re-build of the compiler.
Compiling avxtest.pas
avxtest.pas(10,19) Error: Invalid register name
avxtest.pas(10,19) Error: No size specified and unable to determine the size of the operands
avxtest.pas(12,17) Error: Invalid register name
avxtest.pas(24) Fatal: There were 3 errors compiling module, stopping
Steps to reproduce:
Compile example code:
program avxtest;
{$ASMMODE ATT}
type
TSIMDWord = packed array[0..3] of Double;
procedure SIMDAddWord(var A, B, ARes);assembler;
asm
vmovdqu (%rdi), %ymm2 // <- error 1
vmovdqu (%rsi), %ymm1
vaddpd %ymm1, %ymm2, %ymm0 // <- error 2
vmovdqu %ymm0, (%rdx)
end;
var
V1, V2, Res : TSIMDWord;
begin
SIMDAddWord(V1, V2, Res);
end.
Mantis conversion info:
- Mantis ID: 29471
- OS: Linux
- OS Build: n/a
- Build: 32973
- Platform: x86-64
- Version: 3.1.1
- Fixed in version: 3.1.1
- Fixed in revision: 33076 (#28613627)