Akira Hatanaka | ed2a7d2 | 2011-11-29 23:08:41 +0000 | [diff] [blame] | 1 | ; RUN: llc -march=mips -mcpu=mips32r2 < %s | FileCheck %s |
Reed Kotler | b359bda | 2013-10-08 17:32:33 +0000 | [diff] [blame] | 2 | ; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips32r2 -mattr=+mips16 -soft-float -mips16-hard-float < %s | FileCheck %s -check-prefix=mips16 |
Bruno Cardoso Lopes | 908b6dd | 2010-12-09 17:32:30 +0000 | [diff] [blame] | 3 | |
Akira Hatanaka | 5773fd5 | 2011-09-30 19:18:24 +0000 | [diff] [blame] | 4 | ; CHECK: rotrv $2, $4 |
Reed Kotler | b359bda | 2013-10-08 17:32:33 +0000 | [diff] [blame] | 5 | ; mips16: .ent rot0 |
Bruno Cardoso Lopes | 908b6dd | 2010-12-09 17:32:30 +0000 | [diff] [blame] | 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 |
Reed Kotler | b359bda | 2013-10-08 17:32:33 +0000 | [diff] [blame] | 16 | ; mips16: .ent rot1 |
Bruno Cardoso Lopes | 908b6dd | 2010-12-09 17:32:30 +0000 | [diff] [blame] | 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 |
Reed Kotler | b359bda | 2013-10-08 17:32:33 +0000 | [diff] [blame] | 26 | ; mips16: .ent rot2 |
Bruno Cardoso Lopes | 908b6dd | 2010-12-09 17:32:30 +0000 | [diff] [blame] | 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 |
Reed Kotler | b359bda | 2013-10-08 17:32:33 +0000 | [diff] [blame] | 37 | ; mips16: .ent rot3 |
Bruno Cardoso Lopes | 908b6dd | 2010-12-09 17:32:30 +0000 | [diff] [blame] | 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 | |