# RUN: llc -march=mips -mcpu=mips32r2 -mattr=+micromips %s -o - \ # RUN: -start-after=block-placement | FileCheck %s # Test that the micromips jal instruction is correctly handled by the delay slot # filler by converting it to a short delay slot for the li instruction. # CHECK-LABEL: caller13 # CHECK: jals callee13 # CHECK-NEXT: li16 --- | declare i32 @callee13(i32, i32) define i32 @caller13() { entry: %call = tail call i32 (i32, i32) @callee13(i32 1, i32 2) ret i32 %call } ... --- name: caller13 alignment: 4 exposesReturnsTwice: false legalized: false regBankSelected: false selected: false tracksRegLiveness: true registers: liveins: frameInfo: isFrameAddressTaken: false isReturnAddressTaken: false hasStackMap: false hasPatchPoint: false stackSize: 24 offsetAdjustment: 0 maxAlignment: 4 adjustsStack: true hasCalls: true stackProtector: '' maxCallFrameSize: 16 hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false savePoint: '' restorePoint: '' fixedStack: stack: - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4, stack-id: default, callee-saved-register: '$ra', callee-saved-restored: true, debug-info-variable: '', debug-info-expression: '', debug-info-location: '' } constants: body: | bb.0.entry: liveins: $ra $sp = ADDiu $sp, -24 CFI_INSTRUCTION def_cfa_offset 24 SW killed $ra, $sp, 20 :: (store (s32) into %stack.0) CFI_INSTRUCTION offset $ra_64, -4 $a0 = LI16_MM 1 $a1 = LI16_MM 2 JAL_MM @callee13, csr_o32, implicit-def dead $ra, implicit killed $a0, implicit killed $a1, implicit-def $sp, implicit-def $v0 $ra = LW $sp, 20 :: (load (s32) from %stack.0) $sp = ADDiu $sp, 24 PseudoReturn undef $ra, implicit $v0 ...