diff options
Diffstat (limited to 'kvx/SelectOp.vp')
-rw-r--r-- | kvx/SelectOp.vp | 36 |
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. |