Mirror of BoringSSL (grpc依赖)
https://boringssl.googlesource.com/boringssl
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.8 KiB
68 lines
1.8 KiB
.text |
|
foo: |
|
bar: |
|
# leaq of OPENSSL_ia32cap_P is supported. |
|
leaq OPENSSL_ia32cap_P(%rip), %r11 |
|
|
|
# As is the equivalent GOTPCREL movq. |
|
movq OPENSSL_ia32cap_P@GOTPCREL(%rip), %r12 |
|
|
|
# And a non-movq instruction via the GOT. |
|
orq OPENSSL_ia32cap_P@GOTPCREL(%rip), %r12 |
|
|
|
# ... which targets the default temp register |
|
orq OPENSSL_ia32cap_P@GOTPCREL(%rip), %rax |
|
|
|
# Test that GOTPCREL accesses get translated. They are handled |
|
# differently for local and external symbols. |
|
|
|
pushq stderr@GOTPCREL(%rip) |
|
pushq foo@GOTPCREL(%rip) |
|
|
|
movq stderr@GOTPCREL(%rip), %r11 |
|
movq foo@GOTPCREL(%rip), %r11 |
|
|
|
vmovq stderr@GOTPCREL(%rip), %xmm0 |
|
vmovq foo@GOTPCREL(%rip), %xmm0 |
|
|
|
cmoveq stderr@GOTPCREL(%rip), %r11 |
|
cmoveq foo@GOTPCREL(%rip), %r11 |
|
cmovneq stderr@GOTPCREL(%rip), %r11 |
|
cmovneq foo@GOTPCREL(%rip), %r11 |
|
|
|
movsd foo@GOTPCREL(%rip), %xmm0 |
|
vmovsd foo@GOTPCREL(%rip), %xmm0 |
|
|
|
# movsd without arguments should be left as-is. |
|
movsd |
|
|
|
# Synthesized symbols do not use the GOT. |
|
movq BORINGSSL_bcm_text_start@GOTPCREL(%rip), %r11 |
|
movq foobar_bss_get@GOTPCREL(%rip), %r11 |
|
movq OPENSSL_ia32cap_get@GOTPCREL(%rip), %r11 |
|
|
|
# Transforming moves run the transform in-place after the load. |
|
vpbroadcastq stderr@GOTPCREL(%rip), %xmm0 |
|
vpbroadcastq foo@GOTPCREL(%rip), %xmm0 |
|
|
|
# GCC sometimes loads a pair of pointers into an XMM register and |
|
# writes them together. |
|
movq gcm_gmult_clmul@GOTPCREL(%rip), %xmm0 |
|
movhps gcm_ghash_clmul@GOTPCREL(%rip), %xmm0 |
|
movaps %xmm0, (%rsp) |
|
|
|
# We've yet to observe this, but the above could also have been written |
|
# with movlps. |
|
movhps gcm_ghash_clmul@GOTPCREL(%rip), %xmm0 |
|
movlps gcm_gmult_clmul@GOTPCREL(%rip), %xmm0 |
|
movaps %xmm0, (%rsp) |
|
|
|
# Same as above, but with a local symbol. |
|
movhps foo@GOTPCREL(%rip), %xmm0 |
|
movlps bar@GOTPCREL(%rip), %xmm0 |
|
movaps %xmm0, (%rsp) |
|
|
|
cmpq foo@GOTPCREL(%rip), %rax |
|
cmpq %rax, foo@GOTPCREL(%rip) |
|
|
|
.comm foobar,64,32
|
|
|