From 38b0425d524cd3e7260ac46e13153f007e8bc00d Mon Sep 17 00:00:00 2001 From: Bernhard Schommer Date: Mon, 7 Feb 2022 15:10:54 +0100 Subject: Add op for float max and min for x86. The ops `Omaxf` and `Ominf` have the same semantics as `minsd` and `maxsd` instruction, i.e. if both arguments are equal the second argument is returned as well as for NaN. The operations are the used in SelectOp to implement the built-in function `__builtin_fmax` and `__builtin_fmin`. Bug 32640 --- x86/PrintOp.ml | 2 ++ 1 file changed, 2 insertions(+) (limited to 'x86/PrintOp.ml') diff --git a/x86/PrintOp.ml b/x86/PrintOp.ml index 6aa4d450..ac2e8f49 100644 --- a/x86/PrintOp.ml +++ b/x86/PrintOp.ml @@ -147,6 +147,8 @@ let print_operation reg pp = function | Osubf, [r1;r2] -> fprintf pp "%a -f %a" reg r1 reg r2 | Omulf, [r1;r2] -> fprintf pp "%a *f %a" reg r1 reg r2 | Odivf, [r1;r2] -> fprintf pp "%a /f %a" reg r1 reg r2 + | Omaxf, [r1;r2] -> fprintf pp "max(%a, %a)" reg r1 reg r2 + | Ominf, [r1;r2] -> fprintf pp "min(%a, %a)" reg r1 reg r2 | Onegfs, [r1] -> fprintf pp "negfs(%a)" reg r1 | Oabsfs, [r1] -> fprintf pp "absfs(%a)" reg r1 | Oaddfs, [r1;r2] -> fprintf pp "%a +fs %a" reg r1 reg r2 -- cgit