Example program#
Example program:
from copapy import value
from copapy.backend import Write, compile_to_dag, stencil_db_from_package
from copapy._binwrite import Command
input = value(9.0)
result = input ** 2 / 3.3 + 5
arch = 'native'
sdb = stencil_db_from_package(arch)
dw, _ = compile_to_dag([Write(result)], sdb)
# Instruct runner to dump patched code to a file:
dw.write_com(Command.DUMP_CODE)
dw.to_file('build/runner/test.copapy')
arm64#
build/runner/test.copapy.bin: file format binary
Disassembly of section .data:
0000000000010000 <.data>:
10000: a9b77bfd stp x29, x30, [sp, #-144]!
10004: 52800000 mov w0, #0x0 // #0
10008: 910003fd mov x29, sp
1000c: 390043ff strb wzr, [sp, #16]
10010: b0000002 adrp x2, 0x11000
10014: 2a0103e0 mov w0, w1
10018: bd400040 ldr s0, [x2]
1001c: b0000000 adrp x0, 0x11000
10020: bd400001 ldr s1, [x0]
10024: 1e210800 fmul s0, s0, s1
10028: b0000000 adrp x0, 0x11000
1002c: bd400801 ldr s1, [x0, #8]
10030: 1e211800 fdiv s0, s0, s1
10034: b0000000 adrp x0, 0x11000
10038: b9400400 ldr w0, [x0, #4]
1003c: 1e220001 scvtf s1, w0
10040: 1e202820 fadd s0, s1, s0
10044: b0000001 adrp x1, 0x11000
10048: bd000c20 str s0, [x1, #12]
1004c: 52800020 mov w0, #0x1 // #1
10050: a8c97bfd ldp x29, x30, [sp], #144
10054: d65f03c0 ret
armv6#
build/runner/test.copapy.bin: file format binary
Disassembly of section .data:
00010000 <.data>:
10000: e52de004 push {lr} @ (str lr, [sp, #-4]!)
10004: e3a00000 mov r0, #0
10008: e24dd084 sub sp, sp, #132 @ 0x84
1000c: e5cd0000 strb r0, [sp]
10010: e3043000 movw r3, #16384 @ 0x4000
10014: e3443100 movt r3, #16640 @ 0x4100
10018: e1a00001 mov r0, r1
1001c: ed930a00 vldr s0, [r3]
10020: e3043000 movw r3, #16384 @ 0x4000
10024: e3443100 movt r3, #16640 @ 0x4100
10028: edd30a00 vldr s1, [r3]
1002c: ee200a20 vmul.f32 s0, s0, s1
10030: e304300c movw r3, #16396 @ 0x400c
10034: e3443100 movt r3, #16640 @ 0x4100
10038: edd30a00 vldr s1, [r3]
1003c: ee800a20 vdiv.f32 s0, s0, s1
10040: e3043004 movw r3, #16388 @ 0x4004
10044: e3443100 movt r3, #16640 @ 0x4100
10048: e5930000 ldr r0, [r3]
1004c: ee070a90 vmov s15, r0
10050: eef87ae7 vcvt.f32.s32 s15, s15
10054: ee370a80 vadd.f32 s0, s15, s0
10058: e3043008 movw r3, #16392 @ 0x4008
1005c: e3443100 movt r3, #16640 @ 0x4100
10060: ed830a00 vstr s0, [r3]
10064: e3a00001 mov r0, #1
10068: e28dd084 add sp, sp, #132 @ 0x84
1006c: e49df004 pop {pc} @ (ldr pc, [sp], #4)
armv7#
build/runner/test.copapy.bin: file format binary
Disassembly of section .data:
00010000 <.data>:
10000: e52de004 push {lr} @ (str lr, [sp, #-4]!)
10004: e3a00000 mov r0, #0
10008: e24dd084 sub sp, sp, #132 @ 0x84
1000c: e5cd0000 strb r0, [sp]
10010: e3043000 movw r3, #16384 @ 0x4000
10014: e3443100 movt r3, #16640 @ 0x4100
10018: e1a00001 mov r0, r1
1001c: ed930a00 vldr s0, [r3]
10020: e3043000 movw r3, #16384 @ 0x4000
10024: e3443100 movt r3, #16640 @ 0x4100
10028: edd30a00 vldr s1, [r3]
1002c: ee200a20 vmul.f32 s0, s0, s1
10030: e3043008 movw r3, #16392 @ 0x4008
10034: e3443100 movt r3, #16640 @ 0x4100
10038: edd30a00 vldr s1, [r3]
1003c: ee800a20 vdiv.f32 s0, s0, s1
10040: e3043004 movw r3, #16388 @ 0x4004
10044: e3443100 movt r3, #16640 @ 0x4100
10048: e5930000 ldr r0, [r3]
1004c: ee070a90 vmov s15, r0
10050: eef87ae7 vcvt.f32.s32 s15, s15
10054: ee370a80 vadd.f32 s0, s15, s0
10058: e304300c movw r3, #16396 @ 0x400c
1005c: e3443100 movt r3, #16640 @ 0x4100
10060: ed830a00 vstr s0, [r3]
10064: e3a00001 mov r0, #1
10068: e28dd084 add sp, sp, #132 @ 0x84
1006c: e49df004 pop {pc} @ (ldr pc, [sp], #4)