1*9880d681SAndroid Build Coastguard Worker; Test conversion of floating-point values to unsigned i64s (z10 only). 2*9880d681SAndroid Build Coastguard Worker; 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; z10 doesn't have native support for unsigned fp-to-i64 conversions; 6*9880d681SAndroid Build Coastguard Worker; they were added in z196 as the Convert to Logical family of instructions. 7*9880d681SAndroid Build Coastguard Worker; Convert via signed i64s instead. 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker; Test f32->i64. 10*9880d681SAndroid Build Coastguard Workerdefine i64 @f1(float %f) { 11*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f1: 12*9880d681SAndroid Build Coastguard Worker; CHECK: cebr 13*9880d681SAndroid Build Coastguard Worker; CHECK: sebr 14*9880d681SAndroid Build Coastguard Worker; CHECK: cgebr 15*9880d681SAndroid Build Coastguard Worker; CHECK: xihf 16*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 17*9880d681SAndroid Build Coastguard Worker %conv = fptoui float %f to i64 18*9880d681SAndroid Build Coastguard Worker ret i64 %conv 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker; Test f64->i64. 22*9880d681SAndroid Build Coastguard Workerdefine i64 @f2(double %f) { 23*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2: 24*9880d681SAndroid Build Coastguard Worker; CHECK: cdbr 25*9880d681SAndroid Build Coastguard Worker; CHECK: sdbr 26*9880d681SAndroid Build Coastguard Worker; CHECK: cgdbr 27*9880d681SAndroid Build Coastguard Worker; CHECK: xihf 28*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 29*9880d681SAndroid Build Coastguard Worker %conv = fptoui double %f to i64 30*9880d681SAndroid Build Coastguard Worker ret i64 %conv 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker; Test f128->i64. 34*9880d681SAndroid Build Coastguard Workerdefine i64 @f3(fp128 *%src) { 35*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f3: 36*9880d681SAndroid Build Coastguard Worker; CHECK: cxbr 37*9880d681SAndroid Build Coastguard Worker; CHECK: sxbr 38*9880d681SAndroid Build Coastguard Worker; CHECK: cgxbr 39*9880d681SAndroid Build Coastguard Worker; CHECK: xihf 40*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 41*9880d681SAndroid Build Coastguard Worker %f = load fp128 , fp128 *%src 42*9880d681SAndroid Build Coastguard Worker %conv = fptoui fp128 %f to i64 43*9880d681SAndroid Build Coastguard Worker ret i64 %conv 44*9880d681SAndroid Build Coastguard Worker} 45