xref: /csrg-svn/sys/tahoe/inline/machpats.c (revision 24037)
1*24037Ssam /*
2*24037Ssam  * Copyright (c) 1984 Regents of the University of California.
3*24037Ssam  * All rights reserved.  The Berkeley software License Agreement
4*24037Ssam  * specifies the terms and conditions for redistribution.
5*24037Ssam  */
6*24037Ssam 
7*24037Ssam #ifndef lint
8*24037Ssam static char sccsid[] = "@(#)machpats.c	1.4 (Berkeley) 6/8/85";
9*24037Ssam #endif not lint
10*24037Ssam 
11*24037Ssam #include "inline.h"
12*24037Ssam 
13*24037Ssam /*
14*24037Ssam  * Pattern table for special VAX instructions.
15*24037Ssam  */
16*24037Ssam struct pats machine_ptab[] = {
17*24037Ssam 
18*24037Ssam #ifdef vax
19*24037Ssam 	{ "3,_blkcpy\n",
20*24037Ssam "	movl	(sp)+,r1\n\
21*24037Ssam 	movl	(sp)+,r3\n\
22*24037Ssam 	jbr	2f\n\
23*24037Ssam 1:\n\
24*24037Ssam 	subl2	r0,(sp)\n\
25*24037Ssam 	movc3	r0,(r1),(r3)\n\
26*24037Ssam 2:\n\
27*24037Ssam 	movzwl	$65535,r0\n\
28*24037Ssam 	cmpl	(sp),r0\n\
29*24037Ssam 	jgtr	1b\n\
30*24037Ssam 	movl	(sp)+,r0\n\
31*24037Ssam 	movc3	r0,(r1),(r3)\n" },
32*24037Ssam 
33*24037Ssam 	{ "3,_bcopy\n",
34*24037Ssam "	movl	(sp)+,r1\n\
35*24037Ssam 	movl	(sp)+,r3\n\
36*24037Ssam 	movl	(sp)+,r5\n\
37*24037Ssam 	movc3	r5,(r1),(r3)\n" },
38*24037Ssam 
39*24037Ssam 	{ "3,_ovbcopy\n",
40*24037Ssam "	movl	(sp)+,r3\n\
41*24037Ssam 	movl	(sp)+,r4\n\
42*24037Ssam 	movl	(sp)+,r5\n\
43*24037Ssam 	movc3	r5,(r3),(r4)\n" },
44*24037Ssam 
45*24037Ssam 	{ "3,_blkcmp\n",
46*24037Ssam "	movl	(sp)+,r1\n\
47*24037Ssam 	movl	(sp)+,r3\n\
48*24037Ssam 	jbr	2f\n\
49*24037Ssam 1:\n\
50*24037Ssam 	subl2	r0,(sp)\n\
51*24037Ssam 	cmpc3	r0,(r1),(r3)\n\
52*24037Ssam 	bneq	3f\n\
53*24037Ssam 2:\n\
54*24037Ssam 	movzwl	$65535,r0\n\
55*24037Ssam 	cmpl	(sp),r0\n\
56*24037Ssam 	jgtr	1b\n\
57*24037Ssam 	movl	(sp)+,r0\n\
58*24037Ssam 	cmpc3	r0,(r1),(r3)\n\
59*24037Ssam 3:\n" },
60*24037Ssam 
61*24037Ssam 	{ "3,_bcmp\n",
62*24037Ssam "	movl	(sp)+,r1\n\
63*24037Ssam 	movl	(sp)+,r3\n\
64*24037Ssam 	movl	(sp)+,r5\n\
65*24037Ssam 	cmpc3	r5,(r1),(r3)\n" },
66*24037Ssam 
67*24037Ssam 	{ "2,_blkclr\n",
68*24037Ssam "	movl	(sp)+,r3\n\
69*24037Ssam 	jbr	2f\n\
70*24037Ssam 1:\n\
71*24037Ssam 	subl2	r0,(sp)\n\
72*24037Ssam 	movc5	$0,(r3),$0,r0,(r3)\n\
73*24037Ssam 2:\n\
74*24037Ssam 	movzwl	$65535,r0\n\
75*24037Ssam 	cmpl	(sp),r0\n\
76*24037Ssam 	jgtr	1b\n\
77*24037Ssam 	movl	(sp)+,r0\n\
78*24037Ssam 	movc5	$0,(r3),$0,r0,(r3)\n" },
79*24037Ssam 
80*24037Ssam 	{ "2,_bzero\n",
81*24037Ssam "	movl	(sp)+,r3\n\
82*24037Ssam 	movl	(sp)+,r5\n\
83*24037Ssam 	movc5	$0,(r3),$0,r5,(r3)\n" },
84*24037Ssam 
85*24037Ssam 	{ "3,_llocc\n",
86*24037Ssam "	movl	(sp)+,r4\n\
87*24037Ssam 	movl	(sp)+,r5\n\
88*24037Ssam 	movl	(sp)+,r1\n\
89*24037Ssam 1:\n\
90*24037Ssam 	movzwl	$65535,r0\n\
91*24037Ssam 	cmpl	r5,r0\n\
92*24037Ssam 	jleq	1f\n\
93*24037Ssam 	subl2	r0,r5\n\
94*24037Ssam 	locc	r4,r0,(r1)\n\
95*24037Ssam 	jeql	1b\n\
96*24037Ssam 	addl2	r5,r0\n\
97*24037Ssam 	jbr	2f\n\
98*24037Ssam 1:\n\
99*24037Ssam 	locc	r4,r5,(r1)\n\
100*24037Ssam 2:\n" },
101*24037Ssam 
102*24037Ssam 	{ "3,_locc\n",
103*24037Ssam "	movl	(sp)+,r3\n\
104*24037Ssam 	movl	(sp)+,r4\n\
105*24037Ssam 	movl	(sp)+,r5\n\
106*24037Ssam 	locc	r3,r4,(r5)\n" },
107*24037Ssam 
108*24037Ssam 	{ "4,_scanc\n",
109*24037Ssam "	movl	(sp)+,r2\n\
110*24037Ssam 	movl	(sp)+,r3\n\
111*24037Ssam 	movl	(sp)+,r4\n\
112*24037Ssam 	movl	(sp)+,r5\n\
113*24037Ssam 	scanc	r2,(r3),(r4),r5\n" },
114*24037Ssam 
115*24037Ssam 	{ "3,_skpc\n",
116*24037Ssam "	movl	(sp)+,r3\n\
117*24037Ssam 	movl	(sp)+,r4\n\
118*24037Ssam 	movl	(sp)+,r5\n\
119*24037Ssam 	skpc	r3,r4,(r5)\n" },
120*24037Ssam 
121*24037Ssam 	{ "2,_insque\n",
122*24037Ssam "	movl	(sp)+,r4\n\
123*24037Ssam 	movl	(sp)+,r5\n\
124*24037Ssam 	insque	(r4),(r5)\n" },
125*24037Ssam 
126*24037Ssam 	{ "1,_remque\n",
127*24037Ssam "	movl	(sp)+,r5\n\
128*24037Ssam 	remque	(r5),r0\n" },
129*24037Ssam #endif vax
130*24037Ssam 
131*24037Ssam #ifdef mc68000
132*24037Ssam /* someday... */
133*24037Ssam #endif mc68000
134*24037Ssam 
135*24037Ssam 	{ "", "" }
136*24037Ssam };
137