libqbe/lisc/FP

32 lines
1 KiB
Text
Raw Normal View History

2015-11-28 00:20:29 -05:00
Instructions classification:
2015-11-30 17:11:18 -05:00
FP : add, sub, mul, sdiv, copy, par, arg
2015-11-28 00:20:29 -05:00
Maybe : and, or, xor, cmp(6)
2015-11-30 17:11:18 -05:00
Non FP: udiv, srem, urem, store(4), load(7),
ext(7), alloc(5), parc, argc, call
2015-11-28 00:20:29 -05:00
15 bits for operations 32768
-1 bit for s,d 16384
New conversion instructions:
2015-12-08 13:39:17 -05:00
- Bitcast conversion between fp and ints. bcast
2015-11-28 00:35:04 -05:00
- Convert fp to/from int. ftosi sitof (only signed at first, truncation)
2015-11-30 17:11:18 -05:00
- Convert single to/from double fconv
2015-11-28 00:20:29 -05:00
Summary:
2015-12-08 13:39:17 -05:00
Add bcast, ftosi sitof, fconv
2015-11-28 00:20:29 -05:00
Add a 'floating point' bit to instructions
2015-11-28 00:35:04 -05:00
Conversions from/to unsigned types are hard!
I need to find a reference for that.
2015-11-30 12:19:41 -05:00
2015-11-30 17:11:18 -05:00
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!
2015-11-30 17:11:18 -05:00
Complete ABI implementation, we should only need the
movsd instruction to transfer between sse registers and
memory.