Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
cwh_expr.i
Go to the documentation of this file.
00001 /*
00002 
00003   Copyright (C) 2000, 2001 Silicon Graphics, Inc.  All Rights Reserved.
00004 
00005   This program is free software; you can redistribute it and/or modify it
00006   under the terms of version 2 of the GNU General Public License as
00007   published by the Free Software Foundation.
00008 
00009   This program is distributed in the hope that it would be useful, but
00010   WITHOUT ANY WARRANTY; without even the implied warranty of
00011   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
00012 
00013   Further, this software is distributed without any warranty that it is
00014   free of the rightful claim of any third person regarding infringement 
00015   or the like.  Any license provided herein, whether implied or 
00016   otherwise, applies only to this software file.  Patent licenses, if 
00017   any, provided herein do not apply to combinations of this program with 
00018   other software, or any other product whatsoever.  
00019 
00020   You should have received a copy of the GNU General Public License along
00021   with this program; if not, write the Free Software Foundation, Inc., 59
00022   Temple Place - Suite 330, Boston MA 02111-1307, USA.
00023 
00024   Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
00025   Mountain View, CA 94043, or:
00026 
00027   http://www.sgi.com
00028 
00029   For further information regarding this notice, see:
00030 
00031   http://oss.sgi.com/projects/GenInfo/NoticeExplan
00032 
00033 */
00034 
00035 #if 0
00036 #define MAX_UNARY_OPS  1 
00037 
00038 static const OPCODE Unary_Opcode [MAX_UNARY_OPS] [MTYPE_LAST + 1] = {
00039   OPCODE_UNKNOWN,    /* MTYPE_UNKNOWN */
00040   OPCODE_UNKNOWN,    /* MTYPE_B    */
00041   OPC_I4NEG,      /* MTYPE_I1    */
00042   OPC_I4NEG,      /* MTYPE_I2   */
00043   OPC_I4NEG,      /* MTYPE_I4   */
00044   OPC_I8NEG,      /* MTYPE_I8   */
00045   OPC_U4NEG,      /* MTYPE_U1   */
00046   OPC_U4NEG,      /* MTYPE_U2  */
00047   OPC_U4NEG,      /* MTYPE_U4  */
00048   OPC_U8NEG,      /* MTYPE_U8  */
00049   OPC_F4NEG,      /* MTYPE_F4  */
00050   OPC_F8NEG,      /* MTYPE_F8  */
00051   OPCODE_UNKNOWN,    /* MTYPE_F10  */
00052   OPCODE_UNKNOWN,    /* MTYPE_F16 */
00053   OPCODE_UNKNOWN,    /* MTYPE_STR  */
00054   OPC_FQNEG,      /* MTYPE_FQ    */
00055   OPCODE_UNKNOWN,    /* MTYPE_M   */
00056   OPC_C4NEG,      /* MTYPE_C4  */
00057   OPC_C8NEG,      /* MTYPE_C8  */
00058   OPC_CQNEG,      /* MTYPE_CQ  */
00059   OPCODE_UNKNOWN     /* MTYPE_V   */
00060 
00061 };
00062 
00063 static const OPCODE Binary_Opcode [opLAST_BIN_OP][MTYPE_LAST + 1]  = {{ 
00064   OPCODE_UNKNOWN,    /* MTYPE_UNKNOWN */
00065   OPCODE_UNKNOWN,    /* MTYPE_B    */
00066   OPC_I4ADD,      /* MTYPE_I1    */
00067   OPC_I4ADD,      /* MTYPE_I2   */
00068   OPC_I4ADD,      /* MTYPE_I4   */
00069   OPC_I8ADD,      /* MTYPE_I8   */
00070   OPC_U4ADD,      /* MTYPE_U1   */
00071   OPC_U4ADD,      /* MTYPE_U2  */
00072   OPC_U4ADD,      /* MTYPE_U4  */
00073   OPC_U8ADD,      /* MTYPE_U8  */
00074   OPC_F4ADD,      /* MTYPE_F4  */
00075   OPC_F8ADD,      /* MTYPE_F8  */
00076   OPCODE_UNKNOWN,    /* MTYPE_F10  */
00077   OPCODE_UNKNOWN,    /* MTYPE_F16 */
00078   OPCODE_UNKNOWN,    /* MTYPE_STR  */
00079   OPC_FQADD,      /* MTYPE_FQ    */
00080   OPCODE_UNKNOWN,    /* MTYPE_M  */
00081   OPC_C4ADD,      /* MTYPE_C4 */
00082   OPC_C8ADD,      /* MTYPE_C8 */
00083   OPC_CQADD,      /* MTYPE_CQ */
00084   OPCODE_UNKNOWN     /* MTYPE_V    */
00085 },{
00086   OPCODE_UNKNOWN,    /* MTYPE_UNKNOWN */
00087   OPCODE_UNKNOWN,    /* MTYPE_B    */
00088   OPC_I4SUB,      /* MTYPE_I1    */
00089   OPC_I4SUB,      /* MTYPE_I2   */
00090   OPC_I4SUB,      /* MTYPE_I4   */
00091   OPC_I8SUB,      /* MTYPE_I8   */
00092   OPC_U4SUB,      /* MTYPE_U1   */
00093   OPC_U4SUB,      /* MTYPE_U2  */
00094   OPC_U4SUB,      /* MTYPE_U4  */
00095   OPC_U8SUB,      /* MTYPE_U8  */
00096   OPC_F4SUB,      /* MTYPE_F4  */
00097   OPC_F8SUB,      /* MTYPE_F8  */
00098   OPCODE_UNKNOWN,    /* MTYPE_F10  */
00099   OPCODE_UNKNOWN,    /* MTYPE_F16 */
00100   OPCODE_UNKNOWN,    /* MTYPE_STR  */
00101   OPC_FQSUB,      /* MTYPE_FQ    */
00102   OPCODE_UNKNOWN,    /* MTYPE_M  */
00103   OPC_C4SUB,      /* MTYPE_C4 */
00104   OPC_C8SUB,      /* MTYPE_C8 */
00105   OPC_CQSUB,      /* MTYPE_CQ */
00106   OPCODE_UNKNOWN     /* MTYPE_V    */
00107 },{
00108   OPCODE_UNKNOWN,    /* MTYPE_UNKNOWN */
00109   OPCODE_UNKNOWN,    /* MTYPE_B    */
00110   OPC_I4MPY,      /* MTYPE_I1    */
00111   OPC_I4MPY,      /* MTYPE_I2   */
00112   OPC_I4MPY,      /* MTYPE_I4   */
00113   OPC_I8MPY,      /* MTYPE_I8   */
00114   OPC_U4MPY,      /* MTYPE_U1   */
00115   OPC_U4MPY,      /* MTYPE_U2  */
00116   OPC_U4MPY,      /* MTYPE_U4  */
00117   OPC_U8MPY,      /* MTYPE_U8  */
00118   OPC_F4MPY,      /* MTYPE_F4  */
00119   OPC_F8MPY,      /* MTYPE_F8  */
00120   OPCODE_UNKNOWN,    /* MTYPE_F10  */
00121   OPCODE_UNKNOWN,    /* MTYPE_F16 */
00122   OPCODE_UNKNOWN,    /* MTYPE_STR  */
00123   OPC_FQMPY,      /* MTYPE_FQ    */
00124   OPCODE_UNKNOWN,    /* MTYPE_M  */
00125   OPC_C4MPY,      /* MTYPE_C4 */
00126   OPC_C8MPY,      /* MTYPE_C8 */
00127   OPC_CQMPY,      /* MTYPE_CQ */
00128   OPCODE_UNKNOWN     /* MTYPE_V    */
00129 },{
00130   OPCODE_UNKNOWN,    /* MTYPE_UNKNOWN */
00131   OPCODE_UNKNOWN,    /* MTYPE_B    */
00132   OPC_I4DIV,      /* MTYPE_I1    */
00133   OPC_I4DIV,      /* MTYPE_I2   */
00134   OPC_I4DIV,      /* MTYPE_I4   */
00135   OPC_I8DIV,      /* MTYPE_I8   */
00136   OPC_U4DIV,      /* MTYPE_U1   */
00137   OPC_U4DIV,      /* MTYPE_U2  */
00138   OPC_U4DIV,      /* MTYPE_U4  */
00139   OPC_U8DIV,      /* MTYPE_U8  */
00140   OPC_F4DIV,      /* MTYPE_F4  */
00141   OPC_F8DIV,      /* MTYPE_F8  */
00142   OPCODE_UNKNOWN,    /* MTYPE_F10  */
00143   OPCODE_UNKNOWN,    /* MTYPE_F16 */
00144   OPCODE_UNKNOWN,    /* MTYPE_STR  */
00145   OPC_FQDIV,      /* MTYPE_FQ    */
00146   OPCODE_UNKNOWN,    /* MTYPE_M  */
00147   OPC_C4DIV,      /* MTYPE_C4 */
00148   OPC_C8DIV,      /* MTYPE_C8 */
00149   OPC_CQDIV,      /* MTYPE_CQ */
00150   OPCODE_UNKNOWN     /* MTYPE_V    */
00151 },{
00152   OPCODE_UNKNOWN,    /* MTYPE_UNKNOWN */
00153   OPCODE_UNKNOWN,    /* MTYPE_B    */
00154   OPC_I4GT,      /* MTYPE_I1    */
00155   OPC_I4GT,      /* MTYPE_I2   */
00156   OPC_I4GT,      /* MTYPE_I4   */
00157   OPC_I8GT,      /* MTYPE_I8   */
00158   OPC_U4GT,      /* MTYPE_U1   */
00159   OPC_U4GT,      /* MTYPE_U2  */
00160   OPC_U4GT,      /* MTYPE_U4  */
00161   OPC_U8GT,       /* MTYPE_U8  */
00162   OPC_F4GT,       /* MTYPE_F4  */
00163   OPC_F8GT,       /* MTYPE_F8  */
00164   OPCODE_UNKNOWN,    /* MTYPE_F10  */
00165   OPCODE_UNKNOWN,    /* MTYPE_F16 */
00166   OPCODE_UNKNOWN,    /* MTYPE_STR  */
00167   OPC_FQGT,       /* MTYPE_FQ    */
00168   OPCODE_UNKNOWN,    /* MTYPE_M  */
00169   OPCODE_UNKNOWN,    /* MTYPE_C4 */
00170   OPCODE_UNKNOWN,    /* MTYPE_C8 */
00171   OPCODE_UNKNOWN,    /* MTYPE_CQ */
00172   OPCODE_UNKNOWN     /* MTYPE_V    */
00173 },{
00174   OPCODE_UNKNOWN,    /* MTYPE_UNKNOWN */
00175   OPCODE_UNKNOWN,    /* MTYPE_B    */
00176   OPC_I4GE,      /* MTYPE_I1    */
00177   OPC_I4GE,      /* MTYPE_I2   */
00178   OPC_I4GE,      /* MTYPE_I4   */
00179   OPC_I8GE,      /* MTYPE_I8   */
00180   OPC_U4GE,      /* MTYPE_U1   */
00181   OPC_U4GE,      /* MTYPE_U2  */
00182   OPC_U4GE,      /* MTYPE_U4  */
00183   OPC_U8GE,       /* MTYPE_U8  */
00184   OPC_F4GE,       /* MTYPE_F4  */
00185   OPC_F8GE,       /* MTYPE_F8  */
00186   OPCODE_UNKNOWN,    /* MTYPE_F10  */
00187   OPCODE_UNKNOWN,    /* MTYPE_F16 */
00188   OPCODE_UNKNOWN,    /* MTYPE_STR  */
00189   OPC_FQGE,       /* MTYPE_FQ    */
00190   OPCODE_UNKNOWN,    /* MTYPE_M  */
00191   OPCODE_UNKNOWN,    /* MTYPE_C4 */
00192   OPCODE_UNKNOWN,    /* MTYPE_C8 */
00193   OPCODE_UNKNOWN,    /* MTYPE_CQ */
00194   OPCODE_UNKNOWN     /* MTYPE_V    */
00195 },{
00196   OPCODE_UNKNOWN,    /* MTYPE_UNKNOWN */
00197   OPCODE_UNKNOWN,    /* MTYPE_B    */
00198   OPC_I4LT,      /* MTYPE_I1    */
00199   OPC_I4LT,      /* MTYPE_I2   */
00200   OPC_I4LT,      /* MTYPE_I4   */
00201   OPC_I8LT,      /* MTYPE_I8   */
00202   OPC_U4LT,      /* MTYPE_U1   */
00203   OPC_U4LT,      /* MTYPE_U2  */
00204   OPC_U4LT,      /* MTYPE_U4  */
00205   OPC_U8LT,       /* MTYPE_U8  */
00206   OPC_F4LT,       /* MTYPE_F4  */
00207   OPC_F8LT,       /* MTYPE_F8  */
00208   OPCODE_UNKNOWN,    /* MTYPE_F10  */
00209   OPCODE_UNKNOWN,    /* MTYPE_F16 */
00210   OPCODE_UNKNOWN,    /* MTYPE_STR  */
00211   OPC_FQLT,       /* MTYPE_FQ    */
00212   OPCODE_UNKNOWN,    /* MTYPE_M  */
00213   OPCODE_UNKNOWN,    /* MTYPE_C4 */
00214   OPCODE_UNKNOWN,    /* MTYPE_C8 */
00215   OPCODE_UNKNOWN,    /* MTYPE_CQ */
00216   OPCODE_UNKNOWN     /* MTYPE_V    */
00217 },{
00218   OPCODE_UNKNOWN,    /* MTYPE_UNKNOWN */
00219   OPCODE_UNKNOWN,    /* MTYPE_B    */
00220   OPC_I4LE,      /* MTYPE_I1    */
00221   OPC_I4LE,      /* MTYPE_I2   */
00222   OPC_I4LE,      /* MTYPE_I4   */
00223   OPC_I8LE,      /* MTYPE_I8   */
00224   OPC_U4LE,      /* MTYPE_U1   */
00225   OPC_U4LE,      /* MTYPE_U2  */
00226   OPC_U4LE,      /* MTYPE_U4  */
00227   OPC_U8LE,       /* MTYPE_U8  */
00228   OPC_F4LE,       /* MTYPE_F4  */
00229   OPC_F8LE,       /* MTYPE_F8  */
00230   OPCODE_UNKNOWN,    /* MTYPE_F10  */
00231   OPCODE_UNKNOWN,    /* MTYPE_F16 */
00232   OPCODE_UNKNOWN,    /* MTYPE_STR  */
00233   OPC_FQLE,       /* MTYPE_FQ    */
00234   OPCODE_UNKNOWN,    /* MTYPE_M  */
00235   OPCODE_UNKNOWN,    /* MTYPE_C4 */
00236   OPCODE_UNKNOWN,    /* MTYPE_C8 */
00237   OPCODE_UNKNOWN,    /* MTYPE_CQ */
00238   OPCODE_UNKNOWN     /* MTYPE_V    */
00239 },{
00240   OPCODE_UNKNOWN,    /* MTYPE_UNKNOWN */
00241   OPCODE_UNKNOWN,    /* MTYPE_B    */
00242   OPC_I4EQ,      /* MTYPE_I1    */
00243   OPC_I4EQ,      /* MTYPE_I2   */
00244   OPC_I4EQ,      /* MTYPE_I4   */
00245   OPC_I8EQ,      /* MTYPE_I8   */
00246   OPC_U4EQ,      /* MTYPE_U1   */
00247   OPC_U4EQ,      /* MTYPE_U2  */
00248   OPC_U4EQ,      /* MTYPE_U4  */
00249   OPC_U8EQ,       /* MTYPE_U8  */
00250   OPC_F4EQ,       /* MTYPE_F4  */
00251   OPC_F8EQ,       /* MTYPE_F8  */
00252   OPCODE_UNKNOWN,    /* MTYPE_F10  */
00253   OPCODE_UNKNOWN,    /* MTYPE_F16 */
00254   OPCODE_UNKNOWN,    /* MTYPE_STR  */
00255   OPC_FQEQ,       /* MTYPE_FQ    */
00256   OPCODE_UNKNOWN,    /* MTYPE_M  */
00257   OPC_C4EQ,       /* MTYPE_C4 */
00258   OPC_C8EQ,       /* MTYPE_C8 */
00259   OPC_CQEQ,       /* MTYPE_CQ */
00260   OPCODE_UNKNOWN     /* MTYPE_V    */
00261 },{
00262   OPCODE_UNKNOWN,    /* MTYPE_UNKNOWN */
00263   OPCODE_UNKNOWN,    /* MTYPE_B    */
00264   OPC_I4NE,      /* MTYPE_I1    */
00265   OPC_I4NE,      /* MTYPE_I2   */
00266   OPC_I4NE,      /* MTYPE_I4   */
00267   OPC_I8NE,      /* MTYPE_I8   */
00268   OPC_U4NE,      /* MTYPE_U1   */
00269   OPC_U4NE,      /* MTYPE_U2  */
00270   OPC_U4NE,      /* MTYPE_U4  */
00271   OPC_U8NE,       /* MTYPE_U8  */
00272   OPC_F4NE,       /* MTYPE_F4  */
00273   OPC_F8NE,       /* MTYPE_F8  */
00274   OPCODE_UNKNOWN,    /* MTYPE_F10  */
00275   OPCODE_UNKNOWN,    /* MTYPE_F16 */
00276   OPCODE_UNKNOWN,    /* MTYPE_STR  */
00277   OPC_FQNE,       /* MTYPE_FQ    */
00278   OPCODE_UNKNOWN,    /* MTYPE_M  */
00279   OPC_C4NE,       /* MTYPE_C4 */
00280   OPC_C8NE,       /* MTYPE_C8 */
00281   OPC_CQNE,      /* MTYPE_CQ */
00282   OPCODE_UNKNOWN     /* MTYPE_V    */
00283 },{
00284   OPCODE_UNKNOWN,    /* MTYPE_UNKNOWN */
00285   OPCODE_UNKNOWN,    /* MTYPE_B    */
00286   OPC_I4BAND,     /* MTYPE_I1    */
00287   OPC_I4BAND,     /* MTYPE_I2   */
00288   OPC_I4BAND,     /* MTYPE_I4   */
00289   OPC_I8BAND,     /* MTYPE_I8   */
00290   OPC_U4BAND,     /* MTYPE_U1   */
00291   OPC_U4BAND,     /* MTYPE_U2  */
00292   OPC_U4BAND,     /* MTYPE_U4  */
00293   OPC_U8BAND,     /* MTYPE_U8  */
00294   OPCODE_UNKNOWN,    /* MTYPE_F4  */
00295   OPCODE_UNKNOWN,    /* MTYPE_F8  */
00296   OPCODE_UNKNOWN,    /* MTYPE_F10  */
00297   OPCODE_UNKNOWN,    /* MTYPE_F16 */
00298   OPCODE_UNKNOWN,    /* MTYPE_STR  */
00299   OPCODE_UNKNOWN,    /* MTYPE_FQ    */
00300   OPCODE_UNKNOWN,    /* MTYPE_M  */
00301   OPCODE_UNKNOWN,    /* MTYPE_C4 */
00302   OPCODE_UNKNOWN,    /* MTYPE_C8 */
00303   OPCODE_UNKNOWN,    /* MTYPE_CQ */
00304   OPCODE_UNKNOWN     /* MTYPE_V    */
00305 },{
00306   OPCODE_UNKNOWN,    /* MTYPE_UNKNOWN */
00307   OPCODE_UNKNOWN,    /* MTYPE_B    */
00308   OPC_I4BIOR,     /* MTYPE_I1    */
00309   OPC_I4BIOR,     /* MTYPE_I2   */
00310   OPC_I4BIOR,     /* MTYPE_I4   */
00311   OPC_I8BIOR,     /* MTYPE_I8   */
00312   OPC_U4BIOR,     /* MTYPE_U1   */
00313   OPC_U4BIOR,     /* MTYPE_U2  */
00314   OPC_U4BIOR,     /* MTYPE_U4  */
00315   OPC_U8BIOR,     /* MTYPE_U8  */
00316   OPCODE_UNKNOWN,    /* MTYPE_F4  */
00317   OPCODE_UNKNOWN,    /* MTYPE_F8  */
00318   OPCODE_UNKNOWN,    /* MTYPE_F10  */
00319   OPCODE_UNKNOWN,    /* MTYPE_F16 */
00320   OPCODE_UNKNOWN,    /* MTYPE_STR  */
00321   OPCODE_UNKNOWN,    /* MTYPE_FQ    */
00322   OPCODE_UNKNOWN,    /* MTYPE_M  */
00323   OPCODE_UNKNOWN,    /* MTYPE_C4 */
00324   OPCODE_UNKNOWN,    /* MTYPE_C8 */
00325   OPCODE_UNKNOWN,    /* MTYPE_CQ */
00326   OPCODE_UNKNOWN     /* MTYPE_V    */
00327 },{
00328   OPCODE_UNKNOWN,    /* MTYPE_UNKNOWN */
00329   OPCODE_UNKNOWN,    /* MTYPE_B    */
00330   OPC_I4BXOR,     /* MTYPE_I1    */
00331   OPC_I4BXOR,     /* MTYPE_I2   */
00332   OPC_I4BXOR,     /* MTYPE_I4   */
00333   OPC_I8BXOR,     /* MTYPE_I8   */
00334   OPC_U4BXOR,     /* MTYPE_U1   */
00335   OPC_U4BXOR,     /* MTYPE_U2  */
00336   OPC_U4BXOR,     /* MTYPE_U4  */
00337   OPC_U8BXOR,     /* MTYPE_U8  */
00338   OPCODE_UNKNOWN,    /* MTYPE_F4  */
00339   OPCODE_UNKNOWN,    /* MTYPE_F8  */
00340   OPCODE_UNKNOWN,    /* MTYPE_F10  */
00341   OPCODE_UNKNOWN,    /* MTYPE_F16 */
00342   OPCODE_UNKNOWN,    /* MTYPE_STR  */
00343   OPCODE_UNKNOWN,    /* MTYPE_FQ    */
00344   OPCODE_UNKNOWN,    /* MTYPE_M  */
00345   OPCODE_UNKNOWN,    /* MTYPE_C4 */
00346   OPCODE_UNKNOWN,    /* MTYPE_C8 */
00347   OPCODE_UNKNOWN,    /* MTYPE_CQ */
00348   OPCODE_UNKNOWN     /* MTYPE_V    */
00349 }
00350 };
00351 
00352 
00353 
00354 /* forward references */
00355 
00356 
00357 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines