Features - Operand classes for instructions - Hints in register allocation - Fixed register instructions (div, mul) Is this part of "operand classes"? Instructions - ADD SUB SDIV UDIV SREM UREM MUL LSL LSR ASL ASR - SEXT ZEXT - CMP ... - ALLOC STORE LOAD - PTR - CALL BRZ JMP RET Types - Integer (64 bits) - Structure "{a,b,c}" - Pointer to type "t" Questions - Q: Should we allow constant operands? A: It looks like `Con instructions are a bad idea because they introduce spurious live ranges. Problems - x = y op z if x is spilled, y can be moved to a spill location to free one register for x, this is kind of stupid. - [tentative fix: 4fc98da] Phi defined variables with spill location do not work.