60 lines · plain
1; RUN: llc -verify-machineinstrs -mcpu=pwr7 < %s | FileCheck %s2target datalayout = "e-m:e-i64:64-n32:64"3target triple = "powerpc64le-unknown-linux-gnu"4 5; Make sure that we don't generate a std r, 0(0) -- the memory address cannot6; be stored in r0.7; CHECK-LABEL: @test18; CHECK-NOT: std {{[0-9]+}}, 0(0) 9; CHECK: blr10 11define void @test1({ ptr, ptr } %fn_arg) {12 %fn = alloca { ptr, ptr }13 %sp = alloca ptr, align 814 %regs = alloca [18 x i64], align 815 store { ptr, ptr } %fn_arg, ptr %fn16 call void asm sideeffect "std 14, $0", "=*m"(ptr elementtype(i64) %regs)17 %1 = getelementptr i8, ptr %regs, i32 818 call void asm sideeffect "std 15, $0", "=*m"(ptr elementtype(i64) %1)19 %2 = getelementptr i8, ptr %regs, i32 1620 call void asm sideeffect "std 16, $0", "=*m"(ptr elementtype(i64) %2)21 %3 = getelementptr i8, ptr %regs, i32 2422 call void asm sideeffect "std 17, $0", "=*m"(ptr elementtype(i64) %3)23 %4 = getelementptr i8, ptr %regs, i32 3224 call void asm sideeffect "std 18, $0", "=*m"(ptr elementtype(i64) %4)25 %5 = getelementptr i8, ptr %regs, i32 4026 call void asm sideeffect "std 19, $0", "=*m"(ptr elementtype(i64) %5)27 %6 = getelementptr i8, ptr %regs, i32 4828 call void asm sideeffect "std 20, $0", "=*m"(ptr elementtype(i64) %6)29 %7 = getelementptr i8, ptr %regs, i32 5630 call void asm sideeffect "std 21, $0", "=*m"(ptr elementtype(i64) %7)31 %8 = getelementptr i8, ptr %regs, i32 6432 call void asm sideeffect "std 22, $0", "=*m"(ptr elementtype(i64) %8)33 %9 = getelementptr i8, ptr %regs, i32 7234 call void asm sideeffect "std 23, $0", "=*m"(ptr elementtype(i64) %9)35 %10 = getelementptr i8, ptr %regs, i32 8036 call void asm sideeffect "std 24, $0", "=*m"(ptr elementtype(i64) %10)37 %11 = getelementptr i8, ptr %regs, i32 8838 call void asm sideeffect "std 25, $0", "=*m"(ptr elementtype(i64) %11)39 %12 = getelementptr i8, ptr %regs, i32 9640 call void asm sideeffect "std 26, $0", "=*m"(ptr elementtype(i64) %12)41 %13 = getelementptr i8, ptr %regs, i32 10442 call void asm sideeffect "std 27, $0", "=*m"(ptr elementtype(i64) %13)43 %14 = getelementptr i8, ptr %regs, i32 11244 call void asm sideeffect "std 28, $0", "=*m"(ptr elementtype(i64) %14)45 %15 = getelementptr i8, ptr %regs, i32 12046 call void asm sideeffect "std 29, $0", "=*m"(ptr elementtype(i64) %15)47 %16 = getelementptr i8, ptr %regs, i32 12848 call void asm sideeffect "std 30, $0", "=*m"(ptr elementtype(i64) %16)49 %17 = getelementptr i8, ptr %regs, i32 13650 call void asm sideeffect "std 31, $0", "=*m"(ptr elementtype(i64) %17)51 %18 = getelementptr { ptr, ptr }, ptr %fn, i32 0, i32 152 %.funcptr = load ptr, ptr %1853 %19 = getelementptr { ptr, ptr }, ptr %fn, i32 0, i32 054 %.ptr = load ptr, ptr %1955 %20 = load ptr, ptr %sp56 call void %.funcptr(ptr %.ptr, ptr %20)57 ret void58}59 60