;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;								;
;	Copyright 2001, 2014 Fidelity Information Services, Inc	;
;								;
;	This source code contains the intellectual property	;
;	of its copyright holder(s), and is made available	;
;	under a license.  If you do not know the terms of	;
;	the license, please stop and do not read further.	;
;								;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; This table defines the intermediate code (vax code) generated by an opcode.
; It drives tttgen.m to generate ttt.c.
; There are multiple versions of this file by platform family and
; changes to one should trigger review and likely changes to the others.
; The format is OC_<opcode name>:<tabs>list of vax instructions,one to a line.
; The opcode must have a corresponding entry in opcode_def.h
;
OC_ADD:		pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_add
OC_BINDPARM:	irepl	val.2
		calls	val.1,xfer.xf_bindparm
OC_BOOLFINI:	incl	val.1
OC_BOOLINIT:	clrl	val.0
OC_BREAK:	jsb	xfer.xf_break
OC_CALL-BYTE:	jsb	xfer.xf_callb
		brb	jmp.1
OC_CALL-LONG:	jsb	xfer.xf_calll
		jmp	jmp.1
OC_CALL-WORD:	jsb	xfer.xf_callw
		brw	jmp.1
OC_CALLSP-BYTE:	jsb	xfer.xf_callspb
		brb	jmp.1
OC_CALLSP-LONG:	jsb	xfer.xf_callspl
		jmp	jmp.1
OC_CALLSP-WORD:	jsb	xfer.xf_callspw
		brw	jmp.1
OC_CAT:		irepab	val.2
		pushab	val.0
		calls	val.1,xfer.xf_cat
OC_CLOSE:	pushab	val.2
		pushab	val.1
		calls	#2,xfer.xf_close
OC_CLRTEST:	bicb2	#1,r10
		jsb	xfer.xf_dt_false
OC_CLRALSVARS:	pushab	val.1
		calls	#1,xfer.xf_clralsvars
OC_COBOOL-MINT:	tstl	val.1
OC_COBOOL-MVAL:	movab	val.1,r1
		jsb	xfer.xf_mval2bool
OC_COMINT-MVAL: movab	val.1,r1
		jsb	xfer.xf_mval2mint
		movl	r0,val.0
OC_COMMARG:	pushl	val.2
		pushab	val.1
		jsb	xfer.xf_commarg
OC_COMVAL-MINT:	movab	val.0,r0
		movl	val.1,r1
		jsb	xfer.xf_mint2mval
OC_CONUM:	movab	val.1,r1
		jsb	xfer.xf_mval2num
OC_CONTAIN:	movab	val.1,r0
		movab	val.2,r1
		jsb	xfer.xf_contain
OC_CURRHD:	movl	(ap),addr.0
OC_CURRTN:	movab	val.0,r1
		jsb	xfer.xf_currtn
OC_CVTPARM:	pushab	val.0
		pushab	val.2
		pushl	val.1
		calls	#3,xfer.xf_cvtparm
OC_DIV:		pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_div
OC_EQU:		movab	val.2,r1
		movab	val.1,r0
		jsb	xfer.xf_equ
OC_EQUNUL:	movab	val.1,r0
		jsb	xfer.xf_equnul
OC_EXCAL:	irepab	val.4
		pushl	val.3
		pushl	val.2
		pushl	#0
		jsb	xfer.xf_exfun
OC_EXFUN:	irepab	val.4
		pushl	val.3
		pushl	val.2
		pushab	val.0
		jsb	xfer.xf_exfun
OC_EXFUNRET:	pushab	val.1
		calls	#1,xfer.xf_exfunret
OC_EXFUNRETALS:	pushab	val.1
		calls	#1,xfer.xf_exfunretals
OC_EXTCALL:	pushab	val.2
		pushab	val.1
		jsb	xfer.xf_extcall
OC_EXTEXCAL:	irepab	val.5
		pushl	val.4
		pushl	val.3
		pushl	#0
		pushab	val.2
		pushab	val.1
		jsb	xfer.xf_extexfun
OC_EXTEXFUN:	irepab	val.5
		pushl	val.4
		pushl	val.3
		pushab	val.0
		pushab	val.2
		pushab	val.1
		jsb	xfer.xf_extexfun
OC_EXTJMP:	pushab	val.2
		pushab	val.1
		jsb	xfer.xf_extjmp
OC_EXP:		pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_exp
OC_FETCH:	irepl	val.2
		calls	val.1,xfer.xf_fetch
OC_FGNCAL:	irepab	val.6
		pushl	val.5
		pushl	val.4
		pushab	val.3
		pushab	val.2
		pushl	#0
		calls	val.1,xfer.xf_fnfgncal
OC_FNASCII:	pushab	val.0
		pushab	val.1
		pushl	val.2
		calls	#3,xfer.xf_fnascii
OC_FNCHAR:	irepl	val.2
		pushab	val.0
		calls	val.1,xfer.xf_fnchar
OC_FNZASCII:	pushab	val.0
		pushab	val.1
		pushl	val.2
		calls	#3,xfer.xf_fnzascii
