	.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

	# 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

	cmpq foo@GOTPCREL(%rip), %rax
	cmpq %rax, foo@GOTPCREL(%rip)

.comm foobar,64,32
