;
; Динамически подключаемая библиотека avo. Версия 1.0.
; Константы, используемые векторными операциями.
;
; Copyright © 2026 Малик Разработчик
;
; Это свободная программа: вы можете перераспространять ее и/или изменять
; ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
; в каком она была опубликована Фондом свободного программного обеспечения;
; либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
;
; Эта программа распространяется в надежде, что она будет полезной,
; но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
; или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
; общественной лицензии GNU.
;
; Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
; вместе с этой программой. Если это не так, см.
; <https://www.gnu.org/licenses/>.
;
; <fold ScalarMulDouble2>
constant smuld2, $10
.c0: dq $3ff0000000000000, $bff0000000000000
; </fold>
; <fold ScalarMulDouble4>
constant smuld4, $20
.q0: dq $3ff0000000000000, $bff0000000000000, $bff0000000000000, $bff0000000000000
.q1: dq $3ff0000000000000, $3ff0000000000000, $3ff0000000000000, $bff0000000000000
.q2: dq $3ff0000000000000, $bff0000000000000, $3ff0000000000000, $3ff0000000000000
.q3: dq $3ff0000000000000, $3ff0000000000000, $bff0000000000000, $3ff0000000000000
; </fold>
; <fold ScalarMulDouble8>
constant smuld8, $40
.o0: dq $3ff0000000000000, $bff0000000000000, $bff0000000000000, $bff0000000000000, $bff0000000000000, $bff0000000000000, $bff0000000000000, $bff0000000000000
.o1: dq $3ff0000000000000, $3ff0000000000000, $3ff0000000000000, $bff0000000000000, $3ff0000000000000, $bff0000000000000, $bff0000000000000, $3ff0000000000000
.o2: dq $3ff0000000000000, $bff0000000000000, $3ff0000000000000, $3ff0000000000000, $3ff0000000000000, $3ff0000000000000, $bff0000000000000, $bff0000000000000
.o3: dq $3ff0000000000000, $3ff0000000000000, $bff0000000000000, $3ff0000000000000, $3ff0000000000000, $bff0000000000000, $3ff0000000000000, $bff0000000000000
.o4: dq $3ff0000000000000, $bff0000000000000, $bff0000000000000, $bff0000000000000, $3ff0000000000000, $3ff0000000000000, $3ff0000000000000, $3ff0000000000000
.o5: dq $3ff0000000000000, $3ff0000000000000, $bff0000000000000, $3ff0000000000000, $bff0000000000000, $3ff0000000000000, $bff0000000000000, $3ff0000000000000
.o6: dq $3ff0000000000000, $3ff0000000000000, $3ff0000000000000, $bff0000000000000, $bff0000000000000, $3ff0000000000000, $3ff0000000000000, $bff0000000000000
.o7: dq $3ff0000000000000, $bff0000000000000, $3ff0000000000000, $3ff0000000000000, $bff0000000000000, $bff0000000000000, $3ff0000000000000, $3ff0000000000000
; </fold>
; <fold ScalarMulFloat2>
constant smulf2, $10
.c0: dd $3f800000, $bf800000, $00000000, $00000000
; </fold>
; <fold ScalarMulFloat4>
constant smulf4, $10
.q0: dd $3f800000, $bf800000, $bf800000, $bf800000
.q1: dd $3f800000, $3f800000, $3f800000, $bf800000
.q2: dd $3f800000, $bf800000, $3f800000, $3f800000
.q3: dd $3f800000, $3f800000, $bf800000, $3f800000
; </fold>
; <fold ScalarMulFloat8>
constant smulf8, $20
.o0: dd $3f800000, $bf800000, $bf800000, $bf800000, $bf800000, $bf800000, $bf800000, $bf800000
.o1: dd $3f800000, $3f800000, $3f800000, $bf800000, $3f800000, $bf800000, $bf800000, $3f800000
.o2: dd $3f800000, $bf800000, $3f800000, $3f800000, $3f800000, $3f800000, $bf800000, $bf800000
.o3: dd $3f800000, $3f800000, $bf800000, $3f800000, $3f800000, $bf800000, $3f800000, $bf800000
.o4: dd $3f800000, $bf800000, $bf800000, $bf800000, $3f800000, $3f800000, $3f800000, $3f800000
.o5: dd $3f800000, $3f800000, $bf800000, $3f800000, $bf800000, $3f800000, $bf800000, $3f800000
.o6: dd $3f800000, $3f800000, $3f800000, $bf800000, $bf800000, $3f800000, $3f800000, $bf800000
.o7: dd $3f800000, $bf800000, $3f800000, $3f800000, $bf800000, $bf800000, $3f800000, $3f800000
; </fold>
; <fold ScalarMulInt2>
constant smuli2, $10
.c0: dd $00000001, $ffffffff, $00000000, $00000000
; </fold>
; <fold ScalarMulInt4>
constant smuli4, $10
.q0: dd $00000001, $ffffffff, $ffffffff, $ffffffff
.q1: dd $00000001, $00000001, $00000001, $ffffffff
.q2: dd $00000001, $ffffffff, $00000001, $00000001
.q3: dd $00000001, $00000001, $ffffffff, $00000001
; </fold>
; <fold ScalarMulInt8>
constant smuli8, $20
.o0: dd $00000001, $ffffffff, $ffffffff, $ffffffff, $ffffffff, $ffffffff, $ffffffff, $ffffffff
.o1: dd $00000001, $00000001, $00000001, $ffffffff, $00000001, $ffffffff, $ffffffff, $00000001
.o2: dd $00000001, $ffffffff, $00000001, $00000001, $00000001, $00000001, $ffffffff, $ffffffff
.o3: dd $00000001, $00000001, $ffffffff, $00000001, $00000001, $ffffffff, $00000001, $ffffffff
.o4: dd $00000001, $ffffffff, $ffffffff, $ffffffff, $00000001, $00000001, $00000001, $00000001
.o5: dd $00000001, $00000001, $ffffffff, $00000001, $ffffffff, $00000001, $ffffffff, $00000001
.o6: dd $00000001, $00000001, $00000001, $ffffffff, $ffffffff, $00000001, $00000001, $ffffffff
.o7: dd $00000001, $ffffffff, $00000001, $00000001, $ffffffff, $ffffffff, $00000001, $00000001
; </fold>
; <fold ScalarMulLong2>
constant smull2, $10
.c0: dq $0000000000000001, $ffffffffffffffff
; </fold>
; <fold ScalarMulLong4>
constant smull4, $20
.q0: dq $0000000000000001, $ffffffffffffffff, $ffffffffffffffff, $ffffffffffffffff
.q1: dq $0000000000000001, $0000000000000001, $0000000000000001, $ffffffffffffffff
.q2: dq $0000000000000001, $ffffffffffffffff, $0000000000000001, $0000000000000001
.q3: dq $0000000000000001, $0000000000000001, $ffffffffffffffff, $0000000000000001
; </fold>
; <fold ScalarMulLong8>
constant smull8, $40
.o0: dq $0000000000000001, $ffffffffffffffff, $ffffffffffffffff, $ffffffffffffffff, $ffffffffffffffff, $ffffffffffffffff, $ffffffffffffffff, $ffffffffffffffff
.o1: dq $0000000000000001, $0000000000000001, $0000000000000001, $ffffffffffffffff, $0000000000000001, $ffffffffffffffff, $ffffffffffffffff, $0000000000000001
.o2: dq $0000000000000001, $ffffffffffffffff, $0000000000000001, $0000000000000001, $0000000000000001, $0000000000000001, $ffffffffffffffff, $ffffffffffffffff
.o3: dq $0000000000000001, $0000000000000001, $ffffffffffffffff, $0000000000000001, $0000000000000001, $ffffffffffffffff, $0000000000000001, $ffffffffffffffff
.o4: dq $0000000000000001, $ffffffffffffffff, $ffffffffffffffff, $ffffffffffffffff, $0000000000000001, $0000000000000001, $0000000000000001, $0000000000000001
.o5: dq $0000000000000001, $0000000000000001, $ffffffffffffffff, $0000000000000001, $ffffffffffffffff, $0000000000000001, $ffffffffffffffff, $0000000000000001
.o6: dq $0000000000000001, $0000000000000001, $0000000000000001, $ffffffffffffffff, $ffffffffffffffff, $0000000000000001, $0000000000000001, $ffffffffffffffff
.o7: dq $0000000000000001, $ffffffffffffffff, $0000000000000001, $0000000000000001, $ffffffffffffffff, $ffffffffffffffff, $0000000000000001, $0000000000000001
; </fold>
; <fold double8>
constant double8, $40
.imax: dq $41e0000000000000, $41e0000000000000, $41e0000000000000, $41e0000000000000, $41e0000000000000, $41e0000000000000, $41e0000000000000, $41e0000000000000
.lmax: dq $43e0000000000000, $43e0000000000000, $43e0000000000000, $43e0000000000000, $43e0000000000000, $43e0000000000000, $43e0000000000000, $43e0000000000000
; </fold>
; <fold float8>
constant float8, $20
.imax: dd $4f000000, $4f000000, $4f000000, $4f000000, $4f000000, $4f000000, $4f000000, $4f000000
; </fold>
; <fold byte8>
constant byte8, $10
.0: db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.m1: db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
.mask8: db $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $00, $00, $00, $00, $00, $00, $00, $00
.mask4: db $ff, $ff, $ff, $ff, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
.mask2: db $ff, $ff, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
; </fold>
; <fold short2>
constant short2, $10
.$007f: dw $007f, $007f, $0000, $0000, $0000, $0000, $0000, $0000
.$00ff: dw $00ff, $00ff, $0000, $0000, $0000, $0000, $0000, $0000
; </fold>
; <fold short4>
constant short4, $10
.$007f: dw $007f, $007f, $007f, $007f, $0000, $0000, $0000, $0000
.$00ff: dw $00ff, $00ff, $00ff, $00ff, $0000, $0000, $0000, $0000
; </fold>
; <fold short8>
constant short8, $10
.m1: dw $ffff, $ffff, $ffff, $ffff, $ffff, $ffff, $ffff, $ffff
.mask4: dw $ffff, $ffff, $ffff, $ffff, $0000, $0000, $0000, $0000
.mask2: dw $ffff, $ffff, $0000, $0000, $0000, $0000, $0000, $0000
.$007f: dw $007f, $007f, $007f, $007f, $007f, $007f, $007f, $007f
.$00ff: dw $00ff, $00ff, $00ff, $00ff, $00ff, $00ff, $00ff, $00ff
label .mask8 at .m1
; </fold>
; <fold int2>
constant int2, $10
.$7fff: dd $00007fff, $00007fff, $00000000, $00000000
.$ffff: dd $0000ffff, $0000ffff, $00000000, $00000000
; </fold>
; <fold int4>
constant int4, $10
label .$7fff at int8.$7fff
label .$ffff at int8.$ffff
; </fold>
; <fold int8>
constant int8, $20
.m1: dd $ffffffff, $ffffffff, $ffffffff, $ffffffff, $ffffffff, $ffffffff, $ffffffff, $ffffffff
.m1_0: dd $ffffffff, $ffffffff, $00000000, $00000000, $ffffffff, $ffffffff, $00000000, $00000000
.maskw: dd $0000ffff, $0000ffff, $0000ffff, $0000ffff, $0000ffff, $0000ffff, $0000ffff, $0000ffff
.maskb: dd $000000ff, $000000ff, $000000ff, $000000ff, $000000ff, $000000ff, $000000ff, $000000ff
.$7fff: dd $00007fff, $00007fff, $00007fff, $00007fff, $00007fff, $00007fff, $00007fff, $00007fff
.$ffff: dd $0000ffff, $0000ffff, $0000ffff, $0000ffff, $0000ffff, $0000ffff, $0000ffff, $0000ffff
label .mask2 at .m1_0
label .mask4 at .m1
label .mask8 at .m1
; </fold>
; <fold long8>
constant long8, $40
.m1: dq $ffffffffffffffff, $ffffffffffffffff, $ffffffffffffffff, $ffffffffffffffff, $ffffffffffffffff, $ffffffffffffffff, $ffffffffffffffff, $ffffffffffffffff
.maskd: dq $00000000ffffffff, $00000000ffffffff, $00000000ffffffff, $00000000ffffffff, $00000000ffffffff, $00000000ffffffff, $00000000ffffffff, $00000000ffffffff
.maskw: dq $000000000000ffff, $000000000000ffff, $000000000000ffff, $000000000000ffff, $000000000000ffff, $000000000000ffff, $000000000000ffff, $000000000000ffff
.maskb: dq $00000000000000ff, $00000000000000ff, $00000000000000ff, $00000000000000ff, $00000000000000ff, $00000000000000ff, $00000000000000ff, $00000000000000ff
label .mask2 at .m1
label .mask4 at .m1
label .mask8 at .m1
; </fold>
; <fold zero>
label zero at byte8.0
; </fold>