Mercurial > hg > Members > tobaru > cbc > CbC_llvm
comparison test/CodeGen/AArch64/basic-pic.ll @ 77:54457678186b
LLVM 3.6
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 08 Sep 2014 22:06:00 +0900 |
parents | 95c75e76d11b |
children | afa8332a0e37 |
comparison
equal
deleted
inserted
replaced
34:e874dbf0ad9d | 77:54457678186b |
---|---|
1 ; RUN: llc -mtriple=aarch64-none-linux-gnu -verify-machineinstrs -relocation-model=pic %s -o - | FileCheck %s | 1 ; RUN: llc -mtriple=aarch64-linux-gnu -verify-machineinstrs -relocation-model=pic %s -o - | FileCheck %s |
2 | 2 |
3 @var = global i32 0 | 3 @var = global i32 0 |
4 | 4 |
5 define i32 @get_globalvar() { | 5 define i32 @get_globalvar() { |
6 ; CHECK-LABEL: get_globalvar: | 6 ; CHECK-LABEL: get_globalvar: |
7 | 7 |
8 %val = load i32* @var | 8 %val = load i32* @var |
9 ; CHECK: adrp x[[GOTHI:[0-9]+]], :got:var | 9 ; CHECK: adrp x[[GOTHI:[0-9]+]], :got:var |
10 ; CHECK: ldr x[[GOTLOC:[0-9]+]], [x[[GOTHI]], #:got_lo12:var] | 10 ; CHECK: ldr x[[GOTLOC:[0-9]+]], [x[[GOTHI]], {{#?}}:got_lo12:var] |
11 ; CHECK: ldr w0, [x[[GOTLOC]]] | 11 ; CHECK: ldr w0, [x[[GOTLOC]]] |
12 | 12 |
13 ret i32 %val | 13 ret i32 %val |
14 } | 14 } |
15 | 15 |
16 define i32* @get_globalvaraddr() { | 16 define i32* @get_globalvaraddr() { |
17 ; CHECK-LABEL: get_globalvaraddr: | 17 ; CHECK-LABEL: get_globalvaraddr: |
18 | 18 |
19 %val = load i32* @var | 19 %val = load i32* @var |
20 ; CHECK: adrp x[[GOTHI:[0-9]+]], :got:var | 20 ; CHECK: adrp x[[GOTHI:[0-9]+]], :got:var |
21 ; CHECK: ldr x0, [x[[GOTHI]], #:got_lo12:var] | 21 ; CHECK: ldr x0, [x[[GOTHI]], {{#?}}:got_lo12:var] |
22 | 22 |
23 ret i32* @var | 23 ret i32* @var |
24 } | 24 } |
25 | 25 |
26 @hiddenvar = hidden global i32 0 | 26 @hiddenvar = hidden global i32 0 |
28 define i32 @get_hiddenvar() { | 28 define i32 @get_hiddenvar() { |
29 ; CHECK-LABEL: get_hiddenvar: | 29 ; CHECK-LABEL: get_hiddenvar: |
30 | 30 |
31 %val = load i32* @hiddenvar | 31 %val = load i32* @hiddenvar |
32 ; CHECK: adrp x[[HI:[0-9]+]], hiddenvar | 32 ; CHECK: adrp x[[HI:[0-9]+]], hiddenvar |
33 ; CHECK: ldr w0, [x[[HI]], #:lo12:hiddenvar] | 33 ; CHECK: ldr w0, [x[[HI]], {{#?}}:lo12:hiddenvar] |
34 | 34 |
35 ret i32 %val | 35 ret i32 %val |
36 } | 36 } |
37 | 37 |
38 define i32* @get_hiddenvaraddr() { | 38 define i32* @get_hiddenvaraddr() { |
39 ; CHECK-LABEL: get_hiddenvaraddr: | 39 ; CHECK-LABEL: get_hiddenvaraddr: |
40 | 40 |
41 %val = load i32* @hiddenvar | 41 %val = load i32* @hiddenvar |
42 ; CHECK: adrp [[HI:x[0-9]+]], hiddenvar | 42 ; CHECK: adrp [[HI:x[0-9]+]], hiddenvar |
43 ; CHECK: add x0, [[HI]], #:lo12:hiddenvar | 43 ; CHECK: add x0, [[HI]], {{#?}}:lo12:hiddenvar |
44 | 44 |
45 ret i32* @hiddenvar | 45 ret i32* @hiddenvar |
46 } | 46 } |
47 | 47 |
48 define void()* @get_func() { | 48 define void()* @get_func() { |
49 ; CHECK-LABEL: get_func: | 49 ; CHECK-LABEL: get_func: |
50 | 50 |
51 ret void()* bitcast(void()*()* @get_func to void()*) | 51 ret void()* bitcast(void()*()* @get_func to void()*) |
52 ; CHECK: adrp x[[GOTHI:[0-9]+]], :got:get_func | 52 ; CHECK: adrp x[[GOTHI:[0-9]+]], :got:get_func |
53 ; CHECK: ldr x0, [x[[GOTHI]], #:got_lo12:get_func] | 53 ; CHECK: ldr x0, [x[[GOTHI]], {{#?}}:got_lo12:get_func] |
54 } | 54 } |