vector.neg.inc

Переключить прокрутку окна
Загрузить этот исходный код

;
  ; Реализация среды исполнения языка программирования
  ; Объектно-ориентированный продвинутый векторный транслятор
  ;
  ; Copyright © 2021, 2024 Малик Разработчик
  ;
  ; Это свободная программа: вы можете перераспространять ее и/или изменять
  ; ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
  ; в каком она была опубликована Фондом свободного программного обеспечения;
  ; либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
  ;
  ; Эта программа распространяется в надежде, что она будет полезной,
  ; но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
  ; или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
  ; общественной лицензии GNU.
  ;
  ; Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
  ; вместе с этой программой. Если это не так, см.
  ; <https://www.gnu.org/licenses/>.
;

; <fold векторное отрицание>
    macro vnegd {
                    snegd
    }

    macro vnegd2 {
                    snegd2
    }

    macro vnegd4 {
                    snegd4
    }

    macro vnegd8 {
                    snegd8
    }

    macro vnegf {
                    snegf
    }

    macro vnegf2 {
                    snegf2
    }

    macro vnegf4 {
                    snegf4
    }

    macro vnegf8 {
                    snegf8
    }

    macro vnegb {
                    neg         bsc0
                    movsx       dsc0, bsc0
    }

    macro vnegb2 {
                    vpxor       xmm1, xmm0, xmm0
                    vpsubb      xmm0, xmm1, xmm0
    }

    macro vnegb4 {
                    vpxor       xmm1, xmm0, xmm0
                    vpsubb      xmm0, xmm1, xmm0
    }

    macro vnegb8 {
                    vpxor       xmm1, xmm0, xmm0
                    vpsubb      xmm0, xmm1, xmm0
    }

    macro vnegs {
                    neg         wsc0
                    movsx       dsc0, wsc0
    }

    macro vnegs2 {
                    vpxor       xmm1, xmm0, xmm0
                    vpsubw      xmm0, xmm1, xmm0
    }

    macro vnegs4 {
                    vpxor       xmm1, xmm0, xmm0
                    vpsubw      xmm0, xmm1, xmm0
    }

    macro vnegs8 {
                    vpxor       xmm1, xmm0, xmm0
                    vpsubw      xmm0, xmm1, xmm0
    }

    macro vnegi {
                    snegi
    }

    macro vnegi2 {
                    snegi2
    }

    macro vnegi4 {
                    snegi4
    }

    macro vnegi8 {
                    snegi8
    }

    macro vnegl {
                    snegl
    }

    macro vnegl2 {
                    snegl2
    }

    macro vnegl4 {
                    snegl4
    }

    macro vnegl8 {
                    snegl8
    }
; </fold>