Home | History | Annotate | Download | only in Mips
      1 ; RUN: llc -march=mips -mcpu=mips32r2 < %s | FileCheck %s
      2 ; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips32r2 -mattr=+mips16 < %s | FileCheck %s -check-prefix=mips16
      3 
      4 ; CHECK:  rotrv $2, $4
      5 ; mips16: .ent rot0
      6 define i32 @rot0(i32 %a, i32 %b) nounwind readnone {
      7 entry:
      8   %shl = shl i32 %a, %b
      9   %sub = sub i32 32, %b
     10   %shr = lshr i32 %a, %sub
     11   %or = or i32 %shr, %shl
     12   ret i32 %or
     13 }
     14 
     15 ; CHECK:  rotr  $2, $4, 22
     16 ; mips16: .ent rot1
     17 define i32 @rot1(i32 %a) nounwind readnone {
     18 entry:
     19   %shl = shl i32 %a, 10
     20   %shr = lshr i32 %a, 22
     21   %or = or i32 %shl, %shr
     22   ret i32 %or
     23 }
     24 
     25 ; CHECK:  rotrv $2, $4, $5
     26 ; mips16: .ent rot2
     27 define i32 @rot2(i32 %a, i32 %b) nounwind readnone {
     28 entry:
     29   %shr = lshr i32 %a, %b
     30   %sub = sub i32 32, %b
     31   %shl = shl i32 %a, %sub
     32   %or = or i32 %shl, %shr
     33   ret i32 %or
     34 }
     35 
     36 ; CHECK:  rotr  $2, $4, 10
     37 ; mips16: .ent rot3
     38 define i32 @rot3(i32 %a) nounwind readnone {
     39 entry:
     40   %shr = lshr i32 %a, 10
     41   %shl = shl i32 %a, 22
     42   %or = or i32 %shr, %shl
     43   ret i32 %or
     44 }
     45 
     46