Home | History | Annotate | Download | only in Hexagon
      1 ; RUN: llc -march=hexagon --filetype=obj < %s  -o - | llvm-objdump -d - | FileCheck %s
      2 
      3 ; Function Attrs: nounwind
      4 define i32 @cmpeq(i32 %i) #0 {
      5 entry:
      6   %i.addr = alloca i32, align 4
      7   store i32 %i, i32* %i.addr, align 4
      8   %0 = load i32, i32* %i.addr, align 4
      9   %1 = call i32 @llvm.hexagon.C2.cmpeq(i32 %0, i32 1)
     10   ret i32 %1
     11 }
     12 ; CHECK: { p{{[0-3]}} = cmp.eq(r{{[0-9]}}, r{{[0-9]}})
     13 
     14 ; Function Attrs: nounwind readnone
     15 declare i32 @llvm.hexagon.C2.cmpeq(i32, i32) #1
     16 
     17 ; Function Attrs: nounwind
     18 define i32 @cmpgt(i32 %i) #0 {
     19 entry:
     20   %i.addr = alloca i32, align 4
     21   store i32 %i, i32* %i.addr, align 4
     22   %0 = load i32, i32* %i.addr, align 4
     23   %1 = call i32 @llvm.hexagon.C2.cmpgt(i32 %0, i32 2)
     24   ret i32 %1
     25 }
     26 ; CHECK: { p{{[0-3]}} = cmp.gt(r{{[0-9]}}, r{{[0-9]}})
     27 
     28 ; Function Attrs: nounwind readnone
     29 declare i32 @llvm.hexagon.C2.cmpgt(i32, i32) #1
     30 
     31 ; Function Attrs: nounwind
     32 define i32 @cmpgtu(i32 %i) #0 {
     33 entry:
     34   %i.addr = alloca i32, align 4
     35   store i32 %i, i32* %i.addr, align 4
     36   %0 = load i32, i32* %i.addr, align 4
     37   %1 = call i32 @llvm.hexagon.C2.cmpgtu(i32 %0, i32 3)
     38   ret i32 %1
     39 }
     40 ; CHECK: { p{{[0-3]}} = cmp.gtu(r{{[0-9]}}, r{{[0-9]}})
     41 
     42 ; Function Attrs: nounwind readnone
     43 declare i32 @llvm.hexagon.C2.cmpgtu(i32, i32) #1
     44 
     45 ; Function Attrs: nounwind
     46 define i32 @cmplt(i32 %i) #0 {
     47 entry:
     48   %i.addr = alloca i32, align 4
     49   store i32 %i, i32* %i.addr, align 4
     50   %0 = load i32, i32* %i.addr, align 4
     51   %1 = call i32 @llvm.hexagon.C2.cmplt(i32 %0, i32 4)
     52   ret i32 %1
     53 }
     54 ; CHECK: { p{{[0-3]}} = cmp.gt(r{{[0-9]}}, r{{[0-9]}})
     55 
     56 ; Function Attrs: nounwind readnone
     57 declare i32 @llvm.hexagon.C2.cmplt(i32, i32) #1
     58 
     59 ; Function Attrs: nounwind
     60 define i32 @cmpltu(i32 %i) #0 {
     61 entry:
     62   %i.addr = alloca i32, align 4
     63   store i32 %i, i32* %i.addr, align 4
     64   %0 = load i32, i32* %i.addr, align 4
     65   %1 = call i32 @llvm.hexagon.C2.cmpltu(i32 %0, i32 5)
     66   ret i32 %1
     67 }
     68 ; CHECK: { p{{[0-3]}} = cmp.gtu(r{{[0-9]}}, r{{[0-9]}})
     69 
     70 ; Function Attrs: nounwind readnone
     71 declare i32 @llvm.hexagon.C2.cmpltu(i32, i32) #1
     72 
     73 ; Function Attrs: nounwind
     74 define i32 @cmpeqi(i32 %i) #0 {
     75 entry:
     76   %i.addr = alloca i32, align 4
     77   store i32 %i, i32* %i.addr, align 4
     78   %0 = load i32, i32* %i.addr, align 4
     79   %1 = call i32 @llvm.hexagon.C2.cmpeqi(i32 %0, i32 10)
     80   ret i32 %1
     81 }
     82 ; CHECK: { p{{[0-3]}} = cmp.eq(r{{[0-9]}}, {{.*}}#10)
     83 
     84 ; Function Attrs: nounwind readnone
     85 declare i32 @llvm.hexagon.C2.cmpeqi(i32, i32) #1
     86 
     87 ; Function Attrs: nounwind
     88 define i32 @cmpgti(i32 %i) #0 {
     89 entry:
     90   %i.addr = alloca i32, align 4
     91   store i32 %i, i32* %i.addr, align 4
     92   %0 = load i32, i32* %i.addr, align 4
     93   %1 = call i32 @llvm.hexagon.C2.cmpgti(i32 %0, i32 20)
     94   ret i32 %1
     95 }
     96 ; CHECK: { p{{[0-3]}} = cmp.gt(r{{[0-9]}}, {{.*}}#20)
     97 
     98 ; Function Attrs: nounwind readnone
     99 declare i32 @llvm.hexagon.C2.cmpgti(i32, i32) #1
    100 
    101 ; Function Attrs: nounwind
    102 define i32 @cmpgtui(i32 %i) #0 {
    103 entry:
    104   %i.addr = alloca i32, align 4
    105   store i32 %i, i32* %i.addr, align 4
    106   %0 = load i32, i32* %i.addr, align 4
    107   %1 = call i32 @llvm.hexagon.C2.cmpgtui(i32 %0, i32 40)
    108   ret i32 %1
    109 }
    110 ; CHECK: { p{{[0-3]}} = cmp.gtu(r{{[0-9]}}, {{.*}}#40)
    111 
    112 ; Function Attrs: nounwind readnone
    113 declare i32 @llvm.hexagon.C2.cmpgtui(i32, i32) #1
    114 
    115 ; Function Attrs: nounwind
    116 define i32 @cmpgei(i32 %i) #0 {
    117 entry:
    118   %i.addr = alloca i32, align 4
    119   store i32 %i, i32* %i.addr, align 4
    120   %0 = load i32, i32* %i.addr, align 4
    121   %1 = call i32 @llvm.hexagon.C2.cmpgei(i32 %0, i32 3)
    122   ret i32 %1
    123 }
    124 ; CHECK: { p{{[0-3]}} = cmp.gt(r{{[0-9]}}, {{.*}}#2)
    125 
    126 ; Function Attrs: nounwind readnone
    127 declare i32 @llvm.hexagon.C2.cmpgei(i32, i32) #1
    128 
    129 ; Function Attrs: nounwind
    130 define i32 @cmpgeu(i32 %i) #0 {
    131 entry:
    132   %i.addr = alloca i32, align 4
    133   store i32 %i, i32* %i.addr, align 4
    134   %0 = load i32, i32* %i.addr, align 4
    135   %1 = call i32 @llvm.hexagon.C2.cmpgeui(i32 %0, i32 3)
    136   ret i32 %1
    137 }
    138 ; CHECK: { p{{[0-3]}} = cmp.gtu(r{{[0-9]}}, {{.*}}#2)
    139 
    140 ; Function Attrs: nounwind readnone
    141 declare i32 @llvm.hexagon.C2.cmpgeui(i32, i32) #1
    142 
    143 ; Function Attrs: nounwind
    144 define i32 @cmpgeu0(i32 %i) #0 {
    145 entry:
    146   %i.addr = alloca i32, align 4
    147   store i32 %i, i32* %i.addr, align 4
    148   %0 = load i32, i32* %i.addr, align 4
    149   %1 = call i32 @llvm.hexagon.C2.cmpgeui(i32 %0, i32 0)
    150   ret i32 %1
    151 }
    152 ; CHECK: { p{{[0-3]}} = cmp.eq(r{{[0-9]}}, r{{[0-9]}})
    153 
    154 
    155 attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
    156 attributes #1 = { nounwind readnone }
    157 
    158 !llvm.ident = !{!0}
    159 
    160 !0 = !{!"Clang 3.1"}
    161 
    162