| ; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mattr=+no-movt -mtriple=armv7-apple-ios < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ARM |
| ; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mattr=+no-movt -mtriple=armv7-linux-gnueabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ARM |
| ; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mattr=+no-movt -mtriple=thumbv7-apple-ios < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ARM |
| ; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB |
| ; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios < %s | FileCheck %s --check-prefix=MOVT |
| ; rdar://10412592 |
| |
| define void @t1() nounwind { |
| entry: |
| ; CHECK-LABEL: t1 |
| ; CHECK: mvn r0, #0 |
| call void @foo(i32 -1) |
| ret void |
| } |
| |
| declare void @foo(i32) |
| |
| define void @t2() nounwind { |
| entry: |
| ; CHECK-LABEL: t2 |
| ; CHECK: mvn r0, #233 |
| call void @foo(i32 -234) |
| ret void |
| } |
| |
| define void @t3() nounwind { |
| entry: |
| ; CHECK-LABEL: t3 |
| ; CHECK: mvn r0, #256 |
| call void @foo(i32 -257) |
| ret void |
| } |
| |
| ; Load from constant pool |
| define void @t4() nounwind { |
| entry: |
| ; ARM-LABEL: t4 |
| ; ARM: ldr r0 |
| ; THUMB-LABEL: t4 |
| ; THUMB: movw r0, #65278 |
| ; THUMB: movt r0, #65535 |
| call void @foo(i32 -258) |
| ret void |
| } |
| |
| define void @t5() nounwind { |
| entry: |
| ; CHECK-LABEL: t5 |
| ; CHECK: mvn r0, #65280 |
| call void @foo(i32 -65281) |
| ret void |
| } |
| |
| define void @t6() nounwind { |
| entry: |
| ; CHECK-LABEL: t6 |
| ; CHECK: mvn r0, #978944 |
| call void @foo(i32 -978945) |
| ret void |
| } |
| |
| define void @t7() nounwind { |
| entry: |
| ; CHECK-LABEL: t7 |
| ; CHECK: mvn r0, #267386880 |
| call void @foo(i32 -267386881) |
| ret void |
| } |
| |
| define void @t8() nounwind { |
| entry: |
| ; CHECK-LABEL: t8 |
| ; CHECK: mvn r0, #65280 |
| call void @foo(i32 -65281) |
| ret void |
| } |
| |
| define void @t9() nounwind { |
| entry: |
| ; CHECK-LABEL: t9 |
| ; CHECK: mvn r0, #2130706432 |
| call void @foo(i32 -2130706433) |
| ret void |
| } |
| |
| ; Load from constant pool. |
| define i32 @t10(i32 %a) { |
| ; MOVT-LABEL: t10 |
| ; MOVT: ldr |
| %1 = xor i32 -1998730207, %a |
| ret i32 %1 |
| } |
| |