// Independent tensor arithmetic; argument order is source left-to-right.
// Scalar comparisons cover all64 canonical bits. Scratch [4500000,4500016).
__half_p:
push 9223372034707292160
return
__scale:
mul
return
__relu:
dup 0 push 9223372034707292160 call __tensor_lt_u64 mul return
__bias_add:
call __bias_add_loop
return
__bias_add_loop:
dup 0
push 0
eq
skiz
return
push -1
add
dup 0
dup 4
add
read_mem 1
pop 1
dup 1
dup 4
add
read_mem 1
pop 1
add
dup 1
dup 3
add
write_mem 1
pop 1
recurse
__matvec:
call __matvec_outer
pop 5
return
__matvec_outer:
swap 1
call __matvec_row
return
__matvec_row:
dup 0
push 0
eq
skiz
return
push -1
add
dup 0
dup 2
mul
push 0
dup 3
call __matvec_inner
pop 1
swap 1
pop 1
dup 1
dup 4
add
write_mem 1
pop 1
recurse
__matvec_inner:
dup 0
push 0
eq
skiz
return
push -1
add
dup 0
dup 3
add
dup 8
add
read_mem 1
pop 1
dup 1
dup 8
add
read_mem 1
pop 1
mul
swap 1
swap 2
add
swap 1
recurse
__matmul:
call __matmul_outer
return
__matmul_outer:
dup 2
call __matmul_row
pop 1
return
__matmul_row:
dup 0
push 0
eq
skiz
return
push -1
add
dup 1
call __matmul_col
pop 1
recurse
__matmul_col:
dup 0
push 0
eq
skiz
return
push -1
add
push 0
dup 6
call __matmul_dot
pop 1
dup 2
dup 5
mul
dup 2
add
dup 8
add
write_mem 1
pop 1
recurse
__matmul_dot:
dup 0
push 0
eq
skiz
return
push -1
add
dup 3
dup 7
mul
dup 1
add
dup 11
add
read_mem 1
pop 1
dup 1
dup 6
mul
dup 4
add
dup 11
add
read_mem 1
pop 1
mul
swap 1
swap 2
add
swap 1
recurse
__relu_layer:
call __relu_layer_loop
return
__relu_layer_loop:
dup 0
push 0
eq
skiz
return
push -1
add
dup 0
dup 3
add
read_mem 1
pop 1
call __relu
dup 1
dup 3
add
write_mem 1
pop 1
recurse
__dense:
dup 6
dup 6
dup 4
dup 4
dup 4
call __matvec
dup 2
dup 5
dup 5
dup 4
call __bias_add
dup 3
dup 4
dup 3
call __relu_layer
pop 5
pop 2
return
__tensor_lt_u64:
push 4500001 write_mem 1 pop 1 push 4500000 write_mem 1 pop 1
push 4500000 read_mem 1 pop 1 split push 4500002 write_mem 1 pop 1 push 4500003 write_mem 1 pop 1
push 4500001 read_mem 1 pop 1 split push 4500004 write_mem 1 pop 1 push 4500005 write_mem 1 pop 1
push 4500003 read_mem 1 pop 1 push 4500005 read_mem 1 pop 1 eq push 4500006 write_mem 1 pop 1
push 4500004 read_mem 1 pop 1 push 4500002 read_mem 1 pop 1 lt push 4500006 read_mem 1 pop 1 mul
push 4500005 read_mem 1 pop 1 push 4500003 read_mem 1 pop 1 lt push 1 push 4500006 read_mem 1 pop 1 push -1 mul add mul add return
__argmax:
push 4500011 write_mem 1 pop 1 push 4500010 write_mem 1 pop 1 push 0 push 4500012 write_mem 1 pop 1 push 0 push 4500013 write_mem 1 pop 1
push 4500010 read_mem 1 pop 1 read_mem 1 pop 1 push 4500014 write_mem 1 pop 1
call __tensor_argmax_loop
push 4500013 read_mem 1 pop 1 return
__tensor_argmax_loop:
push 4500011 read_mem 1 pop 1 push 4500012 read_mem 1 pop 1 lt push 0 eq skiz return
push 4500010 read_mem 1 pop 1 push 4500012 read_mem 1 pop 1 add read_mem 1 pop 1 push 4500015 write_mem 1 pop 1
push 4500015 read_mem 1 pop 1 push 9223372034707292160 call __tensor_lt_u64 skiz call __tensor_argmax_positive
push 4500012 read_mem 1 pop 1 push 1 add push 4500012 write_mem 1 pop 1 recurse
__tensor_argmax_positive:
push 4500014 read_mem 1 pop 1 push 9223372034707292160 call __tensor_lt_u64
push 0 eq skiz call __tensor_argmax_update
push 4500014 read_mem 1 pop 1 push 4500015 read_mem 1 pop 1 call __tensor_lt_u64 skiz call __tensor_argmax_update
return
__tensor_argmax_update:
push 4500015 read_mem 1 pop 1 push 4500014 write_mem 1 pop 1 push 4500012 read_mem 1 pop 1 push 4500013 write_mem 1 pop 1 return