Contains

Submission Date: 2024/9/22 23:16:49
Status: Accepted
Author: long_long_float
Lines: 135

VSM

# *
# * AL1BMAB, PE 16
# * 8L2BM x 8L1BM x 16 = 1024
# * BL1BMAB, PE 16
# * 16MAB x 4PE x 16 = 1024
# * A[i], B[i]10
# * half-float
# * $lm0-16$ln0-16
# * passa使? 2 -> LSB
# $lm[0:32]$lr[0:16]$ls[0:16]float
# $ln[0:32]$lr[8:24]
imm i"32" $t
llsl $lm0v $aluf $lr0v
llsl $lm8v $t $lr8v
llsl $lm16v $t $lr16v
llsl $lm24v $t $lr24v
# d getf $lm0n0c0b0m0p0 16
# d getf $lr0n0c0b0m0p0 16
llsl $ln0v $t $lr32v
llsl $ln8v $t $lr40v
llsl $ln16v $t $lr48v
llsl $ln24v $t $lr56v
ladd $lm[2,6,10,14] $lr[0,4,8,12] $lr0v
ladd $lm[18,22,26,30] $lr[16,20,24,28] $lr8v
ladd $ln[2,6,10,14] $lr[32,36,40,44] $lr16v
ladd $ln[18,22,26,30] $lr[48,52,56,60] $lr24v
# d getf $lr0n0c0b0m0p0 8
# itof (3.7.1)
imm f"8388608" $t #/1000 # 8388608 is 2**23. Its weight for the LSB of mantissa is 1.0
ior $lr0v $aluf $nowrite # Create 2**23 + 1.0 * n = 2**23 + n in float
fvadd $aluf -$t $ls0v # Calculate (2 ** 23 + n) - 2**23, equals to n
ior $lr8v $t $nowrite
fvadd $aluf -$t $ls8v
ior $lr16v $t $nowrite
fvadd $aluf -$t $lr8v
ior $lr24v $t $nowrite
fvadd $aluf -$t $lr16v
# d getf $ls0n0c0b0m0p0 8
# d getf $ls0n0c0b1m0p0 8
# d getf $lr8n0c0b0m0p0 8
# d getf $lr8n0c0b0m0p1 8
# $ls[0:8]$lr[2:10]$lr[22:30](0xDEADBEEF)
#
# $lr[0:8] = {invalid}
# $lr[8:24] = B[0:16]
# $lr[24:32] = {invalid}
# $lr[100:108] = [$ls * $lr - $ls^2]
# 0 (bitall 0)
# "and"0
# d getf $ls0n0c0b0m0p0 4
imm ui"0xDEADBEEF" $lr0v
imm ui"0xDEADBEEF" $lr24v
# d getf $ls0n1c0b2m0p3 4
# d getf $lr22n1c0b2m0p3 4
# $ls0v = $ls0v ^2
fvmul $ls0v $ls0v $t
nop
fvfma $ls0v $lr2v -$mauf $nowrite
fvfma $ls0v $lr4v -$t $nowrite ; iand $mauf $mauf $nowrite
fvfma $ls0v $lr6v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr8v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr10v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr12v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr14v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr16v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr18v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr20v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr22v -$t $nowrite ; iand $aluf $mauf $nowrite
iand $aluf $mauf $lr100v
# d getf $lr100n1c0b2m0p3 4
# d getf $lr32n0c0b0m5p1 4
# $ls[8:16]
# $ls0v = $ls0v ^2
fvmul $ls8v $ls8v $t
nop
fvfma $ls8v $lr2v -$mauf $nowrite
fvfma $ls8v $lr4v -$t $nowrite ; iand $mauf $mauf $nowrite
fvfma $ls8v $lr6v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr8v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr10v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr12v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr14v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr16v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr18v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr20v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr22v -$t $nowrite ; iand $aluf $mauf $nowrite
iand $aluf $mauf $lr108v
# $lr(bsl使)
# d getf $lr0n0c0b0m0p0 16
imm i"32" $t
lbsl $lr8v $aluf $lr8v
lbsl $lr16v $t $lr16v
# d getf $lr0n0c0b0m0p0 16
# $ls0v = $ls0v ^2
fvmul $ls0v $ls0v $t
nop
fvfma $ls0v $lr2v -$mauf $nowrite
iand $lr100v $mauf $nowrite
fvfma $ls0v $lr4v -$t $nowrite ; iand $aluf $aluf $nowrite
fvfma $ls0v $lr6v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr8v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr10v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr12v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr14v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr16v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr18v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr20v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls0v $lr22v -$t $nowrite ; iand $aluf $mauf $nowrite
iand $aluf $mauf $lr100v
# $ls0v = $ls0v ^2
fvmul $ls8v $ls8v $t
nop
fvfma $ls8v $lr2v -$mauf $nowrite
iand $lr108v $mauf $lr108v
fvfma $ls8v $lr4v -$t $nowrite ; iand $aluf $aluf $nowrite
fvfma $ls8v $lr6v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr8v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr10v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr12v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr14v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr16v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr18v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr20v -$t $nowrite ; iand $aluf $mauf $nowrite
fvfma $ls8v $lr22v -$t $nowrite ; iand $aluf $mauf $nowrite
iand $aluf $mauf $lr108v
# $ls=0[$ls * $lr - $ls^2] 00
# B00 -> 0
iand $ls0v $ls0v $omr1
inot $lr100v $lr100v/$imr1
iand $ls8v $ls8v $omr1
inot $lr108v $lr108v/$imr1
# $lr[100:108]andreducePE
# https://mncore-challenge.preferred.jp/memory-animation/?file=MAB16x1%E2%86%92L1BM%20reduce&movie=l1bmr%20%24lp0%20%24lb0&frame=1
nop
l1bmriand $lr100v $lb0
l1bmriand $lr108v $lb16
nop
nop
# $lr[0:8], $ls$lb0
# $lb0 $lr[100:102] PE4and
# https://mncore-challenge.preferred.jp/memory-animation/?file=L1BM%E2%86%92PE%20bcast&movie=l1bmp%20%24lb0%20%24lp0&frame=1
l1bmp $lb0 $lr0v $ls0v
l1bmp $lb4 $lr8v $ls8v
l1bmp $lb8 $lr16v $ls16v
l1bmp $lb12 $lr24v $ls24v
l1bmp $lb16 $lr32v $ls32v
l1bmp $lb20 $lr40v $ls40v
l1bmp $lb24 $lr48v $ls48v
l1bmp $lb28 $lr56v $ls56v
iand $lr[0,2] $ls[4,6] $ls[0,2] $lr[0,2]
iand $lr[8,10] $ls[12,14] $ls[8,10]/1100 $lr[8,10]/1100
iand $lr[16,18] $ls[20,22] $ls[16,18] $lr[16,18]/1100
iand $lr[24,26] $ls[28,30] $ls[24,26] $lr[24,26]/1100
iand $lr[32,34] $ls[36,38] $ls[32,34] $lr[32,34]/1100
iand $lr[40,42] $ls[44,46] $ls[40,42] $lr[40,42]/1100
iand $lr[48,50] $ls[52,54] $ls[48,50] $lr[48,50]/1100
iand $lr[56,58] $ls[60,62] $ls[56,58] $lr[56,58]/1100
iand $ls0 $lr2 $ln32/1000
iand $ls8 $lr10 $ln34/1000
iand $ls16 $lr18 $ln36/1000
iand $ls24 $lr26 $ln38/1000
iand $ls32 $lr34 $ln40/1000
iand $ls40 $lr42 $ln42/1000
iand $ls48 $lr50 $ln44/1000
iand $ls56 $lr58 $ln46/1000
# d getf $ln32n0c0b0m5p1 4
#
nop
nop
ilnot $ln32v $ln32v
nop
nop
ilnot $ln40v $ln40v
# d getf $ln32n0c0b0m0p0 4
# d getf $ln32n0c0b0m5p1 4
# ln[32:48]ln[32:64]
nop
nop
ipassa $n32v $lr0v
ipassa $n36v $lr8v
ipassa $n40v $lr16v
ipassa $n44v $lr24v
imm i"32" $t
llsr $lr0v $aluf $ln32v
llsr $lr8v $t $ln40v
llsr $lr16v $t $ln48v
llsr $lr24v $t $ln56v
# d getf $lr0n0c0b0m0p0 4
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Standard Output

