1 /*- 2 * Copyright (c) 1984, 1986 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 */ 7 8 #ifndef lint 9 static char sccsid[] = "@(#)machpats.c 7.4 (Berkeley) 05/08/91"; 10 #endif /* not lint */ 11 12 #include "inline.h" 13 14 /* 15 * Pattern table for special VAX instructions. 16 */ 17 struct pats machine_ptab[] = { 18 19 #ifdef vax 20 { 3, "_blkcpy\n", 21 " movl (sp)+,r1\n\ 22 movl (sp)+,r3\n\ 23 jbr 2f\n\ 24 1:\n\ 25 subl2 r0,(sp)\n\ 26 movc3 r0,(r1),(r3)\n\ 27 2:\n\ 28 movzwl $65535,r0\n\ 29 cmpl (sp),r0\n\ 30 jgtr 1b\n\ 31 movl (sp)+,r0\n\ 32 movc3 r0,(r1),(r3)\n" }, 33 34 { 3, "_bcopy\n", 35 " movl (sp)+,r1\n\ 36 movl (sp)+,r3\n\ 37 movl (sp)+,r5\n\ 38 movc3 r5,(r1),(r3)\n" }, 39 40 { 3, "_ovbcopy\n", 41 " movl (sp)+,r3\n\ 42 movl (sp)+,r4\n\ 43 movl (sp)+,r5\n\ 44 movc3 r5,(r3),(r4)\n" }, 45 46 { 2, "_blkclr\n", 47 " movl (sp)+,r3\n\ 48 jbr 2f\n\ 49 1:\n\ 50 subl2 r0,(sp)\n\ 51 movc5 $0,(r3),$0,r0,(r3)\n\ 52 2:\n\ 53 movzwl $65535,r0\n\ 54 cmpl (sp),r0\n\ 55 jgtr 1b\n\ 56 movl (sp)+,r0\n\ 57 movc5 $0,(r3),$0,r0,(r3)\n" }, 58 59 { 2, "_bzero\n", 60 " movl (sp)+,r3\n\ 61 movl (sp)+,r5\n\ 62 movc5 $0,(r3),$0,r5,(r3)\n" }, 63 64 { 2, "_insque\n", 65 " movl (sp)+,r4\n\ 66 movl (sp)+,r5\n\ 67 insque (r4),(r5)\n" }, 68 69 { 1, "_remque\n", 70 " movl (sp)+,r5\n\ 71 remque (r5),r0\n" }, 72 #endif vax 73 74 #ifdef mc68000 75 /* someday... */ 76 #endif mc68000 77 78 { 0, "", "" } 79 }; 80 81 #ifdef vax 82 83 struct pats vax_ptab[] = { 84 85 { 3, "_blkcmp\n", 86 " movl (sp)+,r1\n\ 87 movl (sp)+,r3\n\ 88 jbr 2f\n\ 89 1:\n\ 90 subl2 r0,(sp)\n\ 91 cmpc3 r0,(r1),(r3)\n\ 92 bneq 3f\n\ 93 2:\n\ 94 movzwl $65535,r0\n\ 95 cmpl (sp),r0\n\ 96 jgtr 1b\n\ 97 movl (sp)+,r0\n\ 98 cmpc3 r0,(r1),(r3)\n\ 99 3:\n" }, 100 101 { 3, "_bcmp\n", 102 " movl (sp)+,r1\n\ 103 movl (sp)+,r3\n\ 104 movl (sp)+,r5\n\ 105 cmpc3 r5,(r1),(r3)\n" }, 106 107 { 3, "_llocc\n", 108 " movl (sp)+,r4\n\ 109 movl (sp)+,r5\n\ 110 movl (sp)+,r1\n\ 111 1:\n\ 112 movzwl $65535,r0\n\ 113 cmpl r5,r0\n\ 114 jleq 1f\n\ 115 subl2 r0,r5\n\ 116 locc r4,r0,(r1)\n\ 117 jeql 1b\n\ 118 addl2 r5,r0\n\ 119 jbr 2f\n\ 120 1:\n\ 121 locc r4,r5,(r1)\n\ 122 2:\n" }, 123 124 { 3, "_locc\n", 125 " movl (sp)+,r3\n\ 126 movl (sp)+,r4\n\ 127 movl (sp)+,r5\n\ 128 locc r3,r4,(r5)\n" }, 129 130 { 4, "_scanc\n", 131 " movl (sp)+,r2\n\ 132 movl (sp)+,r3\n\ 133 movl (sp)+,r4\n\ 134 movl (sp)+,r5\n\ 135 scanc r2,(r3),(r4),r5\n" }, 136 137 { 3, "_skpc\n", 138 " movl (sp)+,r3\n\ 139 movl (sp)+,r4\n\ 140 movl (sp)+,r5\n\ 141 skpc r3,r4,(r5)\n" }, 142 143 { 0, "", "" } 144 }; 145 146 struct pats vaxsubset_ptab[] = { 147 148 { 3, "_blkcmp\n", 149 " movl (sp)+,r1\n\ 150 movl (sp)+,r3\n\ 151 movl (sp)+,r0\n\ 152 2:\n\ 153 cmpb (r1)+,(r3)+\n\ 154 jneq 3f\n\ 155 sobgtr r0,2b\n\ 156 3:\n" }, 157 158 { 3, "_bcmp\n", 159 " movl (sp)+,r1\n\ 160 movl (sp)+,r3\n\ 161 movl (sp)+,r0\n\ 162 tstl r0\n\ 163 jeql 1f\n\ 164 2:\n\ 165 cmpb (r1)+,(r3)+\n\ 166 jneq 1f\n\ 167 sobgtr r0,2b\n\ 168 1:\n" }, 169 170 { 3, "_llocc\n", 171 " movl (sp)+,r4\n\ 172 movl (sp)+,r0\n\ 173 tstl r0\n\ 174 jeql 1f\n\ 175 movl (sp)+,r1\n\ 176 2:\n\ 177 cmpb r4,(r1)+\n\ 178 jeql 1f\n\ 179 sobgtr r0,2b\n\ 180 1:\n" }, 181 182 { 3, "_locc\n", 183 " movl (sp)+,r3\n\ 184 movl (sp)+,r0\n\ 185 tstl r0\n\ 186 jeql 1f\n\ 187 movl (sp)+,r5\n\ 188 2:\n\ 189 cmpb r3,(r5)+\n\ 190 jeql 1f\n\ 191 sobgtr r0,2b\n\ 192 1:\n" }, 193 194 { 3, "_skpc\n", 195 " movl (sp)+,r3\n\ 196 movl (sp)+,r0\n\ 197 tstl r0\n\ 198 jeql 1f\n\ 199 movl (sp)+,r5\n\ 200 2:\n\ 201 cmpb r3,(r5)+\n\ 202 jneq 1f\n\ 203 sobgtr r0,2b\n\ 204 1:\n" }, 205 206 { 0, "", "" } 207 }; 208 #endif 209