blob: 5bbe653cd12e1f4e2353394da23e320ee6b66177 [file] [log] [blame]
Edward O'Callaghanf161e972009-11-22 15:35:28 +00001; RUN: llc < %s -march=thumb -mattr=+thumb2 | FileCheck %s
2
Evan Cheng34c8c742009-06-26 05:59:16 +00003
4define i32 @f1(i32 %a, i32 %b) {
5 %tmp = xor i32 %b, 4294967295
David Goodwin34f7ede2009-06-26 16:20:06 +00006 %tmp1 = or i32 %a, %tmp
Evan Cheng34c8c742009-06-26 05:59:16 +00007 ret i32 %tmp1
8}
Stephen Lind24ab202013-07-14 06:24:09 +00009; CHECK-LABEL: f1:
Edward O'Callaghanf161e972009-11-22 15:35:28 +000010; CHECK: orn r0, r0, r1
Evan Cheng34c8c742009-06-26 05:59:16 +000011
12define i32 @f2(i32 %a, i32 %b) {
13 %tmp = xor i32 %b, 4294967295
David Goodwin34f7ede2009-06-26 16:20:06 +000014 %tmp1 = or i32 %tmp, %a
Evan Cheng34c8c742009-06-26 05:59:16 +000015 ret i32 %tmp1
16}
Stephen Lind24ab202013-07-14 06:24:09 +000017; CHECK-LABEL: f2:
Edward O'Callaghanf161e972009-11-22 15:35:28 +000018; CHECK: orn r0, r0, r1
David Goodwin3bd42af2009-06-26 18:10:30 +000019
20define i32 @f3(i32 %a, i32 %b) {
21 %tmp = xor i32 4294967295, %b
22 %tmp1 = or i32 %a, %tmp
23 ret i32 %tmp1
24}
Stephen Lind24ab202013-07-14 06:24:09 +000025; CHECK-LABEL: f3:
Edward O'Callaghanf161e972009-11-22 15:35:28 +000026; CHECK: orn r0, r0, r1
David Goodwin3bd42af2009-06-26 18:10:30 +000027
28define i32 @f4(i32 %a, i32 %b) {
29 %tmp = xor i32 4294967295, %b
30 %tmp1 = or i32 %tmp, %a
31 ret i32 %tmp1
32}
Stephen Lind24ab202013-07-14 06:24:09 +000033; CHECK-LABEL: f4:
Edward O'Callaghanf161e972009-11-22 15:35:28 +000034; CHECK: orn r0, r0, r1
David Goodwin17512662009-06-30 01:02:20 +000035
36define i32 @f5(i32 %a, i32 %b) {
37 %tmp = shl i32 %b, 5
38 %tmp1 = xor i32 4294967295, %tmp
39 %tmp2 = or i32 %a, %tmp1
40 ret i32 %tmp2
41}
Stephen Lind24ab202013-07-14 06:24:09 +000042; CHECK-LABEL: f5:
Edward O'Callaghanf161e972009-11-22 15:35:28 +000043; CHECK: orn r0, r0, r1, lsl #5
David Goodwin17512662009-06-30 01:02:20 +000044
45define i32 @f6(i32 %a, i32 %b) {
46 %tmp = lshr i32 %b, 6
47 %tmp1 = xor i32 4294967295, %tmp
48 %tmp2 = or i32 %a, %tmp1
49 ret i32 %tmp2
50}
Stephen Lind24ab202013-07-14 06:24:09 +000051; CHECK-LABEL: f6:
Edward O'Callaghanf161e972009-11-22 15:35:28 +000052; CHECK: orn r0, r0, r1, lsr #6
David Goodwin17512662009-06-30 01:02:20 +000053
54define i32 @f7(i32 %a, i32 %b) {
55 %tmp = ashr i32 %b, 7
56 %tmp1 = xor i32 4294967295, %tmp
57 %tmp2 = or i32 %a, %tmp1
58 ret i32 %tmp2
59}
Stephen Lind24ab202013-07-14 06:24:09 +000060; CHECK-LABEL: f7:
Edward O'Callaghanf161e972009-11-22 15:35:28 +000061; CHECK: orn r0, r0, r1, asr #7
David Goodwin17512662009-06-30 01:02:20 +000062
63define i32 @f8(i32 %a, i32 %b) {
64 %l8 = shl i32 %a, 24
65 %r8 = lshr i32 %a, 8
66 %tmp = or i32 %l8, %r8
67 %tmp1 = xor i32 4294967295, %tmp
68 %tmp2 = or i32 %a, %tmp1
69 ret i32 %tmp2
70}
Stephen Lind24ab202013-07-14 06:24:09 +000071; CHECK-LABEL: f8:
Edward O'Callaghanf161e972009-11-22 15:35:28 +000072; CHECK: orn r0, r0, r0, ror #8