blob: 71b00153c2985c39c596a8d08c7159d76318d69d [file] [log] [blame]
Saleem Abdulrasool905b6d192014-04-03 23:47:24 +00001; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 %s -o - | FileCheck %s
2; RUN: llc -mtriple=thumb-eabi %s -o - | FileCheck %s -check-prefix=THUMB1
David Goodwin3aaa7512009-06-26 22:37:07 +00003
Stephen Lind24ab202013-07-14 06:24:09 +00004; CHECK-LABEL: f1:
Andrew Trick65266ed2011-04-29 14:02:41 +00005; CHECK: ror.w r0, r0, #22
David Goodwin3aaa7512009-06-26 22:37:07 +00006define i32 @f1(i32 %a) {
7 %l8 = shl i32 %a, 10
8 %r8 = lshr i32 %a, 22
9 %tmp = or i32 %l8, %r8
10 ret i32 %tmp
11}
Andrew Trick65266ed2011-04-29 14:02:41 +000012
Stephen Lind24ab202013-07-14 06:24:09 +000013; CHECK-LABEL: f2:
Andrew Tricke794e172011-04-29 14:18:15 +000014; CHECK-NOT: and
Andrew Trick65266ed2011-04-29 14:02:41 +000015; CHECK: ror
Bob Wilson22972212012-07-02 17:22:47 +000016; THUMB1: f2
17; THUMB1: and
Andrew Trick65266ed2011-04-29 14:02:41 +000018define i32 @f2(i32 %v, i32 %nbits) {
19entry:
Andrew Tricke794e172011-04-29 14:18:15 +000020 %and = and i32 %nbits, 31
21 %shr = lshr i32 %v, %and
22 %sub = sub i32 32, %and
Andrew Trick65266ed2011-04-29 14:02:41 +000023 %shl = shl i32 %v, %sub
24 %or = or i32 %shl, %shr
25 ret i32 %or
Bob Wilson22972212012-07-02 17:22:47 +000026}