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
|
Instructions classification:
FP : add, sub, mul, sdiv, copy, par, arg
Maybe : and, or, xor, cmp(6)
Non FP: udiv, srem, urem, store(4), load(7),
ext(7), alloc(5), parc, argc, call
15 bits for operations 32768
-1 bit for s,d 16384
New conversion instructions:
- Bitcast conversion between fp and ints. bcast
- Convert fp to/from int. ftosi sitof (only signed at first, truncation)
- Convert single to/from double fconv
Summary:
Add bcast, ftosi sitof, fconv
Add a 'floating point' bit to instructions
Conversions from/to unsigned types are hard!
I need to find a reference for that.
Roadmap in isel.
Make sure all floating point immediates are accessed
through a memory load. The load can be fused in some
instructions (add, sub, mul, div). This should be
handled similarly to the large integer constants.
Note: contrary to large constants, the transformation
also needs to be run on phi nodes!
Complete ABI implementation, we should only need the
movsd instruction to transfer between sse registers and
memory.
|