/* * ***************************************************************** * * * * * Copyright (c) Digital Equipment Corporation, 1994 * * * * * * All Rights Reserved. Unpublished rights reserved under * * * the copyright laws of the United States. * * * * * * The software contained on this media is proprietary to * * * and embodies the confidential technology of Digital * * * Equipment Corporation. Possession, use, duplication or * * * dissemination of the software and media is authorized only * * * pursuant to a valid written license from Digital Equipment * * * Corporation. * * * * * * RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure * * * by the U.S. Government is subject to restrictions as set * * * forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, * * * or in FAR 52.227-19, as applicable. * * * * * ***************************************************************** */ /** *** Copyright (C) 1985 Multiflow Computer, Inc. *** *** The information and source code contained herein is the exclusive *** property of Multiflow Computer, Inc. and may not be disclosed, examined *** or reproduced in whole or in part without explicit written authorization *** from the company. **/ /** *** Author: Thomas J. Karzes **/ /** *** static char sccs_id[] = "@(#)ops.txt 1.10 8/2/94 13:47:53"; **/ Basic qualifier (operator part) types (these are all enumerated types): TYPE # OF VALS VALUES ---------- --------- ---------------------------------------- GROUP * (enumerated below) VOL 3 NV MEM_VOL SUPER_VOL DISMISS 2 ND DISM COMP 6 EQ NE GT GE LT LE AND_OR 2 AND OR EQV_NEQV 2 EQV NEQV NORM_NOT 2 NORM NOT ARG_LOC 3 ARGS_REGS ARGS_MEM ARGS_BOTH REG_SAVER 2 CALLER_SAVES CALLEE_SAVES ENT_SCOPE 2 ENT_LOCAL ENT_GLOBAL SHFT 7 LSL LSR ASHL ASHR LSZ LSRZ LSRS MULT 3 MPY0 MPY1 MPY1S NEG_INP 4 NN NL NR NB OPERAND 13 I8 SI8 I16 SI16 I32 SI32 F32 F64 N8 N16 N32 N64 REC SIGN 2 S U CACHE L1 L2 Qualifier (operator part) field names: NAME BASIC TYPE # OF VALUES VALUES -------- ---------- ----------- ------------------------- group GROUP * * (enumerated below) vol VOL 3 3 NV MEM_VOL SUPER_VOL dismiss DISMISS 2 2 ND DISM comp COMP 6 6 EQ NE GT GE LT LE and_or AND_OR 2 2 AND OR eqv_neqv EQV_NEQV 2 2 EQV NEQV norm_not NORM_NOT 2 2 NORM NOT arg_loc ARG_LOC 3 3 ARGS_REGS ARGS_MEM ARGS_BOTH reg_saver REG_SAVER 2 2 CALLER_SAVES CALLEE_SAVES ent_scope ENT_SCOPE 2 2 ENT_LOCAL ENT_GLOBAL shft SHFT 7 7 LSL LSR ASHL ASHR LSZ LSRZ LSRS mult MULT 3 3 MPY0 MPY1 MPY1S scale INT 4 * 0 1 2 3 foffset INT 32 * 0 ... 31 flength INT 32 * 1 ... 32 neg_inp NEG_INP 4 4 NN NL NR NB mem OPERAND 8 13 I8 SI8 I16 SI16 N8 N16 N32 N64 ext_mrg OPERAND 4 13 I8 SI8 I16 SI16 assign OPERAND 2 13 N32 N64 arith OPERAND 6 13 N32 N64 I32 SI32 F32 F64 sign SIGN 2 2 S U cache CACHE 2 2 L1 L2 /** *** The following aren't true qualifiers (operator parts), but *** are actually N-ary operation parts (see below). However, *** they act like a N-ary qualifiers for argument and return value *** types. **/ rtype_list OPERAND 4 13 N32 F32 F64 REC atype_list OPERAND 4 13 N32 F32 F64 REC Qualifier (operator part) field subsets (these one-letter types are notational only): TYPE NAME BASIC TYPE # OF VALUES VALUES ---- -------- ---------- ----------- ------------------------- Q vol VOL 3 3 3 NV MEM_VOL SUPER_VOL q dismiss DISMISS 2 2 2 ND DISM r comp COMP 2 6 6 EQ NE R comp COMP 4 6 6 GT GE LT LE s and_or AND_OR 2 2 2 AND OR S eqv_neqv EQV_NEQV 2 2 2 EQV NEQV T norm_not NORM_NOT 2 2 2 NORM NOT u arg_loc ARG_LOC 2 3 3 ARGS_REGS ARGS_MEM U arg_loc ARG_LOC 3 3 3 ARGS_REGS ARGS_MEM ARGS_BOTH V reg_saver REG_SAVER 2 2 2 CALLER_SAVES CALLEE_SAVES W ent_scope ENT_SCOPE 2 2 2 ENT_LOCAL ENT_GLOBAL X shft SHFT 4 7 7 LSL LSR ASHL ASHR Y shft SHFT 3 7 7 LSZ LSRZ LSRS Z mult MULT 3 3 3 MPY0 MPY1 MPY1S a mem OPERAND 4 8 13 N8 N16 N32 N64 A mem OPERAND 6 8 13 I8 SI8 I16 SI16 N32 N64 b mem OPERAND 3 8 13 N16 N32 N64 C cache CACHE 2 2 2 L1 L2 F arith OPERAND 2 6 13 F32 F64 G arith OPERAND 3 6 13 N32 F32 F64 H arith OPERAND 4 6 13 I32 SI32 F32 F64 i arith OPERAND 2 6 13 I16 SI16 I arith OPERAND 2 6 13 I32 SI32 K ext_mrg OPERAND 4 4 13 I8 SI8 I16 SI16 l scale INT 3 4 * 1 2 3 L scale INT 4 4 * 0 1 2 3 m foffset INT 32 32 * 0 ... 31 M flength INT 32 32 * 1 ... 32 N assign OPERAND 2 2 13 N32 N64 o neg_inp NEG_INP 4 4 4 NN NL NR NB O neg_inp NEG_INP 2 4 4 NN NR P sign SIGN 2 2 2 S U /** *** The following aren't true qualifiers (operator parts), but *** are actually N-ary operation parts (see below). However, *** they act like a N-ary qualifiers for argument and return value *** types. **/ R1 rtype_list OPERAND 4 4 13 N32 F32 F64 REC R2 rtype_list OPERAND 3 4 13 N32 F32 F64 A1 atype_list OPERAND 4 4 13 N32 F32 F64 REC A2 atype_list OPERAND 3 4 13 N32 F32 F64 Operation part aliases: stride_list: nsindex_cnt nstride_ptr index_list: nsindex_cnt nindex_ptr lower_list: nsindex_cnt nlower_ptr stride_index_list: nsindex_cnt nstride_ptr nindex_ptr sil_list: nsindex_cnt nstride_ptr nindex_ptr nlower_ptr -------------------------------------------------------------------------- read_list: nread_cnt nread_ptr flag_list: nread_cnt nflag_ptr flag_read_list: nread_cnt nread_ptr nflag_ptr -------------------------------------------------------------------------- predicate_list: npred_cnt npred_ptr ntest_ptr -------------------------------------------------------------------------- tag_list: ntag_cnt ntag_ptr -------------------------------------------------------------------------- load_list: nload_cnt nload_ptr -------------------------------------------------------------------------- rtype_list: nret_cnt nrtype_ptr rnum_list: nret_cnt nrnum_ptr rvar_list: nret_cnt nrvar_ptr rwritten_list: nret_cnt nrwritten_ptr rread_list: nret_cnt nrread_ptr rtnv_list: nret_cnt nrtype_ptr nrnum_ptr nrvar_ptr rtw_list: nret_cnt nrtype_ptr nrwritten_ptr rtr_list: nret_cnt nrtype_ptr nrread_ptr rswritten_list: nret_sca_cnt nrswritten_ptr rsread_list: nret_sca_cnt nrsread_ptr rrdread_list: nret_rec_cnt nrrdread_ptr rrsread_list: nret_rec_cnt nrrsread_ptr call_ret_list: rtnv_list rswritten_list rrdread_list return_ret_list: rtnv_list rsread_list rrsread_list -------------------------------------------------------------------------- atype_list: narg_cnt natype_ptr anum_list: narg_cnt nanum_ptr avar_list: narg_cnt navar_ptr ainfo_list: narg_cnt nainfo_ptr awritten_list: narg_cnt nawritten_ptr aread_list: narg_cnt naread_ptr atnv_list: narg_cnt natype_ptr nanum_ptr navar_ptr atnvi_list: narg_cnt natype_ptr nanum_ptr navar_ptr nainfo_ptr atw_list: narg_cnt natype_ptr nawritten_ptr atr_list: narg_cnt natype_ptr naread_ptr asread_list: narg_sca_cnt nasread_ptr arsread_list: narg_rec_cnt narsread_ptr entry_arg_list: atnv_list call_arg_list: atnvi_list asread_list arsread_list Note: All groups have the Q qualifier. In some cases, it probably isn't meaningful (e.g., some pseudo-ops), but is nevertheless included for simplicitly. Note: All operations also have the op (operator) and line (line number) fields. These aren't shown below. Note: IL-1 and IL-2 operator groups overlap. Operators that belong to both IL-1 and IL-2 are listed in both of the following two tables. Note: When a given group is only valid for certain machine types, the valid machine types are listed right after the group, in parentheses. The current machine type abbreviations are: S for saturn J for janus A for amazon IL-1 groups: ============ GROUP NUMBER OPERANDS ------------------ ---------- ---------------------------------------------- NOP.Q 1 - ------------------ ---------- ---------------------------------------------- SLOAD.Q.q.A.C 12 = 2.6 written var predicate_history STLOAD.Q.q.A.C 12 = 2.6 written var bp predicate_history SSTORE.Q.A.C 6 read var predicate_list predicate_history STSTORE.Q.A.C 6 read var bp predicate_list predicate_history VOGEN.Q.L 4 written var sil_list VOTGEN.Q.L 4 written var bp sil_list ALOAD.Q.q.L.A.C 48 = 2.4.6 written var vo sil_list predicate_history ATLOAD.Q.q.L.A.C 48 = 2.4.6 written var vo sil_list predicate_history ASTORE.Q.L.A.C 24 = 4.6 read var vo sil_list predicate_list predicate_history ATSTORE.Q.L.A.C 24 = 4.6 read var vo sil_list predicate_list predicate_history SADDR.Q 1 written var STADDR.Q 1 written var bp AADDR.Q.L 4 written var vo sil_list ATADDR.Q.L 4 written var vo sil_list /** *** Restriction: m + M <= 32. So x = | { all (m,M) : 0 <= m <= 31, | *** | 1 <= M <= 32, | *** | m + M <= 32 } | *** *** = 528 **/ FIELD_EXT.Q.P.m.M 1056 = 2.x written read FIELD_MRG.Q.P.m.M 1056 = 2.x written read1 read2 ------------------ ---------- ---------------------------------------------- ENTRY.Q.u.W 4 rtype_list(R1) entry_arg_list(A1) entry_name ------------------ ---------- ---------------------------------------------- CALL.Q.U.V 6 call_ret_list(R1) call_arg_list(A1) rdecl inline_limit PCALL.Q.U.V 6 call_ret_list(R1) call_arg_list(A1) routine_ptr ------------------ ---------- ---------------------------------------------- RET.Q 1 return_ret_list(R1) ------------------ ---------- ---------------------------------------------- IGOTO.Q 1 label_ptr TAG_ANCHOR.Q 1 tag_list ------------------ ---------- ---------------------------------------------- IF_EQT.Q.r.G 6 = 2.3 prob if_convert short_branch read1 read2 IF_REL.Q.R.H 16 = 4.4 prob if_convert short_branch read1 read2 IF_GANDOR.Q.s 2 prob if_convert short_branch flag_read_list IF_GXOROP.Q.T 2 prob if_convert short_branch read_list IF_GBANDOR.Q.s 2 prob if_convert short_branch flag_read_list IF_GBXOROP.Q.T 2 prob if_convert short_branch read_list LOOP_BEGIN.Q 1 expected_iter interlv_amount pcond_amount last_unroll unroll_amount1 unroll_amount2 ivdep_loop peel_amount ------------------ ---------- ---------------------------------------------- DERIV_FENCE.Q 1 read_written DERIV_ASSIGN.Q 1 read_written read ------------------ ---------- ---------------------------------------------- ASSIGN.Q.N 2 written read CONV.Q.F 2 written read FIX.Q.F 2 written read UFIX.Q.F (AJ) 2 written read ILFLOAT.Q.F 2 written read UFLOAT.Q.F (AJ) 2 written read COMB.Q 1 written read1 read2 GETHI.Q 1 written read GETLO.Q 1 written read ------------------ ---------- ---------------------------------------------- FABS.Q.F 2 written read FINT.Q.F (AJ) 2 written read FSQRT.Q.F 2 written read NEG.Q.H 4 written read RECIP.Q.H 4 written read DIV.Q.I 2 written read1 read2 REM.Q.I 2 written read1 read2 GADD.Q.H 4 written flag_read_list GFMUL.Q.F 4 written flag_read_list GIMUL.Q.I 4 written read_list EQT.Q.r.G 6 = 2.3 written read1 read2 REL.Q.R.H 16 = 4.4 written read1 read2 SHIFT.Q.X 4 written read1 read2 UNBOOL.Q.T 2 written read GANDOR.Q.s 2 written flag_read_list GXOROP.Q.T 2 written read_list BNOT.Q 1 written read GBANDOR.Q.s 2 written flag_read_list GBXOROP.Q.T 2 written read_list SLCT_EQT.Q.r.G.N 12 = 2.3.2 written read1 read2 sread1 sread2 SLCT_REL.Q.R.H.N 32 = 4.4.2 written read1 read2 sread1 sread2 SLCT_GAO.Q.s.N 4 = 2.2 written flag_read_list sread1 sread2 SLCT_GXO.Q.T.N 4 = 2.2 written read_list sread1 sread2 SLCT_GBAO.Q.s.N 4 = 2.2 written flag_read_list sread1 sread2 SLCT_GBXO.Q.T.N 4 = 2.2 written read_list sread1 sread2 ------------------ ---------- ---------------------------------------------- ASSERT_EQT.Q.r 2 read1 read2 ASSERT_REL.Q.R 4 read1 read2 ASSERT_EQT_MOD.Q.r 2 read1 read2 mod_base ------------------ ---------- ---------------------------------------------- Private Phase 2 groups: ======================= GROUP NUMBER OPERANDS ------------------ ---------- ---------------------------------------------- ALD.Q.q.a.C 8 = 2.4 written disp base var si_scale vo sil_list predicate_history AST.Q.a.C 4 read disp base var pred1 pred1_test pred2 pred2_test si_scale vo sil_list predicate_history SALD.Q.q.b.C 6 = 2.3 written disp base var si_scale vo sil_list predicate_history SAST.Q.b.C 3 read disp base var pred1 pred1_test pred2 pred2_test si_scale vo sil_list predicate_history S8ALD32.Q.q.C 2 written disp base var si_scale vo sil_list predicate_history S8AST32.Q.C 1 read disp base var pred1 pred1_test pred2 pred2_test si_scale vo sil_list predicate_history ------------------ ---------- ---------------------------------------------- TENTRY_RA.Q.u.W 4 atw_list(A2) entry_name ab_var TENTRY_RX.Q.u.W 4 atw_list(A2) entry_name TENTRY_XA.Q.u.W 4 atw_list(A2) entry_name ab_var TENTRY_XX.Q.u.W 4 atw_list(A2) entry_name ------------------ ---------- ---------------------------------------------- TCALL.Q.U.V 6 call_ret_list(R1) call_arg_list(A1) rout rsp ------------------ ---------- ---------------------------------------------- TRET.Q 1 rtr_list(R2) ------------------ ---------- ---------------------------------------------- IL-2 groups: ============ GROUP NUMBER OPERANDS ------------------ ---------- ---------------------------------------------- NOP.Q 1 - ------------------ ---------- ---------------------------------------------- LD.Q.q.a.C 8 = 2.4 written disp base var predicate_history ST.Q.a.C 4 read disp base var pred1 pred1_test pred2 pred2_test predicate_history SLD.Q.q.b.C 6 = 2.3 written disp base var predicate_history SST.Q.b.C 3 read disp base var pred1 pred1_test pred2 pred2_test predicate_history S8LD32.Q.q.C 2 written disp base var predicate_history S8ST32.Q.C 1 read disp base var pred1 pred1_test pred2 pred2_test predicate_history EXT.Q.K 4 written read1 read2 MRG.Q.K 4 written read1 read2 read3 ------------------ ---------- ---------------------------------------------- LENTRY_RA.Q.u.W 4 atw_list(A2) entry_name auto_size wra wsp wrp wap LENTRY_RX.Q.u.W 4 atw_list(A2) entry_name auto_size wra wsp wrp LENTRY_XA.Q.u.W 4 atw_list(A2) entry_name auto_size wra wsp wap LENTRY_XX.Q.u.W 4 atw_list(A2) entry_name auto_size wra wsp ------------------ ---------- ---------------------------------------------- EF_INIT.Q 1 wef EF_TEST.Q 1 ref load_list ------------------ ---------- ---------------------------------------------- LCALL_RA.Q.U.V 6 rtw_list(R2) atr_list(A2) rout rrp rap ab_vstart ab_vsize rrec_cnt LCALL_RX.Q.U.V 6 rtw_list(R2) atr_list(A2) rout rrp rap rrec_cnt LCALL_XA.Q.U.V 6 rtw_list(R2) atr_list(A2) rout rap ab_vstart ab_vsize rrec_cnt LCALL_XX.Q.U.V 6 rtw_list(R2) atr_list(A2) rout rap rrec_cnt ------------------ ---------- ---------------------------------------------- LRET.Q 1 rtr_list(R2) auto_size rra rsp ref ------------------ ---------- ---------------------------------------------- IGOTO.Q 1 label_ptr TAG_ANCHOR.Q 1 tag_list ------------------ ---------- ---------------------------------------------- IF_BOOL.Q 1 prob if_convert short_branch read ------------------ ---------- ---------------------------------------------- LOOP_BEGIN.Q 1 expected_iter interlv_amount pcond_amount last_unroll unroll_amount1 unroll_amount2 ivdep_loop peel_amount QLOOP_ENTRANCE.Q 1 qloop_num QLOOP_BACK_EDGE.Q 1 qloop_num QLOOP_EXIT.Q 1 qloop_num ------------------ ---------- ---------------------------------------------- DERIV_FENCE.Q 1 read_written DERIV_ASSIGN.Q 1 read_written read ------------------ ---------- ---------------------------------------------- ASSIGN.Q.N 2 written read CONV.Q.F 2 written read FIX.Q.F 2 written read UFIX.Q.F (AJ) 2 written read ILFLOAT.Q.F 2 written read UFLOAT.Q.F (AJ) 2 written read COMB.Q 1 written read1 read2 GETHI.Q 1 written read GETLO.Q 1 written read ------------------ ---------- ---------------------------------------------- FABS.Q.F 2 written read FINT.Q.F (AJ) 2 written read FSQRT.Q.F 2 written read DIV.Q.I 2 written read1 read2 REM.Q.I 2 written read1 read2 ADD.Q.H 4 written read1 read2 SUB.Q.H 4 written read1 read2 ADDS.Q.l 3 written read1 read2 MUL.Q.Z.i (SJ) 6 = 3.2 written read1 read2 IMUL.Q.I (A) 2 written read1 read2 FMUL.Q.F 2 written read1 read2 FDIV.Q.F 2 written read1 read2 FMIN.Q.F (AJ) 2 written read1 read2 FMAX.Q.F (AJ) 2 written read1 read2 EQT.Q.r.G 6 = 2.3 written read1 read2 REL.Q.R.H 16 = 4.4 written read1 read2 LSHIFT.Q.Y (SJ) 3 written read1 read2 LSHIFT.Q.X (A) 4 written read1 read2 ANDOR.Q.s.o 8 = 2.4 written read1 read2 EQVOP.Q.S 2 written read1 read2 BANDOR.Q.s.O (SJ) 4 = 2.2 written read1 read2 BANDOR.Q.s.o (A) 8 = 2.4 written read1 read2 BEQVOP.Q.S 2 written read1 read2 ------------------ ---------- ---------------------------------------------- SLCT_BOOL.Q.N 2 written read sread1 sread2 ------------------ ---------- ---------------------------------------------- ASSERT_EQT.Q.r 2 read1 read2 ASSERT_REL.Q.R 4 read1 read2 ASSERT_EQT_MOD.Q.r 2 read1 read2 mod_base ------------------ ---------- ----------------------------------------------