---
source: asm/lower_test.rs
expression: "assembly(\"1 + 2 * 3;\")"
---
// Generated by monkey-asm (docs/arm64-asm-backend-design.md). Do not edit.
.text
.globl main
.p2align 2
main:
stp x29, x30, [sp, #-16]!
mov x29, sp
adrp x0, g_globals
add x0, x0, :lo12:g_globals
movz x1, #0 // global slot count
bl rt_globals_init
movz x0, #0x2 // 1
str x0, [sp, #-16]! // left operand
movz x0, #0x4 // 2
str x0, [sp, #-16]! // left operand
movz x0, #0x6 // 3
mov x1, x0 // right operand
ldr x0, [sp], #16 // left operand
bl rt_mul // 2 * 3
mov x1, x0 // right operand
ldr x0, [sp], #16 // left operand
orr x8, x0, x1 // SMI check on both bit0
tbnz x8, #0, .L0
adds x8, x0, x1 // (a<<1)+(b<<1) = (a+b)<<1
bvs .L0
mov x0, x8
b .L1
.L0:
bl rt_add // 1 + 2 * 3
.L1:
.Lmain_exit:
mov w0, #0 // exit code is never the tagged value
mov sp, x29
ldp x29, x30, [sp], #16
ret
.bss
.balign 8
g_globals: // 0 global slot(s)
.skip 0