1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=pwr8 -mtriple=powerpc64-unknown-unknown < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=pwr8 -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 5*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @_Z6testcff(float %arg) { 6*9880d681SAndroid Build Coastguard Workerentry: 7*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca float, align 4 8*9880d681SAndroid Build Coastguard Worker store float %arg, float* %arg.addr, align 4 9*9880d681SAndroid Build Coastguard Worker %0 = load float, float* %arg.addr, align 4 10*9880d681SAndroid Build Coastguard Worker %conv = fptoui float %0 to i8 11*9880d681SAndroid Build Coastguard Worker ret i8 %conv 12*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z6testcff 13*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpsxws [[CONVREG01:[0-9]+]], 1 14*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrwz 3, [[CONVREG01]] 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 18*9880d681SAndroid Build Coastguard Workerdefine float @_Z6testfcc(i8 zeroext %arg) { 19*9880d681SAndroid Build Coastguard Workerentry: 20*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i8, align 1 21*9880d681SAndroid Build Coastguard Worker store i8 %arg, i8* %arg.addr, align 1 22*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* %arg.addr, align 1 23*9880d681SAndroid Build Coastguard Worker %conv = uitofp i8 %0 to float 24*9880d681SAndroid Build Coastguard Worker ret float %conv 25*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z6testfcc 26*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrwz [[MOVEREG01:[0-9]+]], 3 27*9880d681SAndroid Build Coastguard Worker; CHECK: xscvuxdsp 1, [[MOVEREG01]] 28*9880d681SAndroid Build Coastguard Worker} 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 31*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @_Z6testcdd(double %arg) { 32*9880d681SAndroid Build Coastguard Workerentry: 33*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca double, align 8 34*9880d681SAndroid Build Coastguard Worker store double %arg, double* %arg.addr, align 8 35*9880d681SAndroid Build Coastguard Worker %0 = load double, double* %arg.addr, align 8 36*9880d681SAndroid Build Coastguard Worker %conv = fptoui double %0 to i8 37*9880d681SAndroid Build Coastguard Worker ret i8 %conv 38*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z6testcdd 39*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpsxws [[CONVREG02:[0-9]+]], 1 40*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrwz 3, [[CONVREG02]] 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 44*9880d681SAndroid Build Coastguard Workerdefine double @_Z6testdcc(i8 zeroext %arg) { 45*9880d681SAndroid Build Coastguard Workerentry: 46*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i8, align 1 47*9880d681SAndroid Build Coastguard Worker store i8 %arg, i8* %arg.addr, align 1 48*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* %arg.addr, align 1 49*9880d681SAndroid Build Coastguard Worker %conv = uitofp i8 %0 to double 50*9880d681SAndroid Build Coastguard Worker ret double %conv 51*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z6testdcc 52*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrwz [[MOVEREG02:[0-9]+]], 3 53*9880d681SAndroid Build Coastguard Worker; CHECK: xscvuxddp 1, [[MOVEREG02]] 54*9880d681SAndroid Build Coastguard Worker} 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 57*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @_Z7testucff(float %arg) { 58*9880d681SAndroid Build Coastguard Workerentry: 59*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca float, align 4 60*9880d681SAndroid Build Coastguard Worker store float %arg, float* %arg.addr, align 4 61*9880d681SAndroid Build Coastguard Worker %0 = load float, float* %arg.addr, align 4 62*9880d681SAndroid Build Coastguard Worker %conv = fptoui float %0 to i8 63*9880d681SAndroid Build Coastguard Worker ret i8 %conv 64*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testucff 65*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpsxws [[CONVREG03:[0-9]+]], 1 66*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrwz 3, [[CONVREG03]] 67*9880d681SAndroid Build Coastguard Worker} 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 70*9880d681SAndroid Build Coastguard Workerdefine float @_Z7testfuch(i8 zeroext %arg) { 71*9880d681SAndroid Build Coastguard Workerentry: 72*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i8, align 1 73*9880d681SAndroid Build Coastguard Worker store i8 %arg, i8* %arg.addr, align 1 74*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* %arg.addr, align 1 75*9880d681SAndroid Build Coastguard Worker %conv = uitofp i8 %0 to float 76*9880d681SAndroid Build Coastguard Worker ret float %conv 77*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testfuch 78*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrwz [[MOVEREG03:[0-9]+]], 3 79*9880d681SAndroid Build Coastguard Worker; CHECK: xscvuxdsp 1, [[MOVEREG03]] 80*9880d681SAndroid Build Coastguard Worker} 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 83*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @_Z7testucdd(double %arg) { 84*9880d681SAndroid Build Coastguard Workerentry: 85*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca double, align 8 86*9880d681SAndroid Build Coastguard Worker store double %arg, double* %arg.addr, align 8 87*9880d681SAndroid Build Coastguard Worker %0 = load double, double* %arg.addr, align 8 88*9880d681SAndroid Build Coastguard Worker %conv = fptoui double %0 to i8 89*9880d681SAndroid Build Coastguard Worker ret i8 %conv 90*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testucdd 91*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpsxws [[CONVREG04:[0-9]+]], 1 92*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrwz 3, [[CONVREG04]] 93*9880d681SAndroid Build Coastguard Worker} 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 96*9880d681SAndroid Build Coastguard Workerdefine double @_Z7testduch(i8 zeroext %arg) { 97*9880d681SAndroid Build Coastguard Workerentry: 98*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i8, align 1 99*9880d681SAndroid Build Coastguard Worker store i8 %arg, i8* %arg.addr, align 1 100*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* %arg.addr, align 1 101*9880d681SAndroid Build Coastguard Worker %conv = uitofp i8 %0 to double 102*9880d681SAndroid Build Coastguard Worker ret double %conv 103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testduch 104*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrwz [[MOVEREG04:[0-9]+]], 3 105*9880d681SAndroid Build Coastguard Worker; CHECK: xscvuxddp 1, [[MOVEREG04]] 106*9880d681SAndroid Build Coastguard Worker} 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 109*9880d681SAndroid Build Coastguard Workerdefine signext i16 @_Z6testsff(float %arg) { 110*9880d681SAndroid Build Coastguard Workerentry: 111*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca float, align 4 112*9880d681SAndroid Build Coastguard Worker store float %arg, float* %arg.addr, align 4 113*9880d681SAndroid Build Coastguard Worker %0 = load float, float* %arg.addr, align 4 114*9880d681SAndroid Build Coastguard Worker %conv = fptosi float %0 to i16 115*9880d681SAndroid Build Coastguard Worker ret i16 %conv 116*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z6testsff 117*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpsxws [[CONVREG05:[0-9]+]], 1 118*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrwz 3, [[CONVREG05]] 119*9880d681SAndroid Build Coastguard Worker} 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 122*9880d681SAndroid Build Coastguard Workerdefine float @_Z6testfss(i16 signext %arg) { 123*9880d681SAndroid Build Coastguard Workerentry: 124*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i16, align 2 125*9880d681SAndroid Build Coastguard Worker store i16 %arg, i16* %arg.addr, align 2 126*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* %arg.addr, align 2 127*9880d681SAndroid Build Coastguard Worker %conv = sitofp i16 %0 to float 128*9880d681SAndroid Build Coastguard Worker ret float %conv 129*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z6testfss 130*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrwa [[MOVEREG05:[0-9]+]], 3 131*9880d681SAndroid Build Coastguard Worker; CHECK: xscvsxdsp 1, [[MOVEREG05]] 132*9880d681SAndroid Build Coastguard Worker} 133*9880d681SAndroid Build Coastguard Worker 134*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 135*9880d681SAndroid Build Coastguard Workerdefine signext i16 @_Z6testsdd(double %arg) { 136*9880d681SAndroid Build Coastguard Workerentry: 137*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca double, align 8 138*9880d681SAndroid Build Coastguard Worker store double %arg, double* %arg.addr, align 8 139*9880d681SAndroid Build Coastguard Worker %0 = load double, double* %arg.addr, align 8 140*9880d681SAndroid Build Coastguard Worker %conv = fptosi double %0 to i16 141*9880d681SAndroid Build Coastguard Worker ret i16 %conv 142*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z6testsdd 143*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpsxws [[CONVREG06:[0-9]+]], 1 144*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrwz 3, [[CONVREG06]] 145*9880d681SAndroid Build Coastguard Worker} 146*9880d681SAndroid Build Coastguard Worker 147*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 148*9880d681SAndroid Build Coastguard Workerdefine double @_Z6testdss(i16 signext %arg) { 149*9880d681SAndroid Build Coastguard Workerentry: 150*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i16, align 2 151*9880d681SAndroid Build Coastguard Worker store i16 %arg, i16* %arg.addr, align 2 152*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* %arg.addr, align 2 153*9880d681SAndroid Build Coastguard Worker %conv = sitofp i16 %0 to double 154*9880d681SAndroid Build Coastguard Worker ret double %conv 155*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z6testdss 156*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrwa [[MOVEREG06:[0-9]+]], 3 157*9880d681SAndroid Build Coastguard Worker; CHECK: xscvsxddp 1, [[MOVEREG06]] 158*9880d681SAndroid Build Coastguard Worker} 159*9880d681SAndroid Build Coastguard Worker 160*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 161*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @_Z7testusff(float %arg) { 162*9880d681SAndroid Build Coastguard Workerentry: 163*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca float, align 4 164*9880d681SAndroid Build Coastguard Worker store float %arg, float* %arg.addr, align 4 165*9880d681SAndroid Build Coastguard Worker %0 = load float, float* %arg.addr, align 4 166*9880d681SAndroid Build Coastguard Worker %conv = fptoui float %0 to i16 167*9880d681SAndroid Build Coastguard Worker ret i16 %conv 168*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testusff 169*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpsxws [[CONVREG07:[0-9]+]], 1 170*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrwz 3, [[CONVREG07]] 171*9880d681SAndroid Build Coastguard Worker} 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 174*9880d681SAndroid Build Coastguard Workerdefine float @_Z7testfust(i16 zeroext %arg) { 175*9880d681SAndroid Build Coastguard Workerentry: 176*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i16, align 2 177*9880d681SAndroid Build Coastguard Worker store i16 %arg, i16* %arg.addr, align 2 178*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* %arg.addr, align 2 179*9880d681SAndroid Build Coastguard Worker %conv = uitofp i16 %0 to float 180*9880d681SAndroid Build Coastguard Worker ret float %conv 181*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testfust 182*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrwz [[MOVEREG07:[0-9]+]], 3 183*9880d681SAndroid Build Coastguard Worker; CHECK: xscvuxdsp 1, [[MOVEREG07]] 184*9880d681SAndroid Build Coastguard Worker} 185*9880d681SAndroid Build Coastguard Worker 186*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 187*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @_Z7testusdd(double %arg) { 188*9880d681SAndroid Build Coastguard Workerentry: 189*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca double, align 8 190*9880d681SAndroid Build Coastguard Worker store double %arg, double* %arg.addr, align 8 191*9880d681SAndroid Build Coastguard Worker %0 = load double, double* %arg.addr, align 8 192*9880d681SAndroid Build Coastguard Worker %conv = fptoui double %0 to i16 193*9880d681SAndroid Build Coastguard Worker ret i16 %conv 194*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testusdd 195*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpsxws [[CONVREG08:[0-9]+]], 1 196*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrwz 3, [[CONVREG08]] 197*9880d681SAndroid Build Coastguard Worker} 198*9880d681SAndroid Build Coastguard Worker 199*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 200*9880d681SAndroid Build Coastguard Workerdefine double @_Z7testdust(i16 zeroext %arg) { 201*9880d681SAndroid Build Coastguard Workerentry: 202*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i16, align 2 203*9880d681SAndroid Build Coastguard Worker store i16 %arg, i16* %arg.addr, align 2 204*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* %arg.addr, align 2 205*9880d681SAndroid Build Coastguard Worker %conv = uitofp i16 %0 to double 206*9880d681SAndroid Build Coastguard Worker ret double %conv 207*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testdust 208*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrwz [[MOVEREG08:[0-9]+]], 3 209*9880d681SAndroid Build Coastguard Worker; CHECK: xscvuxddp 1, [[MOVEREG08]] 210*9880d681SAndroid Build Coastguard Worker} 211*9880d681SAndroid Build Coastguard Worker 212*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 213*9880d681SAndroid Build Coastguard Workerdefine signext i32 @_Z6testiff(float %arg) { 214*9880d681SAndroid Build Coastguard Workerentry: 215*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca float, align 4 216*9880d681SAndroid Build Coastguard Worker store float %arg, float* %arg.addr, align 4 217*9880d681SAndroid Build Coastguard Worker %0 = load float, float* %arg.addr, align 4 218*9880d681SAndroid Build Coastguard Worker %conv = fptosi float %0 to i32 219*9880d681SAndroid Build Coastguard Worker ret i32 %conv 220*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z6testiff 221*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpsxws [[CONVREG09:[0-9]+]], 1 222*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrwz 3, [[CONVREG09]] 223*9880d681SAndroid Build Coastguard Worker} 224*9880d681SAndroid Build Coastguard Worker 225*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 226*9880d681SAndroid Build Coastguard Workerdefine float @_Z6testfii(i32 signext %arg) { 227*9880d681SAndroid Build Coastguard Workerentry: 228*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i32, align 4 229*9880d681SAndroid Build Coastguard Worker store i32 %arg, i32* %arg.addr, align 4 230*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %arg.addr, align 4 231*9880d681SAndroid Build Coastguard Worker %conv = sitofp i32 %0 to float 232*9880d681SAndroid Build Coastguard Worker ret float %conv 233*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z6testfii 234*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrwa [[MOVEREG09:[0-9]+]], 3 235*9880d681SAndroid Build Coastguard Worker; CHECK: xscvsxdsp 1, [[MOVEREG09]] 236*9880d681SAndroid Build Coastguard Worker} 237*9880d681SAndroid Build Coastguard Worker 238*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 239*9880d681SAndroid Build Coastguard Workerdefine signext i32 @_Z6testidd(double %arg) { 240*9880d681SAndroid Build Coastguard Workerentry: 241*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca double, align 8 242*9880d681SAndroid Build Coastguard Worker store double %arg, double* %arg.addr, align 8 243*9880d681SAndroid Build Coastguard Worker %0 = load double, double* %arg.addr, align 8 244*9880d681SAndroid Build Coastguard Worker %conv = fptosi double %0 to i32 245*9880d681SAndroid Build Coastguard Worker ret i32 %conv 246*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z6testidd 247*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpsxws [[CONVREG10:[0-9]+]], 1 248*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrwz 3, [[CONVREG10]] 249*9880d681SAndroid Build Coastguard Worker} 250*9880d681SAndroid Build Coastguard Worker 251*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 252*9880d681SAndroid Build Coastguard Workerdefine double @_Z6testdii(i32 signext %arg) { 253*9880d681SAndroid Build Coastguard Workerentry: 254*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i32, align 4 255*9880d681SAndroid Build Coastguard Worker store i32 %arg, i32* %arg.addr, align 4 256*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %arg.addr, align 4 257*9880d681SAndroid Build Coastguard Worker %conv = sitofp i32 %0 to double 258*9880d681SAndroid Build Coastguard Worker ret double %conv 259*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z6testdii 260*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrwa [[MOVEREG10:[0-9]+]], 3 261*9880d681SAndroid Build Coastguard Worker; CHECK: xscvsxddp 1, [[MOVEREG10]] 262*9880d681SAndroid Build Coastguard Worker} 263*9880d681SAndroid Build Coastguard Worker 264*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 265*9880d681SAndroid Build Coastguard Workerdefine zeroext i32 @_Z7testuiff(float %arg) { 266*9880d681SAndroid Build Coastguard Workerentry: 267*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca float, align 4 268*9880d681SAndroid Build Coastguard Worker store float %arg, float* %arg.addr, align 4 269*9880d681SAndroid Build Coastguard Worker %0 = load float, float* %arg.addr, align 4 270*9880d681SAndroid Build Coastguard Worker %conv = fptoui float %0 to i32 271*9880d681SAndroid Build Coastguard Worker ret i32 %conv 272*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testuiff 273*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpuxws [[CONVREG11:[0-9]+]], 1 274*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrwz 3, [[CONVREG11]] 275*9880d681SAndroid Build Coastguard Worker} 276*9880d681SAndroid Build Coastguard Worker 277*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 278*9880d681SAndroid Build Coastguard Workerdefine float @_Z7testfuij(i32 zeroext %arg) { 279*9880d681SAndroid Build Coastguard Workerentry: 280*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i32, align 4 281*9880d681SAndroid Build Coastguard Worker store i32 %arg, i32* %arg.addr, align 4 282*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %arg.addr, align 4 283*9880d681SAndroid Build Coastguard Worker %conv = uitofp i32 %0 to float 284*9880d681SAndroid Build Coastguard Worker ret float %conv 285*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testfuij 286*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrwz [[MOVEREG11:[0-9]+]], 3 287*9880d681SAndroid Build Coastguard Worker; CHECK: xscvuxdsp 1, [[MOVEREG11]] 288*9880d681SAndroid Build Coastguard Worker} 289*9880d681SAndroid Build Coastguard Worker 290*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 291*9880d681SAndroid Build Coastguard Workerdefine zeroext i32 @_Z7testuidd(double %arg) { 292*9880d681SAndroid Build Coastguard Workerentry: 293*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca double, align 8 294*9880d681SAndroid Build Coastguard Worker store double %arg, double* %arg.addr, align 8 295*9880d681SAndroid Build Coastguard Worker %0 = load double, double* %arg.addr, align 8 296*9880d681SAndroid Build Coastguard Worker %conv = fptoui double %0 to i32 297*9880d681SAndroid Build Coastguard Worker ret i32 %conv 298*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testuidd 299*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpuxws [[CONVREG12:[0-9]+]], 1 300*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrwz 3, [[CONVREG12]] 301*9880d681SAndroid Build Coastguard Worker} 302*9880d681SAndroid Build Coastguard Worker 303*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 304*9880d681SAndroid Build Coastguard Workerdefine double @_Z7testduij(i32 zeroext %arg) { 305*9880d681SAndroid Build Coastguard Workerentry: 306*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i32, align 4 307*9880d681SAndroid Build Coastguard Worker store i32 %arg, i32* %arg.addr, align 4 308*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %arg.addr, align 4 309*9880d681SAndroid Build Coastguard Worker %conv = uitofp i32 %0 to double 310*9880d681SAndroid Build Coastguard Worker ret double %conv 311*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testduij 312*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrwz [[MOVEREG12:[0-9]+]], 3 313*9880d681SAndroid Build Coastguard Worker; CHECK: xscvuxddp 1, [[MOVEREG12]] 314*9880d681SAndroid Build Coastguard Worker} 315*9880d681SAndroid Build Coastguard Worker 316*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 317*9880d681SAndroid Build Coastguard Workerdefine i64 @_Z7testllff(float %arg) { 318*9880d681SAndroid Build Coastguard Workerentry: 319*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca float, align 4 320*9880d681SAndroid Build Coastguard Worker store float %arg, float* %arg.addr, align 4 321*9880d681SAndroid Build Coastguard Worker %0 = load float, float* %arg.addr, align 4 322*9880d681SAndroid Build Coastguard Worker %conv = fptosi float %0 to i64 323*9880d681SAndroid Build Coastguard Worker ret i64 %conv 324*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testllff 325*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpsxds [[CONVREG13:[0-9]+]], 1 326*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrd 3, [[CONVREG13]] 327*9880d681SAndroid Build Coastguard Worker} 328*9880d681SAndroid Build Coastguard Worker 329*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 330*9880d681SAndroid Build Coastguard Workerdefine float @_Z7testfllx(i64 %arg) { 331*9880d681SAndroid Build Coastguard Workerentry: 332*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i64, align 8 333*9880d681SAndroid Build Coastguard Worker store i64 %arg, i64* %arg.addr, align 8 334*9880d681SAndroid Build Coastguard Worker %0 = load i64, i64* %arg.addr, align 8 335*9880d681SAndroid Build Coastguard Worker %conv = sitofp i64 %0 to float 336*9880d681SAndroid Build Coastguard Worker ret float %conv 337*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:@_Z7testfllx 338*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrd [[MOVEREG13:[0-9]+]], 3 339*9880d681SAndroid Build Coastguard Worker; CHECK: xscvsxdsp 1, [[MOVEREG13]] 340*9880d681SAndroid Build Coastguard Worker} 341*9880d681SAndroid Build Coastguard Worker 342*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 343*9880d681SAndroid Build Coastguard Workerdefine i64 @_Z7testlldd(double %arg) { 344*9880d681SAndroid Build Coastguard Workerentry: 345*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca double, align 8 346*9880d681SAndroid Build Coastguard Worker store double %arg, double* %arg.addr, align 8 347*9880d681SAndroid Build Coastguard Worker %0 = load double, double* %arg.addr, align 8 348*9880d681SAndroid Build Coastguard Worker %conv = fptosi double %0 to i64 349*9880d681SAndroid Build Coastguard Worker ret i64 %conv 350*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testlldd 351*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpsxds [[CONVREG14:[0-9]+]], 1 352*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrd 3, [[CONVREG14]] 353*9880d681SAndroid Build Coastguard Worker} 354*9880d681SAndroid Build Coastguard Worker 355*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 356*9880d681SAndroid Build Coastguard Workerdefine double @_Z7testdllx(i64 %arg) { 357*9880d681SAndroid Build Coastguard Workerentry: 358*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i64, align 8 359*9880d681SAndroid Build Coastguard Worker store i64 %arg, i64* %arg.addr, align 8 360*9880d681SAndroid Build Coastguard Worker %0 = load i64, i64* %arg.addr, align 8 361*9880d681SAndroid Build Coastguard Worker %conv = sitofp i64 %0 to double 362*9880d681SAndroid Build Coastguard Worker ret double %conv 363*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z7testdllx 364*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrd [[MOVEREG14:[0-9]+]], 3 365*9880d681SAndroid Build Coastguard Worker; CHECK: xscvsxddp 1, [[MOVEREG14]] 366*9880d681SAndroid Build Coastguard Worker} 367*9880d681SAndroid Build Coastguard Worker 368*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 369*9880d681SAndroid Build Coastguard Workerdefine i64 @_Z8testullff(float %arg) { 370*9880d681SAndroid Build Coastguard Workerentry: 371*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca float, align 4 372*9880d681SAndroid Build Coastguard Worker store float %arg, float* %arg.addr, align 4 373*9880d681SAndroid Build Coastguard Worker %0 = load float, float* %arg.addr, align 4 374*9880d681SAndroid Build Coastguard Worker %conv = fptoui float %0 to i64 375*9880d681SAndroid Build Coastguard Worker ret i64 %conv 376*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z8testullff 377*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpuxds [[CONVREG15:[0-9]+]], 1 378*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrd 3, [[CONVREG15]] 379*9880d681SAndroid Build Coastguard Worker} 380*9880d681SAndroid Build Coastguard Worker 381*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 382*9880d681SAndroid Build Coastguard Workerdefine float @_Z8testfully(i64 %arg) { 383*9880d681SAndroid Build Coastguard Workerentry: 384*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i64, align 8 385*9880d681SAndroid Build Coastguard Worker store i64 %arg, i64* %arg.addr, align 8 386*9880d681SAndroid Build Coastguard Worker %0 = load i64, i64* %arg.addr, align 8 387*9880d681SAndroid Build Coastguard Worker %conv = uitofp i64 %0 to float 388*9880d681SAndroid Build Coastguard Worker ret float %conv 389*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z8testfully 390*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrd [[MOVEREG15:[0-9]+]], 3 391*9880d681SAndroid Build Coastguard Worker; CHECK: xscvuxdsp 1, [[MOVEREG15]] 392*9880d681SAndroid Build Coastguard Worker} 393*9880d681SAndroid Build Coastguard Worker 394*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 395*9880d681SAndroid Build Coastguard Workerdefine i64 @_Z8testulldd(double %arg) { 396*9880d681SAndroid Build Coastguard Workerentry: 397*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca double, align 8 398*9880d681SAndroid Build Coastguard Worker store double %arg, double* %arg.addr, align 8 399*9880d681SAndroid Build Coastguard Worker %0 = load double, double* %arg.addr, align 8 400*9880d681SAndroid Build Coastguard Worker %conv = fptoui double %0 to i64 401*9880d681SAndroid Build Coastguard Worker ret i64 %conv 402*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z8testulldd 403*9880d681SAndroid Build Coastguard Worker; CHECK: xscvdpuxds [[CONVREG16:[0-9]+]], 1 404*9880d681SAndroid Build Coastguard Worker; CHECK: mfvsrd 3, [[CONVREG16]] 405*9880d681SAndroid Build Coastguard Worker} 406*9880d681SAndroid Build Coastguard Worker 407*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 408*9880d681SAndroid Build Coastguard Workerdefine double @_Z8testdully(i64 %arg) { 409*9880d681SAndroid Build Coastguard Workerentry: 410*9880d681SAndroid Build Coastguard Worker %arg.addr = alloca i64, align 8 411*9880d681SAndroid Build Coastguard Worker store i64 %arg, i64* %arg.addr, align 8 412*9880d681SAndroid Build Coastguard Worker %0 = load i64, i64* %arg.addr, align 8 413*9880d681SAndroid Build Coastguard Worker %conv = uitofp i64 %0 to double 414*9880d681SAndroid Build Coastguard Worker ret double %conv 415*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @_Z8testdully 416*9880d681SAndroid Build Coastguard Worker; CHECK: mtvsrd [[MOVEREG16:[0-9]+]], 3 417*9880d681SAndroid Build Coastguard Worker; CHECK: xscvuxddp 1, [[MOVEREG16]] 418*9880d681SAndroid Build Coastguard Worker} 419