summary refs log tree commit diff
path: root/TODO
blob: f8af8ccc86f685a185a29675d3551c4115b19337 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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.