Home | History | Annotate | Download | only in ARM
      1 ; 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
      2 ; 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
      3 ; 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
      4 ; 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
      5 ; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios     < %s | FileCheck %s --check-prefix=MOVT
      6 ; rdar://10412592
      7 
      8 define void @t1() nounwind {
      9 entry:
     10 ; CHECK-LABEL: t1
     11 ; CHECK:       mvn r0, #0
     12   call void @foo(i32 -1)
     13   ret void
     14 }
     15 
     16 declare void @foo(i32)
     17 
     18 define void @t2() nounwind {
     19 entry:
     20 ; CHECK-LABEL: t2
     21 ; CHECK:       mvn r0, #233
     22   call void @foo(i32 -234)
     23   ret void
     24 }
     25 
     26 define void @t3() nounwind {
     27 entry:
     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
     35 define void @t4() nounwind {
     36 entry:
     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 
     46 define void @t5() nounwind {
     47 entry:
     48 ; CHECK-LABEL: t5
     49 ; CHECK:       mvn r0, #65280
     50   call void @foo(i32 -65281)
     51   ret void
     52 }
     53 
     54 define void @t6() nounwind {
     55 entry:
     56 ; CHECK-LABEL: t6
     57 ; CHECK:       mvn r0, #978944
     58   call void @foo(i32 -978945)
     59   ret void
     60 }
     61 
     62 define void @t7() nounwind {
     63 entry:
     64 ; CHECK-LABEL: t7
     65 ; CHECK:       mvn r0, #267386880
     66   call void @foo(i32 -267386881)
     67   ret void
     68 }
     69 
     70 define void @t8() nounwind {
     71 entry:
     72 ; CHECK-LABEL: t8
     73 ; CHECK:       mvn r0, #65280
     74   call void @foo(i32 -65281)
     75   ret void
     76 }
     77 
     78 define void @t9() nounwind {
     79 entry:
     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.
     87 define i32 @t10(i32 %a) {
     88 ; MOVT-LABEL: t10
     89 ; MOVT:       ldr
     90   %1 = xor i32 -1998730207, %a
     91   ret i32 %1
     92 }
     93 
     94