ACCEPTED!! score=135 j=135 m=0 bytes=4725
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Standard Error

------------------- vsm --------------------
# ======= In(0): ((8_L2B:1, 8_L1B:1, 16:1))@LM0 / ULong =======
d set $lm0n0c0b0 1 000000000000002F # values=[47] / ULong @[0]
d set $lm2n0c0b0 1 0000000000000066 # values=[102] / ULong @[1]
d set $lm4n0c0b0 1 000000000000029E # values=[670] / ULong @[2]
d set $lm6n0c0b0 1 0000000000000100 # values=[256] / ULong @[3]
d set $lm8n0c0b0 1 0000000000000021 # values=[33] / ULong @[4]
d set $lm10n0c0b0 1 0000000000000305 # values=[773] / ULong @[5]
d set $lm12n0c0b0 1 00000000000003B9 # values=[953] / ULong @[6]
d set $lm14n0c0b0 1 00000000000002F3 # values=[755] / ULong @[7]
d set $lm16n0c0b0 1 000000000000035B # values=[859] / ULong @[8]
d set $lm18n0c0b0 1 0000000000000160 # values=[352] / ULong @[9]
d set $lm20n0c0b0 1 00000000000000F4 # values=[244] / ULong @[10]
d set $lm22n0c0b0 1 000000000000005D # values=[93] / ULong @[11]
d set $lm24n0c0b0 1 00000000000003A2 # values=[930] / ULong @[12]
d set $lm26n0c0b0 1 0000000000000085 # values=[133] / ULong @[13]
d set $lm28n0c0b0 1 00000000000002B0 # values=[688] / ULong @[14]
d set $lm30n0c0b0 1 000000000000004C # values=[76] / ULong @[15]
d set $lm0n0c0b1 1 0000000000000240 # values=[576] / ULong @[16]
d set $lm2n0c0b1 1 0000000000000072 # values=[114] / ULong @[17]
d set $lm4n0c0b1 1 000000000000017A # values=[378] / ULong @[18]
d set $lm6n0c0b1 1 00000000000000FF # values=[255] / ULong @[19]
d set $lm8n0c0b1 1 000000000000030A # values=[778] / ULong @[20]
d set $lm10n0c0b1 1 000000000000011C # values=[284] / ULong @[21]
d set $lm12n0c0b1 1 0000000000000187 # values=[391] / ULong @[22]
d set $lm14n0c0b1 1 0000000000000128 # values=[296] / ULong @[23]
 
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX