190 lines
4.7 KiB
ArmAsm
190 lines
4.7 KiB
ArmAsm
// RUN: llvm-mc -triple=arm64-apple-ios -filetype=obj -emit-compact-unwind-non-canonical=true < %s | \
|
|
// RUN: llvm-objdump --macho --unwind-info - | \
|
|
// RUN: FileCheck %s
|
|
//
|
|
// rdar://13070556
|
|
|
|
// CHECK: Contents of __compact_unwind section:
|
|
// CHECK-NEXT: Entry at offset 0x0:
|
|
// CHECK-NEXT: start: 0x0 ltmp0
|
|
// CHECK-NEXT: length: 0x8
|
|
// CHECK-NEXT: compact encoding: 0x02000000
|
|
// CHECK-NEXT: Entry at offset 0x20:
|
|
// CHECK-NEXT: start: 0x8 _foo2
|
|
// CHECK-NEXT: length: 0x40
|
|
// CHECK-NEXT: compact encoding: 0x02009000
|
|
// CHECK-NEXT: Entry at offset 0x40:
|
|
// CHECK-NEXT: start: 0x48 _foo3
|
|
// CHECK-NEXT: length: 0xd4
|
|
// CHECK-NEXT: compact encoding: 0x0200400f
|
|
// CHECK-NEXT: Entry at offset 0x60:
|
|
// CHECK-NEXT: start: 0x11c _foo4
|
|
// CHECK-NEXT: length: 0x54
|
|
// CHECK-NEXT: compact encoding: 0x02021010
|
|
|
|
.section __TEXT,__text,regular,pure_instructions
|
|
.globl _foo1
|
|
.align 2
|
|
_foo1: ; @foo1
|
|
.cfi_startproc
|
|
; %bb.0: ; %entry
|
|
add w0, w0, #42 ; =#42
|
|
ret
|
|
.cfi_endproc
|
|
|
|
.globl _foo2
|
|
.align 2
|
|
_foo2: ; @foo2
|
|
.cfi_startproc
|
|
; %bb.0: ; %entry
|
|
sub sp, sp, #144 ; =#144
|
|
Ltmp2:
|
|
.cfi_def_cfa_offset 144
|
|
mov x9, xzr
|
|
mov x8, sp
|
|
LBB1_1: ; %for.body
|
|
; =>This Inner Loop Header: Depth=1
|
|
str w9, [x8, x9, lsl #2]
|
|
add x9, x9, #1 ; =#1
|
|
cmp w9, #36 ; =#36
|
|
b.ne LBB1_1
|
|
; %bb.2:
|
|
mov x9, xzr
|
|
mov w0, wzr
|
|
LBB1_3: ; %for.body4
|
|
; =>This Inner Loop Header: Depth=1
|
|
ldr w10, [x8, x9]
|
|
add x9, x9, #4 ; =#4
|
|
cmp w9, #144 ; =#144
|
|
add w0, w10, w0
|
|
b.ne LBB1_3
|
|
; %bb.4: ; %for.end9
|
|
add sp, sp, #144 ; =#144
|
|
ret
|
|
.cfi_endproc
|
|
|
|
.globl _foo3
|
|
.align 2
|
|
_foo3: ; @foo3
|
|
.cfi_startproc
|
|
; %bb.0: ; %entry
|
|
stp x26, x25, [sp, #-64]!
|
|
stp x24, x23, [sp, #16]
|
|
stp x22, x21, [sp, #32]
|
|
stp x20, x19, [sp, #48]
|
|
Ltmp3:
|
|
.cfi_def_cfa_offset 64
|
|
Ltmp4:
|
|
.cfi_offset w19, -16
|
|
Ltmp5:
|
|
.cfi_offset w20, -24
|
|
Ltmp6:
|
|
.cfi_offset w21, -32
|
|
Ltmp7:
|
|
.cfi_offset w22, -40
|
|
Ltmp8:
|
|
.cfi_offset w23, -48
|
|
Ltmp9:
|
|
.cfi_offset w24, -56
|
|
Ltmp10:
|
|
.cfi_offset w25, -64
|
|
Ltmp11:
|
|
.cfi_offset w26, -72
|
|
Lloh0:
|
|
adrp x8, _bar@GOTPAGE
|
|
Lloh1:
|
|
ldr x8, [x8, _bar@GOTPAGEOFF]
|
|
ldr w9, [x8]
|
|
ldr w10, [x8]
|
|
ldr w11, [x8]
|
|
ldr w12, [x8]
|
|
ldr w13, [x8]
|
|
ldr w14, [x8]
|
|
ldr w15, [x8]
|
|
ldr w16, [x8]
|
|
ldr w17, [x8]
|
|
ldr w0, [x8]
|
|
ldr w19, [x8]
|
|
ldr w20, [x8]
|
|
ldr w21, [x8]
|
|
ldr w22, [x8]
|
|
ldr w23, [x8]
|
|
ldr w24, [x8]
|
|
ldr w25, [x8]
|
|
ldr w8, [x8]
|
|
add w9, w10, w9
|
|
add w9, w9, w11
|
|
add w9, w9, w12
|
|
add w9, w9, w13
|
|
add w9, w9, w14
|
|
add w9, w9, w15
|
|
add w9, w9, w16
|
|
add w9, w9, w17
|
|
add w9, w9, w0
|
|
add w9, w9, w19
|
|
add w9, w9, w20
|
|
add w9, w9, w21
|
|
add w9, w9, w22
|
|
add w9, w9, w23
|
|
add w9, w9, w24
|
|
add w9, w9, w25
|
|
sub w8, w8, w9
|
|
sub w8, w8, w7, lsl #1
|
|
sub w8, w8, w6, lsl #1
|
|
sub w8, w8, w5, lsl #1
|
|
sub w8, w8, w4, lsl #1
|
|
sub w8, w8, w3, lsl #1
|
|
sub w8, w8, w2, lsl #1
|
|
sub w0, w8, w1, lsl #1
|
|
ldp x20, x19, [sp, #48]
|
|
ldp x22, x21, [sp, #32]
|
|
ldp x24, x23, [sp, #16]
|
|
ldp x26, x25, [sp], #64
|
|
ret
|
|
.loh AdrpLdrGot Lloh0, Lloh1
|
|
.cfi_endproc
|
|
|
|
.globl _foo4
|
|
.align 2
|
|
_foo4: ; @foo4
|
|
.cfi_startproc
|
|
; %bb.0: ; %entry
|
|
stp x28, x27, [sp, #-16]!
|
|
sub sp, sp, #512 ; =#512
|
|
Ltmp12:
|
|
.cfi_def_cfa_offset 528
|
|
Ltmp13:
|
|
.cfi_offset w27, -16
|
|
Ltmp14:
|
|
.cfi_offset w28, -24
|
|
; kill: def W0 killed W0 def X0
|
|
mov x9, xzr
|
|
ubfx x10, x0, #0, #32
|
|
mov x8, sp
|
|
LBB3_1: ; %for.body
|
|
; =>This Inner Loop Header: Depth=1
|
|
add w11, w10, w9
|
|
str w11, [x8, x9, lsl #2]
|
|
add x9, x9, #1 ; =#1
|
|
cmp w9, #128 ; =#128
|
|
b.ne LBB3_1
|
|
; %bb.2: ; %for.cond2.preheader
|
|
mov x9, xzr
|
|
mov w0, wzr
|
|
add x8, x8, w5, sxtw #2
|
|
LBB3_3: ; %for.body4
|
|
; =>This Inner Loop Header: Depth=1
|
|
ldr w10, [x8, x9]
|
|
add x9, x9, #4 ; =#4
|
|
cmp w9, #512 ; =#512
|
|
add w0, w10, w0
|
|
b.ne LBB3_3
|
|
; %bb.4: ; %for.end11
|
|
add sp, sp, #512 ; =#512
|
|
ldp x28, x27, [sp], #16
|
|
ret
|
|
.cfi_endproc
|
|
|
|
.comm _bar,4,2 ; @bar
|
|
|
|
.subsections_via_symbols
|