Using YMM registers causes an undefined label error
    z 
    z at z.com
       
    Tue Mar  9 20:23:48 UTC 2021
    
    
  
On Friday, 5 March 2021 at 12:57:43 UTC, z wrote:
> ...
Then it seems the only way to get AVX-compatible inline 
assembly(ldc.llvmasm excluded) is to use an external assembler.
For example :
>import std.stdio;
>extern(C) void vxorps_d(ubyte[32]*);
>
>void main() {
>	ubyte[32] a = 2;
>	writefln!"Contents of a before : %( %s %)"(a);
>	vxorps_d(&a);
>	writefln!"Contents of a after  : %( %s %)"(a);
>}
>BITS 64
>
>global vxorps_d
>
>section .text2
>vxorps_d:
>	vmovups ymm0, [rcx];
>	mov rdx, zerofilled
>	vbroadcastss ymm1, [rdx]
>	vxorps ymm0, ymm0, ymm1
>	vmovups [rcx], ymm0
>	ret
>zerofilled:
>db 0xFF,0xFF,0xFF,0xFF
>nasm -g -f win64 asmfile.asm
>dmd vxorpstest.d asmfile.obj -m64
>ldc vxorpstest.d asmfile.obj -m64
>vxorpstest.exe
>Contents of a before :  2  2  2... (0x02/0b0000_0010)
>Contents of a after  :  253  253  253...(0xFD/0b1111_1101)
    
    
More information about the Digitalmars-d-learn
mailing list