commit 891877d67d8e5e46b8094f7b6ba69957e844a5d0
parent 839dca331a339d8beec727a6ffd0740ad4f5e13a
Author: Quentin Carbonneaux <quentin.carbonneaux@yale.edu>
Date: Mon, 30 Nov 2015 17:11:18 -0500
plan work on isel
Diffstat:
2 files changed, 33 insertions(+), 23 deletions(-)
diff --git a/lisc/FP b/lisc/FP
@@ -0,0 +1,33 @@
+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. cast
+ - Convert fp to/from int. ftosi sitof (only signed at first, truncation)
+ - Convert single to/from double fconv
+
+Summary:
+ Add cast, 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.
+
+Problem with "cls" field: for comparisons, this field is
+for the argument of the instruction, but, in the case of
+Load (for example), it is about the result.
+
+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.
+
+ Complete ABI implementation, we should only need the
+ movsd instruction to transfer between sse registers and
+ memory.
diff --git a/lisc/fpintro.txt b/lisc/fpintro.txt
@@ -1,23 +0,0 @@
-Instructions classification:
-FP : add, sub, mul, copy, par, arg
-Maybe : and, or, xor, cmp(6)
-Non FP: sdiv, 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. cast
- - Convert fp to/from int. ftosi sitof (only signed at first, truncation)
- - Convert single to/from double stod dtos
-
-Summary:
- Add cast, ftosi sitof, stod dtos
- Add a 'floating point' bit to instructions
- Conversions from/to unsigned types are hard!
- I need to find a reference for that.
-
-Problem with "cls" field: for comparisons, this field is
-for the argument of the instruction, but, in the case of
-Load (for example), it is about the result.