Home | History | Annotate | Download | only in PowerPC
      1 ; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=a2 | FileCheck %s
      2 ; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -mattr=+vsx | FileCheck -check-prefix=CHECK-VSX %s
      3 ; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=g5
      4 target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
      5 target triple = "powerpc64-unknown-linux-gnu"
      6 
      7 define i64 @foo(float %a) nounwind {
      8   %x = fptosi float %a to i64
      9   ret i64 %x
     10 
     11 ; CHECK: @foo
     12 ; CHECK: fctidz [[REG:[0-9]+]], 1
     13 ; CHECK: stfd [[REG]],
     14 ; CHECK: ld 3,
     15 ; CHECK: blr
     16 
     17 ; CHECK-VSX: @foo
     18 ; CHECK-VSX: xscvdpsxds [[REG:[0-9]+]], 1
     19 ; CHECK-VSX: stxsdx [[REG]],
     20 ; CHECK-VSX: ld 3,
     21 ; CHECK-VSX: blr
     22 }
     23 
     24 define i64 @foo2(double %a) nounwind {
     25   %x = fptosi double %a to i64
     26   ret i64 %x
     27 
     28 ; CHECK: @foo2
     29 ; CHECK: fctidz [[REG:[0-9]+]], 1
     30 ; CHECK: stfd [[REG]],
     31 ; CHECK: ld 3,
     32 ; CHECK: blr
     33 
     34 ; CHECK-VSX: @foo2
     35 ; CHECK-VSX: xscvdpsxds [[REG:[0-9]+]], 1
     36 ; CHECK-VSX: stxsdx [[REG]],
     37 ; CHECK-VSX: ld 3,
     38 ; CHECK-VSX: blr
     39 }
     40 
     41 define i64 @foo3(float %a) nounwind {
     42   %x = fptoui float %a to i64
     43   ret i64 %x
     44 
     45 ; CHECK: @foo3
     46 ; CHECK: fctiduz [[REG:[0-9]+]], 1
     47 ; CHECK: stfd [[REG]],
     48 ; CHECK: ld 3,
     49 ; CHECK: blr
     50 
     51 ; CHECK-VSX: @foo3
     52 ; CHECK-VSX: xscvdpuxds [[REG:[0-9]+]], 1
     53 ; CHECK-VSX: stxsdx [[REG]],
     54 ; CHECK-VSX: ld 3,
     55 ; CHECK-VSX: blr
     56 }
     57 
     58 define i64 @foo4(double %a) nounwind {
     59   %x = fptoui double %a to i64
     60   ret i64 %x
     61 
     62 ; CHECK: @foo4
     63 ; CHECK: fctiduz [[REG:[0-9]+]], 1
     64 ; CHECK: stfd [[REG]],
     65 ; CHECK: ld 3,
     66 ; CHECK: blr
     67 
     68 ; CHECK-VSX: @foo4
     69 ; CHECK-VSX: xscvdpuxds [[REG:[0-9]+]], 1
     70 ; CHECK-VSX: stxsdx [[REG]],
     71 ; CHECK-VSX: ld 3,
     72 ; CHECK-VSX: blr
     73 }
     74 
     75 define i32 @goo(float %a) nounwind {
     76   %x = fptosi float %a to i32
     77   ret i32 %x
     78 
     79 ; CHECK: @goo
     80 ; CHECK: fctiwz [[REG:[0-9]+]], 1
     81 ; CHECK: stfiwx [[REG]],
     82 ; CHECK: lwz 3,
     83 ; CHECK: blr
     84 
     85 ; CHECK-VSX: @goo
     86 ; CHECK-VSX: xscvdpsxws [[REG:[0-9]+]], 1
     87 ; CHECK-VSX: stfiwx [[REG]],
     88 ; CHECK-VSX: lwz 3,
     89 ; CHECK-VSX: blr
     90 }
     91 
     92 define i32 @goo2(double %a) nounwind {
     93   %x = fptosi double %a to i32
     94   ret i32 %x
     95 
     96 ; CHECK: @goo2
     97 ; CHECK: fctiwz [[REG:[0-9]+]], 1
     98 ; CHECK: stfiwx [[REG]],
     99 ; CHECK: lwz 3,
    100 ; CHECK: blr
    101 
    102 ; CHECK-VSX: @goo2
    103 ; CHECK-VSX: xscvdpsxws [[REG:[0-9]+]], 1
    104 ; CHECK-VSX: stfiwx [[REG]],
    105 ; CHECK-VSX: lwz 3,
    106 ; CHECK-VSX: blr
    107 }
    108 
    109 define i32 @goo3(float %a) nounwind {
    110   %x = fptoui float %a to i32
    111   ret i32 %x
    112 
    113 ; CHECK: @goo3
    114 ; CHECK: fctiwuz [[REG:[0-9]+]], 1
    115 ; CHECK: stfiwx [[REG]],
    116 ; CHECK: lwz 3,
    117 ; CHECK: blr
    118 
    119 ; CHECK-VSX: @goo3
    120 ; CHECK-VSX: xscvdpuxws [[REG:[0-9]+]], 1
    121 ; CHECK-VSX: stfiwx [[REG]],
    122 ; CHECK-VSX: lwz 3,
    123 ; CHECK-VSX: blr
    124 }
    125 
    126 define i32 @goo4(double %a) nounwind {
    127   %x = fptoui double %a to i32
    128   ret i32 %x
    129 
    130 ; CHECK: @goo4
    131 ; CHECK: fctiwuz [[REG:[0-9]+]], 1
    132 ; CHECK: stfiwx [[REG]],
    133 ; CHECK: lwz 3,
    134 ; CHECK: blr
    135 
    136 ; CHECK-VSX: @goo4
    137 ; CHECK-VSX: xscvdpuxws [[REG:[0-9]+]], 1
    138 ; CHECK-VSX: stfiwx [[REG]],
    139 ; CHECK-VSX: lwz 3,
    140 ; CHECK-VSX: blr
    141 }
    142 
    143