1*9880d681SAndroid Build Coastguard Worker; Test conversions between different-sized float elements. 2*9880d681SAndroid Build Coastguard Worker; 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; Test cases where both elements of a v2f64 are converted to f32s. 6*9880d681SAndroid Build Coastguard Workerdefine void @f1(<2 x double> %val, <2 x float> *%ptr) { 7*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f1: 8*9880d681SAndroid Build Coastguard Worker; CHECK: vledb {{%v[0-9]+}}, %v24, 0, 0 9*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 10*9880d681SAndroid Build Coastguard Worker %res = fptrunc <2 x double> %val to <2 x float> 11*9880d681SAndroid Build Coastguard Worker store <2 x float> %res, <2 x float> *%ptr 12*9880d681SAndroid Build Coastguard Worker ret void 13*9880d681SAndroid Build Coastguard Worker} 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker; Test conversion of an f64 in a vector register to an f32. 16*9880d681SAndroid Build Coastguard Workerdefine float @f2(<2 x double> %vec) { 17*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2: 18*9880d681SAndroid Build Coastguard Worker; CHECK: wledb %f0, %v24 19*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 20*9880d681SAndroid Build Coastguard Worker %scalar = extractelement <2 x double> %vec, i32 0 21*9880d681SAndroid Build Coastguard Worker %ret = fptrunc double %scalar to float 22*9880d681SAndroid Build Coastguard Worker ret float %ret 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; Test conversion of an f32 in a vector register to an f64. 26*9880d681SAndroid Build Coastguard Workerdefine double @f3(<4 x float> %vec) { 27*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f3: 28*9880d681SAndroid Build Coastguard Worker; CHECK: wldeb %f0, %v24 29*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 30*9880d681SAndroid Build Coastguard Worker %scalar = extractelement <4 x float> %vec, i32 0 31*9880d681SAndroid Build Coastguard Worker %ret = fpext float %scalar to double 32*9880d681SAndroid Build Coastguard Worker ret double %ret 33*9880d681SAndroid Build Coastguard Worker} 34