| /* inst, operator, div */ \ |
| //#define X(inst, op, isdiv) |
| /* inst, operator, div */ \ |
| //#define X(inst, op, isdiv) |
| /* inst, infix_op, func */ \ |
| //#define X(inst, op, func) |
| // Note: The above definition of COMMA, plus the "func" argument to |
| // the X macro, are because C++ does not allow the % operator on |
| // floating-point primitive types. To work around this, the expansion |
| // is "func(a infix_op b)", which becomes "myFrem(a , b)" for the Frem |
| // instruction and "(a + b)" for the Fadd instruction. The two |
| // versions of myFrem() are defined in a separate bitcode file. |