234 lines
6.0 KiB
ArmAsm
234 lines
6.0 KiB
ArmAsm
// RUN: llvm-mc -triple=arm64-apple-ios -filetype=obj < %s | \
|
|
// RUN: llvm-readobj --expand-relocs -S --section-relocations --section-data - | \
|
|
// RUN: FileCheck %s
|
|
//
|
|
// rdar://13070556
|
|
|
|
// FIXME: we should add compact unwind support to llvm-objdump --unwind-info
|
|
|
|
// CHECK: Section {
|
|
// CHECK: Index: 1
|
|
// CHECK-NEXT: Name: __compact_unwind
|
|
// CHECK-NEXT: Segment: __LD
|
|
// CHECK-NEXT: Address:
|
|
// CHECK-NEXT: Size:
|
|
// CHECK-NEXT: Offset:
|
|
// CHECK-NEXT: Alignment:
|
|
// CHECK-NEXT: RelocationOffset:
|
|
// CHECK-NEXT: RelocationCount:
|
|
// CHECK-NEXT: Type:
|
|
// CHECK-NEXT: Attributes [
|
|
// CHECK-NEXT: Debug
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Reserved1:
|
|
// CHECK-NEXT: Reserved2:
|
|
// CHECK-NEXT: Reserved3:
|
|
// CHECK-NEXT: Relocations [
|
|
// CHECK-NEXT: Relocation {
|
|
// CHECK-NEXT: Offset: 0x60
|
|
// CHECK-NEXT: PCRel: 0
|
|
// CHECK-NEXT: Length: 3
|
|
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
|
|
// CHECK-NEXT: Section: __text (1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Relocation {
|
|
// CHECK-NEXT: Offset: 0x40
|
|
// CHECK-NEXT: PCRel: 0
|
|
// CHECK-NEXT: Length: 3
|
|
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
|
|
// CHECK-NEXT: Section: __text (1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Relocation {
|
|
// CHECK-NEXT: Offset: 0x20
|
|
// CHECK-NEXT: PCRel: 0
|
|
// CHECK-NEXT: Length: 3
|
|
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
|
|
// CHECK-NEXT: Section: __text (1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Relocation {
|
|
// CHECK-NEXT: Offset: 0x0
|
|
// CHECK-NEXT: PCRel: 0
|
|
// CHECK-NEXT: Length: 3
|
|
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
|
|
// CHECK-NEXT: Section: __text (1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: SectionData (
|
|
// CHECK-NEXT: 0000: 00000000 00000000 08000000 00000002
|
|
// CHECK-NEXT: 0010: 00000000 00000000 00000000 00000000
|
|
// CHECK-NEXT: 0020: 08000000 00000000 40000000 00900002
|
|
// CHECK-NEXT: 0030: 00000000 00000000 00000000 00000000
|
|
// CHECK-NEXT: 0040: 48000000 00000000 D4000000 0F400002
|
|
// CHECK-NEXT: 0050: 00000000 00000000 00000000 00000000
|
|
// CHECK-NEXT: 0060: 1C010000 00000000 54000000 10100202
|
|
// CHECK-NEXT: 0070: 00000000 00000000 00000000 00000000
|
|
// CHECK-NEXT: )
|
|
// CHECK-NEXT: }
|
|
|
|
.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
|