increment-decrement.inc

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

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

; <fold изменение значения переменных на 1>
    ; <fold увеличение значения на 1>
        macro incc_l localvarName* {
                        inc         word  [.#localvarName]
        }

        macro ince_l localvarName* {
                        fld         tbyte [.#localvarName]
                        fld1
                        faddp       esc1, esc0
                        fstp        tbyte [.#localvarName]
        }

        macro incd_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddsd      xmm0, xmm0, [cons$double8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro incd2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddpd      xmm0, xmm0, [cons$double8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro incd4_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        vaddpd      ymm0, ymm0, [cons$double8.1]
                        vmovdqu     yword [.#localvarName], ymm0
        }

        macro incd8_l localvarName* {
                        vmovdqu64   zmm0, [.#localvarName]
                        vaddpd      zmm0, zmm0, [cons$double8.1]
                        vmovdqu64   zword [.#localvarName], zmm0
        }

        macro incf_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddss      xmm0, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro incf2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddps      xmm0, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro incf4_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddps      xmm0, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro incf8_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        vaddps      ymm0, ymm0, [cons$float8.1]
                        vmovdqu     yword [.#localvarName], ymm0
        }

        macro incb_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        inc         dsc0
                        movsx       dsc0, bsc0
                        mov         dword [.#localvarName], dsc0
        }

        macro incb2_l localvarName* {
                        inc         byte  [.#localvarName]
        }

        macro incb4_l localvarName* {
                        inc         byte  [.#localvarName]
        }

        macro incb8_l localvarName* {
                        inc         byte  [.#localvarName]
        }

        macro incs_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        inc         dsc0
                        movsx       dsc0, wsc0
                        mov         dword [.#localvarName], dsc0
        }

        macro incs2_l localvarName* {
                        inc         word  [.#localvarName]
        }

        macro incs4_l localvarName* {
                        inc         word  [.#localvarName]
        }

        macro incs8_l localvarName* {
                        inc         word  [.#localvarName]
        }

        macro inci_l localvarName* {
                        inc         dword [.#localvarName]
        }

        macro inci2_l localvarName* {
                        inc         dword [.#localvarName]
        }

        macro inci4_l localvarName* {
                        inc         dword [.#localvarName]
        }

        macro inci8_l localvarName* {
                        inc         dword [.#localvarName]
        }

        macro incl_l localvarName* {
                        inc         qword [.#localvarName]
        }

        macro incl2_l localvarName* {
                        inc         qword [.#localvarName]
        }

        macro incl4_l localvarName* {
                        inc         qword [.#localvarName]
        }

        macro incl8_l localvarName* {
                        inc         qword [.#localvarName]
        }
    ; </fold>

    ; <fold уменьшение значения на 1>
        macro decc_l localvarName* {
                        dec         word  [.#localvarName]
        }

        macro dece_l localvarName* {
                        fld         tbyte [.#localvarName]
                        fld1
                        fsubp       esc1, esc0
                        fstp        tbyte [.#localvarName]
        }

        macro decd_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubsd      xmm0, xmm0, [cons$double8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro decd2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubpd      xmm0, xmm0, [cons$double8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro decd4_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        vsubpd      ymm0, ymm0, [cons$double8.1]
                        vmovdqu     yword [.#localvarName], ymm0
        }

        macro decd8_l localvarName* {
                        vmovdqu64   zmm0, [.#localvarName]
                        vsubpd      zmm0, zmm0, [cons$double8.1]
                        vmovdqu64   zword [.#localvarName], zmm0
        }

        macro decf_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubss      xmm0, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro decf2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubps      xmm0, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro decf4_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubps      xmm0, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro decf8_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        vsubps      ymm0, ymm0, [cons$float8.1]
                        vmovdqu     yword [.#localvarName], ymm0
        }

        macro decb_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        dec         dsc0
                        movsx       dsc0, bsc0
                        mov         dword [.#localvarName], dsc0
        }

        macro decb2_l localvarName* {
                        dec         byte  [.#localvarName]
        }

        macro decb4_l localvarName* {
                        dec         byte  [.#localvarName]
        }

        macro decb8_l localvarName* {
                        dec         byte  [.#localvarName]
        }

        macro decs_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        dec         dsc0
                        movsx       dsc0, wsc0
                        mov         dword [.#localvarName], dsc0
        }

        macro decs2_l localvarName* {
                        dec         word  [.#localvarName]
        }

        macro decs4_l localvarName* {
                        dec         word  [.#localvarName]
        }

        macro decs8_l localvarName* {
                        dec         word  [.#localvarName]
        }

        macro deci_l localvarName* {
                        dec         dword [.#localvarName]
        }

        macro deci2_l localvarName* {
                        dec         dword [.#localvarName]
        }

        macro deci4_l localvarName* {
                        dec         dword [.#localvarName]
        }

        macro deci8_l localvarName* {
                        dec         dword [.#localvarName]
        }

        macro decl_l localvarName* {
                        dec         qword [.#localvarName]
        }

        macro decl2_l localvarName* {
                        dec         qword [.#localvarName]
        }

        macro decl4_l localvarName* {
                        dec         qword [.#localvarName]
        }

        macro decl8_l localvarName* {
                        dec         qword [.#localvarName]
        }
    ; </fold>

    ; <fold увеличение на 1 и последующая загрузка значения>
        macro incloadc_l localvarName* {
                        inc         word  [.#localvarName]
                        mov         dsc0, [.#localvarName]
        }

        macro incloade_l localvarName* {
                        fld         tbyte [.#localvarName]
                        fld1
                        faddp       esc1, esc0
                        fld         esc0
                        fstp        tbyte [.#localvarName]
        }

        macro incloadd_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddsd      xmm0, xmm0, [cons$double8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro incloadd2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddpd      xmm0, xmm0, [cons$double8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro incloadd4_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        vaddpd      ymm0, ymm0, [cons$double8.1]
                        vmovdqu     yword [.#localvarName], ymm0
        }

        macro incloadd8_l localvarName* {
                        vmovdqu64   zmm0, [.#localvarName]
                        vaddpd      zmm0, zmm0, [cons$double8.1]
                        vmovdqu64   zword [.#localvarName], zmm0
        }

        macro incloadf_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddss      xmm0, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro incloadf2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddps      xmm0, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro incloadf4_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddps      xmm0, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro incloadf8_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        vaddps      ymm0, ymm0, [cons$float8.1]
                        vmovdqu     yword [.#localvarName], ymm0
        }

        macro incloadb_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        inc         dsc0
                        movsx       dsc0, bsc0
                        mov         dword [.#localvarName], dsc0
        }

        macro incloadb2_l localvarName* {
                        inc         byte  [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro incloadb4_l localvarName* {
                        inc         byte  [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro incloadb8_l localvarName* {
                        inc         byte  [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro incloads_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        inc         dsc0
                        movsx       dsc0, wsc0
                        mov         dword [.#localvarName], dsc0
        }

        macro incloads2_l localvarName* {
                        inc         word  [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro incloads4_l localvarName* {
                        inc         word  [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro incloads8_l localvarName* {
                        inc         word  [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro incloadi_l localvarName* {
                        inc         dword [.#localvarName]
                        mov         dsc0, [.#localvarName]
        }

        macro incloadi2_l localvarName* {
                        inc         dword [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro incloadi4_l localvarName* {
                        inc         dword [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro incloadi8_l localvarName* {
                        inc         dword [.#localvarName]
                        vmovdqu     ymm0, [.#localvarName]
        }

        macro incloadl_l localvarName* {
                        inc         qword [.#localvarName]
                        mov         qsc0, [.#localvarName]
        }

        macro incloadl2_l localvarName* {
                        inc         qword [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro incloadl4_l localvarName* {
                        inc         qword [.#localvarName]
                        vmovdqu     ymm0, [.#localvarName]
        }

        macro incloadl8_l localvarName* {
                        inc         qword [.#localvarName]
                        vmovdqu64   zmm0, [.#localvarName]
        }
    ; </fold>

    ; <fold уменьшение на 1 и последующая загрузка значения>
        macro decloadc_l localvarName* {
                        dec         word  [.#localvarName]
                        mov         dsc0, [.#localvarName]
        }

        macro decloade_l localvarName* {
                        fld         tbyte [.#localvarName]
                        fld1
                        fsubp       esc1, esc0
                        fld         esc0
                        fstp        tbyte [.#localvarName]
        }

        macro decloadd_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubsd      xmm0, xmm0, [cons$double8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro decloadd2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubpd      xmm0, xmm0, [cons$double8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro decloadd4_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        vsubpd      ymm0, ymm0, [cons$double8.1]
                        vmovdqu     yword [.#localvarName], ymm0
        }

        macro decloadd8_l localvarName* {
                        vmovdqu64   zmm0, [.#localvarName]
                        vsubpd      zmm0, zmm0, [cons$double8.1]
                        vmovdqu64   zword [.#localvarName], zmm0
        }

        macro decloadf_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubss      xmm0, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro decloadf2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubps      xmm0, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro decloadf4_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubps      xmm0, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm0
        }

        macro decloadf8_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        vsubps      ymm0, ymm0, [cons$float8.1]
                        vmovdqu     yword [.#localvarName], ymm0
        }

        macro decloadb_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        dec         dsc0
                        movsx       dsc0, bsc0
                        mov         dword [.#localvarName], dsc0
        }

        macro decloadb2_l localvarName* {
                        dec         byte  [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro decloadb4_l localvarName* {
                        dec         byte  [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro decloadb8_l localvarName* {
                        dec         byte  [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro decloads_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        dec         dsc0
                        movsx       dsc0, wsc0
                        mov         dword [.#localvarName], dsc0
        }

        macro decloads2_l localvarName* {
                        dec         word  [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro decloads4_l localvarName* {
                        dec         word  [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro decloads8_l localvarName* {
                        dec         word  [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro decloadi_l localvarName* {
                        dec         dword [.#localvarName]
                        mov         dsc0, [.#localvarName]
        }

        macro decloadi2_l localvarName* {
                        dec         dword [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro decloadi4_l localvarName* {
                        dec         dword [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro decloadi8_l localvarName* {
                        dec         dword [.#localvarName]
                        vmovdqu     ymm0, [.#localvarName]
        }

        macro decloadl_l localvarName* {
                        dec         qword [.#localvarName]
                        mov         qsc0, [.#localvarName]
        }

        macro decloadl2_l localvarName* {
                        dec         qword [.#localvarName]
                        vmovdqa     xmm0, [.#localvarName]
        }

        macro decloadl4_l localvarName* {
                        dec         qword [.#localvarName]
                        vmovdqu     ymm0, [.#localvarName]
        }

        macro decloadl8_l localvarName* {
                        dec         qword [.#localvarName]
                        vmovdqu64   zmm0, [.#localvarName]
        }
    ; </fold>

    ; <fold загрузка и последующее увеличение значения на 1>
        macro loadincc_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        inc         word  [.#localvarName]
        }

        macro loadince_l localvarName* {
                        fld         tbyte [.#localvarName]
                        fld         esc0
                        fld1
                        faddp       esc1, esc0
                        fstp        tbyte [.#localvarName]
        }

        macro loadincd_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddsd      xmm1, xmm0, [cons$double8.1]
                        vmovdqa     xword [.#localvarName], xmm1
        }

        macro loadincd2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddpd      xmm1, xmm0, [cons$double8.1]
                        vmovdqa     xword [.#localvarName], xmm1
        }

        macro loadincd4_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        vaddpd      ymm1, ymm0, [cons$double8.1]
                        vmovdqu     yword [.#localvarName], ymm1
        }

        macro loadincd8_l localvarName* {
                        vmovdqu64   zmm0, [.#localvarName]
                        vaddpd      zmm1, zmm0, [cons$double8.1]
                        vmovdqu64   zword [.#localvarName], zmm1
        }

        macro loadincf_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddss      xmm1, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm1
        }

        macro loadincf2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddps      xmm1, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm1
        }

        macro loadincf4_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vaddps      xmm1, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm1
        }

        macro loadincf8_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        vaddps      ymm1, ymm0, [cons$float8.1]
                        vmovdqu     yword [.#localvarName], ymm1
        }

        macro loadincb_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        lea         dsc1, [dsc0+$01]
                        movsx       dsc1, bsc1
                        mov         dword [.#localvarName], dsc1
        }

        macro loadincb2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        inc         byte  [.#localvarName]
        }

        macro loadincb4_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        inc         byte  [.#localvarName]
        }

        macro loadincb8_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        inc         byte  [.#localvarName]
        }

        macro loadincs_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        lea         dsc1, [dsc0+$01]
                        movsx       dsc1, wsc1
                        mov         dword [.#localvarName], dsc1
        }

        macro loadincs2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        inc         word  [.#localvarName]
        }

        macro loadincs4_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        inc         word  [.#localvarName]
        }

        macro loadincs8_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        inc         word  [.#localvarName]
        }

        macro loadinci_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        inc         dword [.#localvarName]
        }

        macro loadinci2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        inc         dword [.#localvarName]
        }

        macro loadinci4_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        inc         dword [.#localvarName]
        }

        macro loadinci8_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        inc         dword [.#localvarName]
        }

        macro loadincl_l localvarName* {
                        mov         qsc0, [.#localvarName]
                        inc         qword [.#localvarName]
        }

        macro loadincl2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        inc         qword [.#localvarName]
        }

        macro loadincl4_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        inc         qword [.#localvarName]
        }

        macro loadincl8_l localvarName* {
                        vmovdqu64   zmm0, [.#localvarName]
                        inc         qword [.#localvarName]
        }
    ; </fold>

    ; <fold загрузка и последующее уменьшение значения на 1>
        macro loaddecc_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        dec         word  [.#localvarName]
        }

        macro loaddece_l localvarName* {
                        fld         tbyte [.#localvarName]
                        fld         esc0
                        fld1
                        fsubp       esc1, esc0
                        fstp        tbyte [.#localvarName]
        }

        macro loaddecd_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubsd      xmm1, xmm0, [cons$double8.1]
                        vmovdqa     xword [.#localvarName], xmm1
        }

        macro loaddecd2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubpd      xmm1, xmm0, [cons$double8.1]
                        vmovdqa     xword [.#localvarName], xmm1
        }

        macro loaddecd4_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        vsubpd      ymm1, ymm0, [cons$double8.1]
                        vmovdqu     yword [.#localvarName], ymm1
        }

        macro loaddecd8_l localvarName* {
                        vmovdqu64   zmm0, [.#localvarName]
                        vsubpd      zmm1, zmm0, [cons$double8.1]
                        vmovdqu64   zword [.#localvarName], zmm1
        }

        macro loaddecf_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubss      xmm1, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm1
        }

        macro loaddecf2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubps      xmm1, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm1
        }

        macro loaddecf4_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        vsubps      xmm1, xmm0, [cons$float8.1]
                        vmovdqa     xword [.#localvarName], xmm1
        }

        macro loaddecf8_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        vsubps      ymm1, ymm0, [cons$float8.1]
                        vmovdqu     yword [.#localvarName], ymm1
        }

        macro loaddecb_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        lea         dsc1, [dsc0-$01]
                        movsx       dsc1, bsc1
                        mov         dword [.#localvarName], dsc1
        }

        macro loaddecb2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        dec         byte  [.#localvarName]
        }

        macro loaddecb4_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        dec         byte  [.#localvarName]
        }

        macro loaddecb8_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        dec         byte  [.#localvarName]
        }

        macro loaddecs_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        lea         dsc1, [dsc0-$01]
                        movsx       dsc1, wsc1
                        mov         dword [.#localvarName], dsc1
        }

        macro loaddecs2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        dec         word  [.#localvarName]
        }

        macro loaddecs4_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        dec         word  [.#localvarName]
        }

        macro loaddecs8_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        dec         word  [.#localvarName]
        }

        macro loaddeci_l localvarName* {
                        mov         dsc0, [.#localvarName]
                        dec         dword [.#localvarName]
        }

        macro loaddeci2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        dec         dword [.#localvarName]
        }

        macro loaddeci4_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        dec         dword [.#localvarName]
        }

        macro loaddeci8_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        dec         dword [.#localvarName]
        }

        macro loaddecl_l localvarName* {
                        mov         qsc0, [.#localvarName]
                        dec         qword [.#localvarName]
        }

        macro loaddecl2_l localvarName* {
                        vmovdqa     xmm0, [.#localvarName]
                        dec         qword [.#localvarName]
        }

        macro loaddecl4_l localvarName* {
                        vmovdqu     ymm0, [.#localvarName]
                        dec         qword [.#localvarName]
        }

        macro loaddecl8_l localvarName* {
                        vmovdqu64   zmm0, [.#localvarName]
                        dec         qword [.#localvarName]
        }
    ; </fold>
; </fold>