From a0aaa3552d53b20a99566ac7116063fbb31b9964 Mon Sep 17 00:00:00 2001 From: xleroy Date: Wed, 3 Jul 2013 15:07:17 +0000 Subject: Treat casts int64 -> float32 as primitive operations instead of two casts int64 -> float64 -> float32. The latter causes double rounding errors. git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2290 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e --- backend/Selection.v | 2 ++ 1 file changed, 2 insertions(+) (limited to 'backend/Selection.v') diff --git a/backend/Selection.v b/backend/Selection.v index edc63cd..b35c891 100644 --- a/backend/Selection.v +++ b/backend/Selection.v @@ -98,6 +98,8 @@ Definition sel_unop (op: Cminor.unary_operation) (arg: expr) : expr := | Cminor.Olonguoffloat => longuoffloat hf arg | Cminor.Ofloatoflong => floatoflong hf arg | Cminor.Ofloatoflongu => floatoflongu hf arg + | Cminor.Osingleoflong => singleoflong hf arg + | Cminor.Osingleoflongu => singleoflongu hf arg end. Definition sel_binop (op: Cminor.binary_operation) (arg1 arg2: expr) : expr := -- cgit v1.2.3