OC_FNZAHANDLE:	pushab	val.0
		pushab	val.1
		calls	#2,xfer.xf_fnzahandle
OC_FNZCHAR:	irepl	val.2
		pushab	val.0
		calls	val.1,xfer.xf_fnzchar
OC_FNDATA:	pushab	val.0
		pushab	val.1
		calls	#2,xfer.xf_fndata
OC_FNEXTRACT:	pushab	val.0
		pushab	val.1
		pushl	val.2
		pushl	val.3
		calls	#4,xfer.xf_fnextract
OC_FNZEXTRACT:	pushab	val.0
		pushab	val.1
		pushl	val.2
		pushl	val.3
		calls	#4,xfer.xf_fnzextract
OC_FNFGNCAL:	irepab	val.6
		pushl	val.5
		pushl	val.4
		pushab	val.3
		pushab	val.2
		pushab	val.0
		calls	val.1,xfer.xf_fnfgncal
OC_FNFIND:	pushab	val.0
		pushl	val.3
		pushab	val.2
		pushab	val.1
		calls	#4,xfer.xf_fnfind
OC_FNZFIND:	pushab	val.0
		pushl	val.3
		pushab	val.2
		pushab	val.1
		calls	#4,xfer.xf_fnzfind
OC_FNFNUMBER:	pushab	val.0
		pushl	val.4
		pushl	val.3
		pushab	val.2
		pushab	val.1
		calls	#5,xfer.xf_fnfnumber
OC_FNGET:	movab	val.1,r1
		movab	val.0,r0
		jsb	xfer.xf_fnget
OC_FNGET2:	pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_fnget2
OC_FNGVGET:	pushab	val.0
		calls	#1,xfer.xf_fngvget
OC_FNGVGET1:	pushab	val.0
		calls	#1,xfer.xf_fngvget1
OC_FNGET1:	pushab	val.0
		pushab	val.1
		calls	#2,xfer.xf_fnget1
OC_FNINCR:	pushab	val.0		; /* result of $INCR */
		pushab	val.2		; /* r->operand[1] = increment */
		pushab	val.1		; /* r->operand[0] = local-variable to increment */
		calls	#3,xfer.xf_fnincr
OC_FNJ2:	pushab	val.0
		pushl	val.2
		pushab	val.1
		calls	#3,xfer.xf_fnj2
OC_FNZJ2:	pushab	val.0
		pushl	val.2
		pushab	val.1
		calls	#3,xfer.xf_fnzj2
OC_FNJ3:	pushab	val.0
		pushl	val.3
		pushl	val.2
		pushab	val.1
		calls	#4,xfer.xf_fnj3
OC_FNLENGTH:	pushab	val.0
		pushab	val.1
		calls   #2,xfer.xf_fnlength
OC_FNZLENGTH:	pushab	val.0
		pushab	val.1
		calls	#2,xfer.xf_fnzlength
OC_FNLVNAME:	pushab	val.0
		pushl	val.2
		pushab	val.1
		calls	#3,xfer.xf_fnlvname
OC_FNLVNAMEO2:	pushab	val.2
		pushab	val.0
		pushab	val.1
		calls	#3,xfer.xf_fnlvnameo2
OC_FNLVPRVNAME:	pushab	val.0
		pushab	val.1
		calls	#2,xfer.xf_fnlvprvname
OC_FNNAME:	irepab	val.4
		pushab	val.1		; /* r->operand[0] */
		pushl	val.3
		pushab	val.0		; /* result of $NAME */
		calls	val.2,xfer.xf_fnname
OC_FNNEXT:	pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_fnnext
OC_FNO2:	pushab	val.3
		pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#4,xfer.xf_fno2
OC_FNORDER:	pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_fnorder
OC_FNP1:	pushab	val.0
		pushl	val.3
		pushl	val.2
		pushab	val.1
		calls	#4,xfer.xf_fnp1
OC_FNPIECE:	pushab	val.0
		pushl	val.4
		pushl	val.3
		pushab	val.2
		pushab	val.1
		calls	#5,xfer.xf_fnpiece
OC_FNZP1:	pushab	val.0
		pushl	val.3
		pushl	val.2
		pushab	val.1
		calls	#4,xfer.xf_fnzp1
OC_FNZPIECE:	pushab	val.0
		pushl	val.4
		pushl	val.3
		pushab	val.2
		pushab	val.1
		calls	#5,xfer.xf_fnzpiece
OC_FNQLENGTH:	pushab	val.0
		pushab	val.1
		calls	#2,xfer.xf_fnqlength
OC_FNQSUBSCR:	pushab	val.0
		pushl	val.2
		pushab	val.1
		calls	#3,xfer.xf_fnqsubscript
OC_FNQUERY:	irepab	val.3
		pushab	val.2
		pushab	val.0
		calls	val.1,xfer.xf_fnquery
OC_FNRANDOM:	pushab	val.0
		pushl	val.1
		calls	#2,xfer.xf_fnrandom
OC_FNREVERSE:	pushab	val.0
		pushab	val.1
		calls	#2,xfer.xf_fnreverse
OC_FNSTACK1:	pushab	val.0
		pushl	val.1
		calls	#2,xfer.xf_fnstack1
