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