123 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mcpu=ppc -mtriple=powerpc64 -verify-machineinstrs < %s \3; RUN: | FileCheck %s --check-prefixes=BE644; RUN: llc -mtriple=powerpc64le -verify-machineinstrs < %s \5; RUN: | FileCheck %s --check-prefixes=LE646; RUN: llc -mtriple=ppc32 -verify-machineinstrs < %s \7; RUN: | FileCheck %s --check-prefixes=LE328 9define void @foo(i64 %t) sspstrong nounwind {10; BE64-LABEL: foo:11; BE64: # %bb.0:12; BE64-NEXT: mflr 013; BE64-NEXT: std 31, -8(1)14; BE64-NEXT: stdu 1, -144(1)15; BE64-NEXT: mr 31, 116; BE64-NEXT: std 0, 160(1)17; BE64-NEXT: std 30, 128(31) # 8-byte Folded Spill18; BE64-NEXT: addis 30, 2, __stack_chk_guard@toc@ha19; BE64-NEXT: sldi 3, 3, 220; BE64-NEXT: ld 4, __stack_chk_guard@toc@l(30)21; BE64-NEXT: addi 3, 3, 1522; BE64-NEXT: rldicr 3, 3, 0, 5923; BE64-NEXT: neg 3, 324; BE64-NEXT: std 4, 120(31)25; BE64-NEXT: addi 4, 31, 14426; BE64-NEXT: stdux 4, 1, 327; BE64-NEXT: addi 3, 1, 11228; BE64-NEXT: bl baz29; BE64-NEXT: nop30; BE64-NEXT: ld 3, __stack_chk_guard@toc@l(30)31; BE64-NEXT: ld 4, 120(31)32; BE64-NEXT: cmpld 3, 433; BE64-NEXT: bne 0, .LBB0_234; BE64-NEXT: # %bb.1:35; BE64-NEXT: ld 30, 128(31) # 8-byte Folded Reload36; BE64-NEXT: ld 1, 0(1)37; BE64-NEXT: ld 0, 16(1)38; BE64-NEXT: ld 31, -8(1)39; BE64-NEXT: mtlr 040; BE64-NEXT: blr41; BE64-NEXT: .LBB0_2:42; BE64-NEXT: bl __stack_chk_fail43; BE64-NEXT: nop44;45; LE64-LABEL: foo:46; LE64: # %bb.0:47; LE64-NEXT: mflr 048; LE64-NEXT: std 31, -8(1)49; LE64-NEXT: stdu 1, -64(1)50; LE64-NEXT: mr 31, 151; LE64-NEXT: sldi 3, 3, 252; LE64-NEXT: std 0, 80(1)53; LE64-NEXT: std 30, 48(31) # 8-byte Folded Spill54; LE64-NEXT: addis 30, 2, __stack_chk_guard@toc@ha55; LE64-NEXT: addi 3, 3, 1556; LE64-NEXT: ld 4, __stack_chk_guard@toc@l(30)57; LE64-NEXT: rldicr 3, 3, 0, 5958; LE64-NEXT: neg 3, 359; LE64-NEXT: std 4, 40(31)60; LE64-NEXT: addi 4, 31, 6461; LE64-NEXT: stdux 4, 1, 362; LE64-NEXT: addi 3, 1, 3263; LE64-NEXT: bl baz64; LE64-NEXT: nop65; LE64-NEXT: ld 3, __stack_chk_guard@toc@l(30)66; LE64-NEXT: ld 4, 40(31)67; LE64-NEXT: cmpld 3, 468; LE64-NEXT: bne 0, .LBB0_269; LE64-NEXT: # %bb.1:70; LE64-NEXT: ld 30, 48(31) # 8-byte Folded Reload71; LE64-NEXT: ld 1, 0(1)72; LE64-NEXT: ld 0, 16(1)73; LE64-NEXT: ld 31, -8(1)74; LE64-NEXT: mtlr 075; LE64-NEXT: blr76; LE64-NEXT: .LBB0_2:77; LE64-NEXT: bl __stack_chk_fail78; LE64-NEXT: nop79;80; LE32-LABEL: foo:81; LE32: # %bb.0:82; LE32-NEXT: mflr 083; LE32-NEXT: stwu 1, -32(1)84; LE32-NEXT: stw 31, 28(1)85; LE32-NEXT: mr 31, 186; LE32-NEXT: stw 0, 36(1)87; LE32-NEXT: slwi 4, 4, 288; LE32-NEXT: stw 30, 24(31) # 4-byte Folded Spill89; LE32-NEXT: lis 30, __stack_chk_guard@ha90; LE32-NEXT: lwz 3, __stack_chk_guard@l(30)91; LE32-NEXT: addi 4, 4, 1592; LE32-NEXT: rlwinm 4, 4, 0, 0, 2793; LE32-NEXT: neg 4, 494; LE32-NEXT: stw 3, 20(31)95; LE32-NEXT: addi 3, 31, 3296; LE32-NEXT: stwux 3, 1, 497; LE32-NEXT: addi 3, 1, 1698; LE32-NEXT: bl baz99; LE32-NEXT: lwz 3, __stack_chk_guard@l(30)100; LE32-NEXT: lwz 4, 20(31)101; LE32-NEXT: cmplw 3, 4102; LE32-NEXT: bne 0, .LBB0_2103; LE32-NEXT: # %bb.1:104; LE32-NEXT: lwz 30, 24(31) # 4-byte Folded Reload105; LE32-NEXT: lwz 31, 0(1)106; LE32-NEXT: lwz 0, -4(31)107; LE32-NEXT: mr 1, 31108; LE32-NEXT: mr 31, 0109; LE32-NEXT: lwz 0, 4(1)110; LE32-NEXT: mtlr 0111; LE32-NEXT: blr112; LE32-NEXT: .LBB0_2:113; LE32-NEXT: bl __stack_chk_fail114 %vla = alloca i32, i64 %t, align 4115 call void @baz(ptr %vla)116 ret void117}118 119declare void @baz(ptr)120 121!llvm.module.flags = !{!1}122!1 = !{i32 2, !"stack-protector-guard", !"global"}123