// diagnostic.s Test file for diagnostic quality.

.text
	fmul,	s0, s1, s2
	fmul	,	s0, s1, s2
	fmul	, s0, s1, s2
	b.random	label1
	fmull   s0
	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
	sys	1,c1,c3,3,
	ext	v0.8b, v1.8b, v2.8b, 8
	ext	v0.16b, v1.16b, v2.16b, 20
	svc	-1
	svc	65536
	ccmp	w0, 32, 10, le
	ccmp	x0, -1, 10, le
	tlbi	alle3is, x0
	tlbi	vaale1is
	tlbi	vaale1is x0
	msr	spsel, 3
	fcvtzu	x15, d31, #66
	scvtf	s0, w0, 33
	scvtf	s0, w0, 0
	smlal	v0.4s, v31.4h, v16.h[1]
	smlal	v0.4s, v31.4h, v15.h[8]
	add	sp, x0, x7, lsr #2
	add	x0, x0, x7, uxtx #5
	add	x0, xzr, x7, ror #5
	add	w0, wzr, w7, asr #32
	st2	{v0.4s, v1.4s}, [sp], #24
	ldr	q0, [x0, w0, uxtw #5]
	st2	{v0.4s, v1.4s, v2.4s, v3.4s}, [sp], #64
	adds	x1, sp, 2134, lsl #4
	movz	w0, 2134, lsl #8
	movz	w0, 2134, lsl #32
	movz	x0, 2134, lsl #47
	sbfiz	w0, w7, 15, 18
	sbfiz	w0, w7, 15, 0
	shll	v1.4s, v2.4h, #15
	shll	v1.4s, v2.4h, #32
	shl	v1.2s, v2.2s, 32
	sqshrn2	v2.16b, v3.8h, #17
	movi	v1.4h, 256
	movi	v1.4h, -129
	movi	v1.4h, 255, msl #8
	movi	d0, 256
	movi	v1.4h, 255, lsl #7
	movi	v1.4h, 255, lsl #16
	movi	v2.2s, 255, msl #0
	movi	v2.2s, 255, msl #15
	fmov	v1.2s, 1.01
	fmov	v1.2d, 1.01
	fmov	s3, 1.01
	fmov	d3, 1.01
	fcmp	d0, #1.0
	fcmp	d0, x0
	cmgt	v0.4s, v2.4s, #1
	fmov	d3, 1.00, lsl #3
	st2	{v0.4s, v1.4s}, [sp], sp
	st2	{v0.4s, v1.4s}, [sp], zr
	ldr	q0, [x0, w0, lsr #4]
	adds	x1, sp, 2134, uxtw #12
	movz	x0, 2134, lsl #64
	adds	sp, sp, 2134, lsl #12
	ldxrb	w2, [x0, #1]
	ldrb	w0, x1, x2, sxtx
	prfm	PLDL3KEEP, [x9, x15, sxtx #2]
	sysl	x7, #1, C16, C30, #1
	sysl	x7, #1, C15, C77, #1
	sysl	x7, #1, x15, C1, #1
	add	x0, xzr, x7, uxtx #5
	mov	x0, ##5
	bad expression
	mockup-op
	orr	x0. x0, #0xff, lsl #1
	movk	x1, #:abs_g1_s:s12
	movz	x1, #:abs_g1_s:s12, lsl #16
	prfm	pldl3strm, [sp, w0, sxtw #3]!
	prfm	0x2f, LABEL1
	dmb	#16
	tbz	w0, #40, 0x17c
	st2	{v4.2d, v5.2d, v6.2d}, [x3]
	ld2	{v1.4h, v0.4h}, [x1]
	isb	osh
	st2	{v4.2d, v5.2d, v6.2d}, \[x3\]
	ldnp	w7, w15, [x3, #3]
	stnp	x7, x15, [x3, #32]!
	ldnp	w7, w15, [x3, #256]
	movi	v1.2d, 4294967295, lsl #0
	movi	v1.8b, 97, lsl #8
	msr	dummy, x1
	fmov	s0, 0x42000000
	ldp	x0, x1, [x2, #4]
	ldp	x0, x1, [x2, #4]!
	ldp	x0, x1, [x2], #4
	stp	w0, w1, [x2, #3]
	stp	w0, w1, [x2, #2]!
	stp	w0, w1, [x2], #1
	cinc	w0, w1, al
	cinc	w0, w1, nv
	cset	w0, al
	cset	w0, nv

	# test diagnostic info on optional operand

	ret	kk
	clrex	x0
	clrex	w0
	clrex	kk
	sys	#0, c0, c0, #0, kk
	sys	#0, c0, c0, #0,

	casp w0,w1,w2,w3,[x4]

	# test warning of unpredictable load pairs
	ldp     x0, x0, [sp]
	ldp     d0, d0, [sp]
	ldp     x0, x0, [sp], #16
	ldnp    x0, x0, [sp]

	# test warning of unpredictable writeback
	ldr	x0, [x0, #8]!
	str	x0, [x0, #8]!
	str	x1, [x1], #8
	stp	x0, x1, [x0, #16]!
	ldp	x0, x1, [x1], #16
	adr	x2, :got:s1
	ldr	x0, [x0, :got:s1]

	# Test error of 32-bit base reg
	ldr	x1, [wsp, #8]!
	ldp	x6, x29, [w7, #8]!
	str	x30, [w11, #8]!
	stp	x8, x27, [wsp, #8]!

	# Test various valid load/store reg combination.
	# especially we shouldn't warn on xzr, although
	# xzr is with the same encoding 31 as sp.
	.macro ldst_pair_wb_2 op, reg1, reg2
	.irp base x3, x6, x25, sp
	\op	\reg1, \reg2, [\base], #16
	\op	\reg1, \reg2, [\base, #32]!
	\op	\reg2, \reg1, [\base], #32
	\op	\reg2, \reg1, [\base, #16]!
	.endr
	.endm

	.macro ldst_pair_wb_1 op, reg1, width
	.irp reg2 0, 14, 21, 23, 29
	ldst_pair_wb_2	\op, \reg1, \width\reg2
	.endr
	.endm

	.macro ldst_pair_wb_64 op
	.irp	reg1 x2, x15, x16, x27, x30, xzr
	ldst_pair_wb_1	\op, \reg1, x
	.endr
	.endm

	.macro ldst_pair_wb_32 op
	.irp	reg1 w1, w12, w16, w19, w30, wzr
	ldst_pair_wb_1	\op, \reg1, w
	.endr
	.endm

	.macro ldst_single_wb_1 op, reg
	.irp	base x1, x4, x13, x26, sp
	\op	\reg, [\base], #16
	.endr
	.endm

	.macro ldst_single_wb_32 op
	.irp reg w0, w3, w12, w21, w28, w30, wzr
	ldst_single_wb_1	\op, \reg
	.endr
	.endm

	.macro ldst_single_wb_64 op
	.irp reg x2, x5, x17, x23, x24, x30, xzr
	ldst_single_wb_1	\op, \reg
	.endr
	.endm

	ldst_pair_wb_32	stp
	ldst_pair_wb_64 stp

	ldst_pair_wb_32	ldp
	ldst_pair_wb_64 ldp

	ldst_pair_wb_64	ldpsw

	ldst_single_wb_32 str
	ldst_single_wb_64 str

	ldst_single_wb_32 strb

	ldst_single_wb_32 strh

	ldst_single_wb_32 ldr
	ldst_single_wb_64 ldr

	ldst_single_wb_32 ldrb

	ldst_single_wb_32 ldrh

	ldst_single_wb_32 ldrsb
	ldst_single_wb_64 ldrsb

	ldst_single_wb_32 ldrsh
	ldst_single_wb_64 ldrsh

	ldst_single_wb_64 ldrsw

	dup	v0.2d, v1.2d[-1]
	dup	v0.2d, v1.2d[0]
	dup	v0.2d, v1.2d[1]
	dup	v0.2d, v1.2d[2]
	dup	v0.2d, v1.2d[64]

	dup	v0.4s, v1.4s[-1]
	dup	v0.4s, v1.4s[0]
	dup	v0.4s, v1.4s[3]
	dup	v0.4s, v1.4s[4]
	dup	v0.4s, v1.4s[65]

	dup	v0.8h, v1.8h[-1]
	dup	v0.8h, v1.8h[0]
	dup	v0.8h, v1.8h[7]
	dup	v0.8h, v1.8h[8]
	dup	v0.8h, v1.8h[66]

	dup	v0.16b, v1.16b[-1]
	dup	v0.16b, v1.16b[0]
	dup	v0.16b, v1.16b[15]
	dup	v0.16b, v1.16b[16]
	dup	v0.16b, v1.16b[67]

	ld2	{v0.d, v1.d}[-1], [x0]
	ld2	{v0.d, v1.d}[0], [x0]
	ld2	{v0.d, v1.d}[1], [x0]
	ld2	{v0.d, v1.d}[2], [x0]
	ld2	{v0.d, v1.d}[64], [x0]

	ld2	{v0.s, v1.s}[-1], [x0]
	ld2	{v0.s, v1.s}[0], [x0]
	ld2	{v0.s, v1.s}[3], [x0]
	ld2	{v0.s, v1.s}[4], [x0]
	ld2	{v0.s, v1.s}[65], [x0]

	ld2	{v0.h, v1.h}[-1], [x0]
	ld2	{v0.h, v1.h}[0], [x0]
	ld2	{v0.h, v1.h}[7], [x0]
	ld2	{v0.h, v1.h}[8], [x0]
	ld2	{v0.h, v1.h}[66], [x0]

	ld2	{v0.b, v1.b}[-1], [x0]
	ld2	{v0.b, v1.b}[0], [x0]
	ld2	{v0.b, v1.b}[15], [x0]
	ld2	{v0.b, v1.b}[16], [x0]
	ld2	{v0.b, v1.b}[67], [x0]






	st2	{v0.4s, v1.4s}, [sp], xzr
	str	x1, [x2, sp]

	ldr	x0, [x1, #:lo12:foo] // OK
	ldnp	x1, x2, [x3, #:lo12:foo]
	ld1	{v0.4s}, [x3, #:lo12:foo]
	stuminl x0, [x3, #:lo12:foo]
	prfum	pldl1keep, [x3, #:lo12:foo]

	ldr	x0, [x3], x4
	ldnp	x1, x2, [x3], x4
	ld1	{v0.4s}, [x3], x4 // OK
	stuminl x0, [x3], x4
	prfum	pldl1keep, [x3], x4

	ldr	x0, [x1, #1, mul vl]
	ldr	x0, [x1, x2, mul vl]
	ldr	x0, [x1, x2, mul #1]
	ldr	x0, [x1, x2, mul #4]

	strb	w7, [x30, x0, mul]
	strb	w7, [x30, x0, mul #1]
	strb	w7, [x30, w0, mul]
	strb	w7, [x30, w0, mul #2]

	adds	x1, sp, 1, mul #1
	adds	x1, sp, 2, mul #255
	adds	x1, sp, 3, mul #256
	orr	x0, x0, #0xff, mul #1
	orr	x0, x0, #0xfe, mul #255
	orr	x0, x0, #0xfc, mul #256

	ip0 	.req 	x0
	ip1	.req 	x1
	lr	.req 	x2
	fp	.req 	x3

	stlxrb 	w26, w26, [x0]
	stlxrh	w26, w26, [x1]
	stlxr 	w26, w26, [x2]
	stlxrb 	w26, w27, [x26]
	stlxrh	w26, w27, [x26]
	stlxr 	w26, w27, [x26]
	stlxr 	w26, x27, [x26]
	stlxr	w26, x26, [x3]
	ldxp	x26, x26, [x5]
	ldxp	x26, x1, [x26]
