Inversion

Submission Date: 2024/9/10 15:02:15
Status: Accepted
Author: rurias
Lines: 66

VSM

# sentinel embedding
imm i"100" $nowrite
lpassa $aluf $llm128v
lpassa $aluf $llm144v
# set A[j]
lpackbit $l1bid $ln0 $ls40v/1000 # L1BID * 2
imm i"2" $ls42v/1000
imm i"4" $ls44v/1000
llsr $l2bid $ls42 $nowrite # Floor(LIBID/4)
llsl $aluf $ls44 $nowrite # Floor(LIBID/4)*16
ladd $ls40 $aluf $t $lr40
imm i"3" $ls46v/1000 # nop
idec $lmt0v32 $lr0v # $lr0 = A[j]-1, $lr2 = A[j+32]-1, ...
# block-cyclic assingment
imm i"5" $ls48v/1000
land $l2bid $ls46 $lr44 # LIBID % 4
llsl $aluf $ls48 $nowrite # (LIBID%4)*32
ladd $aluf $lr40 $t $lr40
nop
# first quarter calculation
isub $lr0 $lmt2v $omr1 # check A[j] - 1 >= A[k]
iinc $ls0v $ls0v/$imr1
isub $lr0 $lmt10v $omr1
iinc $ls0v $ls0v/$imr1
isub $lr0 $lmt18v $omr1
iinc $ls0v $ls0v/$imr1
isub $lr0 $lmt26v $omr1
iinc $ls0v $ls0v/$imr1
# second quarter
llsl $lr44 $ls46 $ln10 # (LIBID%4)*8
lsub $lr40 $aluf $t $lr40
nop
isub $lr2 $lmt34v $omr1
iinc $ls0v $ls0v/$imr1
isub $lr2 $lmt42v $omr1
iinc $ls0v $ls0v/$imr1
isub $lr2 $lmt50v $omr1
iinc $ls0v $ls0v/$imr1
# 3rd quarter
lsub $lr40 $ln10 $t $lr40
nop
isub $lr4 $lmt66v $omr1
iinc $ls0v $ls0v/$imr1
isub $lr4 $lmt74v $omr1
iinc $ls0v $ls0v/$imr1
# 4th quarter
lsub $lr40 $ln10 $t $lr40
nop
isub $lr6 $lmt98v $omr1
iinc $ls0v $ls0v/$imr1
# concat & L1B/L2B reducion
nop
l1bmd $ls0v $lb0
nop/2
l2bmriiadd $lb0 $lc0
l2bmriiadd $lb64 $lc64
l2bmriiadd $lb128 $lc128
l2bmriiadd $lb192 $lc192
nop
mvriiadd/n256 $lc0 $p0@0
# propagation to PEs
nop
mvb/n256 $p0@0 $lc0
nop
l2bmb $lc0 $lb0
l2bmb $lc64 $lb64
l2bmb $lc128 $lb128
l2bmb $lc192 $lb192
nop
l1bmd $lb0 $ls8v $lr8v
nop
# inner-PE reduction
ladd $ls8 $lr10 $nowrite
ladd $ls12 $aluf $nowrite
ladd $ls14 $aluf $ln0
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Standard Output

ACCEPTED!! score=66 j=64 m=2 bytes=1297
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Standard Error

------------------- vsm --------------------
# ======= In(0): ((16_MAB:1, 4_PE:1, 2_W:1), (64:1))@LM0 / UInt =======
d set $lm0m0p0 1 0000003000000055 # values=[48, 85] / UInt @[0,0],[1,0]
d set $lm2m0p0 1 000000100000000D # values=[16, 13] / UInt @[0,1],[1,1]
d set $lm4m0p0 1 0000006100000059 # values=[97, 89] / UInt @[0,2],[1,2]
d set $lm6m0p0 1 000000450000001B # values=[69, 27] / UInt @[0,3],[1,3]
d set $lm8m0p0 1 0000004500000056 # values=[69, 86] / UInt @[0,4],[1,4]
d set $lm10m0p0 1 000000610000004D # values=[97, 77] / UInt @[0,5],[1,5]
d set $lm12m0p0 1 0000004000000057 # values=[64, 87] / UInt @[0,6],[1,6]
d set $lm14m0p0 1 0000004900000001 # values=[73, 1] / UInt @[0,7],[1,7]
d set $lm16m0p0 1 0000005400000019 # values=[84, 25] / UInt @[0,8],[1,8]
d set $lm18m0p0 1 000000040000000D # values=[4, 13] / UInt @[0,9],[1,9]
d set $lm20m0p0 1 000000010000003A # values=[1, 58] / UInt @[0,10],[1,10]
d set $lm22m0p0 1 0000001500000037 # values=[21, 55] / UInt @[0,11],[1,11]
d set $lm24m0p0 1 0000003800000006 # values=[56, 6] / UInt @[0,12],[1,12]
d set $lm26m0p0 1 0000004100000002 # values=[65, 2] / UInt @[0,13],[1,13]
d set $lm28m0p0 1 0000004900000016 # values=[73, 22] / UInt @[0,14],[1,14]
d set $lm30m0p0 1 0000006100000011 # values=[97, 17] / UInt @[0,15],[1,15]
d set $lm32m0p0 1 0000000F00000025 # values=[15, 37] / UInt @[0,16],[1,16]
d set $lm34m0p0 1 0000003200000062 # values=[50, 98] / UInt @[0,17],[1,17]
d set $lm36m0p0 1 000000260000000E # values=[38, 14] / UInt @[0,18],[1,18]
d set $lm38m0p0 1 000000550000003F # values=[85, 63] / UInt @[0,19],[1,19]
d set $lm40m0p0 1 0000004B00000058 # values=[75, 88] / UInt @[0,20],[1,20]
d set $lm42m0p0 1 000000570000001B # values=[87, 27] / UInt @[0,21],[1,21]
d set $lm44m0p0 1 0000002700000049 # values=[39, 73] / UInt @[0,22],[1,22]
d set $lm46m0p0 1 0000002500000026 # values=[37, 38] / UInt @[0,23],[1,23]
 
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX