# source file to test assembly of MIPS DSP ASE for MIPS32 instructions

	.set noreorder
	.set noat

	.text
text_label:

	addq.ph		$0,$1,$2
	addq_s.ph	$1,$2,$3
	addq_s.w	$2,$3,$4
	addu.qb		$3,$4,$5
	addu_s.qb	$4,$5,$6
	subq.ph		$5,$6,$7
	subq_s.ph	$6,$7,$8
	subq_s.w	$7,$8,$9
	subu.qb		$8,$9,$10
	subu_s.qb	$9,$10,$11
	addsc		$10,$11,$12
	addwc		$11,$12,$13
	modsub		$12,$13,$14
	raddu.w.qb	$13,$14
	absq_s.ph	$14,$15
	absq_s.w	$15,$16
	precrq.qb.ph	$16,$17,$18
	precrq.ph.w	$17,$18,$19
	precrq_rs.ph.w	$18,$19,$20
	precrqu_s.qb.ph	$19,$20,$21
	preceq.w.phl	$20,$21
	preceq.w.phr	$21,$22
	precequ.ph.qbl	$22,$23
	precequ.ph.qbr	$23,$24
	precequ.ph.qbla	$24,$25
	precequ.ph.qbra	$25,$26
	preceu.ph.qbl	$26,$27
	preceu.ph.qbr	$27,$28
	preceu.ph.qbla	$28,$29
	preceu.ph.qbra	$29,$30
	shll.qb		$30,$31,-1
	shll.qb		$30,$31,0
	shll.qb		$30,$31,7
	shll.qb		$30,$31,8
	shllv.qb	$31,$0,$1
	shll.ph		$0,$1,-1
	shll.ph		$0,$1,0
	shll.ph		$0,$1,15
	shll.ph		$0,$1,16
	shllv.ph	$1,$2,$3
	shll_s.ph	$2,$3,-1
	shll_s.ph	$2,$3,0
	shll_s.ph	$2,$3,15
	shll_s.ph	$2,$3,16
	shllv_s.ph	$3,$4,$5
	shll_s.w	$4,$5,-1
	shll_s.w	$4,$5,0
	shll_s.w	$4,$5,31
	shll_s.w	$4,$5,32
	shllv_s.w	$5,$6,$7
	shrl.qb		$6,$7,-1
	shrl.qb		$6,$7,0
	shrl.qb		$6,$7,7
	shrl.qb		$6,$7,8
	shrlv.qb	$7,$8,$9
	shra.ph		$8,$9,-1
	shra.ph		$8,$9,0
	shra.ph		$8,$9,15
	shra.ph		$8,$9,16
	shrav.ph	$9,$10,$11
	shra_r.ph	$10,$11,-1
	shra_r.ph	$10,$11,0
	shra_r.ph	$10,$11,15
	shra_r.ph	$10,$11,16
	shrav_r.ph	$11,$12,$13
	shra_r.w	$12,$13,-1
	shra_r.w	$12,$13,0
	shra_r.w	$12,$13,31
	shra_r.w	$12,$13,32
	shrav_r.w	$13,$14,$15
	muleu_s.ph.qbl	$14,$15,$16
	muleu_s.ph.qbr	$15,$16,$17
	mulq_rs.ph	$16,$17,$18
	muleq_s.w.phl	$17,$18,$19
	muleq_s.w.phr	$18,$19,$20
	dpau.h.qbl	$ac0,$19,$20
	dpau.h.qbr	$ac1,$20,$21
	dpsu.h.qbl	$ac2,$21,$22
	dpsu.h.qbr	$ac3,$22,$23
	dpaq_s.w.ph	$ac0,$23,$24
	dpsq_s.w.ph	$ac1,$24,$25
	mulsaq_s.w.ph	$ac2,$25,$26
	dpaq_sa.l.w	$ac3,$26,$27
	dpsq_sa.l.w	$ac0,$27,$28
	maq_s.w.phl	$ac1,$28,$29
	maq_s.w.phr	$ac2,$29,$30
	maq_sa.w.phl	$ac3,$30,$31
	maq_sa.w.phr	$ac0,$31,$0
	bitrev		$0,$1
	insv		$1,$2
	repl.qb		$2,-1
	repl.qb		$2,0
	repl.qb		$2,255
	repl.qb		$2,256
	replv.qb	$3,$4
	repl.ph		$4,-513
	repl.ph		$4,-512
	repl.ph		$4,511
	repl.ph		$4,512
	replv.ph	$5,$6
	cmpu.eq.qb	$6,$7
	cmpu.lt.qb	$7,$8
	cmpu.le.qb	$8,$9
	cmpgu.eq.qb	$9,$10,$11
	cmpgu.lt.qb	$10,$11,$12
	cmpgu.le.qb	$11,$12,$13
	cmp.eq.ph	$12,$13
	cmp.lt.ph	$13,$14
	cmp.le.ph	$14,$15
	pick.qb		$15,$16,$17
	pick.ph		$16,$17,$18
	packrl.ph	$17,$18,$19
	extr.w		$18,$ac1,-1
	extr.w		$18,$ac1,0
	extr.w		$18,$ac1,31
	extr.w		$18,$ac1,32
	extr_r.w	$19,$ac2,-1
	extr_r.w	$19,$ac2,0
	extr_r.w	$19,$ac2,31
	extr_r.w	$19,$ac2,32
	extr_rs.w	$20,$ac3,-1
	extr_rs.w	$20,$ac3,0
	extr_rs.w	$20,$ac3,31
	extr_rs.w	$20,$ac3,32
	extr_s.h	$21,$ac0,-1
	extr_s.h	$21,$ac0,0
	extr_s.h	$21,$ac0,31
	extr_s.h	$21,$ac0,32
	extrv_s.h	$22,$ac1,$23
	extrv.w		$23,$ac2,$24
	extrv_r.w	$24,$ac3,$25
	extrv_rs.w	$25,$ac0,$26
	extp		$26,$ac1,-1
	extp		$26,$ac1,0
	extp		$26,$ac1,31
	extp		$26,$ac1,32
	extpv		$27,$ac2,$28
	extpdp		$28,$ac3,-1
	extpdp		$28,$ac3,0
	extpdp		$28,$ac3,31
	extpdp		$28,$ac3,32
	extpdpv		$29,$ac0,$30
	shilo		$ac1,-33
	shilo		$ac1,-32
	shilo		$ac1,31
	shilo		$ac1,32
	shilov		$ac2,$30
	mthlip		$31,$ac3
	mfhi		$0,$ac0
	mflo		$1,$ac1
	mthi		$2,$ac2
	mtlo		$3,$ac3
	wrdsp		$4,-1
	wrdsp		$4,0
	wrdsp		$4,63
	wrdsp		$4,64
	wrdsp		$5
	rddsp		$6,-1
	rddsp		$6,0
	rddsp		$6,63
	rddsp		$6,64
	rddsp		$7
	lbux		$8,$9($10)
	lhx		$9,$10($11)
	lwx		$10,$11($12)
	bposge32	text_label
	nop

# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
	.space	8
