Inversion

Submission Date: 2024/9/20 0:49:35
Status: Accepted
Author: nsfisis
Lines: 104

VSM

# j = $l2bid x 8 + $l1bid
# $n128 = j
# $n256 = A[j]
# $s272 = 0
# $ls[0:128] = k (from 0 to 63)
# $lr[0:128] = A[k]
# $lr[0:128] = A[j] < A[k]
# $lr[256:264] = count of (j >= k) and (A[j] < A[k])
# 64.times { |i| puts "imm i\"#{i}\" $s#{2*i}v/1100 # $s#{2*i} = $s#{2*i+1} = #{i}" }
# imm i"0" $s0v/1100 # $s0 = $s1 = 0
imm i"1" $ls2/1000 # $s2 = $s3 = 1
imm i"2" $ls4/1000 # $s4 = $s5 = 2
imm i"3" $ls6/1000 # $s6 = $s7 = 3
imm i"4" $ls8/1000 # $s8 = $s9 = 4
iadd $aluf $ls2v $ls10v
iadd $aluf $ls8 $ls18v
iadd $aluf $ls8 $ls26v
iadd $aluf $ls8 $ls34v
iadd $aluf $ls8 $ls42v
iadd $aluf $ls8 $ls50v
iadd $aluf $ls8 $ls58v
iadd $aluf $ls8 $ls66v
iadd $aluf $ls8 $ls74v
iadd $aluf $ls8 $ls82v
iadd $aluf $ls8 $ls90v
iadd $aluf $ls8 $ls98v
iadd $aluf $ls8 $ls106v
iadd $aluf $ls8 $ls114v
iadd $aluf $ls8 $ls122v/1110
# d getf $ls0n0c0b0m0p0 64
# quit
ilsl $l2bid $s6 $nowrite
iadd $l1bid $aluf $n128v
# (128/16).times { |i| puts "lpassa $llm#{i*16}v $llr#{i*16}v" }
lpassa $llm0v $llr0v
lpassa $llm16v $llr16v
lpassa $llm32v $llr32v
lpassa $llm48v $llr48v
lpackbit $ln128 $ls272 $t
lpassa $llm64v $llr64v
iinc $lmt0 $ln256
lpassa $llm80v $llr80v
lpassa $llm96v $llr96v
lpassa $llm112v $llr112v
# (128/8).times { |i| puts "isub $ln128 $ls#{i*8}v $omr1"; puts "isub $lr#{i*8}v $ln256 $omr1/$imr1"; puts "iinc $lr256v $lr256v/$imr1" }
isub $ln128 $ls0v $omr1
isub $lr0v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls8v $omr1
isub $lr8v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls16v $omr1
isub $lr16v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls24v $omr1
isub $lr24v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls32v $omr1
isub $lr32v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls40v $omr1
isub $lr40v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls48v $omr1
isub $lr48v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls56v $omr1
isub $lr56v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls64v $omr1
isub $lr64v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls72v $omr1
isub $lr72v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls80v $omr1
isub $lr80v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls88v $omr1
isub $lr88v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls96v $omr1
isub $lr96v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls104v $omr1
isub $lr104v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls112v $omr1
isub $lr112v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
isub $ln128 $ls120v $omr1
isub $lr120v $ln256 $omr1/$imr1
iinc $lr256v $lr256v/$imr1
nop
l1bmd $lr256v $lb0
nop
nop
# (256/64).times { |i| puts "l2bmriiadd $lb#{i*64} $lc#{i*64}" }
l2bmriiadd $lb0 $lc0
l2bmriiadd $lb64 $lc64
l2bmriiadd $lb128 $lc128
l2bmriiadd $lb192 $lc192
nop
mvriiadd/n256 $lc0 $p0@0
mvb/n256 $p0@0 $lc0
nop
nop
# (256/64).times { |i| puts "l2bmb $lc#{i*64} $lb#{i*64}" }
l2bmb $lc0 $lb0
l2bmb $lc64 $lb64
l2bmb $lc128 $lb128
l2bmb $lc192 $lb192
nop
nop
l1bmd $lb0 $lr0v
nop
nop
iadd $lbf $lr4v $lr12v
nop
iadd $aluf $lr14 $ln0v
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Standard Output

ACCEPTED!! score=104 j=102 m=2 bytes=2376
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
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