Akira Hatanaka | dc25f9f | 2011-11-29 23:08:41 +0000 | [diff] [blame] | 1 | ; RUN: llc -march=mips -mcpu=mips32r2 < %s | FileCheck %s |
Simon Atanasyan | 1093afe2 | 2013-11-19 12:20:17 +0000 | [diff] [blame] | 2 | ; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips32r2 -mattr=+mips16 < %s | FileCheck %s -check-prefix=mips16 |
Zlatko Buljan | 4807f82 | 2016-05-04 12:02:12 +0000 | [diff] [blame] | 3 | ; RUN: llc -march=mips -mcpu=mips32r3 -mattr=+micromips < %s | FileCheck %s \ |
| 4 | ; RUN: -check-prefix=MM32 |
| 5 | ; RUN: llc -march=mips -mcpu=mips32r6 -mattr=+micromips < %s | FileCheck %s \ |
| 6 | ; RUN: -check-prefix=MM32 |
Bruno Cardoso Lopes | d47180e | 2010-12-09 17:32:30 +0000 | [diff] [blame] | 7 | |
Akira Hatanaka | 1fef284 | 2011-09-30 19:18:24 +0000 | [diff] [blame] | 8 | ; CHECK: rotrv $2, $4 |
Reed Kotler | 97309af | 2013-10-08 17:32:33 +0000 | [diff] [blame] | 9 | ; mips16: .ent rot0 |
Zlatko Buljan | 4807f82 | 2016-05-04 12:02:12 +0000 | [diff] [blame] | 10 | ; MM32: li16 $2, 32 |
| 11 | ; MM32: subu16 $2, $2, $5 |
| 12 | ; MM32: rotrv $2, $4, $2 |
Bruno Cardoso Lopes | d47180e | 2010-12-09 17:32:30 +0000 | [diff] [blame] | 13 | define i32 @rot0(i32 %a, i32 %b) nounwind readnone { |
| 14 | entry: |
| 15 | %shl = shl i32 %a, %b |
| 16 | %sub = sub i32 32, %b |
| 17 | %shr = lshr i32 %a, %sub |
| 18 | %or = or i32 %shr, %shl |
| 19 | ret i32 %or |
| 20 | } |
| 21 | |
| 22 | ; CHECK: rotr $2, $4, 22 |
Reed Kotler | 97309af | 2013-10-08 17:32:33 +0000 | [diff] [blame] | 23 | ; mips16: .ent rot1 |
Zlatko Buljan | 4807f82 | 2016-05-04 12:02:12 +0000 | [diff] [blame] | 24 | ; MM32: rotr $2, $4, 22 |
Bruno Cardoso Lopes | d47180e | 2010-12-09 17:32:30 +0000 | [diff] [blame] | 25 | define i32 @rot1(i32 %a) nounwind readnone { |
| 26 | entry: |
| 27 | %shl = shl i32 %a, 10 |
| 28 | %shr = lshr i32 %a, 22 |
| 29 | %or = or i32 %shl, %shr |
| 30 | ret i32 %or |
| 31 | } |
| 32 | |
| 33 | ; CHECK: rotrv $2, $4, $5 |
Reed Kotler | 97309af | 2013-10-08 17:32:33 +0000 | [diff] [blame] | 34 | ; mips16: .ent rot2 |
Zlatko Buljan | 4807f82 | 2016-05-04 12:02:12 +0000 | [diff] [blame] | 35 | ; MM32: rotrv $2, $4, $5 |
Bruno Cardoso Lopes | d47180e | 2010-12-09 17:32:30 +0000 | [diff] [blame] | 36 | define i32 @rot2(i32 %a, i32 %b) nounwind readnone { |
| 37 | entry: |
| 38 | %shr = lshr i32 %a, %b |
| 39 | %sub = sub i32 32, %b |
| 40 | %shl = shl i32 %a, %sub |
| 41 | %or = or i32 %shl, %shr |
| 42 | ret i32 %or |
| 43 | } |
| 44 | |
| 45 | ; CHECK: rotr $2, $4, 10 |
Reed Kotler | 97309af | 2013-10-08 17:32:33 +0000 | [diff] [blame] | 46 | ; mips16: .ent rot3 |
Zlatko Buljan | 4807f82 | 2016-05-04 12:02:12 +0000 | [diff] [blame] | 47 | ; MM32: rotr $2, $4, 10 |
Bruno Cardoso Lopes | d47180e | 2010-12-09 17:32:30 +0000 | [diff] [blame] | 48 | define i32 @rot3(i32 %a) nounwind readnone { |
| 49 | entry: |
| 50 | %shr = lshr i32 %a, 10 |
| 51 | %shl = shl i32 %a, 22 |
| 52 | %or = or i32 %shr, %shl |
| 53 | ret i32 %or |
| 54 | } |
| 55 | |