diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-04-03 20:44:16 +0200 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-04-03 20:44:16 +0200 |
commit | 015a05d8661504388ea1109f740eb16220311f93 (patch) | |
tree | 52a76f3a13983848756f4095f655307169a4d11a /backend/Selection.v | |
parent | c8cd3d017890a250f32463b6dca6571d181a3c22 (diff) | |
download | compcert-kvx-015a05d8661504388ea1109f740eb16220311f93.tar.gz compcert-kvx-015a05d8661504388ea1109f740eb16220311f93.zip |
begin implementing ternary builtin
Diffstat (limited to 'backend/Selection.v')
-rw-r--r-- | backend/Selection.v | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/backend/Selection.v b/backend/Selection.v index a87578ba..5e45dde3 100644 --- a/backend/Selection.v +++ b/backend/Selection.v @@ -276,10 +276,19 @@ Definition sel_builtin optid ef args := match ef with | EF_builtin name sign => (if String.string_dec name "__builtin_ternary_uint" - then (match optid with - | None => OK Sskip - | Some id => Error (msg "Selection: ternary uint") - end) + then + match optid with + | None => OK Sskip + | Some id => + match args with + | a1::a2::a3::nil => + OK (Sassign id (Eop Oselect + ((sel_expr a3)::: + (sel_expr a2)::: + (sel_expr a1):::Enil))) + | _ => Error (msg "__builtin_ternary_uint: arguments") + end + end else sel_builtin_default optid ef args) | _ => sel_builtin_default optid ef args end. |