OC_FNSTACK2:	pushab	val.0
		pushab	val.2
		pushl	val.1
		calls	#3,xfer.xf_fnstack2
OC_FNTEXT:	pushab	val.0
		pushab	val.3
		pushl	val.2
		pushab	val.1
		calls	#4,xfer.xf_fntext
OC_FNTRANSLATE:	pushab	val.0
		pushab	val.3
		pushab	val.2
		pushab	val.1
		calls	#4,xfer.xf_fntranslate
OC_FNZTRANSLATE: pushab	val.0
		pushab	val.3
		pushab	val.2
		pushab	val.1
		calls	#4,xfer.xf_fnztranslate
OC_FNZTRIGGER:	pushab	val.0
		pushab	val.3
		pushab	val.2
		pushab	val.1
		calls	#4,xfer.xf_fnztrigger
OC_FNVIEW:	irepab	val.2
		pushab	val.0
		calls	val.1,xfer.xf_fnview
OC_FNZBITAND:	pushab	val.2
		pushab	val.1
		pushab	val.0
		calls	#3,xfer.xf_fnzbitand
OC_FNZBITCOUN:	pushab	val.1
		pushab	val.0
		calls	#2,xfer.xf_fnzbitcoun
OC_FNZBITFIND:	pushl	val.3
		pushl	val.2
		pushab	val.1
		pushab	val.0
		calls	#4,xfer.xf_fnzbitfind
OC_FNZBITGET:	pushl	val.2
		pushab	val.1
		pushab	val.0
		calls	#3,xfer.xf_fnzbitget
OC_FNZBITLEN:	pushab	val.1
		pushab	val.0
		calls	#2,xfer.xf_fnzbitlen
OC_FNZBITNOT:	pushab	val.1
		pushab	val.0
		calls	#2,xfer.xf_fnzbitnot
OC_FNZBITOR:	pushab	val.2
		pushab	val.1
		pushab	val.0
		calls	#3,xfer.xf_fnzbitor
OC_FNZBITSET:	pushl	val.3
		pushl	val.2
		pushab	val.1
		pushab	val.0
		calls	#4,xfer.xf_fnzbitset
OC_FNZBITSTR:	pushl	val.2
		pushl	val.1
		pushab	val.0
		calls	#3,xfer.xf_fnzbitstr
OC_FNZBITXOR:	pushab	val.2
		pushab	val.1
		pushab	val.0
		calls	#3,xfer.xf_fnzbitxor
OC_FNZCALL:	irepab	val.2
		pushab	val.0
		calls	val.1,xfer.xf_fnzcall
OC_FNZDATA:	pushab	val.0
		pushab	val.1
		calls	#2,xfer.xf_fnzdata
OC_FNZDATE:	pushab	val.0
		pushab	val.4
		pushab	val.3
		pushab	val.2
		pushab	val.1
		calls	#5,xfer.xf_fnzdate
OC_FNZFILE:	pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_fnzfile
OC_FNZGETDVI:	pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_fngetdvi
OC_FNZGETJPI:	pushab	val.0
		pushab	val.2
		pushl	val.1
		calls	#3,xfer.xf_fngetjpi
OC_FNZGETLKI:	pushab	val.0
		pushab	val.2
		pushl	val.1
		calls	#3,xfer.xf_fngetlki
OC_FNZGETSYI:	pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_fngetsyi
OC_FNZJOBEXAM:	pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_fnzjobexam
OC_FNZLKID:	pushab	val.0
		pushl	val.1
		calls	#2,xfer.xf_fnzlkid
OC_FNZM:	pushab	val.0
		pushl	val.1
		calls	#2,xfer.xf_fnzm
OC_FNZPARSE:	pushab	val.0
		pushab	val.5
		pushab	val.4
		pushab	val.3
		pushab	val.2
		pushab	val.1
		calls	#6,xfer.xf_fnzparse
OC_FNZPID:	pushab	val.0
		pushl	val.1
		calls	#2,xfer.xf_fnzpid
OC_FNZPREVIOUS:	pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_fnzprevious
OC_FNZPRIV:	pushab	val.0
		pushab	val.1
		calls	#2,xfer.xf_fnzpriv
OC_FNZQGBLMOD:	pushab	val.0
		calls	#1,xfer.xf_fnzqgblmod
OC_FNZSEA:	pushab	val.0
		pushl	val.3
		pushl	val.2
		pushab	val.1
		calls	#4,xfer.xf_fnzsearch
OC_FNZSETPRV:	pushab	val.0
		pushab	val.1
		calls	#2,xfer.xf_fnzsetprv
OC_FNZSIGPROC:	pushab	val.0
		pushl	val.2
		pushl	val.1
		calls	#3,xfer.xf_fnzsigproc
OC_FNZSOCKET:	irepab  val.2
		pushab  val.0
		calls   val.1,xfer.xf_fnzsocket
OC_FNZTRNLNM:	pushab	val.0
		pushab	val.6
		pushab	val.5
		pushab	val.4
		pushl	val.3
		pushab	val.2
		pushab	val.1
		calls	#7,xfer.xf_fnztrnlnm
OC_FOLLOW:	movab	val.1,r0
		movab	val.2,r1
		jsb	xfer.xf_follow
OC_FORCENUM:	movab	val.0,r0
		movab	val.1,r1
		jsb	xfer.xf_forcenum
OC_FORCHK1:	jsb	xfer.xf_restartpc
		jsb 	xfer.xf_forchk1
OC_FORINIT:	pushab	val.3
		pushab	val.2
		pushab	val.1
		jsb	xfer.xf_forinit
OC_FORLCLDO-BYTE:	jsb	xfer.xf_forlcldob
		brb	jmp.1
OC_FORLCLDO-LONG:	jsb	xfer.xf_forlcldol
		jmp	jmp.1
OC_FORLCLDO-WORD:	jsb	xfer.xf_forlcldow
		brw	jmp.1
OC_FORLOOP-BYTE:jsb	xfer.xf_restartpc
		pushab	jmp.1
		pushab	val.4
		pushab	val.3
		pushab	val.2
		jsb	xfer.xf_forloop
OC_FORLOOP-LONG:jsb	xfer.xf_restartpc
		pushab	jmp.1
		pushab	val.4
		pushab	val.3
		pushab	val.2
		jsb	xfer.xf_forloop
OC_FORLOOP-WORD:jsb	xfer.xf_restartpc
		pushab	jmp.1
		pushab	val.4
		pushab	val.3
		pushab	val.2
		jsb	xfer.xf_forloop
OC_GETINDX:	irepab	val.2
		calls	val.1,xfer.xf_getindx
		movl	r0,addr.0
OC_GETTRUTH:	movab	val.0,r1
		jsb	xfer.xf_gettruth
OC_GVDATA:	pushab	val.0
		calls	#1,xfer.xf_gvdata
OC_GVEXTNAM:	irepab	val.3
		pushl	val.2		; /* hash_code */
		calls	val.1,xfer.xf_gvextnam
OC_GVGET:	pushab	val.0
		calls	#1,xfer.xf_gvget
OC_GVINCR:	pushab	val.0		; /* result of $INCR */
		pushab	val.2		; /* r->operand[1] = increment (global-var to increment is gv_currkey so no operand[0]) */
		calls	#2,xfer.xf_gvincr
OC_GVKILL:	calls	#0,xfer.xf_gvkill
OC_GVNAKED:	irepab	val.3
		pushl	val.2		; /* hash_code */
		calls	val.1,xfer.xf_gvnaked
OC_GVNAME:	irepab	val.3
		pushl	val.2		; /* hash_code */
		calls	val.1,xfer.xf_gvname
OC_GVNEXT:	pushab	val.0
		calls	#1,xfer.xf_gvnext
OC_GVO2:	pushab	val.1
		pushab	val.0
		calls	#2,xfer.xf_gvo2
OC_GVORDER:	pushab	val.0
		calls	#1,xfer.xf_gvorder
OC_GVPUT:	pushab	val.1
		calls	#1,xfer.xf_gvput
OC_GVQUERY:	pushab	val.0
		calls	#1,xfer.xf_gvquery
OC_GVRECTARG:	pushab	val.1
		calls	#1,xfer.xf_gvrectarg
OC_GVSAVTARG:	pushab	val.0
		calls	#1,xfer.xf_gvsavtarg
OC_GVZWITHDRAW: calls	#0,xfer.xf_gvzwithdraw
OC_GVZWRITE:	jsb 	xfer.xf_restartpc
		irepab	val.4
		pushl	val.3
		pushl	val.2
		calls	val.1,xfer.xf_gvzwrite
OC_HANG:	jsb 	xfer.xf_restartpc
		pushab	val.1
		calls	#1,xfer.xf_hang
OC_HARDRET:	jsb	xfer.xf_hardret
OC_IDIV:	pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_idiv
OC_IGETSRC:	pushab	val.0
		calls	#1,xfer.xf_igetsrc
OC_INDDEVPARMS:	pushab	val.0
		pushl	val.2
		pushab	val.1
		jsb	xfer.xf_inddevparms
OC_INDFNNAME:	pushab	val.2		; /* r->operand[1] = depth */
		pushab	val.1		; /* r->operand[0] = name */
		pushab	val.0		; /* r->dst */
		jsb	xfer.xf_indfnname
OC_INDFUN:	pushab	val.0
		pushl	val.2
		pushab	val.1
		jsb	xfer.xf_indfun
OC_INDGLVN:	pushab	val.0
		pushab	val.1
		jsb	xfer.xf_indglvn
OC_INDINCR:	pushab	val.1		; /* r->operand[0] = indirection expression */
		pushab 	val.2		; /* r->operand[1] = increment (ILIT) */
		pushab	val.0		; /* r->dst */
		jsb	xfer.xf_indincr
OC_INDLVADR:	pushab	val.1
		jsb	xfer.xf_indlvadr
		movl	r0,addr.0
OC_INDLVARG:	pushab	val.0
		pushab	val.1
		jsb	xfer.xf_indlvarg
