103 lines · plain
1; RUN: llc -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 -mattr=-altivec \2; RUN: -stop-after=machine-cp --verify-machineinstrs < %s | FileCheck \3; RUN: --check-prefixes=MIR,MIR32 %s4 5; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 -mattr=-altivec \6; RUN: -stop-after=machine-cp --verify-machineinstrs < %s | FileCheck \7; RUN: --check-prefixes=MIR,MIR64 %s8 9; RUN: llc -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 -mattr=-altivec \10; RUN: --verify-machineinstrs < %s | FileCheck --check-prefixes=ASM,ASM32 %s11 12; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 -mattr=-altivec \13; RUN: --verify-machineinstrs < %s | FileCheck --check-prefixes=ASM,ASM64 %s14 15%struct.S = type { i8 }16%struct.T = type { double, i32, i32, i32, float }17 18define void @test1() {19entry:20 %s = alloca %struct.S, align 821 call void @foo(ptr sret(%struct.S) %s)22 ret void23}24 25define void @test2() {26entry:27 %t = alloca %struct.T, align 828 call void @bar(ptr sret(%struct.T) %t)29 ret void30}31 32declare void @foo(ptr sret(%struct.S))33declare void @bar(ptr sret(%struct.T))34 35; MIR: name: test136; MIR: stack:37; MIR-NEXT: - { id: 0, name: s, type: default, offset: 0, size: 1, alignment: 8,38 39; MIR32: bb.0.entry:40; MIR32-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r141; MIR32-NEXT: renamable $r3 = ADDI %stack.0.s, 042; MIR32-NEXT: BL_NOP <mcsymbol .foo[PR]>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r2, implicit-def $r143; MIR32-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r144 45; MIR64: bb.0.entry:46; MIR64-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r147; MIR64-NEXT: renamable $x3 = ADDI8 %stack.0.s, 048; MIR64-NEXT: BL8_NOP <mcsymbol .foo[PR]>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x2, implicit-def $r149; MIR64-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r150 51 52; ASM-LABEL: .test1:53 54; ASM32: stwu 1, -64(1)55; ASM32-NEXT: addi 3, 1, 5656; ASM32-NEXT: stw 0, 72(1)57; ASM32-NEXT: bl .foo[PR]58; ASM32-NEXT: nop59; ASM32-NEXT: addi 1, 1, 6460 61; ASM64: stdu 1, -128(1)62; ASM64-NEXT: addi 3, 1, 12063; ASM64-NEXT: std 0, 144(1)64; ASM64-NEXT: bl .foo[PR]65; ASM64-NEXT: nop66; ASM64-NEXT: addi 1, 1, 12867 68 69 70; MIR: name: test271; MIR: stack:72; MIR-NEXT: - { id: 0, name: t, type: default, offset: 0, size: 24, alignment: 8,73 74; MIR32: bb.0.entry:75; MIR32-NEXT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r176; MIR32-NEXT: renamable $r3 = ADDI %stack.0.t, 077; MIR32-NEXT: BL_NOP <mcsymbol .bar[PR]>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r2, implicit-def $r178; MIR32-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r179 80; MIR64: bb.0.entry:81; MIR64-NEXT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r182; MIR64-NEXT: renamable $x3 = ADDI8 %stack.0.t, 083; MIR64-NEXT: BL8_NOP <mcsymbol .bar[PR]>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x2, implicit-def $r184; MIR64-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r185 86 87; ASM-LABEL: .test2:88 89; ASM32: stwu 1, -80(1)90; ASM32-NEXT: addi 3, 1, 5691; ASM32-NEXT: stw 0, 88(1)92; ASM32-NEXT: bl .bar[PR]93; ASM32-NEXT: nop94; ASM32-NEXT: addi 1, 1, 8095 96 97; ASM64: stdu 1, -144(1)98; ASM64-NEXT: addi 3, 1, 12099; ASM64-NEXT: std 0, 160(1)100; ASM64-NEXT: bl .bar[PR]101; ASM64-NEXT: nop102; ASM64-NEXT: addi 1, 1, 144103