144b020a3SKeith Packard; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 2*01463a26Szhijian lin; RUN: llc -mcpu=ppc -mtriple=powerpc64 -verify-machineinstrs < %s \ 344b020a3SKeith Packard; RUN: | FileCheck %s --check-prefixes=BE64 444b020a3SKeith Packard; RUN: llc -mtriple=powerpc64le -verify-machineinstrs < %s \ 544b020a3SKeith Packard; RUN: | FileCheck %s --check-prefixes=LE64 644b020a3SKeith Packard; RUN: llc -mtriple=ppc32 -verify-machineinstrs < %s \ 744b020a3SKeith Packard; RUN: | FileCheck %s --check-prefixes=LE32 844b020a3SKeith Packard 944b020a3SKeith Packarddefine void @foo(i64 %t) sspstrong nounwind { 1044b020a3SKeith Packard; BE64-LABEL: foo: 1144b020a3SKeith Packard; BE64: # %bb.0: 1244b020a3SKeith Packard; BE64-NEXT: mflr 0 1344b020a3SKeith Packard; BE64-NEXT: std 31, -8(1) 1444b020a3SKeith Packard; BE64-NEXT: stdu 1, -144(1) 1544b020a3SKeith Packard; BE64-NEXT: mr 31, 1 1644b020a3SKeith Packard; BE64-NEXT: std 0, 160(1) 1744b020a3SKeith Packard; BE64-NEXT: std 30, 128(31) # 8-byte Folded Spill 1844b020a3SKeith Packard; BE64-NEXT: addis 30, 2, __stack_chk_guard@toc@ha 1944b020a3SKeith Packard; BE64-NEXT: sldi 3, 3, 2 2044b020a3SKeith Packard; BE64-NEXT: ld 4, __stack_chk_guard@toc@l(30) 2144b020a3SKeith Packard; BE64-NEXT: addi 3, 3, 15 2244b020a3SKeith Packard; BE64-NEXT: rldicr 3, 3, 0, 59 2344b020a3SKeith Packard; BE64-NEXT: neg 3, 3 2444b020a3SKeith Packard; BE64-NEXT: std 4, 120(31) 2544b020a3SKeith Packard; BE64-NEXT: addi 4, 31, 144 2644b020a3SKeith Packard; BE64-NEXT: stdux 4, 1, 3 2744b020a3SKeith Packard; BE64-NEXT: addi 3, 1, 112 2844b020a3SKeith Packard; BE64-NEXT: bl baz 2944b020a3SKeith Packard; BE64-NEXT: nop 3044b020a3SKeith Packard; BE64-NEXT: ld 3, __stack_chk_guard@toc@l(30) 3144b020a3SKeith Packard; BE64-NEXT: ld 4, 120(31) 3244b020a3SKeith Packard; BE64-NEXT: cmpld 3, 4 3344b020a3SKeith Packard; BE64-NEXT: bne 0, .LBB0_2 3444b020a3SKeith Packard; BE64-NEXT: # %bb.1: 3544b020a3SKeith Packard; BE64-NEXT: ld 30, 128(31) # 8-byte Folded Reload 3644b020a3SKeith Packard; BE64-NEXT: ld 1, 0(1) 3744b020a3SKeith Packard; BE64-NEXT: ld 0, 16(1) 3844b020a3SKeith Packard; BE64-NEXT: ld 31, -8(1) 3944b020a3SKeith Packard; BE64-NEXT: mtlr 0 4044b020a3SKeith Packard; BE64-NEXT: blr 4144b020a3SKeith Packard; BE64-NEXT: .LBB0_2: 4244b020a3SKeith Packard; BE64-NEXT: bl __stack_chk_fail 4344b020a3SKeith Packard; BE64-NEXT: nop 4444b020a3SKeith Packard; 4544b020a3SKeith Packard; LE64-LABEL: foo: 4644b020a3SKeith Packard; LE64: # %bb.0: 4744b020a3SKeith Packard; LE64-NEXT: mflr 0 4844b020a3SKeith Packard; LE64-NEXT: std 31, -8(1) 4944b020a3SKeith Packard; LE64-NEXT: stdu 1, -64(1) 5044b020a3SKeith Packard; LE64-NEXT: mr 31, 1 5144b020a3SKeith Packard; LE64-NEXT: sldi 3, 3, 2 5244b020a3SKeith Packard; LE64-NEXT: std 0, 80(1) 5344b020a3SKeith Packard; LE64-NEXT: std 30, 48(31) # 8-byte Folded Spill 5444b020a3SKeith Packard; LE64-NEXT: addis 30, 2, __stack_chk_guard@toc@ha 5544b020a3SKeith Packard; LE64-NEXT: addi 3, 3, 15 5644b020a3SKeith Packard; LE64-NEXT: ld 4, __stack_chk_guard@toc@l(30) 5744b020a3SKeith Packard; LE64-NEXT: rldicr 3, 3, 0, 59 5844b020a3SKeith Packard; LE64-NEXT: neg 3, 3 5944b020a3SKeith Packard; LE64-NEXT: std 4, 40(31) 6044b020a3SKeith Packard; LE64-NEXT: addi 4, 31, 64 6144b020a3SKeith Packard; LE64-NEXT: stdux 4, 1, 3 6244b020a3SKeith Packard; LE64-NEXT: addi 3, 1, 32 6344b020a3SKeith Packard; LE64-NEXT: bl baz 6444b020a3SKeith Packard; LE64-NEXT: nop 6544b020a3SKeith Packard; LE64-NEXT: ld 3, __stack_chk_guard@toc@l(30) 6644b020a3SKeith Packard; LE64-NEXT: ld 4, 40(31) 6744b020a3SKeith Packard; LE64-NEXT: cmpld 3, 4 6844b020a3SKeith Packard; LE64-NEXT: bne 0, .LBB0_2 6944b020a3SKeith Packard; LE64-NEXT: # %bb.1: 7044b020a3SKeith Packard; LE64-NEXT: ld 30, 48(31) # 8-byte Folded Reload 7144b020a3SKeith Packard; LE64-NEXT: ld 1, 0(1) 7244b020a3SKeith Packard; LE64-NEXT: ld 0, 16(1) 7344b020a3SKeith Packard; LE64-NEXT: ld 31, -8(1) 7444b020a3SKeith Packard; LE64-NEXT: mtlr 0 7544b020a3SKeith Packard; LE64-NEXT: blr 7644b020a3SKeith Packard; LE64-NEXT: .LBB0_2: 7744b020a3SKeith Packard; LE64-NEXT: bl __stack_chk_fail 7844b020a3SKeith Packard; LE64-NEXT: nop 7944b020a3SKeith Packard; 8044b020a3SKeith Packard; LE32-LABEL: foo: 8144b020a3SKeith Packard; LE32: # %bb.0: 8244b020a3SKeith Packard; LE32-NEXT: mflr 0 8344b020a3SKeith Packard; LE32-NEXT: stwu 1, -32(1) 8444b020a3SKeith Packard; LE32-NEXT: stw 31, 28(1) 8544b020a3SKeith Packard; LE32-NEXT: mr 31, 1 8644b020a3SKeith Packard; LE32-NEXT: stw 0, 36(1) 8744b020a3SKeith Packard; LE32-NEXT: slwi 4, 4, 2 8844b020a3SKeith Packard; LE32-NEXT: stw 30, 24(31) # 4-byte Folded Spill 8944b020a3SKeith Packard; LE32-NEXT: lis 30, __stack_chk_guard@ha 9044b020a3SKeith Packard; LE32-NEXT: lwz 3, __stack_chk_guard@l(30) 9144b020a3SKeith Packard; LE32-NEXT: addi 4, 4, 15 9244b020a3SKeith Packard; LE32-NEXT: rlwinm 4, 4, 0, 0, 27 9344b020a3SKeith Packard; LE32-NEXT: neg 4, 4 9444b020a3SKeith Packard; LE32-NEXT: stw 3, 20(31) 9544b020a3SKeith Packard; LE32-NEXT: addi 3, 31, 32 9644b020a3SKeith Packard; LE32-NEXT: stwux 3, 1, 4 9744b020a3SKeith Packard; LE32-NEXT: addi 3, 1, 16 9844b020a3SKeith Packard; LE32-NEXT: bl baz 9944b020a3SKeith Packard; LE32-NEXT: lwz 3, __stack_chk_guard@l(30) 10044b020a3SKeith Packard; LE32-NEXT: lwz 4, 20(31) 10144b020a3SKeith Packard; LE32-NEXT: cmplw 3, 4 10244b020a3SKeith Packard; LE32-NEXT: bne 0, .LBB0_2 10344b020a3SKeith Packard; LE32-NEXT: # %bb.1: 10444b020a3SKeith Packard; LE32-NEXT: lwz 30, 24(31) # 4-byte Folded Reload 10544b020a3SKeith Packard; LE32-NEXT: lwz 31, 0(1) 10644b020a3SKeith Packard; LE32-NEXT: lwz 0, -4(31) 10744b020a3SKeith Packard; LE32-NEXT: mr 1, 31 10844b020a3SKeith Packard; LE32-NEXT: mr 31, 0 10944b020a3SKeith Packard; LE32-NEXT: lwz 0, 4(1) 11044b020a3SKeith Packard; LE32-NEXT: mtlr 0 11144b020a3SKeith Packard; LE32-NEXT: blr 11244b020a3SKeith Packard; LE32-NEXT: .LBB0_2: 11344b020a3SKeith Packard; LE32-NEXT: bl __stack_chk_fail 11444b020a3SKeith Packard %vla = alloca i32, i64 %t, align 4 11544b020a3SKeith Packard call void @baz(ptr %vla) 11644b020a3SKeith Packard ret void 11744b020a3SKeith Packard} 11844b020a3SKeith Packard 11944b020a3SKeith Packarddeclare void @baz(ptr) 12044b020a3SKeith Packard 12144b020a3SKeith Packard!llvm.module.flags = !{!1} 12244b020a3SKeith Packard!1 = !{i32 2, !"stack-protector-guard", !"global"} 123