blob: 5ad92cd7290d93de6cb2272e21a041d046fc9410 [file] [log] [blame]
Edward O'Callaghanf4a93dd2009-11-22 15:18:27 +00001; RUN: llc < %s -march=thumb -mattr=+thumb2 | FileCheck %s
Bob Wilsonac03af42012-07-02 17:22:47 +00002; RUN: llc < %s -march=thumb | FileCheck %s -check-prefix=THUMB1
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
Bob Wilsonac03af42012-07-02 17:22:47 +000016; THUMB1: f2
17; THUMB1: and
Andrew Tricke02a1502011-04-29 14:02:41 +000018define i32 @f2(i32 %v, i32 %nbits) {
19entry:
Andrew Trickd49ffe82011-04-29 14:18:15 +000020 %and = and i32 %nbits, 31
21 %shr = lshr i32 %v, %and
22 %sub = sub i32 32, %and
Andrew Tricke02a1502011-04-29 14:02:41 +000023 %shl = shl i32 %v, %sub
24 %or = or i32 %shl, %shr
25 ret i32 %or
Bob Wilsonac03af42012-07-02 17:22:47 +000026}