aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorDavid Monniaux <David.Monniaux@univ-grenoble-alpes.fr>2022-03-07 16:21:13 +0100
committerDavid Monniaux <David.Monniaux@univ-grenoble-alpes.fr>2022-03-07 16:21:13 +0100
commit25e82e849de35eaef24412b468d3a36c72f4fcb6 (patch)
treee6abc778dfa37ac5df55c8b0926ed681b9c04f04 /common
parentab776cd94e000d07c4d14521a8d0c635d3b8412c (diff)
parent2d9138547d93c32c0ec5ae54b4afc022f5c434ff (diff)
downloadcompcert-kvx-25e82e849de35eaef24412b468d3a36c72f4fcb6.tar.gz
compcert-kvx-25e82e849de35eaef24412b468d3a36c72f4fcb6.zip
Merge remote-tracking branch 'origin/kvx_fp_division' into kvx-work
Diffstat (limited to 'common')
-rw-r--r--common/Values.v48
1 files changed, 48 insertions, 0 deletions
diff --git a/common/Values.v b/common/Values.v
index 87ebea00..cf5a1255 100644
--- a/common/Values.v
+++ b/common/Values.v
@@ -244,6 +244,18 @@ Definition intuoffloat (v: val) : option val :=
| _ => None
end.
+Definition intoffloat_ne (v: val) : option val :=
+ match v with
+ | Vfloat f => option_map Vint (Float.to_int_ne f)
+ | _ => None
+ end.
+
+Definition intuoffloat_ne (v: val) : option val :=
+ match v with
+ | Vfloat f => option_map Vint (Float.to_intu_ne f)
+ | _ => None
+ end.
+
Definition floatofint (v: val) : option val :=
match v with
| Vint n => Some (Vfloat (Float.of_int n))
@@ -268,6 +280,18 @@ Definition intuofsingle (v: val) : option val :=
| _ => None
end.
+Definition intofsingle_ne (v: val) : option val :=
+ match v with
+ | Vsingle f => option_map Vint (Float32.to_int_ne f)
+ | _ => None
+ end.
+
+Definition intuofsingle_ne (v: val) : option val :=
+ match v with
+ | Vsingle f => option_map Vint (Float32.to_intu_ne f)
+ | _ => None
+ end.
+
Definition singleofint (v: val) : option val :=
match v with
| Vint n => Some (Vsingle (Float32.of_int n))
@@ -623,6 +647,30 @@ Definition longuofsingle (v: val) : option val :=
| _ => None
end.
+Definition longoffloat_ne (v: val) : option val :=
+ match v with
+ | Vfloat f => option_map Vlong (Float.to_long_ne f)
+ | _ => None
+ end.
+
+Definition longuoffloat_ne (v: val) : option val :=
+ match v with
+ | Vfloat f => option_map Vlong (Float.to_longu_ne f)
+ | _ => None
+ end.
+
+Definition longofsingle_ne (v: val) : option val :=
+ match v with
+ | Vsingle f => option_map Vlong (Float32.to_long_ne f)
+ | _ => None
+ end.
+
+Definition longuofsingle_ne (v: val) : option val :=
+ match v with
+ | Vsingle f => option_map Vlong (Float32.to_longu_ne f)
+ | _ => None
+ end.
+
Definition floatoflong (v: val) : option val :=
match v with
| Vlong n => Some (Vfloat (Float.of_long n))