xref: /csrg-svn/sys/vax/inline/machpats.c (revision 49438)
1*49438Sbostic /*-
2*49438Sbostic  * Copyright (c) 1984, 1986 The Regents of the University of California.
3*49438Sbostic  * All rights reserved.
4*49438Sbostic  *
5*49438Sbostic  * %sccs.include.redist.c%
623348Smckusick  */
716961Smckusick 
816961Smckusick #ifndef lint
9*49438Sbostic static char sccsid[] = "@(#)machpats.c	7.4 (Berkeley) 05/08/91";
10*49438Sbostic #endif /* not lint */
1116961Smckusick 
1216963Smckusick #include "inline.h"
1316961Smckusick 
1416961Smckusick /*
1516961Smckusick  * Pattern table for special VAX instructions.
1616961Smckusick  */
1716961Smckusick struct pats machine_ptab[] = {
1816961Smckusick 
1916961Smckusick #ifdef vax
2024382Smckusick 	{ 3, "_blkcpy\n",
2116961Smckusick "	movl	(sp)+,r1\n\
2216961Smckusick 	movl	(sp)+,r3\n\
2316961Smckusick 	jbr	2f\n\
2416961Smckusick 1:\n\
2516961Smckusick 	subl2	r0,(sp)\n\
2616961Smckusick 	movc3	r0,(r1),(r3)\n\
2716961Smckusick 2:\n\
2816961Smckusick 	movzwl	$65535,r0\n\
2916961Smckusick 	cmpl	(sp),r0\n\
3016961Smckusick 	jgtr	1b\n\
3116961Smckusick 	movl	(sp)+,r0\n\
3216961Smckusick 	movc3	r0,(r1),(r3)\n" },
3316961Smckusick 
3424382Smckusick 	{ 3, "_bcopy\n",
3516961Smckusick "	movl	(sp)+,r1\n\
3616961Smckusick 	movl	(sp)+,r3\n\
3716961Smckusick 	movl	(sp)+,r5\n\
3816961Smckusick 	movc3	r5,(r1),(r3)\n" },
3916961Smckusick 
4024382Smckusick 	{ 3, "_ovbcopy\n",
4116961Smckusick "	movl	(sp)+,r3\n\
4216961Smckusick 	movl	(sp)+,r4\n\
4316961Smckusick 	movl	(sp)+,r5\n\
4416961Smckusick 	movc3	r5,(r3),(r4)\n" },
4516961Smckusick 
4627462Skarels 	{ 2, "_blkclr\n",
4727462Skarels "	movl	(sp)+,r3\n\
4827462Skarels 	jbr	2f\n\
4927462Skarels 1:\n\
5027462Skarels 	subl2	r0,(sp)\n\
5127462Skarels 	movc5	$0,(r3),$0,r0,(r3)\n\
5227462Skarels 2:\n\
5327462Skarels 	movzwl	$65535,r0\n\
5427462Skarels 	cmpl	(sp),r0\n\
5527462Skarels 	jgtr	1b\n\
5627462Skarels 	movl	(sp)+,r0\n\
5727462Skarels 	movc5	$0,(r3),$0,r0,(r3)\n" },
5827462Skarels 
5927462Skarels 	{ 2, "_bzero\n",
6027462Skarels "	movl	(sp)+,r3\n\
6127462Skarels 	movl	(sp)+,r5\n\
6227462Skarels 	movc5	$0,(r3),$0,r5,(r3)\n" },
6327462Skarels 
6427462Skarels 	{ 2, "_insque\n",
6527462Skarels "	movl	(sp)+,r4\n\
6627462Skarels 	movl	(sp)+,r5\n\
6727462Skarels 	insque	(r4),(r5)\n" },
6827462Skarels 
6927462Skarels 	{ 1, "_remque\n",
7027462Skarels "	movl	(sp)+,r5\n\
7127462Skarels 	remque	(r5),r0\n" },
7227462Skarels #endif vax
7327462Skarels 
7427462Skarels #ifdef mc68000
7527462Skarels /* someday... */
7627462Skarels #endif mc68000
7727462Skarels 
7827462Skarels 	{ 0, "", "" }
7927462Skarels };
8027462Skarels 
8127462Skarels #ifdef vax
8227462Skarels 
8327462Skarels struct pats vax_ptab[] = {
8427462Skarels 
8524382Smckusick 	{ 3, "_blkcmp\n",
8616961Smckusick "	movl	(sp)+,r1\n\
8716961Smckusick 	movl	(sp)+,r3\n\
8816961Smckusick 	jbr	2f\n\
8916961Smckusick 1:\n\
9016961Smckusick 	subl2	r0,(sp)\n\
9116961Smckusick 	cmpc3	r0,(r1),(r3)\n\
9216961Smckusick 	bneq	3f\n\
9316961Smckusick 2:\n\
9416961Smckusick 	movzwl	$65535,r0\n\
9516961Smckusick 	cmpl	(sp),r0\n\
9616961Smckusick 	jgtr	1b\n\
9716961Smckusick 	movl	(sp)+,r0\n\
9816961Smckusick 	cmpc3	r0,(r1),(r3)\n\
9916961Smckusick 3:\n" },
10016961Smckusick 
10124382Smckusick 	{ 3, "_bcmp\n",
10216961Smckusick "	movl	(sp)+,r1\n\
10316961Smckusick 	movl	(sp)+,r3\n\
10416961Smckusick 	movl	(sp)+,r5\n\
10516961Smckusick 	cmpc3	r5,(r1),(r3)\n" },
10616961Smckusick 
10724382Smckusick 	{ 3, "_llocc\n",
10816961Smckusick "	movl	(sp)+,r4\n\
10916961Smckusick 	movl	(sp)+,r5\n\
11016961Smckusick 	movl	(sp)+,r1\n\
11116961Smckusick 1:\n\
11216961Smckusick 	movzwl	$65535,r0\n\
11316961Smckusick 	cmpl	r5,r0\n\
11416961Smckusick 	jleq	1f\n\
11516961Smckusick 	subl2	r0,r5\n\
11616961Smckusick 	locc	r4,r0,(r1)\n\
11716961Smckusick 	jeql	1b\n\
11816961Smckusick 	addl2	r5,r0\n\
11916961Smckusick 	jbr	2f\n\
12016961Smckusick 1:\n\
12116961Smckusick 	locc	r4,r5,(r1)\n\
12216961Smckusick 2:\n" },
12316961Smckusick 
12424382Smckusick 	{ 3, "_locc\n",
12516961Smckusick "	movl	(sp)+,r3\n\
12616961Smckusick 	movl	(sp)+,r4\n\
12716961Smckusick 	movl	(sp)+,r5\n\
12816961Smckusick 	locc	r3,r4,(r5)\n" },
12916961Smckusick 
13024382Smckusick 	{ 4, "_scanc\n",
13116961Smckusick "	movl	(sp)+,r2\n\
13216961Smckusick 	movl	(sp)+,r3\n\
13316961Smckusick 	movl	(sp)+,r4\n\
13416961Smckusick 	movl	(sp)+,r5\n\
13516961Smckusick 	scanc	r2,(r3),(r4),r5\n" },
13616961Smckusick 
13724382Smckusick 	{ 3, "_skpc\n",
13816961Smckusick "	movl	(sp)+,r3\n\
13916961Smckusick 	movl	(sp)+,r4\n\
14016961Smckusick 	movl	(sp)+,r5\n\
14116961Smckusick 	skpc	r3,r4,(r5)\n" },
14216961Smckusick 
14327462Skarels 	{ 0, "", "" }
14427462Skarels };
14527462Skarels 
14627462Skarels struct pats vaxsubset_ptab[] = {
14727462Skarels 
14827462Skarels 	{ 3, "_blkcmp\n",
14927462Skarels "	movl	(sp)+,r1\n\
15027462Skarels 	movl	(sp)+,r3\n\
15127462Skarels 	movl	(sp)+,r0\n\
15227462Skarels 2:\n\
15327462Skarels 	cmpb	(r1)+,(r3)+\n\
15427462Skarels 	jneq	3f\n\
15527462Skarels 	sobgtr	r0,2b\n\
15627462Skarels 3:\n" },
15727462Skarels 
15827462Skarels 	{ 3, "_bcmp\n",
15927462Skarels "	movl	(sp)+,r1\n\
16027462Skarels 	movl	(sp)+,r3\n\
16139207Ssklower 	movl	(sp)+,r0\n\
16239663Smckusick 	tstl	r0\n\
16339207Ssklower 	jeql	1f\n\
16427462Skarels 2:\n\
16527462Skarels 	cmpb	(r1)+,(r3)+\n\
16627462Skarels 	jneq	1f\n\
16727462Skarels 	sobgtr	r0,2b\n\
16827462Skarels 1:\n" },
16927462Skarels 
17027462Skarels 	{ 3, "_llocc\n",
17116961Smckusick "	movl	(sp)+,r4\n\
17239207Ssklower 	movl	(sp)+,r0\n\
17339663Smckusick 	tstl	r0\n\
17439207Ssklower 	jeql	1f\n\
17527462Skarels 	movl	(sp)+,r1\n\
17627462Skarels 2:\n\
17727462Skarels 	cmpb	r4,(r1)+\n\
17827462Skarels 	jeql	1f\n\
17927462Skarels 	sobgtr	r0,2b\n\
18027462Skarels 1:\n" },
18116961Smckusick 
18227462Skarels 	{ 3, "_locc\n",
18327462Skarels "	movl	(sp)+,r3\n\
18439207Ssklower 	movl	(sp)+,r0\n\
18539663Smckusick 	tstl	r0\n\
18639207Ssklower 	jeql	1f\n\
18727462Skarels 	movl	(sp)+,r5\n\
18827462Skarels 2:\n\
18927462Skarels 	cmpb	r3,(r5)+\n\
19027462Skarels 	jeql	1f\n\
19127462Skarels 	sobgtr	r0,2b\n\
19227462Skarels 1:\n" },
19316961Smckusick 
19427462Skarels 	{ 3, "_skpc\n",
19527462Skarels "	movl	(sp)+,r3\n\
19639207Ssklower 	movl	(sp)+,r0\n\
19739663Smckusick 	tstl	r0\n\
19839207Ssklower 	jeql	1f\n\
19927462Skarels 	movl	(sp)+,r5\n\
20027462Skarels 2:\n\
20127462Skarels 	cmpb	r3,(r5)+\n\
20227462Skarels 	jneq	1f\n\
20327462Skarels 	sobgtr	r0,2b\n\
20427462Skarels 1:\n" },
20516961Smckusick 
20624382Smckusick 	{ 0, "", "" }
20716961Smckusick };
20827462Skarels #endif
209