diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2020-09-29 20:29:05 +0200 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2020-09-29 20:29:05 +0200 |
commit | 827bdabf1242720979848cf473263a54fcf212f5 (patch) | |
tree | 4987e2dda36035e7dd1becf0143db225e5a9be95 /aarch64/OpWeights.ml | |
parent | f6b0bfa541f69b4a563ac99a864284939067e994 (diff) | |
download | compcert-kvx-827bdabf1242720979848cf473263a54fcf212f5.tar.gz compcert-kvx-827bdabf1242720979848cf473263a54fcf212f5.zip |
floating-point division uses the divisor
Diffstat (limited to 'aarch64/OpWeights.ml')
-rw-r--r-- | aarch64/OpWeights.ml | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/aarch64/OpWeights.ml b/aarch64/OpWeights.ml index 01a1a553..1b48bc0f 100644 --- a/aarch64/OpWeights.ml +++ b/aarch64/OpWeights.ml @@ -108,14 +108,12 @@ let latency_of_op (op : operation) (nargs : int) = | Oaddf (* r [rd = r1 + r2] *) | Osubf (* r [rd = r1 - r2] *) | Omulf (* r [rd = r1 * r2] *) - | Odivf (* r [rd = r1 / r2] *) (* 32-bit floating-point arithmetic *) | Onegfs (* r [rd = - r1] *) | Oabsfs (* r [rd = abs(r1)] *) | Oaddfs (* r [rd = r1 + r2] *) | Osubfs (* r [rd = r1 - r2] *) | Omulfs (* r [rd = r1 * r2] *) - | Odivfs (* r [rd = r1 / r2] *) | Osingleoffloat (* r [rd] is [r1] truncated to single-precision float *) | Ofloatofsingle (* r [rd] is [r1] extended to double-precision float *) (* Conversions between int and float *) @@ -136,6 +134,8 @@ let latency_of_op (op : operation) (nargs : int) = | Osingleoflong (* r [rd = float32_of_signed_long(r1)] *) | Osingleoflongu (* r [rd = float32_of_unsigned_int(r1)] *) -> 6 + | Odivf -> 50 (* r [rd = r1 / r2] *) + | Odivfs -> 20 (* Boolean tests *) | Ocmp cmp | Osel (cmp, _) -> (match cmp with @@ -255,7 +255,7 @@ let resources_of_op (op : operation) (nargs : int) = | Oaddf (* r [rd = r1 + r2] *) | Osubf (* r [rd = r1 - r2] *) | Omulf (* r [rd = r1 * r2] *) - | Odivf (* r [rd = r1 / r2] *) + | Odivf (* 32-bit floating-point arithmetic *) | Onegfs (* r [rd = - r1] *) | Oabsfs (* r [rd = abs(r1)] *) @@ -301,7 +301,8 @@ let resources_of_op (op : operation) (nargs : int) = let non_pipelined_resources_of_op (op : operation) (nargs : int) = match op with | Odiv | Odivu -> [| 29 |] - | Odivl | Odivlu -> [| 50 |] + | Odivfs -> [| 20 |] + | Odivl | Odivlu | Odivf -> [| 50 |] | _ -> [| -1 |];; let resources_of_cond (cmp : condition) (nargs : int) = |