Download Latest Version d7avx.zip (431.9 kB)
Email in envelope

Get an email when there's a new version of d7avx

Home / source
Name Modified Size InfoDownloads / Week
Parent folder
d7avx.zip 2023-11-03 56.6 kB
Totals: 1 Item   56.6 kB 0
D7AVX - D7AVX + dbgAVX - 1.0
----------------------------------------

License

    2023 Valentim Batista

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    license.txt file containing the GNU General Public License for more details.

-------------------------------------------------------------------------------

This software is:



 *  d7avx - a helper (gcc frontend) for using SSE/AVX instructions with Delphi compilers not supporting SSE/AVX instructions

	uses MinGW GCC/ObjectDump to compile .c to .s and .s to .o with disassembly customized for delphi inclusion in asm statements

	tested only with MinGW GCC/ObjectDump

	c code - is compiled with GCC as a way to study generated assembly code with various optimization levels including SSE/AVX

	assembly code - is compiled, disassembled and customized for delphi inclusion as db statements (for when the instructions are unrecognized)


example of compiled, disassembled and customized assembly code for direct delphi inclusion:

    db      $c5,$fc,$10,$09           // vmovups ymm1,YMMWORD PTR [ecx]
    db      $c5,$fc,$10,$12           // vmovups ymm2,YMMWORD PTR [edx]
    db      $c5,$fc,$28,$d9           // vmovaps ymm3,ymm1
    db      $c5,$e4,$59,$da           // vmulps ymm3,ymm3,ymm2
    db      $c5,$fd,$70,$e3,$f5       // vpshufd ymm4,ymm3,0xf5
    db      $c5,$e4,$5c,$dc           // vsubps ymm3,ymm3,ymm4
    db      $c5,$e4,$54,$dd           // vandps ymm3,ymm3,ymm5
    db      $c5,$fd,$70,$d2,$b1       // vpshufd ymm2,ymm2,0xb1
    db      $c5,$ec,$59,$d1           // vmulps ymm2,ymm2,ymm1
    db      $c5,$fd,$70,$e2,$a0       // vpshufd ymm4,ymm2,0xa0
    db      $c5,$dc,$58,$e2           // vaddps ymm4,ymm4,ymm2
    db      $c5,$dc,$54,$e6           // vandps ymm4,ymm4,ymm6
    db      $c5,$dc,$56,$e3           // vorps ymm4,ymm4,ymm3
    db      $c5,$fc,$11,$20           // vmovups YMMWORD PTR [eax],ymm4
	

	the included .ini file holds the paths and commands used with gcc and objdump

[configuration]

gccfolder=C:\MinGW\bin
gccscmd=""%s\gcc.exe" -masm=intel %s -S "%s" -o "%s""
gccccmd=""%s\gcc.exe" -m32 -c "%s" -o "%s""

objdumpfolder=C:\MinGW\bin
objdumpcmd=""%s\objdump.exe" -M intel -d "%s""



 
 *  dbgavx - a helper for debugging XMM/YMM registers content with debuggers not supporting XMM/YMM registers

        used with any debugger for XMM/YMM and also MM/ST and general registers content inspection
	when the main debugger is on a breakpoint a thread in the debugee process can be suspended and a context extracted containing the register state for inspection


-------------------------------------------------------------------------------

Requirements:

- windows 7 to 11 (32 or 64 bits)

-------------------------------------------------------------------------------

Updates:

https://sourceforge.net/projects/d7avx/

-------------------------------------------------------------------------------

Source: readme.txt, updated 2023-11-03