Home | History | Annotate | Download | only in SystemZ
      1 ; Test conversion of floating-point values to unsigned i64s (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-i64 conversions;
      6 ; they were added in z196 as the Convert to Logical family of instructions.
      7 ; Convert via signed i64s instead.
      8 
      9 ; Test f32->i64.
     10 define i64 @f1(float %f) {
     11 ; CHECK-LABEL: f1:
     12 ; CHECK: cebr
     13 ; CHECK: sebr
     14 ; CHECK: cgebr
     15 ; CHECK: xihf
     16 ; CHECK: br %r14
     17   %conv = fptoui float %f to i64
     18   ret i64 %conv
     19 }
     20 
     21 ; Test f64->i64.
     22 define i64 @f2(double %f) {
     23 ; CHECK-LABEL: f2:
     24 ; CHECK: cdbr
     25 ; CHECK: sdbr
     26 ; CHECK: cgdbr
     27 ; CHECK: xihf
     28 ; CHECK: br %r14
     29   %conv = fptoui double %f to i64
     30   ret i64 %conv
     31 }
     32 
     33 ; Test f128->i64.
     34 define i64 @f3(fp128 *%src) {
     35 ; CHECK-LABEL: f3:
     36 ; CHECK: cxbr
     37 ; CHECK: sxbr
     38 ; CHECK: cgxbr
     39 ; CHECK: xihf
     40 ; CHECK: br %r14
     41   %f = load fp128 , fp128 *%src
     42   %conv = fptoui fp128 %f to i64
     43   ret i64 %conv
     44 }
     45