Open64 (mfef90, whirl2f, and IR tools)
TAG: version-openad; SVN changeset: 916
|
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