OC_INDNAME:	pushab	val.2
		pushab	val.1
		pushab	val.0
		calls	#3,xfer.xf_indname
OC_INDLVNAMADR:	pushab	val.1
		jsb	xfer.xf_indlvnamadr
		movl	r0,addr.0
OC_INDO2:	pushab	val.2
		pushab	val.1
		pushab	val.0
		calls	#3,xfer.xf_indo2
OC_INDPAT:	pushab	val.0
		pushab	val.1
		jsb	xfer.xf_indpat
OC_INDRZSHOW:	pushab	val.2
		pushab	val.1
		jsb	xfer.xf_indrzshow
OC_INDSET:	pushab	val.2
		pushab	val.1
		jsb	xfer.xf_indset
OC_INDTEXT:	pushab	val.0
		pushab	val.3
		pushl	val.2
		pushab	val.1
		jsb	xfer.xf_indtext
OC_IOCONTROL:	jsb     xfer.xf_restartpc
		irepab	val.2
		calls	val.1,xfer.xf_iocontrol
OC_IRETMVAD:	movab	val.1,r1
		jsb	xfer.xf_iretmvad
OC_IRETMVAL:	pushab 	val.2
		pushab	val.1
		jsb	xfer.xf_iretmval
OC_JMP-BYTE:	brb	jmp.1
OC_JMP-LONG:	jmp	jmp.1
OC_JMP-WORD:	brw	jmp.1
OC_JMPAT:	jmp	val.1
OC_JMPEQU-BYTE:	beql	jmp.1
OC_JMPEQU-LONG:	bneq	#6
		jmp	jmp.1
OC_JMPEQU-WORD:	bneq	#3
		brw	jmp.1
OC_JMPGEQ-BYTE:	bgeq	jmp.1
OC_JMPGEQ-LONG:	blss	#6
		jmp	jmp.1
OC_JMPGEQ-WORD:	blss	#3
		brw	jmp.1
OC_JMPGTR-BYTE:	bgtr	jmp.1
OC_JMPGTR-LONG:	bleq	#6
		jmp	jmp.1
OC_JMPGTR-WORD:	bleq	#3
		brw	jmp.1
OC_JMPLEQ-BYTE:	bleq	jmp.1
OC_JMPLEQ-LONG:	bgtr	#6
		jmp	jmp.1
OC_JMPLEQ-WORD:	bgtr	#3
		brw	jmp.1
OC_JMPLSS-BYTE:	blss	jmp.1
OC_JMPLSS-LONG:	bgeq	#6
		jmp	jmp.1
OC_JMPLSS-WORD:	bgeq	#3
		brw	jmp.1
OC_JMPNEQ-BYTE:	bneq	jmp.1
OC_JMPNEQ-LONG:	bneq	#6
		jmp	jmp.1
OC_JMPNEQ-WORD:	beql	#3
		brw	jmp.1
OC_JMPTCLR-BYTE:	blbc	r10,jmp.1
OC_JMPTCLR-LONG:	blbs	r10,#6
			jmp	jmp.1
OC_JMPTCLR-WORD:	blbs	r10,#3
			brw	jmp.1
OC_JMPTSET-BYTE:	blbs	r10,jmp.1
OC_JMPTSET-LONG:	blbc	r10,#6
			jmp	jmp.1
OC_JMPTSET-WORD:	blbc	r10,#3
			brw	jmp.1
OC_JOB:		jsb 	xfer.xf_restartpc
		irepab	val.7
		pushab	val.6
		pushab	val.5
		pushab	val.4
		pushl	val.3
		pushab	val.2
		calls	val.1,xfer.xf_job
OC_KILL:	pushab	val.1
		calls	#1,xfer.xf_kill
OC_KILLALIAS:   pushl	val.1
		calls	#1,xfer.xf_killalias
OC_KILLALL:	calls	#0,xfer.xf_killall
OC_KILLALIASALL:	calls	#0,xfer.xf_killaliasall
OC_LABADDR:	pushl	val.2
		pushab	val.1
		pushab	val.3
		calls	#3,xfer.xf_labaddr
		movl	r0,addr.0
OC_LCKDECR:	pushab	val.1
		calls	#1,xfer.xf_lckdecr
OC_LCKINCR:	pushab	val.1
		calls	#1,xfer.xf_lckincr
OC_LDADDR-BYTE:	movab	jmp.1,addr.0
OC_LDADDR-LONG:	movab	jmp.1,addr.0
OC_LDADDR-WORD:	movab	jmp.1,addr.0
OC_LINEFETCH:	irepl	val.2
		pushl	val.1
		jsb	xfer.xf_linefetch
OC_LINESTART:	jsb	xfer.xf_linestart
OC_LKEXTNAME:	irepab	val.4
		pushab	val.3
		pushab	val.2
		calls	val.1,xfer.xf_lkname
OC_LKINIT:	calls	#0,xfer.xf_lkinit
OC_LKNAME:	irepab	val.4
		pushab	val.3
		pushl	val.2
		calls	val.1,xfer.xf_lkname
OC_LOCK:	pushab	val.1
		calls	#1,xfer.xf_lock
