boringssl/util/fipstools/testdata/x86_64-GOTRewrite/in.s
Adam Langley e314e1c000 Support [v]movsd in delocate.
Newer versions of LLVM can emit this instruction. Note that there are
two different Intel instructions, both called “movsd”. The old one is an
auto-incrementing move that doesn't take any arguments. That's not the
one that is targetted in this change.

Change-Id: Id0c96e0c7fe0f6e4feb8a72b5bc0fa40878225b9
Reviewed-on: https://boringssl-review.googlesource.com/20425
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
2017-09-18 18:49:26 +00:00

35 lines
894 B
ArmAsm

.text
foo:
# 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
# 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
# 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
.comm foobar,64,32