| ; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM |
| ; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB |
| ; rdar://10412592 |
| |
| ; Note: The Thumb code is being generated by the target-independent selector. |
| |
| define void @t1() nounwind { |
| entry: |
| ; ARM: t1 |
| ; THUMB: t1 |
| ; ARM: mvn r0, #0 |
| ; THUMB: movw r0, #65535 |
| ; THUMB: movt r0, #65535 |
| call void @foo(i32 -1) |
| ret void |
| } |
| |
| declare void @foo(i32) |
| |
| define void @t2() nounwind { |
| entry: |
| ; ARM: t2 |
| ; THUMB: t2 |
| ; ARM: mvn r0, #233 |
| ; THUMB: movw r0, #65302 |
| ; THUMB: movt r0, #65535 |
| call void @foo(i32 -234) |
| ret void |
| } |
| |
| define void @t3() nounwind { |
| entry: |
| ; ARM: t3 |
| ; THUMB: t3 |
| ; ARM: mvn r0, #256 |
| ; THUMB: movw r0, #65279 |
| ; THUMB: movt r0, #65535 |
| call void @foo(i32 -257) |
| ret void |
| } |
| |
| ; Load from constant pool |
| define void @t4() nounwind { |
| entry: |
| ; ARM: t4 |
| ; THUMB: t4 |
| ; ARM: ldr r0 |
| ; THUMB: movw r0, #65278 |
| ; THUMB: movt r0, #65535 |
| call void @foo(i32 -258) |
| ret void |
| } |
| |
| define void @t5() nounwind { |
| entry: |
| ; ARM: t5 |
| ; THUMB: t5 |
| ; ARM: mvn r0, #65280 |
| ; THUMB: movs r0, #255 |
| ; THUMB: movt r0, #65535 |
| call void @foo(i32 -65281) |
| ret void |
| } |
| |
| define void @t6() nounwind { |
| entry: |
| ; ARM: t6 |
| ; THUMB: t6 |
| ; ARM: mvn r0, #978944 |
| ; THUMB: movw r0, #4095 |
| ; THUMB: movt r0, #65521 |
| call void @foo(i32 -978945) |
| ret void |
| } |
| |
| define void @t7() nounwind { |
| entry: |
| ; ARM: t7 |
| ; THUMB: t7 |
| ; ARM: mvn r0, #267386880 |
| ; THUMB: movw r0, #65535 |
| ; THUMB: movt r0, #61455 |
| call void @foo(i32 -267386881) |
| ret void |
| } |
| |
| define void @t8() nounwind { |
| entry: |
| ; ARM: t8 |
| ; THUMB: t8 |
| ; ARM: mvn r0, #65280 |
| ; THUMB: movs r0, #255 |
| ; THUMB: movt r0, #65535 |
| call void @foo(i32 -65281) |
| ret void |
| } |
| |
| define void @t9() nounwind { |
| entry: |
| ; ARM: t9 |
| ; THUMB: t9 |
| ; ARM: mvn r0, #2130706432 |
| ; THUMB: movw r0, #65535 |
| ; THUMB: movt r0, #33023 |
| call void @foo(i32 -2130706433) |
| ret void |
| } |