1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=a2 < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-m:e-i64:64-n32:64" 3*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64-unknown-linux-gnu" 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 6*9880d681SAndroid Build Coastguard Workerdefine double @foo1(i32* %x) #0 { 7*9880d681SAndroid Build Coastguard Workerentry: 8*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %x, align 4 9*9880d681SAndroid Build Coastguard Worker %conv = sext i32 %0 to i64 10*9880d681SAndroid Build Coastguard Worker %conv1 = sitofp i64 %conv to double 11*9880d681SAndroid Build Coastguard Worker ret double %conv1 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @foo1 14*9880d681SAndroid Build Coastguard Worker; CHECK: lfiwax [[REG1:[0-9]+]], 0, 3 15*9880d681SAndroid Build Coastguard Worker; CHECK: fcfid 1, [[REG1]] 16*9880d681SAndroid Build Coastguard Worker; CHECK: blr 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerdefine double @foo2(i32* %x) #0 { 20*9880d681SAndroid Build Coastguard Workerentry: 21*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %x, align 4 22*9880d681SAndroid Build Coastguard Worker %conv = zext i32 %0 to i64 23*9880d681SAndroid Build Coastguard Worker %conv1 = sitofp i64 %conv to double 24*9880d681SAndroid Build Coastguard Worker ret double %conv1 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @foo2 27*9880d681SAndroid Build Coastguard Worker; CHECK: lfiwzx [[REG1:[0-9]+]], 0, 3 28*9880d681SAndroid Build Coastguard Worker; CHECK: fcfid 1, [[REG1]] 29*9880d681SAndroid Build Coastguard Worker; CHECK: blr 30*9880d681SAndroid Build Coastguard Worker} 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Workerdefine double @foo3(i32* %x) #0 { 33*9880d681SAndroid Build Coastguard Workerentry: 34*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %x, align 4 35*9880d681SAndroid Build Coastguard Worker %1 = add i32 %0, 8 36*9880d681SAndroid Build Coastguard Worker %conv = zext i32 %1 to i64 37*9880d681SAndroid Build Coastguard Worker %conv1 = sitofp i64 %conv to double 38*9880d681SAndroid Build Coastguard Worker ret double %conv1 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @foo3 41*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lwz [[REG1:[0-9]+]], 0(3) 42*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addi [[REG3:[0-9]+]], 1, 43*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addi [[REG2:[0-9]+]], [[REG1]], 8 44*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: stw [[REG2]], 45*9880d681SAndroid Build Coastguard Worker; CHECK: lfiwzx [[REG4:[0-9]+]], 0, [[REG3]] 46*9880d681SAndroid Build Coastguard Worker; CHECK: fcfid 1, [[REG4]] 47*9880d681SAndroid Build Coastguard Worker; CHECK: blr 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerdefine double @foo4(i32* %x) #0 { 51*9880d681SAndroid Build Coastguard Workerentry: 52*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %x, align 4 53*9880d681SAndroid Build Coastguard Worker %1 = add i32 %0, 8 54*9880d681SAndroid Build Coastguard Worker %conv = sext i32 %1 to i64 55*9880d681SAndroid Build Coastguard Worker %conv1 = sitofp i64 %conv to double 56*9880d681SAndroid Build Coastguard Worker ret double %conv1 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @foo4 59*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lwz [[REG1:[0-9]+]], 0(3) 60*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addi [[REG3:[0-9]+]], 1, 61*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addi [[REG2:[0-9]+]], [[REG1]], 8 62*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: stw [[REG2]], 63*9880d681SAndroid Build Coastguard Worker; CHECK: lfiwax [[REG4:[0-9]+]], 0, [[REG3]] 64*9880d681SAndroid Build Coastguard Worker; CHECK: fcfid 1, [[REG4]] 65*9880d681SAndroid Build Coastguard Worker; CHECK: blr 66*9880d681SAndroid Build Coastguard Worker} 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 69*9880d681SAndroid Build Coastguard Worker 70