Upload Tizen:Base source
[external/binutils.git] / ld / testsuite / ld-ia64 / tlspic1.s
1         /* Force .data aligned to 4K, so .got very likely gets at 0x13190
2            (0x60 bytes .tdata and 0x130 bytes .dynamic)  */
3         .data
4         .balign 4096
5         .section ".tdata", "awT", @progbits
6         .globl sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8
7         .globl sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
8         .hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
9 sg1:    .long 17
10 sg2:    .long 18
11 sg3:    .long 19
12 sg4:    .long 20
13 sg5:    .long 21
14 sg6:    .long 22
15 sg7:    .long 23
16 sg8:    .long 24
17 sl1:    .long 65
18 sl2:    .long 66
19 sl3:    .long 67
20 sl4:    .long 68
21 sl5:    .long 69
22 sl6:    .long 70
23 sl7:    .long 71
24 sl8:    .long 72
25 sh1:    .long 257
26 sh2:    .long 258
27 sh3:    .long 259
28 sh4:    .long 260
29 sh5:    .long 261
30 sh6:    .long 262
31 sh7:    .long 263
32 sh8:    .long 264
33         .explicit
34         .pred.safe_across_calls p1-p5,p16-p63
35         /* Force .text aligned to 4K, so it very likely gets at 0x1000.  */
36         .text
37         .balign 4096
38         .globl  fn1#
39         .proc   fn1#
40 fn1:
41         .prologue 12, 33
42         .mib
43         .save   ar.pfs, r34
44         alloc   r34 = ar.pfs, 0, 3, 2, 0
45         .save   rp, r33
46         mov     r33 = b0
47
48         /* GD */
49         addl    r14 = @ltoff(@dtpmod(sg1#)), gp
50         addl    r15 = @ltoff(@dtprel(sg1#)), gp
51         ;;
52         ld8     out0 = [r14]
53         ld8     out1 = [r15]
54         br.call.sptk.many b0 = __tls_get_addr#
55         ;;
56
57         /* GD against hidden symbol */
58         addl    r14 = @ltoff(@dtpmod(sh2#)), gp
59         addl    r15 = @ltoff(@dtprel(sh2#)), gp
60         ;;
61         ld8     out0 = [r14]
62         ld8     out1 = [r15]
63         br.call.sptk.many b0 = __tls_get_addr#
64         ;;
65
66         /* LD */
67         addl    r14 = @ltoff(@dtpmod(sl1#)), gp
68         addl    out1 = @dtprel(sl1#) + 1, r0
69         ;;
70         ld8     out0 = [r14]
71         br.call.sptk.many b0 = __tls_get_addr#
72         ;;
73
74         /* LD with 4 variables variables */
75         addl    r14 = @ltoff(@dtpmod(sh1#)), gp
76         mov     out1 = r0
77         ;;
78         ld8     out0 = [r14]
79         br.call.sptk.many b0 = __tls_get_addr#
80         ;;
81         mov     r2 = r8
82         ;;
83         addl    r14 = @dtprel(sh1#), r2
84         addl    r15 = @dtprel(sH1#) + 2, r2
85         ;;
86         adds    r14 = @dtprel(sh5#) + 3, r8
87         movl    r15 = @dtprel(sH5#) + 1
88         ;;
89         add     r15 = r15, r8
90         ;;
91
92         /* IE against global */
93         addl    r14 = @ltoff(@tprel(sg2#)), gp
94         ;;
95         ld8     r15 = [r14]
96         ;;
97         add     r14 = r15, r13
98         ;;
99
100         /* IE against local and hidden */
101         addl    r14 = @ltoff(@tprel(sl2#)), gp
102         addl    r15 = @ltoff(@tprel(sh2#)), gp
103         ;;
104         ld8     r14 = [r14]
105         ld8     r15 = [r15]
106         ;;
107         add     r14 = r14, r13
108         add     r15 = r15, r13
109         ;;
110
111         mov     ar.pfs = r34
112         mov     b0 = r33
113         br.ret.sptk.many b0
114         .endp   fn1#