@	Test file for ARM/GAS -- basic instructions

.text
.align
	mov	r0, #0
	mov	r1, r2
	mov	r3, r4, lsl #3
	mov	r5, r6, lsr r7
	mov	r8, r9, asr r10
	mov	r11, r12, asl r13
	mov	r14, r15, rrx
	moval	r1, r2
	moveq	r2, r3
	movne	r4, r5
	movlt	r6, r7
	movge	r8, r9
	movle	r10, r11
	movgt	r12, r13
	movcc	r1, r2
	movcs	r1, r3
	movmi	r3, r6
	movpl	r7, r9
	movvs	r1, r8
	movvc	r9, r1, lsr #31
	movhi	r8, r15
	movls	r15, r14
	movhs	r9, r8
	movul	r1, r3
	movs	r0, r8
	movuls	r0, r7
	
	add	r0, r1, #10
	add	r2, r3, r4
	add	r5, r6, r7, asl #5
	add	r1, r2, r3, lsl r1

	and	r0, r1, #10
	and	r2, r3, r4
	and	r5, r6, r7, asl #5
	and	r1, r2, r3, lsl r1

	eor	r0, r1, #10
	eor	r2, r3, r4
	eor	r5, r6, r7, asl #5
	eor	r1, r2, r3, lsl r1

	sub	r0, r1, #10
	sub	r2, r3, r4
	sub	r5, r6, r7, asl #5
	sub	r1, r2, r3, lsl r1

	adc	r0, r1, #10
	adc	r2, r3, r4
	adc	r5, r6, r7, asl #5
	adc	r1, r2, r3, lsl r1

	sbc	r0, r1, #10
	sbc	r2, r3, r4
	sbc	r5, r6, r7, asl #5
	sbc	r1, r2, r3, lsl r1

	rsb	r0, r1, #10
	rsb	r2, r3, r4
	rsb	r5, r6, r7, asl #5
	rsb	r1, r2, r3, lsl r1

	rsc	r0, r1, #10
	rsc	r2, r3, r4
	rsc	r5, r6, r7, asl #5
	rsc	r1, r2, r3, lsl r1

	orr	r0, r1, #10
	orr	r2, r3, r4
	orr	r5, r6, r7, asl #5
	orr	r1, r2, r3, lsl r1

	bic	r0, r1, #10
	bic	r2, r3, r4
	bic	r5, r6, r7, asl #5
	bic	r1, r2, r3, lsl r1

	mvn	r0, #10
	mvn	r2, r4
	mvn	r5, r7, asl #5
	mvn	r1, r3, lsl r1

	tst	r0, #10
	tst	r2, r4
	tst	r5, r7, asl #5
	tst	r1, r3, lsl r1

	teq	r0, #10
	teq	r2, r4
	teq	r5, r7, asl #5
	teq	r1, r3, lsl r1

	cmp	r0, #10
	cmp	r2, r4
	cmp	r5, r7, asl #5
	cmp	r1, r3, lsl r1

	cmn	r0, #10
	cmn	r2, r4
	cmn	r5, r7, asl #5
	cmn	r1, r3, lsl r1

	teqp	r0, #10
	teqp	r2, r4
	teqp	r5, r7, asl #5
	teqp	r1, r3, lsl r1

	cmnp	r0, #10
	cmnp	r2, r4
	cmnp	r5, r7, asl #5
	cmnp	r1, r3, lsl r1

	cmpp	r0, #10
	cmpp	r2, r4
	cmpp	r5, r7, asl #5
	cmpp	r1, r3, lsl r1

	tstp	r0, #10
	tstp	r2, r4
	tstp	r5, r7, asl #5
	tstp	r1, r3, lsl r1

	mul	r0, r1, r2
	muls	r1, r2, r3
	mulne	r0, r1, r0
	mullss	r9, r8, r7

	mla	r1, r9, r10, r11
	mlas	r3, r4, r9, r12
	mlalt	r9, r8, r7, r13
	mlages	r4, r1, r3, r14

	ldr	r0, [r1]
	ldr	r1, [r1, r2]
	ldr	r2, [r3, r4]!
	ldr	r2, [r2, #32]
	ldr	r2, [r3, r4, lsr #8]
	ldreq	r4, [r5, r4, asl #9]!
	ldrne	r4, [r5], #6
	ldrt	r1, [r2], r3
	ldr	r2, [r4], r5, lsr #8
foo:
	ldr	r0, foo
	ldrb	r3, [r4]
	ldrnebt	r5, [r8]
	
	str	r0, [r1]
	str	r1, [r1, r2]
	str	r3, [r3, r4]!
	str	r2, [r2, #32]
	str	r2, [r3, r4, lsr #8]
	streq	r4, [r5, r4, asl #9]!
	strne	r4, [r5], #6
	str	r1, [r2], r3
	strt	r2, [r4], r5, lsr #8
	str	r1, bar
bar:
	stralb	r1, [r7]
	strbt	r2, [r0]

	ldmia	r0, {r1}
	ldmeqib	r2, {r3, r4, r5}
	ldmalda	r3, {r0-r15}^
	ldmdb	r11!, {r0-r8, r10}
	ldmed	r1, {r0, r1, r2}|0xf0
	ldmfd	r2, {r3, r4}+{r5, r6, r7, r8}
	ldmea	r3, 3
	ldmfa	r4!, {r8, r9}^
	
	stmia	r0, {r1}
	stmeqib	r2, {r3, r4, r5}
	stmalda	r3, {r0-r15}^
	stmdb	r10!, {r0-r8, r10}
	stmed	r1, {r0, r1, r2}
	stmfd	r2, {r3, r4}
	stmea	r3, 3
	stmfa	r4!, {r8, r9}^

	swi	0x123456
	swihs	0x33

	bl	_wombat
	blpl	bar
	b	_wibble
	ble	testerfunc
