1abaaa48cSChen Zheng; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 2abaaa48cSChen Zheng; RUN: llc -mtriple=powerpc-ibm-aix-xcoff -verify-machineinstrs < %s -mcpu=pwr7 | FileCheck %s --check-prefix=AIX32 3abaaa48cSChen Zheng; RUN: llc -mtriple=powerpc64-ibm-aix-xcoff -verify-machineinstrs < %s -mcpu=pwr7 | FileCheck %s --check-prefix=AIX64 4abaaa48cSChen Zheng; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -verify-machineinstrs < %s -mcpu=pwr7 | FileCheck %s --check-prefix=LE 5abaaa48cSChen Zheng 6abaaa48cSChen Zhengdefine ptr @frame_1(i32 signext %num) nounwind { 7abaaa48cSChen Zheng; AIX32-LABEL: frame_1: 8abaaa48cSChen Zheng; AIX32: # %bb.0: # %entry 9abaaa48cSChen Zheng; AIX32-NEXT: stw 31, -4(1) 10abaaa48cSChen Zheng; AIX32-NEXT: stwu 1, -48(1) 11abaaa48cSChen Zheng; AIX32-NEXT: addi 3, 3, 15 12abaaa48cSChen Zheng; AIX32-NEXT: mr 31, 1 13abaaa48cSChen Zheng; AIX32-NEXT: addi 4, 31, 48 14abaaa48cSChen Zheng; AIX32-NEXT: rlwinm 3, 3, 0, 0, 27 15abaaa48cSChen Zheng; AIX32-NEXT: neg 3, 3 16abaaa48cSChen Zheng; AIX32-NEXT: stwux 4, 1, 3 17abaaa48cSChen Zheng; AIX32-NEXT: addi 3, 1, 32 18abaaa48cSChen Zheng; AIX32-NEXT: lbz 4, 0(3) 19abaaa48cSChen Zheng; AIX32-NEXT: addi 4, 4, 1 20abaaa48cSChen Zheng; AIX32-NEXT: stb 4, 0(3) 21*e1c03ddcSChen Zheng; AIX32-NEXT: lwz 3, 0(1) 22abaaa48cSChen Zheng; AIX32-NEXT: lwz 1, 0(1) 23abaaa48cSChen Zheng; AIX32-NEXT: lwz 31, -4(1) 24abaaa48cSChen Zheng; AIX32-NEXT: blr 25abaaa48cSChen Zheng; 26abaaa48cSChen Zheng; AIX64-LABEL: frame_1: 27abaaa48cSChen Zheng; AIX64: # %bb.0: # %entry 28abaaa48cSChen Zheng; AIX64-NEXT: std 31, -8(1) 29abaaa48cSChen Zheng; AIX64-NEXT: stdu 1, -64(1) 30abaaa48cSChen Zheng; AIX64-NEXT: addi 3, 3, 15 31abaaa48cSChen Zheng; AIX64-NEXT: mr 31, 1 32abaaa48cSChen Zheng; AIX64-NEXT: addi 4, 31, 64 33abaaa48cSChen Zheng; AIX64-NEXT: rldicr 3, 3, 0, 59 34abaaa48cSChen Zheng; AIX64-NEXT: neg 3, 3 35abaaa48cSChen Zheng; AIX64-NEXT: stdux 4, 1, 3 36abaaa48cSChen Zheng; AIX64-NEXT: addi 3, 1, 48 37abaaa48cSChen Zheng; AIX64-NEXT: lbz 4, 0(3) 38abaaa48cSChen Zheng; AIX64-NEXT: addi 4, 4, 1 39abaaa48cSChen Zheng; AIX64-NEXT: stb 4, 0(3) 40*e1c03ddcSChen Zheng; AIX64-NEXT: ld 3, 0(1) 41abaaa48cSChen Zheng; AIX64-NEXT: ld 1, 0(1) 42abaaa48cSChen Zheng; AIX64-NEXT: ld 31, -8(1) 43abaaa48cSChen Zheng; AIX64-NEXT: blr 44abaaa48cSChen Zheng; 45abaaa48cSChen Zheng; LE-LABEL: frame_1: 46abaaa48cSChen Zheng; LE: # %bb.0: # %entry 47abaaa48cSChen Zheng; LE-NEXT: std 31, -8(1) 48abaaa48cSChen Zheng; LE-NEXT: stdu 1, -48(1) 49abaaa48cSChen Zheng; LE-NEXT: addi 3, 3, 15 50abaaa48cSChen Zheng; LE-NEXT: mr 31, 1 51abaaa48cSChen Zheng; LE-NEXT: addi 4, 31, 48 52abaaa48cSChen Zheng; LE-NEXT: rldicr 3, 3, 0, 59 53abaaa48cSChen Zheng; LE-NEXT: neg 3, 3 54abaaa48cSChen Zheng; LE-NEXT: stdux 4, 1, 3 55abaaa48cSChen Zheng; LE-NEXT: addi 3, 1, 32 56abaaa48cSChen Zheng; LE-NEXT: lbz 4, 0(3) 57abaaa48cSChen Zheng; LE-NEXT: addi 4, 4, 1 58abaaa48cSChen Zheng; LE-NEXT: stb 4, 0(3) 59*e1c03ddcSChen Zheng; LE-NEXT: ld 3, 0(1) 60abaaa48cSChen Zheng; LE-NEXT: ld 1, 0(1) 61abaaa48cSChen Zheng; LE-NEXT: ld 31, -8(1) 62abaaa48cSChen Zheng; LE-NEXT: blr 63abaaa48cSChen Zhengentry: 64abaaa48cSChen Zheng %conv = sext i32 %num to i64 65abaaa48cSChen Zheng %0 = alloca i8, i64 %conv, align 16 66abaaa48cSChen Zheng %1 = load volatile i8, ptr %0, align 16 67abaaa48cSChen Zheng %inc = add i8 %1, 1 68abaaa48cSChen Zheng store volatile i8 %inc, ptr %0, align 16 69abaaa48cSChen Zheng %2 = tail call ptr @llvm.frameaddress.p0(i32 1) 70abaaa48cSChen Zheng ret ptr %2 71abaaa48cSChen Zheng} 72abaaa48cSChen Zheng 73abaaa48cSChen Zhengdefine ptr @frame_0(i32 signext %num) nounwind { 74abaaa48cSChen Zheng; AIX32-LABEL: frame_0: 75abaaa48cSChen Zheng; AIX32: # %bb.0: # %entry 76abaaa48cSChen Zheng; AIX32-NEXT: stw 31, -4(1) 77abaaa48cSChen Zheng; AIX32-NEXT: stwu 1, -48(1) 78abaaa48cSChen Zheng; AIX32-NEXT: addi 3, 3, 15 79abaaa48cSChen Zheng; AIX32-NEXT: mr 31, 1 80abaaa48cSChen Zheng; AIX32-NEXT: addi 4, 31, 48 81abaaa48cSChen Zheng; AIX32-NEXT: rlwinm 3, 3, 0, 0, 27 82abaaa48cSChen Zheng; AIX32-NEXT: neg 3, 3 83abaaa48cSChen Zheng; AIX32-NEXT: stwux 4, 1, 3 84abaaa48cSChen Zheng; AIX32-NEXT: addi 3, 1, 32 85abaaa48cSChen Zheng; AIX32-NEXT: lbz 4, 0(3) 86abaaa48cSChen Zheng; AIX32-NEXT: addi 4, 4, 1 87abaaa48cSChen Zheng; AIX32-NEXT: stb 4, 0(3) 88*e1c03ddcSChen Zheng; AIX32-NEXT: mr 3, 1 89abaaa48cSChen Zheng; AIX32-NEXT: lwz 1, 0(1) 90abaaa48cSChen Zheng; AIX32-NEXT: lwz 31, -4(1) 91abaaa48cSChen Zheng; AIX32-NEXT: blr 92abaaa48cSChen Zheng; 93abaaa48cSChen Zheng; AIX64-LABEL: frame_0: 94abaaa48cSChen Zheng; AIX64: # %bb.0: # %entry 95abaaa48cSChen Zheng; AIX64-NEXT: std 31, -8(1) 96abaaa48cSChen Zheng; AIX64-NEXT: stdu 1, -64(1) 97abaaa48cSChen Zheng; AIX64-NEXT: addi 3, 3, 15 98abaaa48cSChen Zheng; AIX64-NEXT: mr 31, 1 99abaaa48cSChen Zheng; AIX64-NEXT: addi 4, 31, 64 100abaaa48cSChen Zheng; AIX64-NEXT: rldicr 3, 3, 0, 59 101abaaa48cSChen Zheng; AIX64-NEXT: neg 3, 3 102abaaa48cSChen Zheng; AIX64-NEXT: stdux 4, 1, 3 103abaaa48cSChen Zheng; AIX64-NEXT: addi 3, 1, 48 104abaaa48cSChen Zheng; AIX64-NEXT: lbz 4, 0(3) 105abaaa48cSChen Zheng; AIX64-NEXT: addi 4, 4, 1 106abaaa48cSChen Zheng; AIX64-NEXT: stb 4, 0(3) 107*e1c03ddcSChen Zheng; AIX64-NEXT: mr 3, 1 108abaaa48cSChen Zheng; AIX64-NEXT: ld 1, 0(1) 109abaaa48cSChen Zheng; AIX64-NEXT: ld 31, -8(1) 110abaaa48cSChen Zheng; AIX64-NEXT: blr 111abaaa48cSChen Zheng; 112abaaa48cSChen Zheng; LE-LABEL: frame_0: 113abaaa48cSChen Zheng; LE: # %bb.0: # %entry 114abaaa48cSChen Zheng; LE-NEXT: std 31, -8(1) 115abaaa48cSChen Zheng; LE-NEXT: stdu 1, -48(1) 116abaaa48cSChen Zheng; LE-NEXT: addi 3, 3, 15 117abaaa48cSChen Zheng; LE-NEXT: mr 31, 1 118abaaa48cSChen Zheng; LE-NEXT: addi 4, 31, 48 119abaaa48cSChen Zheng; LE-NEXT: rldicr 3, 3, 0, 59 120abaaa48cSChen Zheng; LE-NEXT: neg 3, 3 121abaaa48cSChen Zheng; LE-NEXT: stdux 4, 1, 3 122abaaa48cSChen Zheng; LE-NEXT: addi 3, 1, 32 123abaaa48cSChen Zheng; LE-NEXT: lbz 4, 0(3) 124abaaa48cSChen Zheng; LE-NEXT: addi 4, 4, 1 125abaaa48cSChen Zheng; LE-NEXT: stb 4, 0(3) 126*e1c03ddcSChen Zheng; LE-NEXT: mr 3, 1 127abaaa48cSChen Zheng; LE-NEXT: ld 1, 0(1) 128abaaa48cSChen Zheng; LE-NEXT: ld 31, -8(1) 129abaaa48cSChen Zheng; LE-NEXT: blr 130abaaa48cSChen Zhengentry: 131abaaa48cSChen Zheng %conv = sext i32 %num to i64 132abaaa48cSChen Zheng %0 = alloca i8, i64 %conv, align 16 133abaaa48cSChen Zheng %1 = load volatile i8, ptr %0, align 16 134abaaa48cSChen Zheng %inc = add i8 %1, 1 135abaaa48cSChen Zheng store volatile i8 %inc, ptr %0, align 16 136abaaa48cSChen Zheng %2 = tail call ptr @llvm.frameaddress.p0(i32 0) 137abaaa48cSChen Zheng ret ptr %2 138abaaa48cSChen Zheng} 139