1 // OPCODE negated swaped float arity, flags 2 3 OPCODE(BADOP, BADOP, BADOP, BADOP, 0, OPF_NONE) 4 5 /* Entry */ 6 OPCODE(ENTRY, BADOP, BADOP, BADOP, 0, OPF_NONE) 7 8 /* Terminator */ 9 OPCODE(RET, BADOP, BADOP, BADOP, 1, OPF_NONE) 10 OPCODE(BR, BADOP, BADOP, BADOP, 0, OPF_NONE) 11 OPCODE(CBR, BADOP, BADOP, BADOP, 1, OPF_NONE) 12 OPCODE(SWITCH, BADOP, BADOP, BADOP, 1, OPF_NONE) 13 OPCODE(COMPUTEDGOTO, BADOP, BADOP, BADOP, 1, OPF_NONE) 14 OPCODE_RANGE(TERMINATOR, RET, COMPUTEDGOTO) 15 16 /* Binary */ 17 OPCODE(ADD, BADOP, BADOP, FADD, 2, OPF_TARGET) 18 OPCODE(SUB, BADOP, BADOP, FSUB, 2, OPF_TARGET) 19 OPCODE(MUL, BADOP, BADOP, FMUL, 2, OPF_TARGET) 20 OPCODE(DIVU, BADOP, BADOP, FDIV, 2, OPF_TARGET) 21 OPCODE(DIVS, BADOP, BADOP, FDIV, 2, OPF_TARGET) 22 OPCODE(MODU, BADOP, BADOP, BADOP, 2, OPF_TARGET) 23 OPCODE(MODS, BADOP, BADOP, BADOP, 2, OPF_TARGET) 24 OPCODE(SHL, BADOP, BADOP, BADOP, 2, OPF_TARGET) 25 OPCODE(LSR, BADOP, BADOP, BADOP, 2, OPF_TARGET) 26 OPCODE(ASR, BADOP, BADOP, BADOP, 2, OPF_TARGET) 27 28 /* Floating-point binops */ 29 OPCODE(FADD, BADOP, BADOP, BADOP, 2, OPF_TARGET) 30 OPCODE(FSUB, BADOP, BADOP, BADOP, 2, OPF_TARGET) 31 OPCODE(FMUL, BADOP, BADOP, BADOP, 2, OPF_TARGET) 32 OPCODE(FDIV, BADOP, BADOP, BADOP, 2, OPF_TARGET) 33 34 /* Logical */ 35 OPCODE(AND_BOOL, BADOP, BADOP, BADOP, 2, OPF_TARGET) 36 OPCODE(OR_BOOL, BADOP, BADOP, BADOP, 2, OPF_TARGET) 37 OPCODE(AND, BADOP, BADOP, BADOP, 2, OPF_TARGET) 38 OPCODE(OR, BADOP, BADOP, BADOP, 2, OPF_TARGET) 39 OPCODE(XOR, BADOP, BADOP, BADOP, 2, OPF_TARGET) 40 OPCODE_RANGE(BINARY, ADD, XOR) 41 42 /* floating-point comparison */ 43 OPCODE(FCMP_ORD, FCMP_UNO, FCMP_ORD, BADOP, 2, OPF_TARGET) 44 OPCODE(FCMP_OEQ, FCMP_UNE, FCMP_OEQ, BADOP, 2, OPF_TARGET) 45 OPCODE(FCMP_ONE, FCMP_UEQ, FCMP_ONE, BADOP, 2, OPF_TARGET) 46 OPCODE(FCMP_UEQ, FCMP_ONE, FCMP_UEQ, BADOP, 2, OPF_TARGET) 47 OPCODE(FCMP_UNE, FCMP_OEQ, FCMP_UNE, BADOP, 2, OPF_TARGET) 48 OPCODE(FCMP_OLT, FCMP_UGE, FCMP_OGT, BADOP, 2, OPF_TARGET) 49 OPCODE(FCMP_OLE, FCMP_UGT, FCMP_OGE, BADOP, 2, OPF_TARGET) 50 OPCODE(FCMP_OGE, FCMP_ULT, FCMP_OLE, BADOP, 2, OPF_TARGET) 51 OPCODE(FCMP_OGT, FCMP_ULE, FCMP_OLT, BADOP, 2, OPF_TARGET) 52 OPCODE(FCMP_ULT, FCMP_OGE, FCMP_UGT, BADOP, 2, OPF_TARGET) 53 OPCODE(FCMP_ULE, FCMP_OGT, FCMP_UGE, BADOP, 2, OPF_TARGET) 54 OPCODE(FCMP_UGE, FCMP_OLT, FCMP_ULE, BADOP, 2, OPF_TARGET) 55 OPCODE(FCMP_UGT, FCMP_OLE, FCMP_ULT, BADOP, 2, OPF_TARGET) 56 OPCODE(FCMP_UNO, FCMP_ORD, FCMP_UNO, BADOP, 2, OPF_TARGET) 57 OPCODE_RANGE(FPCMP, FCMP_ORD, FCMP_UNO) 58 59 /* Binary comparison */ 60 OPCODE(SET_EQ, SET_NE, SET_EQ, FCMP_OEQ, 2, OPF_TARGET) 61 OPCODE(SET_LT, SET_GE, SET_GT, FCMP_OLT, 2, OPF_TARGET) 62 OPCODE(SET_LE, SET_GT, SET_GE, FCMP_OLE, 2, OPF_TARGET) 63 OPCODE(SET_GE, SET_LT, SET_LE, FCMP_OGE, 2, OPF_TARGET) 64 OPCODE(SET_GT, SET_LE, SET_LT, FCMP_OGT, 2, OPF_TARGET) 65 OPCODE(SET_B, SET_AE, SET_A, FCMP_OLT, 2, OPF_TARGET) 66 OPCODE(SET_BE, SET_A, SET_AE, FCMP_OLE, 2, OPF_TARGET) 67 OPCODE(SET_AE, SET_B, SET_BE, FCMP_OGE, 2, OPF_TARGET) 68 OPCODE(SET_A, SET_BE, SET_B, FCMP_OGT, 2, OPF_TARGET) 69 OPCODE(SET_NE, SET_EQ, SET_NE, FCMP_UNE, 2, OPF_TARGET) 70 OPCODE_RANGE(BINCMP, SET_EQ, SET_NE) 71 72 /* Uni */ 73 OPCODE(NOT, BADOP, BADOP, BADOP, 1, OPF_TARGET) 74 OPCODE(NEG, BADOP, BADOP, FNEG, 1, OPF_TARGET) 75 OPCODE(FNEG, BADOP, BADOP, BADOP, 1, OPF_TARGET) 76 OPCODE(TRUNC, BADOP, BADOP, BADOP, 1, OPF_TARGET) 77 OPCODE(ZEXT, BADOP, BADOP, BADOP, 1, OPF_TARGET) 78 OPCODE(SEXT, BADOP, BADOP, BADOP, 1, OPF_TARGET) 79 OPCODE(FCVTU, BADOP, BADOP, BADOP, 1, OPF_TARGET) 80 OPCODE(FCVTS, BADOP, BADOP, BADOP, 1, OPF_TARGET) 81 OPCODE(UCVTF, BADOP, BADOP, BADOP, 1, OPF_TARGET) 82 OPCODE(SCVTF, BADOP, BADOP, BADOP, 1, OPF_TARGET) 83 OPCODE(FCVTF, BADOP, BADOP, BADOP, 1, OPF_TARGET) 84 OPCODE(UTPTR, BADOP, BADOP, BADOP, 1, OPF_TARGET) 85 OPCODE(PTRTU, BADOP, BADOP, BADOP, 1, OPF_TARGET) 86 OPCODE(PTRCAST, BADOP, BADOP, BADOP, 1, OPF_TARGET) 87 OPCODE_RANGE(UNOP, NOT, PTRCAST) 88 OPCODE(SYMADDR, BADOP, BADOP, BADOP, 1, OPF_TARGET) 89 OPCODE(SLICE, BADOP, BADOP, BADOP, 1, OPF_TARGET) 90 91 /* Select - three input values */ 92 OPCODE(SEL, BADOP, BADOP, BADOP, 3, OPF_TARGET) 93 94 /* Memory */ 95 OPCODE(LOAD, BADOP, BADOP, BADOP, 1, OPF_TARGET) 96 OPCODE(STORE, BADOP, BADOP, BADOP, 1, OPF_NONE) 97 98 /* Other */ 99 OPCODE(PHISOURCE, BADOP, BADOP, BADOP, 1, OPF_TARGET) 100 OPCODE(PHI, BADOP, BADOP, BADOP, 0, OPF_TARGET) 101 OPCODE(SETVAL, BADOP, BADOP, BADOP, 0, OPF_TARGET) 102 OPCODE(SETFVAL, BADOP, BADOP, BADOP, 0, OPF_TARGET) 103 OPCODE(CALL, BADOP, BADOP, BADOP, 1, OPF_TARGET) 104 OPCODE(INLINED_CALL, BADOP, BADOP, BADOP, 0, OPF_NONE) 105 OPCODE(NOP, BADOP, BADOP, BADOP, 0, OPF_NONE) 106 OPCODE(DEATHNOTE, BADOP, BADOP, BADOP, 0, OPF_NONE) 107 OPCODE(ASM, BADOP, BADOP, BADOP, 0, OPF_NONE) 108 109 /* Sparse tagging (line numbers, context, whatever) */ 110 OPCODE(CONTEXT, BADOP, BADOP, BADOP, 0, OPF_NONE) 111 OPCODE(RANGE, BADOP, BADOP, BADOP, 3, OPF_NONE) 112 113 /* Needed to translate SSA back to normal form */ 114 OPCODE(COPY, BADOP, BADOP, BADOP, 1, OPF_TARGET)