1 ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
2 ; RUN: -mattr=-altivec -function-sections < %s | \
3 ; RUN: FileCheck --check-prefix=ASM %s
4 ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \
5 ; RUN: -mattr=-altivec -function-sections < %s | \
6 ; RUN: FileCheck --check-prefix=ASM %s
8 @alias_foo = alias void (...), bitcast (void ()* @foo to void (...)*)
15 define hidden void @hidden_foo() {
23 call void @static_overalign_foo()
24 call void bitcast (void (...)* @alias_foo to void ()*)()
25 call void bitcast (void (...)* @extern_foo to void ()*)()
26 call void @hidden_foo()
30 declare void @extern_foo(...)
32 define internal void @static_overalign_foo() align 64 {
37 ; ASM: .csect .foo[PR],2
38 ; ASM-NEXT: .globl foo[DS] # -- Begin function foo
39 ; ASM-NEXT: .globl .foo[PR]
41 ; ASM-NEXT: .csect foo[DS]
42 ; ASM-NEXT: alias_foo: # @foo
43 ; ASM-NEXT: .vbyte {{[0-9]+}}, .foo[PR]
44 ; ASM-NEXT: .vbyte {{[0-9]+}}, TOC[TC0]
45 ; ASM-NEXT: .vbyte {{[0-9]+}}, 0
46 ; ASM-NEXT: .csect .foo[PR],2
47 ; ASM-NEXT: .alias_foo:
48 ; ASM-NEXT: # %bb.0: # %entry
50 ; ASM: .csect .hidden_foo[PR],2
51 ; ASM-NEXT: .globl hidden_foo[DS],hidden # -- Begin function hidden_foo
52 ; ASM-NEXT: .globl .hidden_foo[PR],hidden
54 ; ASM-NEXT: .csect hidden_foo[DS]
55 ; ASM-NEXT: .vbyte {{[0-9]+}}, .hidden_foo[PR] # @hidden_foo
56 ; ASM-NEXT: .vbyte {{[0-9]+}}, TOC[TC0]
57 ; ASM-NEXT: .vbyte {{[0-9]+}}, 0
58 ; ASM-NEXT: .csect .hidden_foo[PR]
59 ; ASM-NEXT: # %bb.0: # %entry
61 ; ASM: .csect .bar[PR],2
62 ; ASM-NEXT: .globl bar[DS] # -- Begin function bar
63 ; ASM-NEXT: .globl .bar[PR]
65 ; ASM-NEXT: .csect bar[DS]
66 ; ASM-NEXT: .vbyte {{[0-9]+}}, .bar[PR] # @bar
67 ; ASM-NEXT: .vbyte {{[0-9]+}}, TOC[TC0]
68 ; ASM-NEXT: .vbyte {{[0-9]+}}, 0
69 ; ASM-NEXT: .csect .bar[PR],2
70 ; ASM-NEXT: # %bb.0: # %entry
73 ; ASM-NEXT: bl .static_overalign_foo[PR]
75 ; ASM-NEXT: bl .alias_foo
77 ; ASM-NEXT: bl .extern_foo
79 ; ASM-NEXT: bl .hidden_foo[PR]
81 ; ASM: .csect .static_overalign_foo[PR],6
82 ; ASM-NEXT: .lglobl static_overalign_foo[DS] # -- Begin function static_overalign_foo
83 ; ASM-NEXT: .lglobl .static_overalign_foo[PR]
85 ; ASM-NEXT: .csect static_overalign_foo[DS]
86 ; ASM-NEXT: .vbyte {{[0-9]+}}, .static_overalign_foo[PR] # @static_overalign_foo
87 ; ASM-NEXT: .vbyte {{[0-9]+}}, TOC[TC0]
88 ; ASM-NEXT: .vbyte {{[0-9]+}}, 0
89 ; ASM-NEXT: .csect .static_overalign_foo[PR],6
90 ; ASM-NEXT: # %bb.0: # %entry
92 ; ASM: .extern .extern_foo
93 ; ASM-NEXT: .extern extern_foo[DS]
94 ; ASM-NEXT: .globl alias_foo
95 ; ASM-NEXT: .globl .alias_foo