aboutsummaryrefslogtreecommitdiffstats
path: root/kvx/SelectOp.vp
diff options
context:
space:
mode:
Diffstat (limited to 'kvx/SelectOp.vp')
-rw-r--r--kvx/SelectOp.vp36
1 files changed, 36 insertions, 0 deletions
diff --git a/kvx/SelectOp.vp b/kvx/SelectOp.vp
index f243089d..5225a71c 100644
--- a/kvx/SelectOp.vp
+++ b/kvx/SelectOp.vp
@@ -760,6 +760,8 @@ Definition gen_absl args :=
| _ => None
end.
+Require FPDivision32 FPDivision64.
+
Definition platform_builtin (b: platform_builtin) (args: exprlist) : option expr :=
match b with
| BI_fmin => Some (Eop Ominf args)
@@ -768,6 +770,40 @@ Definition platform_builtin (b: platform_builtin) (args: exprlist) : option expr
| BI_fmaxf => Some (Eop Omaxfs args)
| BI_fma => gen_fma args
| BI_fmaf => gen_fmaf args
+ | BI_lround_ne => Some (Eop Olongoffloat_ne args)
+ | BI_luround_ne => Some (Eop Olonguoffloat_ne args)
+ | BI_fp_udiv32 => (match args with
+ | a:::b:::Enil => Some (FPDivision32.fp_divu32 a b)
+ | _ => None
+ end)
+ | BI_fp_udiv64 => (match args with
+ | a:::b:::Enil => Some (FPDivision64.fp_divu64 a b)
+ | _ => None
+ end)
+ | BI_fp_umod32 => (match args with
+ | a:::b:::Enil => Some (FPDivision32.fp_modu32 a b)
+ | _ => None
+ end)
+ | BI_fp_umod64 => (match args with
+ | a:::b:::Enil => Some (FPDivision64.fp_modu64 a b)
+ | _ => None
+ end)
+ | BI_fp_sdiv32 => (match args with
+ | a:::b:::Enil => Some (FPDivision32.fp_divs32 a b)
+ | _ => None
+ end)
+ | BI_fp_sdiv64 => (match args with
+ | a:::b:::Enil => Some (FPDivision64.fp_divs64 a b)
+ | _ => None
+ end)
+ | BI_fp_smod32 => (match args with
+ | a:::b:::Enil => Some (FPDivision32.fp_mods32 a b)
+ | _ => None
+ end)
+ | BI_fp_smod64 => (match args with
+ | a:::b:::Enil => Some (FPDivision64.fp_mods64 a b)
+ | _ => None
+ end)
| BI_abs => gen_abs args
| BI_absl => gen_absl args
end.