# Opcode test for PDP-11.
# Copyright (C) 2002-2019 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
# MA 02110-1301, USA.

foo:	.word	0
bar:	.word	foo
	
start:	halt
start2:	wait
	rti
	bpt
	iot
	reset
	rtt
	mfpt
	jmp	(r1)+
	rts	r2
	spl	3
	nop
	clc
	clv
	clz
	cln
	ccc
	sec
	sev
	sez
	sen
	scc
	swab	pc
1:	br	1b
	bne	1b
	beq	1b
	bge	1b
	blt	1b
	bgt	1b
	ble	1b
	jsr	pc,@(sp)+
	clr	-(sp)
	com	r0
	inc	r1
	dec	r2
	neg	r3
	adc	r4
	sbc	r5
	tst	(sp)+
	ror	r5
	rol	r4
	asr	@10(r4)
	asl	4(r5)
	mark	2
	mfpi	sp
	mtpi	@$402
	sxt	r3
	csm	2(r4)
	tstset	(r3)
	wrtlck	2(r4)
	mov	r0,r1
	cmp	(r0),(r4)
	bit	(r0)+,-(r3)
	bic	foo,@bar
	bis	@(r1)+,@-(r5)
	add	4(r3),@6(r3)
	mul	$10,r2
	div	1b,r4
	ash	$3,r4
	ashc	$7,r2
	xor	r3,10(sp)
	fadd	r2
	fsub	r1
	fmul	r4
	fdiv	r0
	l2dr	r1
	movc
	movrc
	movtc
	locc
	skpc
	scanc
	spanc
	cmpc
	matc
	addn
	subn
	cmpn
	cvtnl
	cvtpn
	cvtnp
	ashn
	cvtln
	l3dr	r5
	addp
	subp
	cmpp
	cvtpl
	mulp
	divp
	ashp
	cvtlp
	movci
	movrci
	movtci
	locci
	skpci
	scanci
	spanci
	cmpci
	matci
	addni
	subni
	cmpni
	cvtnli
	cvtpni
	cvtnpi
	ashni
	cvtlni
	addpi
	subpi
	cmppi
	cvtpli
	mulpi
	divpi
	ashpi
	cvtlpi
	med
2:	xfc	42
	sob	r0,2b
	bpl	2b
	bmi	2b
	bhi	2b
	blos	2b
	bvc	2b
	bvs	2b
	bcc	2b
	bcs	2b
	emt	69
	sys	42
	clrb	(r3)
	comb	@-(r5)
	incb	@(sp)+
	decb	r3
	negb	foo
	adcb	@bar
	sbcb	-(r2)
	tstb	(r4)+
	rorb	r1
	rolb	r2
	asrb	r3
	aslb	r4
	mtps	$0340
	mfpd	sp
	mtpd	(r0)
	mfps	-(sp)
	movb	$17,foo
	cmpb	r1,(r2)
	bitb	$0117,r5
	bicb	$1,bar
	bisb	$2,@bar
	sub	r0,r5
	cfcc
	setf
	seti
	ldub
	setd
	setl
	ldfps	$1
	stfps	-(sp)
	stst	(r2)
	clrf	ac3
	tstf	ac1
	absf	ac2
	negf	ac0
	mulf	$0f0.25,ac1
	modf	ac5,ac0
	addf	foo,ac2
	ldf	@bar,ac1
	subf	ac4,ac3
	cmpf	ac5,ac2
	stf	ac1,-(sp)
	divf	$0f20.0,ac0
	stexp	ac2,r5
	stcfi	ac3,r0
	stcff	ac3,ac5
	ldexp	r0,ac2
	ldcif	r2,ac3
	ldcff	ac5,ac2

# aliases for some of these opcodes:

	l2d	r1
3:	l3d	r4
	bhis	3b
	blo	3b
	trap	99
	clrd	ac3
	tstd	ac2
	absd	ac1
	negd	ac0
	muld	ac5,ac2
	modd	ac4,ac0
	addd	ac4,ac3
	ldd	bar,ac0
	subd	foo,ac2
	cmpd	ac5,ac2
	std	ac1,(r2)
	divd	(sp)+,ac3
	stcfl	ac2,r5
	stcdi	ac3,r0
	stcdl	ac2,r4
	stcfd	ac2,ac5
	stcdf	ac1,ac4
	ldcid	r0,ac1
	ldclf	r4,ac2
	ldcld	$01234567,ac3
	ldcfd	ac5,ac2
	ldcdf	ac4,ac0
