aboutsummaryrefslogtreecommitdiffstats
path: root/kvx
diff options
context:
space:
mode:
authorDavid Monniaux <David.Monniaux@univ-grenoble-alpes.fr>2022-02-12 13:14:43 +0100
committerDavid Monniaux <David.Monniaux@univ-grenoble-alpes.fr>2022-02-12 13:14:43 +0100
commit337c490d12c437dcbb5941e204ec1b1c4efa992b (patch)
tree38860a91aa9f68a72d0e39cf7f60dcf8c432bf03 /kvx
parent50377ef4b9430fa019e26fac3028739f0308e9b1 (diff)
downloadcompcert-kvx-337c490d12c437dcbb5941e204ec1b1c4efa992b.tar.gz
compcert-kvx-337c490d12c437dcbb5941e204ec1b1c4efa992b.zip
fix bad reservation table for finvw
Diffstat (limited to 'kvx')
-rw-r--r--kvx/PostpassSchedulingOracle.ml23
1 files changed, 12 insertions, 11 deletions
diff --git a/kvx/PostpassSchedulingOracle.ml b/kvx/PostpassSchedulingOracle.ml
index 3f4520a6..e752624c 100644
--- a/kvx/PostpassSchedulingOracle.ml
+++ b/kvx/PostpassSchedulingOracle.ml
@@ -47,7 +47,8 @@ type real_instruction =
| Faddd | Faddw | Fsbfd | Fsbfw | Fmuld | Fmulw
| Fmind | Fminw | Fmaxd | Fmaxw | Finvw
| Ffmaw | Ffmad | Ffmsw | Ffmsd
- | Fnarrowdw | Fwidenlwd | Floatwz | Floatuwz | Floatdz | Floatudz | Fixedwz | Fixeduwz | Fixeddz | Fixedudz
+ | Fnarrowdw | Fwidenlwd | Floatwz | Floatuwz | Floatdz | Floatudz
+ | Fixedw | Fixeduw | Fixedd | Fixedud
| Fcompw | Fcompd
type ab_inst_rec = {
@@ -86,12 +87,12 @@ let arith_rr_real = function
| Pfloatuwrnsz -> Floatuwz
| Pfloatudrnsz -> Floatudz
| Pfloatdrnsz -> Floatdz
- | Pfixedwrzz -> Fixedwz
- | Pfixeduwrzz -> Fixeduwz
- | Pfixeddrzz -> Fixeddz
- | Pfixedudrzz -> Fixedudz
- | Pfixeddrzz_i32 -> Fixeddz
- | Pfixedudrzz_i32 -> Fixedudz
+ | Pfixedwrzz | Pfixedwrne -> Fixedw
+ | Pfixeduwrzz | Pfixeduwrne -> Fixeduw
+ | Pfixeddrzz | Pfixeddrne -> Fixedd
+ | Pfixedudrzz| Pfixedudrne -> Fixedud
+ | Pfixeddrzz_i32 -> Fixedd
+ | Pfixedudrzz_i32 -> Fixedud
let arith_rrr_real = function
| Pcompw it -> Compw
@@ -643,7 +644,7 @@ let rec_to_usage r =
(* TODO: check *)
| Srsw | Srsd | Rorw -> (match encoding with None | Some U6 -> alu_lite | _ -> raise InvalidEncoding)
| Extfz | Extfs | Insf -> (match encoding with None -> alu_lite | _ -> raise InvalidEncoding)
- | Fixeduwz | Fixedwz | Floatwz | Floatuwz | Fixeddz | Fixedudz | Floatdz | Floatudz -> mau
+ | Fixeduw | Fixedw | Floatwz | Floatuwz | Fixedd | Fixedud | Floatdz | Floatudz -> mau
| Lbs | Lbz | Lhs | Lhz | Lws | Ld | Lq | Lo ->
(match encoding with None | Some U6 | Some S10 -> lsu_auxw
| Some U27L5 | Some U27L10 -> lsu_auxw_x
@@ -656,8 +657,8 @@ let rec_to_usage r =
| Get -> bcu_tiny_tiny_mau_xnop
| Fnegd | Fnegw | Fabsd | Fabsw | Fwidenlwd
| Fmind | Fmaxd | Fminw | Fmaxw -> alu_lite
- | Fnarrowdw -> alu_full
- | Faddd | Faddw | Fsbfd | Fsbfw | Fmuld | Fmulw | Finvw
+ | Finvw | Fnarrowdw -> alu_full
+ | Faddd | Faddw | Fsbfd | Fsbfw | Fmuld | Fmulw
| Ffmad | Ffmaw | Ffmsd | Ffmsw -> mau
@@ -681,7 +682,7 @@ let real_inst_to_latency = function
| Extfs | Extfz | Insf | Fcompw | Fcompd | Cmoved | Addxw | Addxd
| Fmind | Fmaxd | Fminw | Fmaxw
-> 1
- | Floatwz | Floatuwz | Fixeduwz | Fixedwz | Floatdz | Floatudz | Fixeddz | Fixedudz -> 4
+ | Floatwz | Floatuwz | Fixeduw | Fixedw | Floatdz | Floatudz | Fixedd | Fixedud -> 4
| Mulw | Muld | Maddw | Maddd | Msbfw | Msbfd -> 2 (* FIXME - WORST CASE. If it's S10 then it's only 1 *)
| Lbs | Lbz | Lhs | Lhz | Lws | Ld | Lq | Lo -> 3
| Sb | Sh | Sw | Sd | Sq | So -> 1 (* See kvx-Optimization.pdf page 19 *)