// Test file for AArch64 GAS -- instructions with relocation operators.

func:
	// BFD_RELOC_AARCH64_MOVW_G0
	// immediate
	movz	x0,#:abs_g0:u12

	// BFD_RELOC_AARCH64_MOVW_G0_S
	// immediate
	movz	x0,#:abs_g0_s:s12
	
	// BFD_RELOC_AARCH64_MOVW_G1
	// immediate
	movz	x1,#:abs_g1:u32
	movk	x1,#:abs_g0_nc:u32
	
	// BFD_RELOC_AARCH64_MOVW_G1_S
	// immediate
	movz	x1,#:abs_g1_s:s12
	movk	x1,#:abs_g0_nc:s12
	
	// BFD_RELOC_AARCH64_MOVW_G2
	// immediate
	movz	x1,#:abs_g2:u48
	movk	x1,#:abs_g1_nc:u48
	movk	x1,#:abs_g0_nc:u48
	
	// local data (section relative)
	movz	x1,#:abs_g2:ldata
	movk	x1,#:abs_g1_nc:ldata
	movk	x1,#:abs_g0_nc:ldata
	
	// external data
	movz	x1,#:abs_g2:xdata
	movk	x1,#:abs_g1_nc:xdata
	movk	x1,#:abs_g0_nc:xdata
	
	// BFD_RELOC_AARCH64_MOVW_G2_S
	// immediate
	movz	x1,#:abs_g2_s:s12
	movk	x1,#:abs_g1_nc:s12
	movk	x1,#:abs_g0_nc:s12

	// BFD_RELOC_AARCH64_MOVW_G3
	// immediate
	movz	x1,#:abs_g3:s12
	movk	x1,#:abs_g2_nc:s12
	movk	x1,#:abs_g1_nc:s12
	movk	x1,#:abs_g0_nc:s12
	
	movz	x1,#:abs_g3:u64
	movk	x1,#:abs_g2_nc:u64
	movk	x1,#:abs_g1_nc:u64
	movk	x1,#:abs_g0_nc:u64
	
	// BFD_RELOC_AARCH64_LD_LO19_PCREL
	ldr	x0,llit
	ldr	x1,ldata
	ldr	x2,xdata+12

	// BFD_RELOC_AARCH64_ADR_LO21_PCREL
	//  AARCH64 ADR instruction, holding a simple 21 bit pc-relative byte offset.
	adr	x0,llit
	adr	x1,ldata
	adr	x2,ldata+4088
	adr	x3,xlit
	adr	x4,xdata+16
	adr	x5,xdata+4088
	
	// BFD_RELOC_AARCH64_ADR_HI21_PCREL
	adrp	x0,llit
	adrp	x1,ldata
	adrp	x2,ldata+4088
	adrp	x3,xlit
	adrp	x4,xdata+16
	adrp	x5,xdata+4088
	
	// BFD_RELOC_AARCH64_ADR_HI21_PCREL
	adrp	x0,:pg_hi21:llit
	adrp	x1,:pg_hi21:ldata
	adrp	x2,:pg_hi21:ldata+4088
	adrp	x3,:pg_hi21:xlit
	adrp	x4,:pg_hi21:xdata+16
	adrp	x5,:pg_hi21:xdata+4088

	// BFD_RELOC_AARCH64_ADD_LO12
	add	x0,x0,#:lo12:llit
	add	x1,x1,#:lo12:ldata
	add	x2,x2,#:lo12:ldata+4088
	add	x3,x3,#:lo12:xlit
	add	x4,x4,#:lo12:xdata+16
	add	x5,x5,#:lo12:xdata+4088
	add	x6,x6,u12
	
	// BFD_RELOC_AARCH64_LDST8_LO12
	ldrb	w0, [x0, #:lo12:llit]
	ldrb	w1, [x1, #:lo12:ldata]
	ldrb	w2, [x2, #:lo12:ldata+4088]
	ldrb	w3, [x3, #:lo12:xlit]
	ldrb	w4, [x4, #:lo12:xdata+16]
	ldrb	w5, [x5, #:lo12:xdata+4088]
	ldrb	w6, [x6, u12]

	// BFD_RELOC_AARCH64_TSTBR14
	tbz	x0,#0,lab
	tbz	x1,#63,xlab
	tbnz	x2,#8,lab
	tbnz	x2,#47,xlab
	
	// BFD_RELOC_AARCH64_BRANCH19
	b.eq	lab
	b.eq	xlab

	// BFD_RELOC_AARCH64_COMPARE19
	cbz	x0,lab
	cbnz	x30,xlab

	// BFD_RELOC_AARCH64_JUMP26
	b	lab
	b	xlab

	// BFD_RELOC_AARCH64_CALL26
	bl	lab
	bl	xlab
	
	// BFD_RELOC_AARCH64_MOVW_IMM
	movz	x0, #0x1234, lsl #48
	movk	x0, #0x5678, lsl #32
	movk	x0, #0x9abc, lsl #16
	movk	x0, #0xdef0, lsl #0

	movz	x0, (u64>>48)&0xffff, lsl #48
	movk	x0, (u64>>32)&0xffff, lsl #32
	movk	x0, (u64>>16)&0xffff, lsl #16
	movk	x0, (u64>>0)&0xffff, lsl #0
	
	// BFD_RELOC_AARCH64_BIT_IMM
	orr	x0,x0,bit1
	and	x0,x0,bit2
	and	w0,w0,bit2
	
	// BFD_RELOC_AARCH64_ADD_U12
	add	x0,x0,s12
	add	x0,x0,u12
	sub	x0,x0,s12
	sub	x0,x0,u12

	// BFD_RELOC_AARCH64_EXC_U16
	svc	u16

	// BFD_RELOC_AARCH64_LDST_I9
	//  Signed 9-bit byte offset for load/store single item with writeback options.
	//  Used internally by the AARCH64 assembler and not (currently)
	//  written to any object files.
	ldr	x0,[x1],#s9
	ldr	x0,[x1,#s9]!

	// No writeback, but a negative offset should cause this
	// to be converted to a LDST_I9 relocation
	ldr	x0,[x1,#s9]

	// BFD_RELOC_AARCH64_LDST_U12
	//  Unsigned 12-bit byte offset for load/store single item without options.
	//  Used internally by the AARCH64 assembler and not (currently)
	//  written to any object files.
	ldr	x0,[x1,#(u12*8)]

	// BFD_RELOC_AARCH64_LDST16_LO12
	ldrh	w0, [x0, #:lo12:llit]
	// BFD_RELOC_AARCH64_LDST32_LO12
	ldr	w1, [x1, #:lo12:ldata]
	// BFD_RELOC_AARCH64_LDST64_LO12
	ldr	x2, [x2, #:lo12:ldata+4088]
	// BFD_RELOC_AARCH64_LDST128_LO12
	ldr	q3, [x3, #:lo12:xlit]

	// BFD_RELOC_AARCH64_LDST64_LO12
	prfm	pstl1keep, [x7, #:lo12:ldata+4100]

	// BFD_RELOC_AARCH64_GOT_LD_PREL19
	ldr	x0, :got_prel19:cdata
	ldrb	w1, [x0]
	
	ret
	
llit:	.word	0xdeadf00d
	
lab:	
		
	.data
	.align 8
	
dummy:	.xword  0
	
ldata:	.xword	0x1122334455667788
	.space	8184
	
.set u8, 248
.set s9, -256
.set s12, -2048	
.set u12, 4095
.set u16, 65535
.set u32, 0x12345678
.set u48, 0xaabbccddeeff
.set u64, 0xfedcba9876543210
.set bit1,0xf000000000000000
.set bit2,~0xf

.comm	cdata,1,8
