1 /** 2 * @file 3 * @brief Function prototypes for the new opcode functions. 4 * @note DO NOT EDIT THIS FILE, your changes will be lost. 5 * Edit ir/be/sparc/sparc_spec.pl instead. 6 * created by: ir/be/scripts/generate_new_opcodes.pl ir/be/sparc/sparc_spec.pl ir/be/sparc 7 * @date Mon Nov 19 18:12:23 2012 8 */ 9 #ifndef FIRM_BE_SPARC_GEN_SPARC_NEW_NODES_H 10 #define FIRM_BE_SPARC_GEN_SPARC_NEW_NODES_H 11 12 typedef enum sparc_opcodes { 13 iro_sparc_SubCCZero, 14 iro_sparc_Sra, 15 iro_sparc_Ld, 16 iro_sparc_fitof, 17 iro_sparc_fadd, 18 iro_sparc_Start, 19 iro_sparc_RestoreZero, 20 iro_sparc_SetHi, 21 iro_sparc_Xor, 22 iro_sparc_Or, 23 iro_sparc_Restore, 24 iro_sparc_SubX_t, 25 iro_sparc_UMulh, 26 iro_sparc_Ba, 27 iro_sparc_Cmp, 28 iro_sparc_fftof, 29 iro_sparc_XNorCCZero, 30 iro_sparc_Call, 31 iro_sparc_AddX, 32 iro_sparc_SubSP, 33 iro_sparc_Add, 34 iro_sparc_SubCC, 35 iro_sparc_Ldf, 36 iro_sparc_fdiv, 37 iro_sparc_AndN, 38 iro_sparc_fftoi, 39 iro_sparc_XorCCZero, 40 iro_sparc_St, 41 iro_sparc_MulCCZero, 42 iro_sparc_Save, 43 iro_sparc_fbfcc, 44 iro_sparc_Sub, 45 iro_sparc_Mul, 46 iro_sparc_SubCC_t, 47 iro_sparc_Stf, 48 iro_sparc_SDiv, 49 iro_sparc_AddX_t, 50 iro_sparc_fabs, 51 iro_sparc_AddCC, 52 iro_sparc_Bicc, 53 iro_sparc_OrN, 54 iro_sparc_SubX, 55 iro_sparc_fcmp, 56 iro_sparc_OrCCZero, 57 iro_sparc_AddSP, 58 iro_sparc_SMulh, 59 iro_sparc_AddCC_t, 60 iro_sparc_Return, 61 iro_sparc_XNor, 62 iro_sparc_AndNCCZero, 63 iro_sparc_AndCCZero, 64 iro_sparc_FrameAddr, 65 iro_sparc_OrNCCZero, 66 iro_sparc_And, 67 iro_sparc_fmul, 68 iro_sparc_AddCCZero, 69 iro_sparc_UDiv, 70 iro_sparc_Sll, 71 iro_sparc_SwitchJmp, 72 iro_sparc_Srl, 73 iro_sparc_fneg, 74 iro_sparc_fsub, 75 iro_sparc_last_generated, 76 iro_sparc_last = iro_sparc_last_generated 77 } sparc_opcodes; 78 79 int is_sparc_irn(const ir_node *node); 80 int is_sparc_op(const ir_op *op); 81 82 int get_sparc_opcode_first(void); 83 int get_sparc_opcode_last(void); 84 int get_sparc_irn_opcode(const ir_node *node); 85 void sparc_create_opcodes(const arch_irn_ops_t *be_ops); 86 void sparc_free_opcodes(void); 87 extern ir_op *op_sparc_SubCCZero; 88 ir_op *get_op_sparc_SubCCZero(void); 89 int is_sparc_SubCCZero(const ir_node *n); 90 /** 91 * construct SubCCZero node 92 */ 93 ir_node *new_bd_sparc_SubCCZero_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 94 /** 95 * construct SubCCZero node 96 */ 97 ir_node *new_bd_sparc_SubCCZero_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 98 99 extern ir_op *op_sparc_Sra; 100 ir_op *get_op_sparc_Sra(void); 101 int is_sparc_Sra(const ir_node *n); 102 /** 103 * construct Sra node 104 */ 105 ir_node *new_bd_sparc_Sra_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 106 /** 107 * construct Sra node 108 */ 109 ir_node *new_bd_sparc_Sra_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 110 111 extern ir_op *op_sparc_Ld; 112 ir_op *get_op_sparc_Ld(void); 113 int is_sparc_Ld(const ir_node *n); 114 /** 115 * construct Ld node 116 */ 117 ir_node *new_bd_sparc_Ld_imm(dbg_info *dbgi, ir_node *block, ir_node *ptr, ir_node *mem, ir_mode *ls_mode, ir_entity *entity, int32_t offset, bool is_frame_entity); 118 /** 119 * construct Ld node 120 */ 121 ir_node *new_bd_sparc_Ld_reg(dbg_info *dbgi, ir_node *block, ir_node *ptr, ir_node *ptr2, ir_node *mem, ir_mode *ls_mode); 122 123 extern ir_op *op_sparc_fitof; 124 ir_op *get_op_sparc_fitof(void); 125 int is_sparc_fitof(const ir_node *n); 126 /** 127 * construct fitof node 128 */ 129 ir_node *new_bd_sparc_fitof_q(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_mode *fp_mode); 130 /** 131 * construct fitof node 132 */ 133 ir_node *new_bd_sparc_fitof_d(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_mode *fp_mode); 134 /** 135 * construct fitof node 136 */ 137 ir_node *new_bd_sparc_fitof_s(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_mode *fp_mode); 138 139 extern ir_op *op_sparc_fadd; 140 ir_op *get_op_sparc_fadd(void); 141 int is_sparc_fadd(const ir_node *n); 142 /** 143 * construct fadd node 144 */ 145 ir_node *new_bd_sparc_fadd_q(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_mode *fp_mode); 146 /** 147 * construct fadd node 148 */ 149 ir_node *new_bd_sparc_fadd_d(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_mode *fp_mode); 150 /** 151 * construct fadd node 152 */ 153 ir_node *new_bd_sparc_fadd_s(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_mode *fp_mode); 154 155 extern ir_op *op_sparc_Start; 156 ir_op *get_op_sparc_Start(void); 157 int is_sparc_Start(const ir_node *n); 158 /** 159 * construct Start node 160 */ 161 ir_node *new_bd_sparc_Start(dbg_info *dbgi, ir_node *block, int n_res); 162 163 extern ir_op *op_sparc_RestoreZero; 164 ir_op *get_op_sparc_RestoreZero(void); 165 int is_sparc_RestoreZero(const ir_node *n); 166 /** 167 * construct RestoreZero node 168 */ 169 ir_node *new_bd_sparc_RestoreZero(dbg_info *dbgi, ir_node *block, ir_node *stack, ir_node *frame_pointer); 170 171 extern ir_op *op_sparc_SetHi; 172 ir_op *get_op_sparc_SetHi(void); 173 int is_sparc_SetHi(const ir_node *n); 174 /** 175 * construct SetHi node 176 */ 177 ir_node *new_bd_sparc_SetHi(dbg_info *dbgi, ir_node *block, ir_entity *entity, int32_t immediate_value); 178 179 extern ir_op *op_sparc_Xor; 180 ir_op *get_op_sparc_Xor(void); 181 int is_sparc_Xor(const ir_node *n); 182 /** 183 * construct Xor node 184 */ 185 ir_node *new_bd_sparc_Xor_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 186 /** 187 * construct Xor node 188 */ 189 ir_node *new_bd_sparc_Xor_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 190 191 extern ir_op *op_sparc_Or; 192 ir_op *get_op_sparc_Or(void); 193 int is_sparc_Or(const ir_node *n); 194 /** 195 * construct Or node 196 */ 197 ir_node *new_bd_sparc_Or_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 198 /** 199 * construct Or node 200 */ 201 ir_node *new_bd_sparc_Or_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 202 203 extern ir_op *op_sparc_Restore; 204 ir_op *get_op_sparc_Restore(void); 205 int is_sparc_Restore(const ir_node *n); 206 /** 207 * construct Restore node 208 */ 209 ir_node *new_bd_sparc_Restore_imm(dbg_info *dbgi, ir_node *block, ir_node *stack, ir_node *frame_pointer, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 210 /** 211 * construct Restore node 212 */ 213 ir_node *new_bd_sparc_Restore_reg(dbg_info *dbgi, ir_node *block, ir_node *stack, ir_node *frame_pointer, ir_node *left, ir_node *right); 214 215 extern ir_op *op_sparc_SubX_t; 216 ir_op *get_op_sparc_SubX_t(void); 217 int is_sparc_SubX_t(const ir_node *n); 218 /** 219 * construct SubX_t node 220 */ 221 ir_node *new_bd_sparc_SubX_t(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_node *flags_input, ir_mode *mode); 222 223 extern ir_op *op_sparc_UMulh; 224 ir_op *get_op_sparc_UMulh(void); 225 int is_sparc_UMulh(const ir_node *n); 226 /** 227 * construct UMulh node 228 */ 229 ir_node *new_bd_sparc_UMulh_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 230 /** 231 * construct UMulh node 232 */ 233 ir_node *new_bd_sparc_UMulh_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 234 235 extern ir_op *op_sparc_Ba; 236 ir_op *get_op_sparc_Ba(void); 237 int is_sparc_Ba(const ir_node *n); 238 /** 239 * construct Ba node 240 */ 241 ir_node *new_bd_sparc_Ba(dbg_info *dbgi, ir_node *block); 242 243 extern ir_op *op_sparc_Cmp; 244 ir_op *get_op_sparc_Cmp(void); 245 int is_sparc_Cmp(const ir_node *n); 246 /** 247 * construct Cmp node 248 */ 249 ir_node *new_bd_sparc_Cmp_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 250 /** 251 * construct Cmp node 252 */ 253 ir_node *new_bd_sparc_Cmp_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 254 255 extern ir_op *op_sparc_fftof; 256 ir_op *get_op_sparc_fftof(void); 257 int is_sparc_fftof(const ir_node *n); 258 /** 259 * construct fftof node 260 */ 261 ir_node *new_bd_sparc_fftof_d_s(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_mode *src_mode, ir_mode *dest_mode); 262 /** 263 * construct fftof node 264 */ 265 ir_node *new_bd_sparc_fftof_q_s(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_mode *src_mode, ir_mode *dest_mode); 266 /** 267 * construct fftof node 268 */ 269 ir_node *new_bd_sparc_fftof_q_d(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_mode *src_mode, ir_mode *dest_mode); 270 /** 271 * construct fftof node 272 */ 273 ir_node *new_bd_sparc_fftof_s_q(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_mode *src_mode, ir_mode *dest_mode); 274 /** 275 * construct fftof node 276 */ 277 ir_node *new_bd_sparc_fftof_s_d(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_mode *src_mode, ir_mode *dest_mode); 278 /** 279 * construct fftof node 280 */ 281 ir_node *new_bd_sparc_fftof_d_q(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_mode *src_mode, ir_mode *dest_mode); 282 283 extern ir_op *op_sparc_XNorCCZero; 284 ir_op *get_op_sparc_XNorCCZero(void); 285 int is_sparc_XNorCCZero(const ir_node *n); 286 /** 287 * construct XNorCCZero node 288 */ 289 ir_node *new_bd_sparc_XNorCCZero_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 290 /** 291 * construct XNorCCZero node 292 */ 293 ir_node *new_bd_sparc_XNorCCZero_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 294 295 extern ir_op *op_sparc_Call; 296 ir_op *get_op_sparc_Call(void); 297 int is_sparc_Call(const ir_node *n); 298 /** 299 * construct Call node 300 */ 301 ir_node *new_bd_sparc_Call_imm(dbg_info *dbgi, ir_node *block, int arity, ir_node *in[], int n_res, ir_entity *entity, int32_t offset, bool aggregate_return); 302 /** 303 * construct Call node 304 */ 305 ir_node *new_bd_sparc_Call_reg(dbg_info *dbgi, ir_node *block, int arity, ir_node *in[], int n_res, bool aggregate_return); 306 307 extern ir_op *op_sparc_AddX; 308 ir_op *get_op_sparc_AddX(void); 309 int is_sparc_AddX(const ir_node *n); 310 /** 311 * construct AddX node 312 */ 313 ir_node *new_bd_sparc_AddX_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *carry, ir_entity *immediate_entity, int32_t immediate_value); 314 /** 315 * construct AddX node 316 */ 317 ir_node *new_bd_sparc_AddX_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_node *carry); 318 319 extern ir_op *op_sparc_SubSP; 320 ir_op *get_op_sparc_SubSP(void); 321 int is_sparc_SubSP(const ir_node *n); 322 /** 323 * construct SubSP node 324 */ 325 ir_node *new_bd_sparc_SubSP_imm(dbg_info *dbgi, ir_node *block, ir_node *stack, ir_node *mem, ir_entity *immediate_entity, int32_t immediate_value); 326 /** 327 * construct SubSP node 328 */ 329 ir_node *new_bd_sparc_SubSP_reg(dbg_info *dbgi, ir_node *block, ir_node *stack, ir_node *size, ir_node *mem); 330 331 extern ir_op *op_sparc_Add; 332 ir_op *get_op_sparc_Add(void); 333 int is_sparc_Add(const ir_node *n); 334 /** 335 * construct Add node 336 */ 337 ir_node *new_bd_sparc_Add_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 338 /** 339 * construct Add node 340 */ 341 ir_node *new_bd_sparc_Add_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 342 343 extern ir_op *op_sparc_SubCC; 344 ir_op *get_op_sparc_SubCC(void); 345 int is_sparc_SubCC(const ir_node *n); 346 /** 347 * construct SubCC node 348 */ 349 ir_node *new_bd_sparc_SubCC_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 350 /** 351 * construct SubCC node 352 */ 353 ir_node *new_bd_sparc_SubCC_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 354 355 extern ir_op *op_sparc_Ldf; 356 ir_op *get_op_sparc_Ldf(void); 357 int is_sparc_Ldf(const ir_node *n); 358 /** 359 * construct Ldf node 360 */ 361 ir_node *new_bd_sparc_Ldf_q(dbg_info *dbgi, ir_node *block, ir_node *ptr, ir_node *mem, ir_mode *ls_mode, ir_entity *entity, int32_t offset, bool is_frame_entity); 362 /** 363 * construct Ldf node 364 */ 365 ir_node *new_bd_sparc_Ldf_d(dbg_info *dbgi, ir_node *block, ir_node *ptr, ir_node *mem, ir_mode *ls_mode, ir_entity *entity, int32_t offset, bool is_frame_entity); 366 /** 367 * construct Ldf node 368 */ 369 ir_node *new_bd_sparc_Ldf_s(dbg_info *dbgi, ir_node *block, ir_node *ptr, ir_node *mem, ir_mode *ls_mode, ir_entity *entity, int32_t offset, bool is_frame_entity); 370 371 extern ir_op *op_sparc_fdiv; 372 ir_op *get_op_sparc_fdiv(void); 373 int is_sparc_fdiv(const ir_node *n); 374 /** 375 * construct fdiv node 376 */ 377 ir_node *new_bd_sparc_fdiv_q(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_mode *fp_mode); 378 /** 379 * construct fdiv node 380 */ 381 ir_node *new_bd_sparc_fdiv_d(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_mode *fp_mode); 382 /** 383 * construct fdiv node 384 */ 385 ir_node *new_bd_sparc_fdiv_s(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_mode *fp_mode); 386 387 extern ir_op *op_sparc_AndN; 388 ir_op *get_op_sparc_AndN(void); 389 int is_sparc_AndN(const ir_node *n); 390 /** 391 * construct AndN node 392 */ 393 ir_node *new_bd_sparc_AndN_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 394 /** 395 * construct AndN node 396 */ 397 ir_node *new_bd_sparc_AndN_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 398 399 extern ir_op *op_sparc_fftoi; 400 ir_op *get_op_sparc_fftoi(void); 401 int is_sparc_fftoi(const ir_node *n); 402 /** 403 * construct fftoi node 404 */ 405 ir_node *new_bd_sparc_fftoi_q(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_mode *fp_mode); 406 /** 407 * construct fftoi node 408 */ 409 ir_node *new_bd_sparc_fftoi_d(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_mode *fp_mode); 410 /** 411 * construct fftoi node 412 */ 413 ir_node *new_bd_sparc_fftoi_s(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_mode *fp_mode); 414 415 extern ir_op *op_sparc_XorCCZero; 416 ir_op *get_op_sparc_XorCCZero(void); 417 int is_sparc_XorCCZero(const ir_node *n); 418 /** 419 * construct XorCCZero node 420 */ 421 ir_node *new_bd_sparc_XorCCZero_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 422 /** 423 * construct XorCCZero node 424 */ 425 ir_node *new_bd_sparc_XorCCZero_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 426 427 extern ir_op *op_sparc_St; 428 ir_op *get_op_sparc_St(void); 429 int is_sparc_St(const ir_node *n); 430 /** 431 * construct St node 432 */ 433 ir_node *new_bd_sparc_St_imm(dbg_info *dbgi, ir_node *block, ir_node *val, ir_node *ptr, ir_node *mem, ir_mode *ls_mode, ir_entity *entity, int32_t offset, bool is_frame_entity); 434 /** 435 * construct St node 436 */ 437 ir_node *new_bd_sparc_St_reg(dbg_info *dbgi, ir_node *block, ir_node *val, ir_node *ptr, ir_node *ptr2, ir_node *mem, ir_mode *ls_mode); 438 439 extern ir_op *op_sparc_MulCCZero; 440 ir_op *get_op_sparc_MulCCZero(void); 441 int is_sparc_MulCCZero(const ir_node *n); 442 /** 443 * construct MulCCZero node 444 */ 445 ir_node *new_bd_sparc_MulCCZero_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 446 /** 447 * construct MulCCZero node 448 */ 449 ir_node *new_bd_sparc_MulCCZero_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 450 451 extern ir_op *op_sparc_Save; 452 ir_op *get_op_sparc_Save(void); 453 int is_sparc_Save(const ir_node *n); 454 /** 455 * construct Save node 456 */ 457 ir_node *new_bd_sparc_Save_imm(dbg_info *dbgi, ir_node *block, ir_node *stack, ir_entity *immediate_entity, int32_t immediate_value); 458 /** 459 * construct Save node 460 */ 461 ir_node *new_bd_sparc_Save_reg(dbg_info *dbgi, ir_node *block, ir_node *stack, ir_node *increment); 462 463 extern ir_op *op_sparc_fbfcc; 464 ir_op *get_op_sparc_fbfcc(void); 465 int is_sparc_fbfcc(const ir_node *n); 466 /** 467 * construct fbfcc node 468 */ 469 ir_node *new_bd_sparc_fbfcc(dbg_info *dbgi, ir_node *block, ir_node *flags, ir_relation relation); 470 471 extern ir_op *op_sparc_Sub; 472 ir_op *get_op_sparc_Sub(void); 473 int is_sparc_Sub(const ir_node *n); 474 /** 475 * construct Sub node 476 */ 477 ir_node *new_bd_sparc_Sub_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 478 /** 479 * construct Sub node 480 */ 481 ir_node *new_bd_sparc_Sub_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 482 483 extern ir_op *op_sparc_Mul; 484 ir_op *get_op_sparc_Mul(void); 485 int is_sparc_Mul(const ir_node *n); 486 /** 487 * construct Mul node 488 */ 489 ir_node *new_bd_sparc_Mul_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 490 /** 491 * construct Mul node 492 */ 493 ir_node *new_bd_sparc_Mul_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 494 495 extern ir_op *op_sparc_SubCC_t; 496 ir_op *get_op_sparc_SubCC_t(void); 497 int is_sparc_SubCC_t(const ir_node *n); 498 /** 499 * construct SubCC_t node 500 */ 501 ir_node *new_bd_sparc_SubCC_t(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 502 503 extern ir_op *op_sparc_Stf; 504 ir_op *get_op_sparc_Stf(void); 505 int is_sparc_Stf(const ir_node *n); 506 /** 507 * construct Stf node 508 */ 509 ir_node *new_bd_sparc_Stf_q(dbg_info *dbgi, ir_node *block, ir_node *val, ir_node *ptr, ir_node *mem, ir_mode *ls_mode, ir_entity *entity, int32_t offset, bool is_frame_entity); 510 /** 511 * construct Stf node 512 */ 513 ir_node *new_bd_sparc_Stf_d(dbg_info *dbgi, ir_node *block, ir_node *val, ir_node *ptr, ir_node *mem, ir_mode *ls_mode, ir_entity *entity, int32_t offset, bool is_frame_entity); 514 /** 515 * construct Stf node 516 */ 517 ir_node *new_bd_sparc_Stf_s(dbg_info *dbgi, ir_node *block, ir_node *val, ir_node *ptr, ir_node *mem, ir_mode *ls_mode, ir_entity *entity, int32_t offset, bool is_frame_entity); 518 519 extern ir_op *op_sparc_SDiv; 520 ir_op *get_op_sparc_SDiv(void); 521 int is_sparc_SDiv(const ir_node *n); 522 /** 523 * construct SDiv node 524 */ 525 ir_node *new_bd_sparc_SDiv_imm(dbg_info *dbgi, ir_node *block, ir_node *dividend_high, ir_node *dividend_low, ir_entity *immediate_entity, int32_t immediate_value); 526 /** 527 * construct SDiv node 528 */ 529 ir_node *new_bd_sparc_SDiv_reg(dbg_info *dbgi, ir_node *block, ir_node *dividend_high, ir_node *dividend_low, ir_node *divisor); 530 531 extern ir_op *op_sparc_AddX_t; 532 ir_op *get_op_sparc_AddX_t(void); 533 int is_sparc_AddX_t(const ir_node *n); 534 /** 535 * construct AddX_t node 536 */ 537 ir_node *new_bd_sparc_AddX_t(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_node *flags_input, ir_mode *mode); 538 539 extern ir_op *op_sparc_fabs; 540 ir_op *get_op_sparc_fabs(void); 541 int is_sparc_fabs(const ir_node *n); 542 /** 543 * construct fabs node 544 */ 545 ir_node *new_bd_sparc_fabs_q(dbg_info *dbgi, ir_node *block, ir_node *val, ir_mode *fp_mode); 546 /** 547 * construct fabs node 548 */ 549 ir_node *new_bd_sparc_fabs_d(dbg_info *dbgi, ir_node *block, ir_node *val, ir_mode *fp_mode); 550 /** 551 * construct fabs node 552 */ 553 ir_node *new_bd_sparc_fabs_s(dbg_info *dbgi, ir_node *block, ir_node *val, ir_mode *fp_mode); 554 555 extern ir_op *op_sparc_AddCC; 556 ir_op *get_op_sparc_AddCC(void); 557 int is_sparc_AddCC(const ir_node *n); 558 /** 559 * construct AddCC node 560 */ 561 ir_node *new_bd_sparc_AddCC_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 562 /** 563 * construct AddCC node 564 */ 565 ir_node *new_bd_sparc_AddCC_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 566 567 extern ir_op *op_sparc_Bicc; 568 ir_op *get_op_sparc_Bicc(void); 569 int is_sparc_Bicc(const ir_node *n); 570 /** 571 * construct Bicc node 572 */ 573 ir_node *new_bd_sparc_Bicc(dbg_info *dbgi, ir_node *block, ir_node *flags, ir_relation relation, bool is_unsigned); 574 575 extern ir_op *op_sparc_OrN; 576 ir_op *get_op_sparc_OrN(void); 577 int is_sparc_OrN(const ir_node *n); 578 /** 579 * construct OrN node 580 */ 581 ir_node *new_bd_sparc_OrN_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 582 /** 583 * construct OrN node 584 */ 585 ir_node *new_bd_sparc_OrN_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 586 587 extern ir_op *op_sparc_SubX; 588 ir_op *get_op_sparc_SubX(void); 589 int is_sparc_SubX(const ir_node *n); 590 /** 591 * construct SubX node 592 */ 593 ir_node *new_bd_sparc_SubX_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *carry, ir_entity *immediate_entity, int32_t immediate_value); 594 /** 595 * construct SubX node 596 */ 597 ir_node *new_bd_sparc_SubX_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_node *carry); 598 599 extern ir_op *op_sparc_fcmp; 600 ir_op *get_op_sparc_fcmp(void); 601 int is_sparc_fcmp(const ir_node *n); 602 /** 603 * construct fcmp node 604 */ 605 ir_node *new_bd_sparc_fcmp_q(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_node *op1, ir_mode *fp_mode); 606 /** 607 * construct fcmp node 608 */ 609 ir_node *new_bd_sparc_fcmp_d(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_node *op1, ir_mode *fp_mode); 610 /** 611 * construct fcmp node 612 */ 613 ir_node *new_bd_sparc_fcmp_s(dbg_info *dbgi, ir_node *block, ir_node *op0, ir_node *op1, ir_mode *fp_mode); 614 615 extern ir_op *op_sparc_OrCCZero; 616 ir_op *get_op_sparc_OrCCZero(void); 617 int is_sparc_OrCCZero(const ir_node *n); 618 /** 619 * construct OrCCZero node 620 */ 621 ir_node *new_bd_sparc_OrCCZero_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 622 /** 623 * construct OrCCZero node 624 */ 625 ir_node *new_bd_sparc_OrCCZero_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 626 627 extern ir_op *op_sparc_AddSP; 628 ir_op *get_op_sparc_AddSP(void); 629 int is_sparc_AddSP(const ir_node *n); 630 /** 631 * construct AddSP node 632 */ 633 ir_node *new_bd_sparc_AddSP(dbg_info *dbgi, ir_node *block, ir_node *stack, ir_node *size); 634 635 extern ir_op *op_sparc_SMulh; 636 ir_op *get_op_sparc_SMulh(void); 637 int is_sparc_SMulh(const ir_node *n); 638 /** 639 * construct SMulh node 640 */ 641 ir_node *new_bd_sparc_SMulh_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 642 /** 643 * construct SMulh node 644 */ 645 ir_node *new_bd_sparc_SMulh_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 646 647 extern ir_op *op_sparc_AddCC_t; 648 ir_op *get_op_sparc_AddCC_t(void); 649 int is_sparc_AddCC_t(const ir_node *n); 650 /** 651 * construct AddCC_t node 652 */ 653 ir_node *new_bd_sparc_AddCC_t(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 654 655 extern ir_op *op_sparc_Return; 656 ir_op *get_op_sparc_Return(void); 657 int is_sparc_Return(const ir_node *n); 658 /** 659 * construct Return node 660 */ 661 ir_node *new_bd_sparc_Return_imm(dbg_info *dbgi, ir_node *block, int arity, ir_node *in[], ir_entity *entity, int32_t offset); 662 /** 663 * construct Return node 664 */ 665 ir_node *new_bd_sparc_Return_reg(dbg_info *dbgi, ir_node *block, int arity, ir_node *in[]); 666 667 extern ir_op *op_sparc_XNor; 668 ir_op *get_op_sparc_XNor(void); 669 int is_sparc_XNor(const ir_node *n); 670 /** 671 * construct XNor node 672 */ 673 ir_node *new_bd_sparc_XNor_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 674 /** 675 * construct XNor node 676 */ 677 ir_node *new_bd_sparc_XNor_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 678 679 extern ir_op *op_sparc_AndNCCZero; 680 ir_op *get_op_sparc_AndNCCZero(void); 681 int is_sparc_AndNCCZero(const ir_node *n); 682 /** 683 * construct AndNCCZero node 684 */ 685 ir_node *new_bd_sparc_AndNCCZero_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 686 /** 687 * construct AndNCCZero node 688 */ 689 ir_node *new_bd_sparc_AndNCCZero_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 690 691 extern ir_op *op_sparc_AndCCZero; 692 ir_op *get_op_sparc_AndCCZero(void); 693 int is_sparc_AndCCZero(const ir_node *n); 694 /** 695 * construct AndCCZero node 696 */ 697 ir_node *new_bd_sparc_AndCCZero_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 698 /** 699 * construct AndCCZero node 700 */ 701 ir_node *new_bd_sparc_AndCCZero_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 702 703 extern ir_op *op_sparc_FrameAddr; 704 ir_op *get_op_sparc_FrameAddr(void); 705 int is_sparc_FrameAddr(const ir_node *n); 706 /** 707 * construct FrameAddr node 708 */ 709 ir_node *new_bd_sparc_FrameAddr(dbg_info *dbgi, ir_node *block, ir_node *base, ir_entity *entity, int32_t offset); 710 711 extern ir_op *op_sparc_OrNCCZero; 712 ir_op *get_op_sparc_OrNCCZero(void); 713 int is_sparc_OrNCCZero(const ir_node *n); 714 /** 715 * construct OrNCCZero node 716 */ 717 ir_node *new_bd_sparc_OrNCCZero_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 718 /** 719 * construct OrNCCZero node 720 */ 721 ir_node *new_bd_sparc_OrNCCZero_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 722 723 extern ir_op *op_sparc_And; 724 ir_op *get_op_sparc_And(void); 725 int is_sparc_And(const ir_node *n); 726 /** 727 * construct And node 728 */ 729 ir_node *new_bd_sparc_And_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 730 /** 731 * construct And node 732 */ 733 ir_node *new_bd_sparc_And_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 734 735 extern ir_op *op_sparc_fmul; 736 ir_op *get_op_sparc_fmul(void); 737 int is_sparc_fmul(const ir_node *n); 738 /** 739 * construct fmul node 740 */ 741 ir_node *new_bd_sparc_fmul_q(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_mode *fp_mode); 742 /** 743 * construct fmul node 744 */ 745 ir_node *new_bd_sparc_fmul_d(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_mode *fp_mode); 746 /** 747 * construct fmul node 748 */ 749 ir_node *new_bd_sparc_fmul_s(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_mode *fp_mode); 750 751 extern ir_op *op_sparc_AddCCZero; 752 ir_op *get_op_sparc_AddCCZero(void); 753 int is_sparc_AddCCZero(const ir_node *n); 754 /** 755 * construct AddCCZero node 756 */ 757 ir_node *new_bd_sparc_AddCCZero_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 758 /** 759 * construct AddCCZero node 760 */ 761 ir_node *new_bd_sparc_AddCCZero_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 762 763 extern ir_op *op_sparc_UDiv; 764 ir_op *get_op_sparc_UDiv(void); 765 int is_sparc_UDiv(const ir_node *n); 766 /** 767 * construct UDiv node 768 */ 769 ir_node *new_bd_sparc_UDiv_imm(dbg_info *dbgi, ir_node *block, ir_node *dividend_high, ir_node *dividend_low, ir_entity *immediate_entity, int32_t immediate_value); 770 /** 771 * construct UDiv node 772 */ 773 ir_node *new_bd_sparc_UDiv_reg(dbg_info *dbgi, ir_node *block, ir_node *dividend_high, ir_node *dividend_low, ir_node *divisor); 774 775 extern ir_op *op_sparc_Sll; 776 ir_op *get_op_sparc_Sll(void); 777 int is_sparc_Sll(const ir_node *n); 778 /** 779 * construct Sll node 780 */ 781 ir_node *new_bd_sparc_Sll_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 782 /** 783 * construct Sll node 784 */ 785 ir_node *new_bd_sparc_Sll_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 786 787 extern ir_op *op_sparc_SwitchJmp; 788 ir_op *get_op_sparc_SwitchJmp(void); 789 int is_sparc_SwitchJmp(const ir_node *n); 790 /** 791 * construct SwitchJmp node 792 */ 793 ir_node *new_bd_sparc_SwitchJmp(dbg_info *dbgi, ir_node *block, ir_node *op0, int n_res, const ir_switch_table *table, ir_entity *jump_table); 794 795 extern ir_op *op_sparc_Srl; 796 ir_op *get_op_sparc_Srl(void); 797 int is_sparc_Srl(const ir_node *n); 798 /** 799 * construct Srl node 800 */ 801 ir_node *new_bd_sparc_Srl_imm(dbg_info *dbgi, ir_node *block, ir_node *left, ir_entity *immediate_entity, int32_t immediate_value); 802 /** 803 * construct Srl node 804 */ 805 ir_node *new_bd_sparc_Srl_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); 806 807 extern ir_op *op_sparc_fneg; 808 ir_op *get_op_sparc_fneg(void); 809 int is_sparc_fneg(const ir_node *n); 810 /** 811 * construct fneg node 812 */ 813 ir_node *new_bd_sparc_fneg_q(dbg_info *dbgi, ir_node *block, ir_node *val, ir_mode *fp_mode); 814 /** 815 * construct fneg node 816 */ 817 ir_node *new_bd_sparc_fneg_d(dbg_info *dbgi, ir_node *block, ir_node *val, ir_mode *fp_mode); 818 /** 819 * construct fneg node 820 */ 821 ir_node *new_bd_sparc_fneg_s(dbg_info *dbgi, ir_node *block, ir_node *val, ir_mode *fp_mode); 822 823 extern ir_op *op_sparc_fsub; 824 ir_op *get_op_sparc_fsub(void); 825 int is_sparc_fsub(const ir_node *n); 826 /** 827 * construct fsub node 828 */ 829 ir_node *new_bd_sparc_fsub_q(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_mode *fp_mode); 830 /** 831 * construct fsub node 832 */ 833 ir_node *new_bd_sparc_fsub_d(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_mode *fp_mode); 834 /** 835 * construct fsub node 836 */ 837 ir_node *new_bd_sparc_fsub_s(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, ir_mode *fp_mode); 838 839 840 841 enum pn_sparc_Ld { 842 pn_sparc_Ld_res = 0, 843 pn_sparc_Ld_M = 1, 844 }; 845 846 enum n_sparc_Ld { 847 n_sparc_Ld_ptr = 0, 848 n_sparc_Ld_mem = 1, 849 }; 850 851 enum n_sparc_fadd { 852 n_sparc_fadd_left = 0, 853 n_sparc_fadd_right = 1, 854 }; 855 856 enum pn_sparc_RestoreZero { 857 pn_sparc_RestoreZero_stack = 0, 858 }; 859 860 enum n_sparc_RestoreZero { 861 n_sparc_RestoreZero_stack = 0, 862 n_sparc_RestoreZero_frame_pointer = 1, 863 }; 864 865 enum pn_sparc_SetHi { 866 pn_sparc_SetHi_res = 0, 867 }; 868 869 enum pn_sparc_Restore { 870 pn_sparc_Restore_stack = 0, 871 pn_sparc_Restore_res = 1, 872 }; 873 874 enum n_sparc_SubX_t { 875 n_sparc_SubX_t_left = 0, 876 n_sparc_SubX_t_right = 1, 877 n_sparc_SubX_t_flags_input = 2, 878 }; 879 880 enum pn_sparc_UMulh { 881 pn_sparc_UMulh_low = 0, 882 pn_sparc_UMulh_high = 1, 883 }; 884 885 enum pn_sparc_SubSP { 886 pn_sparc_SubSP_stack = 0, 887 pn_sparc_SubSP_addr = 1, 888 pn_sparc_SubSP_M = 2, 889 }; 890 891 enum pn_sparc_SubCC { 892 pn_sparc_SubCC_res = 0, 893 pn_sparc_SubCC_flags = 1, 894 }; 895 896 enum pn_sparc_Ldf { 897 pn_sparc_Ldf_res = 0, 898 pn_sparc_Ldf_M = 1, 899 }; 900 901 enum n_sparc_Ldf { 902 n_sparc_Ldf_ptr = 0, 903 n_sparc_Ldf_mem = 1, 904 }; 905 906 enum pn_sparc_fdiv { 907 pn_sparc_fdiv_res = 0, 908 pn_sparc_fdiv_M = 1, 909 }; 910 911 enum n_sparc_fdiv { 912 n_sparc_fdiv_left = 0, 913 n_sparc_fdiv_right = 1, 914 }; 915 916 enum pn_sparc_St { 917 pn_sparc_St_M = 0, 918 }; 919 920 enum n_sparc_St { 921 n_sparc_St_val = 0, 922 n_sparc_St_ptr = 1, 923 n_sparc_St_mem = 2, 924 }; 925 926 enum pn_sparc_Save { 927 pn_sparc_Save_stack = 0, 928 }; 929 930 enum n_sparc_Save { 931 n_sparc_Save_stack = 0, 932 }; 933 934 enum pn_sparc_fbfcc { 935 pn_sparc_fbfcc_false = 0, 936 pn_sparc_fbfcc_true = 1, 937 }; 938 939 enum n_sparc_fbfcc { 940 n_sparc_fbfcc_flags = 0, 941 }; 942 943 enum pn_sparc_SubCC_t { 944 pn_sparc_SubCC_t_res = 0, 945 pn_sparc_SubCC_t_flags = 1, 946 }; 947 948 enum n_sparc_SubCC_t { 949 n_sparc_SubCC_t_left = 0, 950 n_sparc_SubCC_t_right = 1, 951 }; 952 953 enum pn_sparc_Stf { 954 pn_sparc_Stf_M = 0, 955 }; 956 957 enum n_sparc_Stf { 958 n_sparc_Stf_val = 0, 959 n_sparc_Stf_ptr = 1, 960 n_sparc_Stf_mem = 2, 961 }; 962 963 enum pn_sparc_SDiv { 964 pn_sparc_SDiv_res = 0, 965 pn_sparc_SDiv_M = 1, 966 }; 967 968 enum n_sparc_SDiv { 969 n_sparc_SDiv_dividend_high = 0, 970 n_sparc_SDiv_dividend_low = 1, 971 n_sparc_SDiv_divisor = 2, 972 }; 973 974 enum n_sparc_AddX_t { 975 n_sparc_AddX_t_left = 0, 976 n_sparc_AddX_t_right = 1, 977 n_sparc_AddX_t_flags_input = 2, 978 }; 979 980 enum n_sparc_fabs { 981 n_sparc_fabs_val = 0, 982 }; 983 984 enum pn_sparc_AddCC { 985 pn_sparc_AddCC_res = 0, 986 pn_sparc_AddCC_flags = 1, 987 }; 988 989 enum pn_sparc_Bicc { 990 pn_sparc_Bicc_false = 0, 991 pn_sparc_Bicc_true = 1, 992 }; 993 994 enum n_sparc_Bicc { 995 n_sparc_Bicc_flags = 0, 996 }; 997 998 enum pn_sparc_AddSP { 999 pn_sparc_AddSP_stack = 0, 1000 }; 1001 1002 enum n_sparc_AddSP { 1003 n_sparc_AddSP_stack = 0, 1004 n_sparc_AddSP_size = 1, 1005 }; 1006 1007 enum pn_sparc_SMulh { 1008 pn_sparc_SMulh_low = 0, 1009 pn_sparc_SMulh_high = 1, 1010 }; 1011 1012 enum pn_sparc_AddCC_t { 1013 pn_sparc_AddCC_t_res = 0, 1014 pn_sparc_AddCC_t_flags = 1, 1015 }; 1016 1017 enum n_sparc_AddCC_t { 1018 n_sparc_AddCC_t_left = 0, 1019 n_sparc_AddCC_t_right = 1, 1020 }; 1021 1022 enum n_sparc_FrameAddr { 1023 n_sparc_FrameAddr_base = 0, 1024 }; 1025 1026 enum n_sparc_fmul { 1027 n_sparc_fmul_left = 0, 1028 n_sparc_fmul_right = 1, 1029 }; 1030 1031 enum pn_sparc_UDiv { 1032 pn_sparc_UDiv_res = 0, 1033 pn_sparc_UDiv_M = 1, 1034 }; 1035 1036 enum n_sparc_UDiv { 1037 n_sparc_UDiv_dividend_high = 0, 1038 n_sparc_UDiv_dividend_low = 1, 1039 n_sparc_UDiv_divisor = 2, 1040 }; 1041 1042 enum n_sparc_fneg { 1043 n_sparc_fneg_val = 0, 1044 }; 1045 1046 enum n_sparc_fsub { 1047 n_sparc_fsub_left = 0, 1048 n_sparc_fsub_right = 1, 1049 }; 1050 1051 1052 #endif 1053