OC_LVPATWRITE:	jsb 	xfer.xf_restartpc
		irepab	val.3
		pushl	val.2
		calls	val.1,xfer.xf_lvpatwrite
OC_LVZWITHDRAW:	pushab	val.1
		calls	#1,xfer.xf_lvzwithdraw
OC_LVZWRITE:	jsb 	xfer.xf_restartpc
		irepab	val.2
		calls	val.1,xfer.xf_lvzwrite
OC_MOD:		pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_flt_mod
OC_MUL:		pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_mul
OC_NEG:		movab	val.0,r0
		movab	val.1,r1
		jsb	xfer.xf_neg
OC_NEWINTRINSIC:  pushl	val.1
		jsb	xfer.xf_newintrinsic
OC_NEWVAR:	pushl	val.1
		jsb	xfer.xf_newvar
OC_NULLEXP:	calls	#0,xfer.xf_nullexp
		movl    r0,addr.0
OC_NUMCMP:	movab	val.1,r0
		movab	val.2,r1
		jsb	xfer.xf_numcmp
OC_OPEN:	jsb 	xfer.xf_restartpc
		pushab	val.4
		pushab	val.3
		pushab	val.2
		pushab	val.1
		calls	#4,xfer.xf_open
OC_PATTERN:	movab	val.1,r0
		movab	val.2,r1
		jsb	xfer.xf_pattern
OC_FNPOPULATION: pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_fnpopulation
OC_FNZPOPULATION: pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_fnzpopulation
OC_PUTINDX:	irepab	val.2
		calls	val.1,xfer.xf_putindx
		movl	r0,addr.0
OC_RDONE:	jsb 	xfer.xf_restartpc
		pushab	val.1
		pushab	val.0
		calls	#2,xfer.xf_rdone
OC_READ:	jsb 	xfer.xf_restartpc
		pushab	val.1
		pushab	val.0
		calls	#2,xfer.xf_read
OC_READFL:	jsb 	xfer.xf_restartpc
		pushab	val.2
		pushl	val.1
		pushab	val.0
		calls	#3,xfer.xf_readfl
OC_RESTARTPC:	jsb	xfer.xf_restartpc
OC_RET:		jsb	xfer.xf_ret
OC_RETARG:	movab	val.1,r0
		movl	val.2,r1
		jsb	xfer.xf_retarg
OC_RHDADDR:	pushab	val.2
		pushab	val.1
		calls	#2,xfer.xf_rhdaddr
		movl	r0,addr.0
OC_RHDADDR1:	pushl	#0
		pushab	val.1
		calls	#2,xfer.xf_rhdaddr
		movl	r0,addr.0
;
; Note if OC_RTERROR call changes, linetail.c and eval_expr.c will also need
; to change due to it dereferencing the backpoints to get to the opcode.
;
OC_RTERROR:	pushl	val.2
		pushl	val.1
		jsb	xfer.xf_rterror
OC_SETALS2ALS:	pushl	val.1
		pushab	val.2
		calls	#2,xfer.xf_setals2als
OC_SETALSIN2ALSCT:	pushab	val.1
			pushab	val.2
			calls	#2,xfer.xf_setalsin2alsct
OC_SETALSCTIN2ALS:	pushl	val.1
			pushab	val.2
			calls	#2,xfer.xf_setalsctin2als
OC_SETALSCT2ALSCT:	pushab	val.1
			pushab	val.2
			calls	#2,xfer.xf_setalsct2alsct
OC_SETFNRETIN2ALS:	pushl  val.1
  			pushab  val.2
			calls   #2,xfer.xf_setfnretin2als
OC_SETFNRETIN2ALSCT:	pushab  val.1
			pushab  val.2
			calls   #2,xfer.xf_setfnretin2alsct
OC_SETEXTRACT:	pushab	val.0
		pushl	val.3
		pushl	val.2
		pushab	val.4
		pushab	val.1
		calls	#5,xfer.xf_setextract
OC_SETP1:	pushab	val.0
		pushl	val.3
		pushab	val.4
		pushl	val.2
		pushab	val.1
		calls	#5,xfer.xf_setp1
OC_SETPIECE:	pushab	val.0
		pushl	val.4
		pushl	val.3
		pushab	val.5
		pushab	val.2
		pushab	val.1
		calls	#6,xfer.xf_setpiece
OC_SETZEXTRACT:	pushab	val.0
		pushl	val.3
		pushl	val.2
		pushab	val.4
		pushab	val.1
		calls	#5,xfer.xf_setzextract
OC_SETZP1:	pushab	val.0
		pushl	val.3
		pushab	val.4
		pushl	val.2
		pushab	val.1
		calls	#5,xfer.xf_setzp1
OC_SETZPIECE:	pushab	val.0
		pushl	val.4
		pushl	val.3
		pushab	val.5
		pushab	val.2
		pushab	val.1
		calls	#6,xfer.xf_setzpiece
OC_SETTEST:	bisb2	#1,r10
		jsb	xfer.xf_dt_true
OC_SETZBRK:	pushl	val.5
		pushab	val.4
		pushl	val.2
		pushab	val.1
		pushab	val.3
		calls	#5,xfer.xf_setzbrk
