1 .text 2 foo: 3 # leaq of OPENSSL_ia32cap_P is supported. 4 leaq OPENSSL_ia32cap_P(%rip), %r11 5 6 # As is the equivalent GOTPCREL movq. 7 movq OPENSSL_ia32cap_P@GOTPCREL(%rip), %r12 8 9 # Test that GOTPCREL accesses get translated. They are handled 10 # differently for local and external symbols. 11 12 pushq stderr@GOTPCREL(%rip) 13 pushq foo@GOTPCREL(%rip) 14 15 movq stderr@GOTPCREL(%rip), %r11 16 movq foo@GOTPCREL(%rip), %r11 17 18 vmovq stderr@GOTPCREL(%rip), %xmm0 19 vmovq foo@GOTPCREL(%rip), %xmm0 20 21 cmoveq stderr@GOTPCREL(%rip), %r11 22 cmoveq foo@GOTPCREL(%rip), %r11 23 cmovneq stderr@GOTPCREL(%rip), %r11 24 cmovneq foo@GOTPCREL(%rip), %r11 25 26 movsd foo@GOTPCREL(%rip), %xmm0 27 vmovsd foo@GOTPCREL(%rip), %xmm0 28 29 # movsd without arguments should be left as-is. 30 movsd 31 32 # Synthesized symbols do not use the GOT. 33 movq BORINGSSL_bcm_text_start@GOTPCREL(%rip), %r11 34 movq foobar_bss_get@GOTPCREL(%rip), %r11 35 movq OPENSSL_ia32cap_get@GOTPCREL(%rip), %r11 36 37 # Transforming moves run the transform in-place after the load. 38 vpbroadcastq stderr@GOTPCREL(%rip), %xmm0 39 vpbroadcastq foo@GOTPCREL(%rip), %xmm0 40 41 .comm foobar,64,32 42