1; Test conversion of floating-point values to unsigned i32s (z10 only). 2; 3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s 4 5; z10 doesn't have native support for unsigned fp-to-i32 conversions; 6; they were added in z196 as the Convert to Logical family of instructions. 7; Promoting to i64 doesn't generate an inexact condition for values that are 8; outside the i32 range but in the i64 range, so use the default expansion. 9 10; Test f32->i32. 11define i32 @f1(float %f) { 12; CHECK-LABEL: f1: 13; CHECK: cebr 14; CHECK: sebr 15; CHECK: cfebr 16; CHECK: xilf 17; CHECK: br %r14 18 %conv = fptoui float %f to i32 19 ret i32 %conv 20} 21 22; Test f64->i32. 23define i32 @f2(double %f) { 24; CHECK-LABEL: f2: 25; CHECK: cdbr 26; CHECK: sdbr 27; CHECK: cfdbr 28; CHECK: xilf 29; CHECK: br %r14 30 %conv = fptoui double %f to i32 31 ret i32 %conv 32} 33 34; Test f128->i32. 35define i32 @f3(fp128 *%src) { 36; CHECK-LABEL: f3: 37; CHECK: cxbr 38; CHECK: sxbr 39; CHECK: cfxbr 40; CHECK: xilf 41; CHECK: br %r14 42 %f = load fp128 , fp128 *%src 43 %conv = fptoui fp128 %f to i32 44 ret i32 %conv 45} 46