Home | History | Annotate | Download | only in CellSPU
      1 ; RUN: llc < %s -march=cellspu > %t1.s
      2 ; RUN: grep ceq                                %t1.s | count 20
      3 ; RUN: grep cgti                               %t1.s | count 12
      4 ; RUN: grep cgt                                %t1.s | count 16
      5 ; RUN: grep clgt                               %t1.s | count 12
      6 ; RUN: grep gb                                 %t1.s | count 12
      7 ; RUN: grep fsm                                %t1.s | count 10
      8 ; RUN: grep xori                               %t1.s | count 5
      9 ; RUN: grep selb                               %t1.s | count 18
     10 
     11 target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128"
     12 target triple = "spu"
     13 
     14 ; $3 = %arg1, $4 = %arg2, $5 = %val1, $6 = %val2
     15 ; $3 = %arg1, $4 = %val1, $5 = %val2
     16 ;
     17 ; i64 integer comparisons:
     18 define i64 @icmp_eq_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
     19 entry:
     20        %A = icmp eq i64 %arg1, %arg2
     21        %B = select i1 %A, i64 %val1, i64 %val2
     22        ret i64 %B
     23 }
     24 
     25 define i1 @icmp_eq_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
     26 entry:
     27        %A = icmp eq i64 %arg1, %arg2
     28        ret i1 %A
     29 }
     30 
     31 define i64 @icmp_ne_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
     32 entry:
     33        %A = icmp ne i64 %arg1, %arg2
     34        %B = select i1 %A, i64 %val1, i64 %val2
     35        ret i64 %B
     36 }
     37 
     38 define i1 @icmp_ne_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
     39 entry:
     40        %A = icmp ne i64 %arg1, %arg2
     41        ret i1 %A
     42 }
     43 
     44 define i64 @icmp_ugt_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
     45 entry:
     46        %A = icmp ugt i64 %arg1, %arg2
     47        %B = select i1 %A, i64 %val1, i64 %val2
     48        ret i64 %B
     49 }
     50 
     51 define i1 @icmp_ugt_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
     52 entry:
     53        %A = icmp ugt i64 %arg1, %arg2
     54        ret i1 %A
     55 }
     56 
     57 define i64 @icmp_uge_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
     58 entry:
     59        %A = icmp uge i64 %arg1, %arg2
     60        %B = select i1 %A, i64 %val1, i64 %val2
     61        ret i64 %B
     62 }
     63 
     64 define i1 @icmp_uge_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
     65 entry:
     66        %A = icmp uge i64 %arg1, %arg2
     67        ret i1 %A
     68 }
     69 
     70 define i64 @icmp_ult_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
     71 entry:
     72        %A = icmp ult i64 %arg1, %arg2
     73        %B = select i1 %A, i64 %val1, i64 %val2
     74        ret i64 %B
     75 }
     76 
     77 define i1 @icmp_ult_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
     78 entry:
     79        %A = icmp ult i64 %arg1, %arg2
     80        ret i1 %A
     81 }
     82 
     83 define i64 @icmp_ule_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
     84 entry:
     85        %A = icmp ule i64 %arg1, %arg2
     86        %B = select i1 %A, i64 %val1, i64 %val2
     87        ret i64 %B
     88 }
     89 
     90 define i1 @icmp_ule_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
     91 entry:
     92        %A = icmp ule i64 %arg1, %arg2
     93        ret i1 %A
     94 }
     95 
     96 define i64 @icmp_sgt_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
     97 entry:
     98        %A = icmp sgt i64 %arg1, %arg2
     99        %B = select i1 %A, i64 %val1, i64 %val2
    100        ret i64 %B
    101 }
    102 
    103 define i1 @icmp_sgt_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
    104 entry:
    105        %A = icmp sgt i64 %arg1, %arg2
    106        ret i1 %A
    107 }
    108 
    109 define i64 @icmp_sge_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
    110 entry:
    111        %A = icmp sge i64 %arg1, %arg2
    112        %B = select i1 %A, i64 %val1, i64 %val2
    113        ret i64 %B
    114 }
    115 
    116 define i1 @icmp_sge_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
    117 entry:
    118        %A = icmp sge i64 %arg1, %arg2
    119        ret i1 %A
    120 }
    121 
    122 define i64 @icmp_slt_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
    123 entry:
    124        %A = icmp slt i64 %arg1, %arg2
    125        %B = select i1 %A, i64 %val1, i64 %val2
    126        ret i64 %B
    127 }
    128 
    129 define i1 @icmp_slt_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
    130 entry:
    131        %A = icmp slt i64 %arg1, %arg2
    132        ret i1 %A
    133 }
    134 
    135 define i64 @icmp_sle_select_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
    136 entry:
    137        %A = icmp sle i64 %arg1, %arg2
    138        %B = select i1 %A, i64 %val1, i64 %val2
    139        ret i64 %B
    140 }
    141 
    142 define i1 @icmp_sle_setcc_i64(i64 %arg1, i64 %arg2, i64 %val1, i64 %val2) nounwind {
    143 entry:
    144        %A = icmp sle i64 %arg1, %arg2
    145        ret i1 %A
    146 }
    147