OC_SORTS_AFTER:	movab	val.1,r0
		movab	val.2,r1
		jsb	xfer.xf_sorts_after
OC_SRCHINDX:	irepab	val.2
		calls	val.1,xfer.xf_srchindx
		movl	r0,addr.0
OC_STO:		movab	val.2,r1
		movab	val.1,r0
		jsb	xfer.xf_sto
OC_STOLIT:	movc3	#16,val.2,val.1
OC_STOTEMP:	movab	val.1,r1
		movab	val.0,r0
		jsb	xfer.xf_sto
OC_SUB:		pushab	val.0
		pushab	val.2
		pushab	val.1
		calls	#3,xfer.xf_sub
OC_SVGET:	pushab	val.0
		pushl	val.1
		calls	#2,xfer.xf_svget
OC_PSVPUT:	pushab	val.2
		pushl	val.1
		jsb	xfer.xf_psvput
OC_SVPUT:	pushab	val.2
		pushl	val.1
		calls	#2,xfer.xf_svput
OC_TIMTRU:	movl	r0,r10
OC_TCOMMIT:	jsb	xfer.xf_tcommit
OC_TROLLBACK:	pushl	val.1
		jsb	xfer.xf_trollback
OC_TRESTART:	pushl	val.1
		jsb	xfer.xf_trestart
OC_TSTART:	irepab	val.4
		pushl	val.3
		pushab	val.2
		pushl	val.1
		jsb	xfer.xf_tstart
OC_UNLOCK:	calls	#0,xfer.xf_unlock
OC_USE:		pushab	val.2
		pushab	val.1
		calls	#2,xfer.xf_use
OC_VIEW:	irepab	val.2
		calls	val.1,xfer.xf_view
OC_VXCMPL:	cmpl	val.1,val.2
OC_WRITE:	pushab	val.1
		calls	#1,xfer.xf_write
OC_WTEOL:	pushl	val.1
		calls	#1,xfer.xf_wteol
OC_WTFF:	calls	#0,xfer.xf_wtff
OC_WTONE:	pushl	val.1
		calls	#1,xfer.xf_wtone
OC_WTTAB:	pushl	val.1
		calls	#1,xfer.xf_wttab
OC_XKILL:	irepab	val.2
		calls	val.1,xfer.xf_xkill
OC_XNEW:	irepab	val.2
		pushl	val.1
		jsb	xfer.xf_xnew
OC_ZALLOCATE:	pushab	val.1
		calls	#1,xfer.xf_zallocate
OC_ZATTACH:	jsb 	xfer.xf_restartpc
		pushab	val.1
		calls	#1,xfer.xf_zattach
OC_ZCOMPILE:	pushl	val.2
		pushab	val.1
		calls	#2,xfer.xf_zcompile
OC_ZCONT:	jsb	xfer.xf_zcont
OC_ZDEALLOCATE:	pushab	val.1
		calls	#1,xfer.xf_zdeallocate
OC_ZEDIT:	jsb 	xfer.xf_restartpc
		pushab	val.2
		pushab	val.1
		calls	#2,xfer.xf_zedit
OC_ZG1:		pushl	val.1
		jsb	xfer.xf_zg1
OC_ZGOTO:	pushl	val.1
		pushl	val.4
		pushab	val.3
		pushab	val.2
		jsb	xfer.xf_zgoto
OC_ZHALT:	pushl	val.1
		pushl	val.2
		calls	#2,xfer.xf_zhalt
OC_ZHELP:	pushab	val.2
		pushab	val.1
		calls	#2,xfer.xf_zhelp
OC_ZLINK:	pushab	val.2
		pushab	val.1
		calls	#2,xfer.xf_zlink
OC_ZMESS:	irepab	val.3
		pushl	val.2
		calls	val.1,xfer.xf_zmess
OC_ZPREVIOUS:	pushab	val.0
		calls	#1,xfer.xf_zprevious
OC_ZPRINT:	jsb 	xfer.xf_restartpc
		pushl 	val.5
		pushab	val.4
		pushl	val.3
		pushab	val.2
		pushab	val.1
		calls	#5,xfer.xf_zprint
OC_ZSHOW:	jsb	xfer.xf_restartpc
		pushl	#0
		pushl	val.2
		pushab	val.1
		calls	#3,xfer.xf_zshow
OC_ZSHOWLOC:	jsb     xfer.xf_restartpc
		pushab	val.3
		pushl	val.2
		pushab	val.1
		calls	#3,xfer.xf_zshow
OC_ZSTEP:	pushl	#0
		pushl	val.1
		calls	#2,xfer.xf_zstep
		jsb	xfer.xf_zcont
OC_ZSTEPACT:	pushab	val.2
		pushl	val.1
		calls	#2,xfer.xf_zstep
		jsb	xfer.xf_zcont
OC_ZSYSTEM:	jsb 	xfer.xf_restartpc
		pushab	val.1
		calls	#1,xfer.xf_zsystem
OC_ZTCOMMIT:	pushl	val.1
		calls	#1,xfer.xf_ztcommit
