aboutsummaryrefslogtreecommitdiffstats
path: root/cparser
diff options
context:
space:
mode:
authorCyril SIX <cyril.six@kalray.eu>2021-04-13 15:04:34 +0200
committerCyril SIX <cyril.six@kalray.eu>2021-04-13 15:04:34 +0200
commitd53cc13b6e47843ebaf4b23c8b03dcef34f331f1 (patch)
tree9cae52930879af39cd3443cf48874df8a0a5e654 /cparser
parent5a846f2aeb5eb659c1b510e3fb27e49677cb8680 (diff)
downloadcompcert-kvx-d53cc13b6e47843ebaf4b23c8b03dcef34f331f1.tar.gz
compcert-kvx-d53cc13b6e47843ebaf4b23c8b03dcef34f331f1.zip
Adding distinction between kvx-cos and kvx-mbr (for trapping loads)
Diffstat (limited to 'cparser')
-rw-r--r--cparser/Machine.ml12
-rw-r--r--cparser/Machine.mli3
2 files changed, 12 insertions, 3 deletions
diff --git a/cparser/Machine.ml b/cparser/Machine.ml
index 73b71ea0..4f5a93d2 100644
--- a/cparser/Machine.ml
+++ b/cparser/Machine.ml
@@ -242,7 +242,7 @@ let rv64 =
struct_passing_style = SP_ref_callee; (* Wrong *)
struct_return_style = SR_ref } (* to check *)
-let kvx =
+let kvxbase =
{ name = "kvx";
char_signed = true;
wchar_signed = true;
@@ -275,7 +275,15 @@ let kvx =
supports_unaligned_accesses = true;
struct_passing_style = SP_value32_ref_callee;
struct_return_style = SR_int1to4;
- has_non_trapping_loads = true;
+ has_non_trapping_loads = false;
+}
+
+let kvxcos =
+ { kvxbase with has_non_trapping_loads = false;
+}
+
+let kvxmbr =
+ { kvxbase with has_non_trapping_loads = true;
}
let aarch64 =
diff --git a/cparser/Machine.mli b/cparser/Machine.mli
index 54436758..07b55832 100644
--- a/cparser/Machine.mli
+++ b/cparser/Machine.mli
@@ -88,7 +88,8 @@ val arm_littleendian : t
val arm_bigendian : t
val rv32 : t
val rv64 : t
-val kvx : t
+val kvxmbr : t
+val kvxcos : t
val aarch64 : t
val gcc_extensions : t -> t