Home | History | Annotate | Download | only in CellSPU
      1 ; RUN: llc < %s -march=cellspu > %t1.s
      2 ; RUN: grep ceq     %t1.s | count 30 
      3 ; RUN: grep ceqb    %t1.s | count 10
      4 ; RUN: grep ceqhi   %t1.s | count 5
      5 ; RUN: grep ceqi    %t1.s | count 5
      6 ; RUN: grep cgt     %t1.s | count 30
      7 ; RUN: grep cgtb    %t1.s | count 10
      8 ; RUN: grep cgthi   %t1.s | count 5
      9 ; RUN: grep cgti    %t1.s | count 5
     10 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"
     11 target triple = "spu"
     12 
     13 declare <4 x i32> @llvm.spu.si.shli(<4 x i32>, i8)
     14 
     15 declare <4 x i32> @llvm.spu.si.ceq(<4 x i32>, <4 x i32>)
     16 declare <16 x i8> @llvm.spu.si.ceqb(<16 x i8>, <16 x i8>)
     17 declare <8 x i16> @llvm.spu.si.ceqh(<8 x i16>, <8 x i16>)
     18 declare <4 x i32> @llvm.spu.si.ceqi(<4 x i32>, i16)
     19 declare <8 x i16> @llvm.spu.si.ceqhi(<8 x i16>, i16)
     20 declare <16 x i8> @llvm.spu.si.ceqbi(<16 x i8>, i8)
     21 
     22 declare <4 x i32> @llvm.spu.si.cgt(<4 x i32>, <4 x i32>)
     23 declare <16 x i8> @llvm.spu.si.cgtb(<16 x i8>, <16 x i8>)
     24 declare <8 x i16> @llvm.spu.si.cgth(<8 x i16>, <8 x i16>)
     25 declare <4 x i32> @llvm.spu.si.cgti(<4 x i32>, i16)
     26 declare <8 x i16> @llvm.spu.si.cgthi(<8 x i16>, i16)
     27 declare <16 x i8> @llvm.spu.si.cgtbi(<16 x i8>, i8)
     28 
     29 declare <4 x i32> @llvm.spu.si.clgt(<4 x i32>, <4 x i32>)
     30 declare <16 x i8> @llvm.spu.si.clgtb(<16 x i8>, <16 x i8>)
     31 declare <8 x i16> @llvm.spu.si.clgth(<8 x i16>, <8 x i16>)
     32 declare <4 x i32> @llvm.spu.si.clgti(<4 x i32>, i16)
     33 declare <8 x i16> @llvm.spu.si.clgthi(<8 x i16>, i16)
     34 declare <16 x i8> @llvm.spu.si.clgtbi(<16 x i8>, i8)
     35 
     36 
     37 
     38 define <4 x i32> @test(<4 x i32> %A) {
     39         call <4 x i32> @llvm.spu.si.shli(<4 x i32> %A, i8 3)
     40         %Y = bitcast <4 x i32> %1 to <4 x i32>
     41         ret <4 x i32> %Y
     42 }
     43 
     44 define <4 x i32> @ceqtest(<4 x i32> %A, <4 x i32> %B) {
     45         call <4 x i32> @llvm.spu.si.ceq(<4 x i32> %A, <4 x i32> %B)
     46         %Y = bitcast <4 x i32> %1 to <4 x i32>
     47         ret <4 x i32> %Y
     48 }
     49 
     50 define <8 x i16> @ceqhtest(<8 x i16> %A, <8 x i16> %B) {
     51         call <8 x i16> @llvm.spu.si.ceqh(<8 x i16> %A, <8 x i16> %B)
     52         %Y = bitcast <8 x i16> %1 to <8 x i16>
     53         ret <8 x i16> %Y
     54 }
     55 
     56 define <16 x i8> @ceqbtest(<16 x i8> %A, <16 x i8> %B) {
     57         call <16 x i8> @llvm.spu.si.ceqb(<16 x i8> %A, <16 x i8> %B)
     58         %Y = bitcast <16 x i8> %1 to <16 x i8>
     59         ret <16 x i8> %Y
     60 }
     61 
     62 define <4 x i32> @ceqitest(<4 x i32> %A) {
     63         call <4 x i32> @llvm.spu.si.ceqi(<4 x i32> %A, i16 65)
     64         %Y = bitcast <4 x i32> %1 to <4 x i32>
     65         ret <4 x i32> %Y
     66 }
     67 
     68 define <8 x i16> @ceqhitest(<8 x i16> %A) {
     69         call <8 x i16> @llvm.spu.si.ceqhi(<8 x i16> %A, i16 65)
     70         %Y = bitcast <8 x i16> %1 to <8 x i16>
     71         ret <8 x i16> %Y
     72 }
     73 
     74 define <16 x i8> @ceqbitest(<16 x i8> %A) {
     75         call <16 x i8> @llvm.spu.si.ceqbi(<16 x i8> %A, i8 65)
     76         %Y = bitcast <16 x i8> %1 to <16 x i8>
     77         ret <16 x i8> %Y
     78 }
     79 
     80 define <4 x i32> @cgttest(<4 x i32> %A, <4 x i32> %B) {
     81         call <4 x i32> @llvm.spu.si.cgt(<4 x i32> %A, <4 x i32> %B)
     82         %Y = bitcast <4 x i32> %1 to <4 x i32>
     83         ret <4 x i32> %Y
     84 }
     85 
     86 define <8 x i16> @cgthtest(<8 x i16> %A, <8 x i16> %B) {
     87         call <8 x i16> @llvm.spu.si.cgth(<8 x i16> %A, <8 x i16> %B)
     88         %Y = bitcast <8 x i16> %1 to <8 x i16>
     89         ret <8 x i16> %Y
     90 }
     91 
     92 define <16 x i8> @cgtbtest(<16 x i8> %A, <16 x i8> %B) {
     93         call <16 x i8> @llvm.spu.si.cgtb(<16 x i8> %A, <16 x i8> %B)
     94         %Y = bitcast <16 x i8> %1 to <16 x i8>
     95         ret <16 x i8> %Y
     96 }
     97 
     98 define <4 x i32> @cgtitest(<4 x i32> %A) {
     99         call <4 x i32> @llvm.spu.si.cgti(<4 x i32> %A, i16 65)
    100         %Y = bitcast <4 x i32> %1 to <4 x i32>
    101         ret <4 x i32> %Y
    102 }
    103 
    104 define <8 x i16> @cgthitest(<8 x i16> %A) {
    105         call <8 x i16> @llvm.spu.si.cgthi(<8 x i16> %A, i16 65)
    106         %Y = bitcast <8 x i16> %1 to <8 x i16>
    107         ret <8 x i16> %Y
    108 }
    109 
    110 define <16 x i8> @cgtbitest(<16 x i8> %A) {
    111         call <16 x i8> @llvm.spu.si.cgtbi(<16 x i8> %A, i8 65)
    112         %Y = bitcast <16 x i8> %1 to <16 x i8>
    113         ret <16 x i8> %Y
    114 }
    115 
    116 define <4 x i32> @clgttest(<4 x i32> %A, <4 x i32> %B) {
    117         call <4 x i32> @llvm.spu.si.clgt(<4 x i32> %A, <4 x i32> %B)
    118         %Y = bitcast <4 x i32> %1 to <4 x i32>
    119         ret <4 x i32> %Y
    120 }
    121 
    122 define <8 x i16> @clgthtest(<8 x i16> %A, <8 x i16> %B) {
    123         call <8 x i16> @llvm.spu.si.clgth(<8 x i16> %A, <8 x i16> %B)
    124         %Y = bitcast <8 x i16> %1 to <8 x i16>
    125         ret <8 x i16> %Y
    126 }
    127 
    128 define <16 x i8> @clgtbtest(<16 x i8> %A, <16 x i8> %B) {
    129         call <16 x i8> @llvm.spu.si.clgtb(<16 x i8> %A, <16 x i8> %B)
    130         %Y = bitcast <16 x i8> %1 to <16 x i8>
    131         ret <16 x i8> %Y
    132 }
    133 
    134 define <4 x i32> @clgtitest(<4 x i32> %A) {
    135         call <4 x i32> @llvm.spu.si.clgti(<4 x i32> %A, i16 65)
    136         %Y = bitcast <4 x i32> %1 to <4 x i32>
    137         ret <4 x i32> %Y
    138 }
    139 
    140 define <8 x i16> @clgthitest(<8 x i16> %A) {
    141         call <8 x i16> @llvm.spu.si.clgthi(<8 x i16> %A, i16 65)
    142         %Y = bitcast <8 x i16> %1 to <8 x i16>
    143         ret <8 x i16> %Y
    144 }
    145 
    146 define <16 x i8> @clgtbitest(<16 x i8> %A) {
    147         call <16 x i8> @llvm.spu.si.clgtbi(<16 x i8> %A, i8 65)
    148         %Y = bitcast <16 x i8> %1 to <16 x i8>
    149         ret <16 x i8> %Y
    150 }
    151