1*0295c2adSZarko Todorovski; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2*0295c2adSZarko Todorovski; RUN: llc -mtriple powerpc-ibm-aix-xcoff -stop-after=machine-cp -mcpu=pwr7 \ 3*0295c2adSZarko Todorovski; RUN: -mattr=-altivec -verify-machineinstrs < %s | \ 4*0295c2adSZarko Todorovski; RUN: FileCheck --check-prefix=32BIT %s 5*0295c2adSZarko Todorovski 6*0295c2adSZarko Todorovski; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -stop-after=machine-cp -mcpu=pwr7 \ 7*0295c2adSZarko Todorovski; RUN: -mattr=-altivec -verify-machineinstrs < %s | \ 8*0295c2adSZarko Todorovski; RUN: FileCheck --check-prefix=64BIT %s 9*0295c2adSZarko Todorovski 10*0295c2adSZarko Todorovski%struct.B = type { <8 x i16>, i32, i32, [8 x i8] } 11*0295c2adSZarko Todorovski 12*0295c2adSZarko Todorovski; Function Attrs: nounwind 13*0295c2adSZarko Todorovskidefine i32 @caller() { 14*0295c2adSZarko Todorovski ; 32BIT-LABEL: name: caller 15*0295c2adSZarko Todorovski ; 32BIT: bb.0.entry: 16*0295c2adSZarko Todorovski ; 32BIT-NEXT: renamable $r3 = LWZ 28, %stack.0.vs :: (load (s32) from unknown-address + 4) 17*0295c2adSZarko Todorovski ; 32BIT-NEXT: STW killed renamable $r3, 60, $r1 :: (store (s32) into unknown-address + 4, basealign 16) 18*0295c2adSZarko Todorovski ; 32BIT-NEXT: renamable $r3 = LWZ 24, %stack.0.vs :: (load (s32) from %stack.0.vs + 24, align 8, basealign 16) 19*0295c2adSZarko Todorovski ; 32BIT-NEXT: STW killed renamable $r3, 56, $r1 :: (store (s32), align 16) 20*0295c2adSZarko Todorovski ; 32BIT-NEXT: ADJCALLSTACKDOWN 64, 0, implicit-def dead $r1, implicit $r1 21*0295c2adSZarko Todorovski ; 32BIT-NEXT: renamable $r10 = LWZ 20, %stack.0.vs :: (load (s32) from %stack.0.vs + 20) 22*0295c2adSZarko Todorovski ; 32BIT-NEXT: renamable $r9 = LWZ 16, %stack.0.vs :: (load (s32) from %stack.0.vs + 16, align 16) 23*0295c2adSZarko Todorovski ; 32BIT-NEXT: renamable $r8 = LWZ 12, %stack.0.vs :: (load (s32) from %stack.0.vs + 12) 24*0295c2adSZarko Todorovski ; 32BIT-NEXT: renamable $r7 = LWZ 8, %stack.0.vs :: (load (s32) from %stack.0.vs + 8, align 8) 25*0295c2adSZarko Todorovski ; 32BIT-NEXT: renamable $r6 = LWZ 4, %stack.0.vs :: (load (s32) from %stack.0.vs + 4) 26*0295c2adSZarko Todorovski ; 32BIT-NEXT: renamable $r5 = LWZ 0, %stack.0.vs :: (load (s32) from %stack.0.vs, align 16) 27*0295c2adSZarko Todorovski ; 32BIT-NEXT: $r3 = LI 0 28*0295c2adSZarko Todorovski ; 32BIT-NEXT: BL_NOP <mcsymbol .vec_struct_test[PR]>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r5, implicit $r6, implicit $r7, implicit $r8, implicit $r9, implicit $r10, implicit $r2, implicit-def $r1, implicit-def $r3 29*0295c2adSZarko Todorovski ; 32BIT-NEXT: ADJCALLSTACKUP 64, 0, implicit-def dead $r1, implicit $r1 30*0295c2adSZarko Todorovski ; 32BIT-NEXT: BLR implicit $lr, implicit $rm, implicit $r3 31*0295c2adSZarko Todorovski ; 32*0295c2adSZarko Todorovski ; 64BIT-LABEL: name: caller 33*0295c2adSZarko Todorovski ; 64BIT: bb.0.entry: 34*0295c2adSZarko Todorovski ; 64BIT-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1 35*0295c2adSZarko Todorovski ; 64BIT-NEXT: renamable $x8 = LD 24, %stack.0.vs :: (load (s64) from %stack.0.vs + 24) 36*0295c2adSZarko Todorovski ; 64BIT-NEXT: renamable $x7 = LD 16, %stack.0.vs :: (load (s64) from %stack.0.vs + 16, align 16) 37*0295c2adSZarko Todorovski ; 64BIT-NEXT: renamable $x6 = LD 8, %stack.0.vs :: (load (s64) from %stack.0.vs + 8) 38*0295c2adSZarko Todorovski ; 64BIT-NEXT: renamable $x5 = LD 0, %stack.0.vs :: (load (s64) from %stack.0.vs, align 16) 39*0295c2adSZarko Todorovski ; 64BIT-NEXT: $x3 = LI8 0 40*0295c2adSZarko Todorovski ; 64BIT-NEXT: BL8_NOP <mcsymbol .vec_struct_test[PR]>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x5, implicit $x6, implicit $x7, implicit $x8, implicit $x2, implicit-def $r1, implicit-def $x3 41*0295c2adSZarko Todorovski ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1 42*0295c2adSZarko Todorovski ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $x3 43*0295c2adSZarko Todorovski entry: 44*0295c2adSZarko Todorovski %vs = alloca %struct.B, align 16 45*0295c2adSZarko Todorovski %call = tail call i32 @vec_struct_test(i32 0, ptr nonnull byval(%struct.B) align 16 %vs) 46*0295c2adSZarko Todorovski ret i32 %call 47*0295c2adSZarko Todorovski} 48*0295c2adSZarko Todorovski 49*0295c2adSZarko Todorovskideclare i32 @vec_struct_test(i32, ptr byval(%struct.B) align 16) 50