| .section ".tdata", "awT", @progbits |
| .align 16 |
| .global x#, y#, z#, a#, b#, c# |
| .protected a#, b#, c# |
| .type x#,@object |
| .size x#,4 |
| x: data4 1 |
| .type y#,@object |
| .size y#,4 |
| y: data4 2 |
| .type z#,@object |
| .size z#,4 |
| z: data4 3 |
| .align 8 |
| .type a#,@object |
| .size a#,8 |
| a: data8 4 |
| .type b#,@object |
| .size b#,8 |
| b: data8 5 |
| .type c#,@object |
| .size c#,1 |
| c: data1 6 |
| |
| .text |
| .align 16 |
| .global foo# |
| .proc foo# |
| foo: |
| .prologue |
| alloc r36 = ar.pfs, 0, 5, 3, 0 |
| .body |
| addl loc0 = @ltoff(@tprel(x)), gp;; |
| ld8 loc0 = [loc0];; |
| add loc1 = loc0, r13;; |
| |
| mov r2 = r13;; |
| addl loc1 = @tprel(y), r2;; |
| |
| mov loc0 = gp |
| addl out0 = @ltoff(@dtpmod(z)), gp |
| addl out1 = @ltoff(@dtprel(z)), gp;; |
| ld8 out0 = [out0] |
| ld8 out1 = [out1] |
| br.call.sptk.many b0 = __tls_get_addr;; |
| mov gp = loc0;; |
| |
| addl out0 = @ltoff(@dtpmod(a)), gp |
| addl out1 = @dtprel(a), r0;; |
| ld8 out0 = [out0] |
| br.call.sptk.many b0 = __tls_get_addr;; |
| mov gp = loc0;; |
| |
| addl out0 = @ltoff(@dtpmod(b)), gp |
| mov out1 = r0;; |
| ld8 out0 = [out0] |
| br.call.sptk.many b0 = __tls_get_addr;; |
| mov gp = loc0 |
| mov r2 = ret0;; |
| addl loc1 = @dtprel(b), r2 |
| addl loc2 = @dtprel(c), r2 |
| |
| br.ret.sptk.many b0 |
| .endp foo# |