;
; Исходный код среды исполнения ПВТ-ОО.
;
; Этот исходный код является частью проекта ПВТ-ОО.
;
; Copyright © 2021 Малик Разработчик
;
; Это свободная программа: вы можете перераспространять её и/или
; изменять её на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
; в каком она была опубликована Фондом свободного программного обеспечения;
; либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
;
; Эта программа распространяется в надежде, что она может быть полезна,
; но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
; или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
; общественной лицензии GNU.
;
; Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
; вместе с этой программой. Если это не так, см.
; <http://www.gnu.org/licenses/>.
;
; <fold avt.lang.Float4 (natives)>
method avt.lang.Float4$high$float4$, \
value, float4 ; returns float2 <fold >
menter
lverify value, TAG_FLOAT4
f2load [.value+$08]
mleavex
eleave
; </fold>
method avt.lang.Float4$create$float2$float2$, \
value0, float2, \
value1, float2 ; returns float4 <fold >
menter
lverify value0, TAG_FLOAT2
lverify value1, TAG_FLOAT2
fload [.value0+$00]
fload [.value0+$04]
fload [.value1+$00]
fload [.value1+$04]
newvectorf4
mleavex
eleave
; </fold>
method avt.lang.Float4$setElement$float4$int$float$, \
value, float4, \
index, int, \
element, float ; returns float4 <fold >
menter
lverify value, TAG_FLOAT4
lverify index, TAG_INT
lverify element, TAG_FLOAT
mov r0d, [.index]
cmp r0d, $00
jl .L.000
cmp r0d, $04
jl .L.001
.L.000: call inst$throwVectorIndexOutOfBoundsException
.L.001: mov r1d, [.element]
mov dword[.value+r0*4], r1d
f4load [.value]
mleavex
eleave
; </fold>
method avt.lang.Float4$toInt4Bits$float4$, \
value, float4 ; returns int4 <fold >
menter
lverify value, TAG_FLOAT4
i4load [.value]
mleavex
eleave
; </fold>
; </fold>