| .type foo, %function | |
| .globl foo | |
| foo: | |
| // GOT load | |
| adrp x1, :got:stderr | |
| ldr x0, [x1, :got_lo12:stderr] | |
| // GOT load to x0 | |
| adrp x0, :got:stderr | |
| ldr x1, [x0, :got_lo12:stderr] | |
| // GOT load with no register move | |
| adrp x0, :got:stderr | |
| ldr x0, [x0, :got_lo12:stderr] | |
| // Address load | |
| adrp x0, .Llocal_data | |
| add x1, x0, :lo12:.Llocal_data | |
| // Address of local symbol with offset | |
| adrp x10, .Llocal_data2+16 | |
| add x11, x10, :lo12:.Llocal_data2+16 | |
| // Address load with no-op add instruction | |
| adrp x0, .Llocal_data | |
| add x0, x0, :lo12:.Llocal_data | |
| // armcap | |
| adrp x1, OPENSSL_armcap_P | |
| ldr w2, [x1, :lo12:OPENSSL_armcap_P] | |
| // armcap to w0 | |
| adrp x0, OPENSSL_armcap_P | |
| ldr w1, [x1, :lo12:OPENSSL_armcap_P] | |
| // Load from local symbol | |
| adrp x10, .Llocal_data2 | |
| ldr q0, [x10, :lo12:.Llocal_data2] | |
| bl local_function | |
| bl remote_function | |
| bl bss_symbol_bss_get | |
| # Regression test for a two-digit index. | |
| ld1 { v1.b }[10], [x9] | |
| local_function: | |
| // BSS data | |
| .type bss_symbol,@object | |
| .section .bss.bss_symbol,"aw",@nobits | |
| bss_symbol: | |
| .word 0 | |
| .size bss_symbol, 4 |