blob: 590c333b3d1a672ed989bfd2fb7eac61a2361eec [file] [log] [blame]
Edward O'Callaghanf4a93dd2009-11-22 15:18:27 +00001; RUN: llc < %s -march=thumb -mattr=+thumb2 | FileCheck %s
2
David Goodwin7f98cac2009-06-26 22:37:07 +00003
Andrew Tricke02a1502011-04-29 14:02:41 +00004; CHECK: f1:
5; CHECK: ror.w r0, r0, #22
David Goodwin7f98cac2009-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 Tricke02a1502011-04-29 14:02:41 +000012
13; CHECK: f2:
Andrew Trickd49ffe82011-04-29 14:18:15 +000014; CHECK-NOT: and
Andrew Tricke02a1502011-04-29 14:02:41 +000015; CHECK: ror
16define i32 @f2(i32 %v, i32 %nbits) {
17entry:
Andrew Trickd49ffe82011-04-29 14:18:15 +000018 %and = and i32 %nbits, 31
19 %shr = lshr i32 %v, %and
20 %sub = sub i32 32, %and
Andrew Tricke02a1502011-04-29 14:02:41 +000021 %shl = shl i32 %v, %sub
22 %or = or i32 %shl, %shr
23 ret i32 %or
24}