1; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -arm-use-movt=false -mtriple=armv7-apple-ios     < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ARM
2; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -arm-use-movt=false -mtriple=armv7-linux-gnueabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ARM
3; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -arm-use-movt=false -mtriple=thumbv7-apple-ios   < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ARM
4; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -arm-use-movt=true  -mtriple=thumbv7-apple-ios   < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB
5; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -arm-use-movt=true  -mtriple=armv7-apple-ios     < %s | FileCheck %s --check-prefix=MOVT
6; rdar://10412592
7
8define void @t1() nounwind {
9entry:
10; CHECK-LABEL: t1
11; CHECK:       mvn r0, #0
12  call void @foo(i32 -1)
13  ret void
14}
15
16declare void @foo(i32)
17
18define void @t2() nounwind {
19entry:
20; CHECK-LABEL: t2
21; CHECK:       mvn r0, #233
22  call void @foo(i32 -234)
23  ret void
24}
25
26define void @t3() nounwind {
27entry:
28; CHECK-LABEL: t3
29; CHECK:       mvn r0, #256
30  call void @foo(i32 -257)
31  ret void
32}
33
34; Load from constant pool
35define void @t4() nounwind {
36entry:
37; ARM-LABEL:   t4
38; ARM:         ldr r0
39; THUMB-LABEL: t4
40; THUMB:       movw r0, #65278
41; THUMB:       movt r0, #65535
42  call void @foo(i32 -258)
43  ret void
44}
45
46define void @t5() nounwind {
47entry:
48; CHECK-LABEL: t5
49; CHECK:       mvn r0, #65280
50  call void @foo(i32 -65281)
51  ret void
52}
53
54define void @t6() nounwind {
55entry:
56; CHECK-LABEL: t6
57; CHECK:       mvn r0, #978944
58  call void @foo(i32 -978945)
59  ret void
60}
61
62define void @t7() nounwind {
63entry:
64; CHECK-LABEL: t7
65; CHECK:       mvn r0, #267386880
66  call void @foo(i32 -267386881)
67  ret void
68}
69
70define void @t8() nounwind {
71entry:
72; CHECK-LABEL: t8
73; CHECK:       mvn r0, #65280
74  call void @foo(i32 -65281)
75  ret void
76}
77
78define void @t9() nounwind {
79entry:
80; CHECK-LABEL: t9
81; CHECK:       mvn r0, #2130706432
82  call void @foo(i32 -2130706433)
83  ret void
84}
85
86; Load from constant pool.
87define i32 @t10(i32 %a) {
88; MOVT-LABEL: t10
89; MOVT:       ldr
90  %1 = xor i32 -1998730207, %a
91  ret i32 %1
92}
93
94