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