diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-04-03 20:35:04 +0200 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-04-03 20:35:04 +0200 |
commit | c8cd3d017890a250f32463b6dca6571d181a3c22 (patch) | |
tree | 570b090b2e6ce64e8b99e45bd72593c57c1bc2be /backend/Selection.v | |
parent | 93fd5df1bff8b22b3513a07a765b0a72f1505243 (diff) | |
download | compcert-kvx-c8cd3d017890a250f32463b6dca6571d181a3c22.tar.gz compcert-kvx-c8cd3d017890a250f32463b6dca6571d181a3c22.zip |
selection of builtin.. progress...
Diffstat (limited to 'backend/Selection.v')
-rw-r--r-- | backend/Selection.v | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/backend/Selection.v b/backend/Selection.v index e63cbce3..a87578ba 100644 --- a/backend/Selection.v +++ b/backend/Selection.v @@ -267,20 +267,21 @@ Definition sel_switch_long := (fun arg ofs => subl arg (longconst (Int64.repr ofs))) lowlong. +Definition sel_builtin_default optid ef args := + OK (Sbuiltin (sel_builtin_res optid) ef + (sel_builtin_args args + (Machregs.builtin_constraints ef))). + Definition sel_builtin optid ef args := match ef with | EF_builtin name sign => (if String.string_dec name "__builtin_ternary_uint" - then Sbuiltin (sel_builtin_res optid) ef - (sel_builtin_args args - (Machregs.builtin_constraints ef)) - else Sbuiltin (sel_builtin_res optid) ef - (sel_builtin_args args - (Machregs.builtin_constraints ef))) - | _ => - Sbuiltin (sel_builtin_res optid) ef - (sel_builtin_args args - (Machregs.builtin_constraints ef)) + then (match optid with + | None => OK Sskip + | Some id => Error (msg "Selection: ternary uint") + end) + else sel_builtin_default optid ef args) + | _ => sel_builtin_default optid ef args end. (** Conversion from Cminor statements to Cminorsel statements. *) @@ -291,9 +292,9 @@ Fixpoint sel_stmt (s: Cminor.stmt) : res stmt := | Cminor.Sassign id e => OK (Sassign id (sel_expr e)) | Cminor.Sstore chunk addr rhs => OK (store chunk (sel_expr addr) (sel_expr rhs)) | Cminor.Scall optid sg fn args => - OK (match classify_call fn with - | Call_default => Scall optid sg (inl _ (sel_expr fn)) (sel_exprlist args) - | Call_imm id => Scall optid sg (inr _ id) (sel_exprlist args) + (match classify_call fn with + | Call_default => OK (Scall optid sg (inl _ (sel_expr fn)) (sel_exprlist args)) + | Call_imm id => OK (Scall optid sg (inr _ id) (sel_exprlist args)) | Call_builtin ef => sel_builtin optid ef args end) | Cminor.Sbuiltin optid ef args => |