50 lines · plain
1; RUN: llc -mtriple=lanai < %s | FileCheck %s2; RUN: llc -mtriple=lanai < %s -code-model=small | FileCheck -check-prefix CHECK-SMALL %s3; RUN: not llc -mtriple=lanai < %s -code-model=tiny 2>&1 | FileCheck -check-prefix CHECK-TINY %s4; RUN: not llc -mtriple=lanai < %s -code-model=kernel 2>&1 | FileCheck -check-prefix CHECK-KERNEL %s5 6; CHECK-TINY: Target does not support the tiny CodeModel7; CHECK-KERNEL: Target does not support the kernel CodeModel8 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], %rv15; 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]]], %rv19 %0 = load i32, ptr @data, align 4 ; <i32> [#uses=1]20 ret i32 %021}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]]], %rv28; 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]]], %rv32 %0 = load i32, ptr getelementptr ([0 x i32], ptr @data, i32 0, i64 10), align 4 ; <i32> [#uses=1]33 ret i32 %034}35 36@y = local_unnamed_addr global ptr null, section ".ldata,block", align 837 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 847 %1 = load i32, ptr %0, align 448 ret i32 %149}50