Home | History | Annotate | Download | only in ARM
      1 ; RUN: llc < %s -mtriple=armv7-apple-darwin  | FileCheck %s
      2 ; RUN: llc < %s -mtriple=armv7-unknown-linux-eabi | FileCheck %s
      3 
      4 ; Check that when optimizing for size, a literal pool load is used
      5 ; instead of the (potentially faster) movw/movt pair when loading
      6 ; a large constant.
      7 
      8 @x = global i32* inttoptr (i32 305419888 to i32*), align 4
      9 
     10 define i32 @f() optsize {
     11   ; CHECK: f:
     12   ; CHECK: ldr  r{{.}}, {{.?}}LCPI{{.}}_{{.}}
     13   ; CHECK: ldr  r{{.}}, [{{(pc, )?}}r{{.}}]
     14   ; CHECK: ldr  r{{.}}, [r{{.}}]
     15   %1 = load i32** @x, align 4
     16   %2 = load i32* %1
     17   ret i32 %2
     18 }
     19 
     20 define i32 @g() {
     21   ; CHECK: g:
     22   ; CHECK: movw
     23   ; CHECK: movt
     24   %1 = load i32** @x, align 4
     25   %2 = load i32* %1
     26   ret i32 %2
     27 }
     28