// 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

Graph