001 002 /* 003 * THIS FILE IS MACHINE_GENERATED. DO NOT EDIT. 004 * See InstructionFormats.template, InstructionFormatList.dat, 005 * OperatorList.dat, etc. 006 */ 007 008 package org.jikesrvm.compilers.opt.ir; 009 010 import org.jikesrvm.Configuration; 011 import org.jikesrvm.compilers.opt.ir.operand.ia32.IA32ConditionOperand; //NOPMD 012 import org.jikesrvm.compilers.opt.ir.operand.*; 013 014 /** 015 * The MIR_CondBranch2 InstructionFormat class. 016 * 017 * The header comment for {@link Instruction} contains 018 * an explanation of the role of InstructionFormats in the 019 * opt compiler's IR. 020 */ 021 @SuppressWarnings("unused") // Machine generated code is never 100% clean 022 public final class MIR_CondBranch2 extends InstructionFormat { 023 /** 024 * InstructionFormat identification method for MIR_CondBranch2. 025 * @param i an instruction 026 * @return <code>true</code> if the InstructionFormat of the argument 027 * instruction is MIR_CondBranch2 or <code>false</code> 028 * if it is not. 029 */ 030 public static boolean conforms(Instruction i) { 031 return conforms(i.operator); 032 } 033 /** 034 * InstructionFormat identification method for MIR_CondBranch2. 035 * @param o an instruction 036 * @return <code>true</code> if the InstructionFormat of the argument 037 * operator is MIR_CondBranch2 or <code>false</code> 038 * if it is not. 039 */ 040 public static boolean conforms(Operator o) { 041 return o.format == MIR_CondBranch2_format; 042 } 043 044 /** 045 * Get the operand called Cond1 from the 046 * argument instruction. Note that the returned operand 047 * will still point to its containing instruction. 048 * @param i the instruction to fetch the operand from 049 * @return the operand called Cond1 050 */ 051 public static IA32ConditionOperand getCond1(Instruction i) { 052 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 053 return (IA32ConditionOperand) i.getOperand(0); 054 } 055 /** 056 * Get the operand called Cond1 from the argument 057 * instruction clearing its instruction pointer. The returned 058 * operand will not point to any containing instruction. 059 * @param i the instruction to fetch the operand from 060 * @return the operand called Cond1 061 */ 062 public static IA32ConditionOperand getClearCond1(Instruction i) { 063 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 064 return (IA32ConditionOperand) i.getClearOperand(0); 065 } 066 /** 067 * Set the operand called Cond1 in the argument 068 * instruction to the argument operand. The operand will 069 * now point to the argument instruction as its containing 070 * instruction. 071 * @param i the instruction in which to store the operand 072 * @param Cond1 the operand to store 073 */ 074 public static void setCond1(Instruction i, IA32ConditionOperand Cond1) { 075 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 076 i.putOperand(0, Cond1); 077 } 078 /** 079 * Return the index of the operand called Cond1 080 * in the argument instruction. 081 * @param i the instruction to access. 082 * @return the index of the operand called Cond1 083 * in the argument instruction 084 */ 085 public static int indexOfCond1(Instruction i) { 086 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 087 return 0; 088 } 089 /** 090 * Does the argument instruction have a non-null 091 * operand named Cond1? 092 * @param i the instruction to access. 093 * @return <code>true</code> if the instruction has an non-null 094 * operand named Cond1 or <code>false</code> 095 * if it does not. 096 */ 097 public static boolean hasCond1(Instruction i) { 098 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 099 return i.getOperand(0) != null; 100 } 101 102 /** 103 * Get the operand called Target1 from the 104 * argument instruction. Note that the returned operand 105 * will still point to its containing instruction. 106 * @param i the instruction to fetch the operand from 107 * @return the operand called Target1 108 */ 109 public static BranchOperand getTarget1(Instruction i) { 110 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 111 return (BranchOperand) i.getOperand(1); 112 } 113 /** 114 * Get the operand called Target1 from the argument 115 * instruction clearing its instruction pointer. The returned 116 * operand will not point to any containing instruction. 117 * @param i the instruction to fetch the operand from 118 * @return the operand called Target1 119 */ 120 public static BranchOperand getClearTarget1(Instruction i) { 121 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 122 return (BranchOperand) i.getClearOperand(1); 123 } 124 /** 125 * Set the operand called Target1 in the argument 126 * instruction to the argument operand. The operand will 127 * now point to the argument instruction as its containing 128 * instruction. 129 * @param i the instruction in which to store the operand 130 * @param Target1 the operand to store 131 */ 132 public static void setTarget1(Instruction i, BranchOperand Target1) { 133 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 134 i.putOperand(1, Target1); 135 } 136 /** 137 * Return the index of the operand called Target1 138 * in the argument instruction. 139 * @param i the instruction to access. 140 * @return the index of the operand called Target1 141 * in the argument instruction 142 */ 143 public static int indexOfTarget1(Instruction i) { 144 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 145 return 1; 146 } 147 /** 148 * Does the argument instruction have a non-null 149 * operand named Target1? 150 * @param i the instruction to access. 151 * @return <code>true</code> if the instruction has an non-null 152 * operand named Target1 or <code>false</code> 153 * if it does not. 154 */ 155 public static boolean hasTarget1(Instruction i) { 156 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 157 return i.getOperand(1) != null; 158 } 159 160 /** 161 * Get the operand called BranchProfile1 from the 162 * argument instruction. Note that the returned operand 163 * will still point to its containing instruction. 164 * @param i the instruction to fetch the operand from 165 * @return the operand called BranchProfile1 166 */ 167 public static BranchProfileOperand getBranchProfile1(Instruction i) { 168 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 169 return (BranchProfileOperand) i.getOperand(2); 170 } 171 /** 172 * Get the operand called BranchProfile1 from the argument 173 * instruction clearing its instruction pointer. The returned 174 * operand will not point to any containing instruction. 175 * @param i the instruction to fetch the operand from 176 * @return the operand called BranchProfile1 177 */ 178 public static BranchProfileOperand getClearBranchProfile1(Instruction i) { 179 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 180 return (BranchProfileOperand) i.getClearOperand(2); 181 } 182 /** 183 * Set the operand called BranchProfile1 in the argument 184 * instruction to the argument operand. The operand will 185 * now point to the argument instruction as its containing 186 * instruction. 187 * @param i the instruction in which to store the operand 188 * @param BranchProfile1 the operand to store 189 */ 190 public static void setBranchProfile1(Instruction i, BranchProfileOperand BranchProfile1) { 191 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 192 i.putOperand(2, BranchProfile1); 193 } 194 /** 195 * Return the index of the operand called BranchProfile1 196 * in the argument instruction. 197 * @param i the instruction to access. 198 * @return the index of the operand called BranchProfile1 199 * in the argument instruction 200 */ 201 public static int indexOfBranchProfile1(Instruction i) { 202 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 203 return 2; 204 } 205 /** 206 * Does the argument instruction have a non-null 207 * operand named BranchProfile1? 208 * @param i the instruction to access. 209 * @return <code>true</code> if the instruction has an non-null 210 * operand named BranchProfile1 or <code>false</code> 211 * if it does not. 212 */ 213 public static boolean hasBranchProfile1(Instruction i) { 214 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 215 return i.getOperand(2) != null; 216 } 217 218 /** 219 * Get the operand called Cond2 from the 220 * argument instruction. Note that the returned operand 221 * will still point to its containing instruction. 222 * @param i the instruction to fetch the operand from 223 * @return the operand called Cond2 224 */ 225 public static IA32ConditionOperand getCond2(Instruction i) { 226 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 227 return (IA32ConditionOperand) i.getOperand(3); 228 } 229 /** 230 * Get the operand called Cond2 from the argument 231 * instruction clearing its instruction pointer. The returned 232 * operand will not point to any containing instruction. 233 * @param i the instruction to fetch the operand from 234 * @return the operand called Cond2 235 */ 236 public static IA32ConditionOperand getClearCond2(Instruction i) { 237 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 238 return (IA32ConditionOperand) i.getClearOperand(3); 239 } 240 /** 241 * Set the operand called Cond2 in the argument 242 * instruction to the argument operand. The operand will 243 * now point to the argument instruction as its containing 244 * instruction. 245 * @param i the instruction in which to store the operand 246 * @param Cond2 the operand to store 247 */ 248 public static void setCond2(Instruction i, IA32ConditionOperand Cond2) { 249 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 250 i.putOperand(3, Cond2); 251 } 252 /** 253 * Return the index of the operand called Cond2 254 * in the argument instruction. 255 * @param i the instruction to access. 256 * @return the index of the operand called Cond2 257 * in the argument instruction 258 */ 259 public static int indexOfCond2(Instruction i) { 260 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 261 return 3; 262 } 263 /** 264 * Does the argument instruction have a non-null 265 * operand named Cond2? 266 * @param i the instruction to access. 267 * @return <code>true</code> if the instruction has an non-null 268 * operand named Cond2 or <code>false</code> 269 * if it does not. 270 */ 271 public static boolean hasCond2(Instruction i) { 272 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 273 return i.getOperand(3) != null; 274 } 275 276 /** 277 * Get the operand called Target2 from the 278 * argument instruction. Note that the returned operand 279 * will still point to its containing instruction. 280 * @param i the instruction to fetch the operand from 281 * @return the operand called Target2 282 */ 283 public static BranchOperand getTarget2(Instruction i) { 284 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 285 return (BranchOperand) i.getOperand(4); 286 } 287 /** 288 * Get the operand called Target2 from the argument 289 * instruction clearing its instruction pointer. The returned 290 * operand will not point to any containing instruction. 291 * @param i the instruction to fetch the operand from 292 * @return the operand called Target2 293 */ 294 public static BranchOperand getClearTarget2(Instruction i) { 295 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 296 return (BranchOperand) i.getClearOperand(4); 297 } 298 /** 299 * Set the operand called Target2 in the argument 300 * instruction to the argument operand. The operand will 301 * now point to the argument instruction as its containing 302 * instruction. 303 * @param i the instruction in which to store the operand 304 * @param Target2 the operand to store 305 */ 306 public static void setTarget2(Instruction i, BranchOperand Target2) { 307 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 308 i.putOperand(4, Target2); 309 } 310 /** 311 * Return the index of the operand called Target2 312 * in the argument instruction. 313 * @param i the instruction to access. 314 * @return the index of the operand called Target2 315 * in the argument instruction 316 */ 317 public static int indexOfTarget2(Instruction i) { 318 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 319 return 4; 320 } 321 /** 322 * Does the argument instruction have a non-null 323 * operand named Target2? 324 * @param i the instruction to access. 325 * @return <code>true</code> if the instruction has an non-null 326 * operand named Target2 or <code>false</code> 327 * if it does not. 328 */ 329 public static boolean hasTarget2(Instruction i) { 330 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 331 return i.getOperand(4) != null; 332 } 333 334 /** 335 * Get the operand called BranchProfile2 from the 336 * argument instruction. Note that the returned operand 337 * will still point to its containing instruction. 338 * @param i the instruction to fetch the operand from 339 * @return the operand called BranchProfile2 340 */ 341 public static BranchProfileOperand getBranchProfile2(Instruction i) { 342 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 343 return (BranchProfileOperand) i.getOperand(5); 344 } 345 /** 346 * Get the operand called BranchProfile2 from the argument 347 * instruction clearing its instruction pointer. The returned 348 * operand will not point to any containing instruction. 349 * @param i the instruction to fetch the operand from 350 * @return the operand called BranchProfile2 351 */ 352 public static BranchProfileOperand getClearBranchProfile2(Instruction i) { 353 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 354 return (BranchProfileOperand) i.getClearOperand(5); 355 } 356 /** 357 * Set the operand called BranchProfile2 in the argument 358 * instruction to the argument operand. The operand will 359 * now point to the argument instruction as its containing 360 * instruction. 361 * @param i the instruction in which to store the operand 362 * @param BranchProfile2 the operand to store 363 */ 364 public static void setBranchProfile2(Instruction i, BranchProfileOperand BranchProfile2) { 365 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 366 i.putOperand(5, BranchProfile2); 367 } 368 /** 369 * Return the index of the operand called BranchProfile2 370 * in the argument instruction. 371 * @param i the instruction to access. 372 * @return the index of the operand called BranchProfile2 373 * in the argument instruction 374 */ 375 public static int indexOfBranchProfile2(Instruction i) { 376 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 377 return 5; 378 } 379 /** 380 * Does the argument instruction have a non-null 381 * operand named BranchProfile2? 382 * @param i the instruction to access. 383 * @return <code>true</code> if the instruction has an non-null 384 * operand named BranchProfile2 or <code>false</code> 385 * if it does not. 386 */ 387 public static boolean hasBranchProfile2(Instruction i) { 388 if (Configuration.ExtremeAssertions && !conforms(i)) fail(i, "MIR_CondBranch2"); 389 return i.getOperand(5) != null; 390 } 391 392 393 /** 394 * Create an instruction of the MIR_CondBranch2 instruction format. 395 * @param o the instruction's operator 396 * @param Cond1 the instruction's Cond1 operand 397 * @param Target1 the instruction's Target1 operand 398 * @param BranchProfile1 the instruction's BranchProfile1 operand 399 * @param Cond2 the instruction's Cond2 operand 400 * @param Target2 the instruction's Target2 operand 401 * @param BranchProfile2 the instruction's BranchProfile2 operand 402 * @return the newly created MIR_CondBranch2 instruction 403 */ 404 public static Instruction create(Operator o 405 , IA32ConditionOperand Cond1 406 , BranchOperand Target1 407 , BranchProfileOperand BranchProfile1 408 , IA32ConditionOperand Cond2 409 , BranchOperand Target2 410 , BranchProfileOperand BranchProfile2 411 ) 412 { 413 if (Configuration.ExtremeAssertions && !conforms(o)) fail(o, "MIR_CondBranch2"); 414 Instruction i = new Instruction(o, 6); 415 i.putOperand(0, Cond1); 416 i.putOperand(1, Target1); 417 i.putOperand(2, BranchProfile1); 418 i.putOperand(3, Cond2); 419 i.putOperand(4, Target2); 420 i.putOperand(5, BranchProfile2); 421 return i; 422 } 423 424 /** 425 * Mutate the argument instruction into an instruction of the 426 * MIR_CondBranch2 instruction format having the specified 427 * operator and operands. 428 * @param i the instruction to mutate 429 * @param o the instruction's operator 430 * @param Cond1 the instruction's Cond1 operand 431 * @param Target1 the instruction's Target1 operand 432 * @param BranchProfile1 the instruction's BranchProfile1 operand 433 * @param Cond2 the instruction's Cond2 operand 434 * @param Target2 the instruction's Target2 operand 435 * @param BranchProfile2 the instruction's BranchProfile2 operand 436 * @return the mutated instruction 437 */ 438 public static Instruction mutate(Instruction i, Operator o 439 , IA32ConditionOperand Cond1 440 , BranchOperand Target1 441 , BranchProfileOperand BranchProfile1 442 , IA32ConditionOperand Cond2 443 , BranchOperand Target2 444 , BranchProfileOperand BranchProfile2 445 ) 446 { 447 if (Configuration.ExtremeAssertions && !conforms(o)) fail(o, "MIR_CondBranch2"); 448 i.resizeNumberOfOperands(6); 449 450 i.operator = o; 451 i.putOperand(0, Cond1); 452 i.putOperand(1, Target1); 453 i.putOperand(2, BranchProfile1); 454 i.putOperand(3, Cond2); 455 i.putOperand(4, Target2); 456 i.putOperand(5, BranchProfile2); 457 return i; 458 } 459 /** 460 * Create an instruction of the MIR_CondBranch2 instruction format. 461 * @param o the instruction's operator 462 * @param Cond1 the instruction's Cond1 operand 463 * @param Target1 the instruction's Target1 operand 464 * @param BranchProfile1 the instruction's BranchProfile1 operand 465 * @param Cond2 the instruction's Cond2 operand 466 * @param BranchProfile2 the instruction's BranchProfile2 operand 467 * @return the newly created MIR_CondBranch2 instruction 468 */ 469 public static Instruction create(Operator o 470 , IA32ConditionOperand Cond1 471 , BranchOperand Target1 472 , BranchProfileOperand BranchProfile1 473 , IA32ConditionOperand Cond2 474 , BranchProfileOperand BranchProfile2 475 ) 476 { 477 if (Configuration.ExtremeAssertions && !conforms(o)) fail(o, "MIR_CondBranch2"); 478 Instruction i = new Instruction(o, 6); 479 i.putOperand(0, Cond1); 480 i.putOperand(1, Target1); 481 i.putOperand(2, BranchProfile1); 482 i.putOperand(3, Cond2); 483 i.putOperand(5, BranchProfile2); 484 return i; 485 } 486 487 /** 488 * Mutate the argument instruction into an instruction of the 489 * MIR_CondBranch2 instruction format having the specified 490 * operator and operands. 491 * @param i the instruction to mutate 492 * @param o the instruction's operator 493 * @param Cond1 the instruction's Cond1 operand 494 * @param Target1 the instruction's Target1 operand 495 * @param BranchProfile1 the instruction's BranchProfile1 operand 496 * @param Cond2 the instruction's Cond2 operand 497 * @param BranchProfile2 the instruction's BranchProfile2 operand 498 * @return the mutated instruction 499 */ 500 public static Instruction mutate(Instruction i, Operator o 501 , IA32ConditionOperand Cond1 502 , BranchOperand Target1 503 , BranchProfileOperand BranchProfile1 504 , IA32ConditionOperand Cond2 505 , BranchProfileOperand BranchProfile2 506 ) 507 { 508 if (Configuration.ExtremeAssertions && !conforms(o)) fail(o, "MIR_CondBranch2"); 509 i.resizeNumberOfOperands(6); 510 511 i.operator = o; 512 i.putOperand(0, Cond1); 513 i.putOperand(1, Target1); 514 i.putOperand(2, BranchProfile1); 515 i.putOperand(3, Cond2); 516 i.putOperand(4, null); 517 i.putOperand(5, BranchProfile2); 518 return i; 519 } 520 /** 521 * Create an instruction of the MIR_CondBranch2 instruction format. 522 * @param o the instruction's operator 523 * @param Cond1 the instruction's Cond1 operand 524 * @param BranchProfile1 the instruction's BranchProfile1 operand 525 * @param Cond2 the instruction's Cond2 operand 526 * @param Target2 the instruction's Target2 operand 527 * @param BranchProfile2 the instruction's BranchProfile2 operand 528 * @return the newly created MIR_CondBranch2 instruction 529 */ 530 public static Instruction create(Operator o 531 , IA32ConditionOperand Cond1 532 , BranchProfileOperand BranchProfile1 533 , IA32ConditionOperand Cond2 534 , BranchOperand Target2 535 , BranchProfileOperand BranchProfile2 536 ) 537 { 538 if (Configuration.ExtremeAssertions && !conforms(o)) fail(o, "MIR_CondBranch2"); 539 Instruction i = new Instruction(o, 6); 540 i.putOperand(0, Cond1); 541 i.putOperand(2, BranchProfile1); 542 i.putOperand(3, Cond2); 543 i.putOperand(4, Target2); 544 i.putOperand(5, BranchProfile2); 545 return i; 546 } 547 548 /** 549 * Mutate the argument instruction into an instruction of the 550 * MIR_CondBranch2 instruction format having the specified 551 * operator and operands. 552 * @param i the instruction to mutate 553 * @param o the instruction's operator 554 * @param Cond1 the instruction's Cond1 operand 555 * @param BranchProfile1 the instruction's BranchProfile1 operand 556 * @param Cond2 the instruction's Cond2 operand 557 * @param Target2 the instruction's Target2 operand 558 * @param BranchProfile2 the instruction's BranchProfile2 operand 559 * @return the mutated instruction 560 */ 561 public static Instruction mutate(Instruction i, Operator o 562 , IA32ConditionOperand Cond1 563 , BranchProfileOperand BranchProfile1 564 , IA32ConditionOperand Cond2 565 , BranchOperand Target2 566 , BranchProfileOperand BranchProfile2 567 ) 568 { 569 if (Configuration.ExtremeAssertions && !conforms(o)) fail(o, "MIR_CondBranch2"); 570 i.resizeNumberOfOperands(6); 571 572 i.operator = o; 573 i.putOperand(0, Cond1); 574 i.putOperand(1, null); 575 i.putOperand(2, BranchProfile1); 576 i.putOperand(3, Cond2); 577 i.putOperand(4, Target2); 578 i.putOperand(5, BranchProfile2); 579 return i; 580 } 581 /** 582 * Create an instruction of the MIR_CondBranch2 instruction format. 583 * @param o the instruction's operator 584 * @param Cond1 the instruction's Cond1 operand 585 * @param BranchProfile1 the instruction's BranchProfile1 operand 586 * @param Cond2 the instruction's Cond2 operand 587 * @param BranchProfile2 the instruction's BranchProfile2 operand 588 * @return the newly created MIR_CondBranch2 instruction 589 */ 590 public static Instruction create(Operator o 591 , IA32ConditionOperand Cond1 592 , BranchProfileOperand BranchProfile1 593 , IA32ConditionOperand Cond2 594 , BranchProfileOperand BranchProfile2 595 ) 596 { 597 if (Configuration.ExtremeAssertions && !conforms(o)) fail(o, "MIR_CondBranch2"); 598 Instruction i = new Instruction(o, 6); 599 i.putOperand(0, Cond1); 600 i.putOperand(2, BranchProfile1); 601 i.putOperand(3, Cond2); 602 i.putOperand(5, BranchProfile2); 603 return i; 604 } 605 606 /** 607 * Mutate the argument instruction into an instruction of the 608 * MIR_CondBranch2 instruction format having the specified 609 * operator and operands. 610 * @param i the instruction to mutate 611 * @param o the instruction's operator 612 * @param Cond1 the instruction's Cond1 operand 613 * @param BranchProfile1 the instruction's BranchProfile1 operand 614 * @param Cond2 the instruction's Cond2 operand 615 * @param BranchProfile2 the instruction's BranchProfile2 operand 616 * @return the mutated instruction 617 */ 618 public static Instruction mutate(Instruction i, Operator o 619 , IA32ConditionOperand Cond1 620 , BranchProfileOperand BranchProfile1 621 , IA32ConditionOperand Cond2 622 , BranchProfileOperand BranchProfile2 623 ) 624 { 625 if (Configuration.ExtremeAssertions && !conforms(o)) fail(o, "MIR_CondBranch2"); 626 i.resizeNumberOfOperands(6); 627 628 i.operator = o; 629 i.putOperand(0, Cond1); 630 i.putOperand(1, null); 631 i.putOperand(2, BranchProfile1); 632 i.putOperand(3, Cond2); 633 i.putOperand(4, null); 634 i.putOperand(5, BranchProfile2); 635 return i; 636 } 637 } 638