OC_ZTSTART:	calls	#0,xfer.xf_ztstart
OC_MERGE:	calls	#0,xfer.xf_merge
OC_MERGE_GVARG: pushl	#0
		pushl	val.1
		calls	#2,xfer.xf_merge_arg
OC_MERGE_LVARG: pushab	val.2
		pushl	val.1
		calls	#2,xfer.xf_merge_arg
OC_INDMERGE:	pushab	val.1
		pushab	val.2
		jsb	xfer.xf_indmerge
OC_M_SRCHINDX:	irepab	val.2
		calls	val.1,xfer.xf_m_srchindx
		movl	r0,addr.0
OC_FNZATRANSFORM:    pushab  val.0
                pushl   val.4
                pushl   val.3
                pushl   val.2
                pushab  val.1
                calls   #5,xfer.xf_fnzatransform
OC_FNZCONVERT2: pushab  val.0                   ; /* destination mval */
                pushab  val.2                   ; /* "U"/"L"/"T" */
                pushab  val.1                   ; /* string */
                calls   #3,xfer.xf_fnzconvert2
OC_FNZCONVERT3: pushab  val.0                   ; /* Destination mval */
                pushab  val.3                   ; /* target chset */
                pushab  val.2                   ; /* src chset */
                pushab  val.1                   ; /* string */
                calls   #4,xfer.xf_fnzconvert3
OC_FNZCOLLATE:  pushab  val.0
                pushl   val.3
                pushl   val.2
                pushab  val.1
                calls   #4,xfer.xf_fnzcollate
OC_FNZSUBSTR:   pushab  val.0                   ; /* Destination mval */
                pushl   val.3                   ; /* max byte length */
                pushl   val.2                   ; /* starting character position */
                pushab  val.1                   ; /* string */
                calls   #4,xfer.xf_fnzsubstr
OC_FNZWIDTH:    pushab  val.0                   ; /* destination mval */
                pushab  val.1                   ; /* string */
                calls   #2,xfer.xf_fnzwidth
OC_ZTRIGGER:	calls	#0,xfer.xf_ztrigger
OC_ZWRITESVN:	pushl	val.1
 		calls	#1,xfer.xf_zwritesvn
OC_FNZWRITE:	pushab	val.0			; /* destination mval */
		pushab	val.1			; /* source (string) mval */
		pushl	val.2			; /* conversion direction indicator */
		calls   #3,xfer.xf_fnzwrite
OC_IGETDST:	calls	#0,xfer.xf_igetdst
		movl    r0,addr.0
OC_INDGET1:	pushab	val.0
		pushab	val.1
		calls	#2,xfer.xf_indget1
OC_GLVNPOP:	pushab	val.1
		calls	#1,xfer.xf_glvnpop
OC_GLVNSLOT:	pushl	val.1
		calls	#1,xfer.xf_glvnslot
		movl	r0,addr.0
OC_INDSAVGLVN:	pushl	val.3
		pushab	val.2
		pushab	val.1
		jsb	xfer.xf_indsavglvn
OC_INDSAVLVN:	pushab	val.2
		pushab	val.1
		jsb	xfer.xf_indsavlvn
OC_RFRSHLVN:	pushl	val.2
		pushab	val.1
		calls	#2,xfer.xf_rfrshlvn
		movl	r0,addr.0
OC_SAVGVN:	irepab	val.3
		pushl	val.2			; /* hash_code */
		calls	val.1,xfer.xf_savgvn
OC_SAVLVN:	irepab	val.2
		calls	val.1,xfer.xf_savlvn
OC_SHARESLOT:	pushl	val.2
		pushab	val.1
		calls	#2,xfer.xf_shareslot
OC_STOGLVN:	pushab	val.2
		pushab	val.1
		calls	#2,xfer.xf_stoglvn
OC_RFRSHGVN:	pushl	val.2
		pushab	val.1
		calls	#2,xfer.xf_rfrshgvn
OC_INDFNNAME2:	pushab	val.2
		pushab	val.1
		pushab	val.0
		calls	#3,xfer.xf_indfnname2
OC_INDGET2:	pushab	val.1
		pushab	val.0
		calls	#2,xfer.xf_indget2
OC_INDMERGE2:	pushab	val.1
		calls	#1,xfer.xf_indmerge2
OC_FNZPEEK:	pushab	val.0
		pushab	val.4
		pushl	val.3
		pushl	val.2
		pushab	val.1
		calls	#5,xfer.xf_fnzpeek
OC_FNZSYSLOG:	pushab	val.0			; /* destination mval */
		pushab  val.1			; /* string */
		calls	#2,xfer.xf_fnzsyslog
OC_FNZTRANSLATE_FAST: pushab   val.0
		pushab  val.2
		pushab  val.1
		calls   #3,xfer.xf_fnztranslate_fast
OC_FNTRANSLATE_FAST: pushab   val.0
		pushab val.4
		pushab val.3
		pushab val.2
		pushab val.1
		calls   #5,xfer.xf_fntranslate_fast
OC_FNZAUDITLOG:	pushab	val.0			; /* destination mval */
		pushab  val.1			; /* string */
		calls	#2,xfer.xf_fnzauditlog
