1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -O3 | llc > %t 2*9880d681SAndroid Build Coastguard Worker; ModuleID = 'ld3.c' 3*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f128:64:128" 4*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc-apple-darwin8" 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdefine ppc_fp128 @plus(ppc_fp128 %x, ppc_fp128 %y) { 7*9880d681SAndroid Build Coastguard Workerentry: 8*9880d681SAndroid Build Coastguard Worker %x_addr = alloca ppc_fp128 ; <ppc_fp128*> [#uses=2] 9*9880d681SAndroid Build Coastguard Worker %y_addr = alloca ppc_fp128 ; <ppc_fp128*> [#uses=2] 10*9880d681SAndroid Build Coastguard Worker %retval = alloca ppc_fp128, align 16 ; <ppc_fp128*> [#uses=2] 11*9880d681SAndroid Build Coastguard Worker %tmp = alloca ppc_fp128, align 16 ; <ppc_fp128*> [#uses=2] 12*9880d681SAndroid Build Coastguard Worker %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] 13*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %x, ppc_fp128* %x_addr 14*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %y, ppc_fp128* %y_addr 15*9880d681SAndroid Build Coastguard Worker %tmp1 = load ppc_fp128, ppc_fp128* %x_addr, align 16 ; <ppc_fp128> [#uses=1] 16*9880d681SAndroid Build Coastguard Worker %tmp2 = load ppc_fp128, ppc_fp128* %y_addr, align 16 ; <ppc_fp128> [#uses=1] 17*9880d681SAndroid Build Coastguard Worker %tmp3 = fadd ppc_fp128 %tmp1, %tmp2 ; <ppc_fp128> [#uses=1] 18*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %tmp3, ppc_fp128* %tmp, align 16 19*9880d681SAndroid Build Coastguard Worker %tmp4 = load ppc_fp128, ppc_fp128* %tmp, align 16 ; <ppc_fp128> [#uses=1] 20*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %tmp4, ppc_fp128* %retval, align 16 21*9880d681SAndroid Build Coastguard Worker br label %return 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %entry 24*9880d681SAndroid Build Coastguard Worker %retval5 = load ppc_fp128, ppc_fp128* %retval ; <ppc_fp128> [#uses=1] 25*9880d681SAndroid Build Coastguard Worker ret ppc_fp128 %retval5 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workerdefine ppc_fp128 @minus(ppc_fp128 %x, ppc_fp128 %y) { 29*9880d681SAndroid Build Coastguard Workerentry: 30*9880d681SAndroid Build Coastguard Worker %x_addr = alloca ppc_fp128 ; <ppc_fp128*> [#uses=2] 31*9880d681SAndroid Build Coastguard Worker %y_addr = alloca ppc_fp128 ; <ppc_fp128*> [#uses=2] 32*9880d681SAndroid Build Coastguard Worker %retval = alloca ppc_fp128, align 16 ; <ppc_fp128*> [#uses=2] 33*9880d681SAndroid Build Coastguard Worker %tmp = alloca ppc_fp128, align 16 ; <ppc_fp128*> [#uses=2] 34*9880d681SAndroid Build Coastguard Worker %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] 35*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %x, ppc_fp128* %x_addr 36*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %y, ppc_fp128* %y_addr 37*9880d681SAndroid Build Coastguard Worker %tmp1 = load ppc_fp128, ppc_fp128* %x_addr, align 16 ; <ppc_fp128> [#uses=1] 38*9880d681SAndroid Build Coastguard Worker %tmp2 = load ppc_fp128, ppc_fp128* %y_addr, align 16 ; <ppc_fp128> [#uses=1] 39*9880d681SAndroid Build Coastguard Worker %tmp3 = fsub ppc_fp128 %tmp1, %tmp2 ; <ppc_fp128> [#uses=1] 40*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %tmp3, ppc_fp128* %tmp, align 16 41*9880d681SAndroid Build Coastguard Worker %tmp4 = load ppc_fp128, ppc_fp128* %tmp, align 16 ; <ppc_fp128> [#uses=1] 42*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %tmp4, ppc_fp128* %retval, align 16 43*9880d681SAndroid Build Coastguard Worker br label %return 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %entry 46*9880d681SAndroid Build Coastguard Worker %retval5 = load ppc_fp128, ppc_fp128* %retval ; <ppc_fp128> [#uses=1] 47*9880d681SAndroid Build Coastguard Worker ret ppc_fp128 %retval5 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerdefine ppc_fp128 @times(ppc_fp128 %x, ppc_fp128 %y) { 51*9880d681SAndroid Build Coastguard Workerentry: 52*9880d681SAndroid Build Coastguard Worker %x_addr = alloca ppc_fp128 ; <ppc_fp128*> [#uses=2] 53*9880d681SAndroid Build Coastguard Worker %y_addr = alloca ppc_fp128 ; <ppc_fp128*> [#uses=2] 54*9880d681SAndroid Build Coastguard Worker %retval = alloca ppc_fp128, align 16 ; <ppc_fp128*> [#uses=2] 55*9880d681SAndroid Build Coastguard Worker %tmp = alloca ppc_fp128, align 16 ; <ppc_fp128*> [#uses=2] 56*9880d681SAndroid Build Coastguard Worker %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] 57*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %x, ppc_fp128* %x_addr 58*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %y, ppc_fp128* %y_addr 59*9880d681SAndroid Build Coastguard Worker %tmp1 = load ppc_fp128, ppc_fp128* %x_addr, align 16 ; <ppc_fp128> [#uses=1] 60*9880d681SAndroid Build Coastguard Worker %tmp2 = load ppc_fp128, ppc_fp128* %y_addr, align 16 ; <ppc_fp128> [#uses=1] 61*9880d681SAndroid Build Coastguard Worker %tmp3 = fmul ppc_fp128 %tmp1, %tmp2 ; <ppc_fp128> [#uses=1] 62*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %tmp3, ppc_fp128* %tmp, align 16 63*9880d681SAndroid Build Coastguard Worker %tmp4 = load ppc_fp128, ppc_fp128* %tmp, align 16 ; <ppc_fp128> [#uses=1] 64*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %tmp4, ppc_fp128* %retval, align 16 65*9880d681SAndroid Build Coastguard Worker br label %return 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %entry 68*9880d681SAndroid Build Coastguard Worker %retval5 = load ppc_fp128, ppc_fp128* %retval ; <ppc_fp128> [#uses=1] 69*9880d681SAndroid Build Coastguard Worker ret ppc_fp128 %retval5 70*9880d681SAndroid Build Coastguard Worker} 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerdefine ppc_fp128 @divide(ppc_fp128 %x, ppc_fp128 %y) { 73*9880d681SAndroid Build Coastguard Workerentry: 74*9880d681SAndroid Build Coastguard Worker %x_addr = alloca ppc_fp128 ; <ppc_fp128*> [#uses=2] 75*9880d681SAndroid Build Coastguard Worker %y_addr = alloca ppc_fp128 ; <ppc_fp128*> [#uses=2] 76*9880d681SAndroid Build Coastguard Worker %retval = alloca ppc_fp128, align 16 ; <ppc_fp128*> [#uses=2] 77*9880d681SAndroid Build Coastguard Worker %tmp = alloca ppc_fp128, align 16 ; <ppc_fp128*> [#uses=2] 78*9880d681SAndroid Build Coastguard Worker %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] 79*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %x, ppc_fp128* %x_addr 80*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %y, ppc_fp128* %y_addr 81*9880d681SAndroid Build Coastguard Worker %tmp1 = load ppc_fp128, ppc_fp128* %x_addr, align 16 ; <ppc_fp128> [#uses=1] 82*9880d681SAndroid Build Coastguard Worker %tmp2 = load ppc_fp128, ppc_fp128* %y_addr, align 16 ; <ppc_fp128> [#uses=1] 83*9880d681SAndroid Build Coastguard Worker %tmp3 = fdiv ppc_fp128 %tmp1, %tmp2 ; <ppc_fp128> [#uses=1] 84*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %tmp3, ppc_fp128* %tmp, align 16 85*9880d681SAndroid Build Coastguard Worker %tmp4 = load ppc_fp128, ppc_fp128* %tmp, align 16 ; <ppc_fp128> [#uses=1] 86*9880d681SAndroid Build Coastguard Worker store ppc_fp128 %tmp4, ppc_fp128* %retval, align 16 87*9880d681SAndroid Build Coastguard Worker br label %return 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %entry 90*9880d681SAndroid Build Coastguard Worker %retval5 = load ppc_fp128, ppc_fp128* %retval ; <ppc_fp128> [#uses=1] 91*9880d681SAndroid Build Coastguard Worker ret ppc_fp128 %retval5 92*9880d681SAndroid Build Coastguard Worker} 93