Stackmap shadows should consider call returns a branch target.
[oota-llvm.git] / test / CodeGen / Mips / rotate.ll
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