blob: 0c9cece0470185e8008bf5bed86f2f59a6fa7031 (
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
|
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.
- Phi defined variables with spill location do not work.
|