Inversion

Submission Date: 2024/12/18 22:03:33
Status: Accepted
Author: gaiwee5doh8daiV5
Lines: 136

VSM

# Generate pivot index on $ls0
imm i"3" $nowrite
ilsl $l2bid $aluf $nowrite
iadd $l1bid $aluf $ls0
# Show pivot index
d getf $ls0n0c0m0p0 1
# Copy (pivot - 1) to $ls2
iadd $aluf $aluf $lt
nop
idec $lmt $ls2
# Show (pivot - 1)
d getf $ls2n0c0m0p0 1
# Show input
d getf $lm0n0c0b0m0p0 64
# Generate i"0" ... i"63" on lr[0:128]
imm i"4" $t
imm i"0" $lr0
imm i"1" $lr2
imm i"2" $lr4
imm i"3" $lr6
nop/2
iadd $lr0v $lt $lr8v
iadd $aluf $lt $lr16v
iadd $aluf $lt $lr24v
iadd $aluf $lt $lr32v
iadd $aluf $lt $lr40v
iadd $aluf $lt $lr48v
iadd $aluf $lt $lr56v
iadd $aluf $lt $lr64v
iadd $aluf $lt $lr72v
iadd $aluf $lt $lr80v
iadd $aluf $lt $lr88v
iadd $aluf $lt $lr96v
iadd $aluf $lt $lr104v
iadd $aluf $lt $lr112v
iadd $aluf $lt $lr120v
# Fill with big value if we don't need it.
imm i"255" $t
isub $ls0 $lr0v $omr1
ipassa $t $lm0v/$imr1
isub $ls0 $lr8v $omr1
ipassa $t $lm8v/$imr1
isub $ls0 $lr16v $omr1
ipassa $t $lm16v/$imr1
isub $ls0 $lr24v $omr1
ipassa $t $lm24v/$imr1
isub $ls0 $lr32v $omr1
ipassa $t $lm32v/$imr1
isub $ls0 $lr40v $omr1
ipassa $t $lm40v/$imr1
isub $ls0 $lr48v $omr1
ipassa $t $lm48v/$imr1
isub $ls0 $lr56v $omr1
ipassa $t $lm56v/$imr1
isub $ls0 $lr64v $omr1
ipassa $t $lm64v/$imr1
isub $ls0 $lr72v $omr1
ipassa $t $lm72v/$imr1
isub $ls0 $lr80v $omr1
ipassa $t $lm80v/$imr1
isub $ls0 $lr88v $omr1
ipassa $t $lm88v/$imr1
isub $ls0 $lr96v $omr1
ipassa $t $lm96v/$imr1
isub $ls0 $lr104v $omr1
ipassa $t $lm104v/$imr1
isub $ls0 $lr112v $omr1
ipassa $t $lm112v/$imr1
isub $ls0 $lr120v $omr1
ipassa $t $lm120v/$imr1
# Write "1" when inversed $ln[128,256]
nop/2
isub $ls2 $lm0v $omr1
imm i"1" $ln128v/$imr1
isub $ls2 $lm8v $omr1
imm i"1" $ln136v/$imr1
isub $ls2 $lm16v $omr1
imm i"1" $ln144v/$imr1
isub $ls2 $lm24v $omr1
imm i"1" $ln152v/$imr1
isub $ls2 $lm32v $omr1
imm i"1" $ln160v/$imr1
isub $ls2 $lm40v $omr1
imm i"1" $ln168v/$imr1
isub $ls2 $lm48v $omr1
imm i"1" $ln176v/$imr1
isub $ls2 $lm56v $omr1
imm i"1" $ln184v/$imr1
isub $ls2 $lm64v $omr1
imm i"1" $ln192v/$imr1
isub $ls2 $lm72v $omr1
imm i"1" $ln200v/$imr1
isub $ls2 $lm80v $omr1
imm i"1" $ln208v/$imr1
isub $ls2 $lm88v $omr1
imm i"1" $ln216v/$imr1
isub $ls2 $lm96v $omr1
imm i"1" $ln224v/$imr1
isub $ls2 $lm104v $omr1
imm i"1" $ln232v/$imr1
isub $ls2 $lm112v $omr1
imm i"1" $ln240v/$imr1
isub $ls2 $lm120v $omr1
imm i"1" $ln248v/$imr1
d getf $ln128n0c0b0m0p0 64
# Sum to $aluf
nop/2
ipassa $ln128v $nowrite
iadd $aluf $ln136v $nowrite
iadd $aluf $ln144v $nowrite
iadd $aluf $ln152v $nowrite
iadd $aluf $ln160v $nowrite
iadd $aluf $ln168v $nowrite
iadd $aluf $ln176v $nowrite
iadd $aluf $ln184v $nowrite
iadd $aluf $ln192v $nowrite
iadd $aluf $ln200v $nowrite
iadd $aluf $ln208v $nowrite
iadd $aluf $ln216v $nowrite
iadd $aluf $ln224v $nowrite
iadd $aluf $ln232v $nowrite
iadd $aluf $ln240v $nowrite
iadd $aluf $ln248v $nowrite
ipassa $aluf $ln256v
nop/2
ipassa $ln256 $nowrite
iadd $aluf $ln258 $nowrite
iadd $aluf $ln260 $nowrite
iadd $aluf $ln262 $nowrite
# Concat to L1BM
l1bmd $aluf $lb0
d getf $lb0n0c0b0 1
# Reduce to L2BM
nop/2
l2bmriiadd $lb0 $lc0
d getf $lc0n0c0 1
# Reduce to PDM
nop/2
mvriiadd/n64 $lc0 $p0@0
d getf $p0n0c0 1
# Broadcast from PDM to L2BM
nop/2
mvb/n64 $p0@0 $lc0
d getf $lc0n0c0 1
# Broadcast from L2BM to L1BM
nop/2
l2bmb $lc0 $lb0
d getf $lb0n0c0b0 1
# Distribute to LM1
nop/2
l1bmd $lb0 $ln0v
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Standard Output

ACCEPTED!! score=136 j=134 m=2 bytes=2922
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
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