1; RUN: llc -mtriple=lanai < %s | FileCheck %s 2; RUN: llc -mtriple=lanai < %s -code-model=small | FileCheck -check-prefix CHECK-SMALL %s 3; RUN: not llc -mtriple=lanai < %s -code-model=tiny 2>&1 | FileCheck -check-prefix CHECK-TINY %s 4; RUN: not llc -mtriple=lanai < %s -code-model=kernel 2>&1 | FileCheck -check-prefix CHECK-KERNEL %s 5 6; CHECK-TINY: Target does not support the tiny CodeModel 7; CHECK-KERNEL: Target does not support the kernel CodeModel 8 9@data = external global [0 x i32] ; <[0 x i32]*> [#uses=5] 10 11define i32 @foo() nounwind readonly { 12entry: 13; CHECK-SMALL-LABEL: foo: 14; CHECK-SMALL: ld [data], %rv 15; CHECK-LABEL: foo: 16; CHECK: mov hi(data), %r[[REGISTER:[0-9]+]] 17; CHECK: or %r[[REGISTER]], lo(data), %r[[REGISTER]] 18; CHECK: ld 0[%r[[REGISTER]]], %rv 19 %0 = load i32, ptr @data, align 4 ; <i32> [#uses=1] 20 ret i32 %0 21} 22 23define i32 @foo1() nounwind readonly { 24entry: 25; CHECK-SMALL-LABEL: foo1: 26; CHECK-SMALL: mov data, %r[[REGISTER:[0-9]+]] 27; CHECK-SMALL: ld 40[%r[[REGISTER]]], %rv 28; CHECK-LABEL: foo1: 29; CHECK: mov hi(data), %r[[REGISTER:[0-9]+]] 30; CHECK: or %r[[REGISTER]], lo(data), %r[[REGISTER]] 31; CHECK: ld 40[%r[[REGISTER]]], %rv 32 %0 = load i32, ptr getelementptr ([0 x i32], ptr @data, i32 0, i64 10), align 4 ; <i32> [#uses=1] 33 ret i32 %0 34} 35 36@y = local_unnamed_addr global ptr null, section ".ldata,block", align 8 37 38define i32 @foo2() nounwind readonly { 39entry: 40; CHECK-SMALL-LABEL: foo2: 41; CHECK-SMALL: mov hi(y), %r[[REGISTER:[0-9]+]] 42; CHECK-SMALL: or %r[[REGISTER]], lo(y), %r[[REGISTER]] 43; CHECK-LABEL: foo2: 44; CHECK: mov hi(y), %r[[REGISTER:[0-9]+]] 45; CHECK: or %r[[REGISTER]], lo(y), %r[[REGISTER]] 46 %0 = load ptr, ptr @y, align 8 47 %1 = load i32, ptr %0, align 4 48 ret i32 %1 49} 50