116 lines · plain
1; TODO: Add object generation test when visibility for object generation2; is implemented.3 4; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \5; RUN: -mattr=-altivec -data-sections=false -xcoff-traceback-table=false < %s | \6; RUN: FileCheck --check-prefix=ASM %s7; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \8; RUN: -mattr=-altivec -data-sections=false -xcoff-traceback-table=false < %s | \9; RUN: FileCheck --check-prefix=ASM %s10 11@var = global i32 4212@var1 = alias i32, ptr @var13@var2 = alias i32, ptr @var114@var_l = linkonce_odr alias i32, ptr @var15@var_i = internal alias i32, ptr @var16@var_h = hidden alias i32, ptr @var17@var_p = protected alias i32, ptr @var18 19@array = global [2 x i32] [i32 1, i32 2], align 420@x = global ptr getelementptr (i8, ptr @array, i64 4), align 421@bitcast_alias = alias ptr, ptr @x22 23define i32 @fun() {24 ret i32 025}26 27%FunTy = type i32()28@fun_weak = weak alias %FunTy, ptr @fun29@fun_hidden = hidden alias %FunTy, ptr @fun30@fun_ptr = global ptr @fun_weak31 32define i32 @test() {33entry:34 %tmp = load i32, ptr @var135 %tmp1 = load i32, ptr @var236 %tmp0 = load i32, ptr @var_i37 %tmp2 = call i32 @fun()38 %tmp3 = add i32 %tmp, %tmp239 %tmp4 = call i32 @fun_weak()40 %tmp5 = add i32 %tmp3, %tmp441 %tmp6 = add i32 %tmp1, %tmp542 %tmp7 = add i32 %tmp6, %tmp043 %fun_ptr1 = alloca ptr44 store ptr @fun_weak, ptr %fun_ptr145 %tmp8 = call i32 %fun_ptr1()46 %tmp9 = call i32 @fun_hidden()47 %tmp10 = add i32 %tmp7, %tmp848 %tmp11 = add i32 %tmp10, %tmp949 ret i32 %tmp1150}51 52; ASM: .globl fun[DS]53; ASM-NEXT: .globl .fun54; ASM-NEXT: .align 455; ASM-NEXT: .csect fun[DS]56; ASM-NEXT: fun_weak: # @fun57; ASM-NEXT: fun_hidden:58; ASM: .csect ..text..[PR],559; ASM-NEXT: .fun:60; ASM-NEXT: .fun_weak:61; ASM-NEXT: .fun_hidden:62; ASM-NEXT: # %bb.0:63; ASM-NEXT: li 3, 064; ASM-NEXT: blr65; ASM-NEXT: # -- End function66; ASM: .csect ..text..[PR],567; ASM-NEXT: .test:68; ASM-NEXT: # %bb.0: # %entry69; ASM: bl .fun70; ASM-NEXT: nop71; ASM: bl .fun_weak72; ASM-NEXT: nop73; ASM: bl .fun_hidden74; ASM: # -- End function75; ASM-NEXT: .csect .data[RW]76; ASM-NEXT: .globl var77; ASM-NEXT: .globl var178; ASM-NEXT: .globl var279; ASM-NEXT: .weak var_l80; ASM-NEXT: .lglobl var_i81; ASM-NEXT: .globl var_h,hidden82; ASM-NEXT: .globl var_p,protected83; ASM: var:84; ASM-NEXT: var1:85; ASM-NEXT: var2:86; ASM-NEXT: var_l:87; ASM-NEXT: var_i:88; ASM-NEXT: var_h:89; ASM-NEXT: var_p:90; ASM-NEXT: .vbyte 4, 4291; ASM-NEXT: .globl array92; ASM: array:93; ASM-NEXT: .vbyte 4, 1 # 0x194; ASM-NEXT: .vbyte 4, 2 # 0x295; ASM-NEXT: .globl x96; ASM-NEXT: .globl bitcast_alias97; ASM: x:98; ASM-NEXT: bitcast_alias:99; ASM-NEXT: .vbyte {{[0-9]+}}, array+4100; ASM-NEXT: .globl fun_ptr101; ASM: fun_ptr:102; ASM-NEXT: .vbyte {{[0-9]+}}, fun_weak103; ASM-NEXT: .weak fun_weak104; ASM-NEXT: .weak .fun_weak105; ASM-NEXT: .globl fun_hidden,hidden106; ASM-NEXT: .globl .fun_hidden,hidden107; ASM-NEXT: .toc108; ASM-NEXT: L..C0:109; ASM-NEXT: .tc var1[TC],var1110; ASM-NEXT: L..C1:111; ASM-NEXT: .tc var2[TC],var2112; ASM-NEXT: L..C2:113; ASM-NEXT: .tc var_i[TC],var_i114; ASM-NEXT: L..C3:115; ASM-NEXT: .tc fun_weak[TC],fun_weak116