165 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=powerpc-unknown-openbsd < %s | FileCheck -check-prefix=OPENBSD32 %s3; RUN: llc -mtriple=powerpc64-unknown-openbsd < %s | FileCheck -check-prefix=OPENBSD64 %s4; RUN: llc -mtriple=powerpc-unknown-linux < %s | FileCheck -check-prefix=LINUX32 %s5; RUN: llc -mtriple=powerpc64-unknown-linux < %s | FileCheck -check-prefix=LINUX64 %s6; RUN: llc -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck -check-prefix=AIX32 %s7; RUN: llc -mtriple=powerpc64-ibm-aix-xcoff < %s | FileCheck -check-prefix=AIX64 %s8 9define void @func() sspreq nounwind {10; OPENBSD32-LABEL: func:11; OPENBSD32: # %bb.0:12; OPENBSD32-NEXT: mflr 013; OPENBSD32-NEXT: stwu 1, -32(1)14; OPENBSD32-NEXT: stw 0, 36(1)15; OPENBSD32-NEXT: stw 30, 24(1) # 4-byte Folded Spill16; OPENBSD32-NEXT: lis 30, __guard_local@ha17; OPENBSD32-NEXT: lwz 3, __guard_local@l(30)18; OPENBSD32-NEXT: stw 3, 20(1)19; OPENBSD32-NEXT: addi 3, 1, 1620; OPENBSD32-NEXT: bl capture21; OPENBSD32-NEXT: lwz 3, __guard_local@l(30)22; OPENBSD32-NEXT: lwz 4, 20(1)23; OPENBSD32-NEXT: cmplw 3, 424; OPENBSD32-NEXT: bne- 0, .LBB0_225; OPENBSD32-NEXT: # %bb.1: # %SP_return26; OPENBSD32-NEXT: lwz 30, 24(1) # 4-byte Folded Reload27; OPENBSD32-NEXT: lwz 0, 36(1)28; OPENBSD32-NEXT: addi 1, 1, 3229; OPENBSD32-NEXT: mtlr 030; OPENBSD32-NEXT: blr31; OPENBSD32-NEXT: .LBB0_2: # %CallStackCheckFailBlk32; OPENBSD32-NEXT: lis 3, .LSSH@ha33; OPENBSD32-NEXT: la 3, .LSSH@l(3)34; OPENBSD32-NEXT: bl __stack_smash_handler35;36; OPENBSD64-LABEL: func:37; OPENBSD64: # %bb.0:38; OPENBSD64-NEXT: mflr 039; OPENBSD64-NEXT: std 30, -16(1) # 8-byte Folded Spill40; OPENBSD64-NEXT: stdu 1, -64(1)41; OPENBSD64-NEXT: std 0, 80(1)42; OPENBSD64-NEXT: addis 30, 2, __guard_local@toc@ha43; OPENBSD64-NEXT: ld 3, __guard_local@toc@l(30)44; OPENBSD64-NEXT: std 3, 40(1)45; OPENBSD64-NEXT: addi 3, 1, 3646; OPENBSD64-NEXT: bl capture47; OPENBSD64-NEXT: nop48; OPENBSD64-NEXT: ld 3, __guard_local@toc@l(30)49; OPENBSD64-NEXT: ld 4, 40(1)50; OPENBSD64-NEXT: cmpld 3, 451; OPENBSD64-NEXT: bne- 0, .LBB0_252; OPENBSD64-NEXT: # %bb.1: # %SP_return53; OPENBSD64-NEXT: addi 1, 1, 6454; OPENBSD64-NEXT: ld 0, 16(1)55; OPENBSD64-NEXT: mtlr 056; OPENBSD64-NEXT: ld 30, -16(1) # 8-byte Folded Reload57; OPENBSD64-NEXT: blr58; OPENBSD64-NEXT: .LBB0_2: # %CallStackCheckFailBlk59; OPENBSD64-NEXT: addis 3, 2, .LSSH@toc@ha60; OPENBSD64-NEXT: addi 3, 3, .LSSH@toc@l61; OPENBSD64-NEXT: bl __stack_smash_handler62; OPENBSD64-NEXT: nop63;64; LINUX32-LABEL: func:65; LINUX32: # %bb.0:66; LINUX32-NEXT: mflr 067; LINUX32-NEXT: stwu 1, -16(1)68; LINUX32-NEXT: lwz 3, -28680(2)69; LINUX32-NEXT: stw 0, 20(1)70; LINUX32-NEXT: stw 3, 12(1)71; LINUX32-NEXT: addi 3, 1, 872; LINUX32-NEXT: bl capture73; LINUX32-NEXT: lwz 3, 12(1)74; LINUX32-NEXT: lwz 4, -28680(2)75; LINUX32-NEXT: cmplw 4, 376; LINUX32-NEXT: bne 0, .LBB0_277; LINUX32-NEXT: # %bb.1:78; LINUX32-NEXT: lwz 0, 20(1)79; LINUX32-NEXT: addi 1, 1, 1680; LINUX32-NEXT: mtlr 081; LINUX32-NEXT: blr82; LINUX32-NEXT: .LBB0_2:83; LINUX32-NEXT: bl __stack_chk_fail84;85; LINUX64-LABEL: func:86; LINUX64: # %bb.0:87; LINUX64-NEXT: mflr 088; LINUX64-NEXT: stdu 1, -128(1)89; LINUX64-NEXT: ld 3, -28688(13)90; LINUX64-NEXT: std 0, 144(1)91; LINUX64-NEXT: std 3, 120(1)92; LINUX64-NEXT: addi 3, 1, 11693; LINUX64-NEXT: bl capture94; LINUX64-NEXT: nop95; LINUX64-NEXT: ld 3, 120(1)96; LINUX64-NEXT: ld 4, -28688(13)97; LINUX64-NEXT: cmpld 4, 398; LINUX64-NEXT: bne 0, .LBB0_299; LINUX64-NEXT: # %bb.1:100; LINUX64-NEXT: addi 1, 1, 128101; LINUX64-NEXT: ld 0, 16(1)102; LINUX64-NEXT: mtlr 0103; LINUX64-NEXT: blr104; LINUX64-NEXT: .LBB0_2:105; LINUX64-NEXT: bl __stack_chk_fail106; LINUX64-NEXT: nop107;108; AIX32-LABEL: func:109; AIX32: # %bb.0:110; AIX32-NEXT: mflr 0111; AIX32-NEXT: stwu 1, -80(1)112; AIX32-NEXT: stw 0, 88(1)113; AIX32-NEXT: stw 31, 76(1) # 4-byte Folded Spill114; AIX32-NEXT: lwz 31, L..C0(2) # @__ssp_canary_word115; AIX32-NEXT: lwz 3, 0(31)116; AIX32-NEXT: stw 3, 72(1)117; AIX32-NEXT: addi 3, 1, 68118; AIX32-NEXT: bl .capture[PR]119; AIX32-NEXT: nop120; AIX32-NEXT: lwz 3, 0(31)121; AIX32-NEXT: lwz 4, 72(1)122; AIX32-NEXT: cmplw 3, 4123; AIX32-NEXT: bne 0, L..BB0_2124; AIX32-NEXT: # %bb.1:125; AIX32-NEXT: lwz 31, 76(1) # 4-byte Folded Reload126; AIX32-NEXT: addi 1, 1, 80127; AIX32-NEXT: lwz 0, 8(1)128; AIX32-NEXT: mtlr 0129; AIX32-NEXT: blr130; AIX32-NEXT: L..BB0_2:131; AIX32-NEXT: bl .__stack_chk_fail[PR]132; AIX32-NEXT: nop133;134; AIX64-LABEL: func:135; AIX64: # %bb.0:136; AIX64-NEXT: mflr 0137; AIX64-NEXT: stdu 1, -144(1)138; AIX64-NEXT: std 0, 160(1)139; AIX64-NEXT: std 31, 136(1) # 8-byte Folded Spill140; AIX64-NEXT: ld 31, L..C0(2) # @__ssp_canary_word141; AIX64-NEXT: ld 3, 0(31)142; AIX64-NEXT: std 3, 128(1)143; AIX64-NEXT: addi 3, 1, 124144; AIX64-NEXT: bl .capture[PR]145; AIX64-NEXT: nop146; AIX64-NEXT: ld 3, 0(31)147; AIX64-NEXT: ld 4, 128(1)148; AIX64-NEXT: cmpld 3, 4149; AIX64-NEXT: bne 0, L..BB0_2150; AIX64-NEXT: # %bb.1:151; AIX64-NEXT: ld 31, 136(1) # 8-byte Folded Reload152; AIX64-NEXT: addi 1, 1, 144153; AIX64-NEXT: ld 0, 16(1)154; AIX64-NEXT: mtlr 0155; AIX64-NEXT: blr156; AIX64-NEXT: L..BB0_2:157; AIX64-NEXT: bl .__stack_chk_fail[PR]158; AIX64-NEXT: nop159 %alloca = alloca i32, align 4160 call void @capture(ptr %alloca)161 ret void162}163 164declare void @capture(ptr)165