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