Get rid of useless second argument to some instructions.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/abstract_intel_emit@15209 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
master
Alain Frisch 2014-09-11 11:00:27 +00:00
parent 9eb911370b
commit ca45ce13ca
4 changed files with 34 additions and 40 deletions

View File

@ -148,12 +148,12 @@ type instruction =
| FSQRT
| FLDZ
| FADD of arg * arg option
| FSUB of arg * arg option
| FMUL of arg * arg option
| FDIV of arg * arg option
| FSUBR of arg * arg option
| FDIVR of arg * arg option
| FADD of arg
| FSUB of arg
| FMUL of arg
| FDIV of arg
| FSUBR of arg
| FDIVR of arg
| FILD of arg
| FISTP of arg
| FXCH of arg option

View File

@ -62,9 +62,9 @@ module ForceMem = struct
let force_fxxx name f =
(function None -> assert false
| Some arg -> emit (f (force_real4 name arg, None))),
| Some arg -> emit (f (force_real4 name arg))),
(function None -> assert false
| Some arg -> emit (f (force_real8 name arg, None)))
| Some arg -> emit (f (force_real8 name arg)))
let force_cmp = force2 "cmp" (fun (arg1,arg2) -> CMP (arg1,arg2))
let force_add = force2 "add" (fun (arg1,arg2) -> ADD (arg1,arg2))
@ -254,14 +254,12 @@ module INS32 = struct
let fchs = function None -> emit FCHS | Some _ -> assert false
let fabs = function None -> emit FABS | Some _ -> assert false
let fadds, faddl = force_fxxx "fadd" (fun (arg1, arg2) -> FADD (arg1, arg2))
let fsubs, fsubl = force_fxxx "fsub" (fun (arg1, arg2) -> FSUB (arg1, arg2))
let fdivs, fdivl = force_fxxx "fdiv" (fun (arg1, arg2) -> FDIV (arg1, arg2))
let fmuls, fmull = force_fxxx "fmul" (fun (arg1, arg2) -> FMUL (arg1, arg2))
let fsubrs, fsubrl = force_fxxx "fsubr"
(fun (arg1, arg2) -> FSUBR (arg1, arg2))
let fdivrs, fdivrl = force_fxxx "fdivr"
(fun (arg1, arg2) -> FDIVR (arg1, arg2))
let fadds, faddl = force_fxxx "fadd" (fun arg -> FADD arg)
let fsubs, fsubl = force_fxxx "fsub" (fun arg -> FSUB arg)
let fdivs, fdivl = force_fxxx "fdiv" (fun arg -> FDIV arg)
let fmuls, fmull = force_fxxx "fmul" (fun arg -> FMUL arg)
let fsubrs, fsubrl = force_fxxx "fsubr" (fun arg -> FSUBR arg)
let fdivrs, fdivrl = force_fxxx "fdivr" (fun arg -> FDIVR arg)
let faddp (arg1, arg2) = emit (FADDP (arg1, arg2))
let fmulp (arg1, arg2) = emit (FMULP (arg1, arg2))

View File

@ -282,26 +282,28 @@ let split_instr = function
| FCHS -> "fchs", []
| FABS -> "fabs", []
| FADD (Mem ( (REAL8|QWORD), _) as arg, None) -> "faddl", [arg]
| FADD (Mem ( (REAL4|DWORD), _) as arg, None) -> "fadds", [arg]
| FADD (Mem ( (REAL8|QWORD), _) as arg) -> "faddl", [arg]
| FADD (Mem ( (REAL4|DWORD), _) as arg) -> "fadds", [arg]
| FADD _ -> assert false
| FMUL (Mem ( (REAL8|QWORD), _) as arg, None) -> "fmull", [arg]
| FMUL (Mem ( (REAL4|DWORD), _) as arg, None) -> "fmuls", [arg]
| FMUL (Mem ( (REAL8|QWORD), _) as arg) -> "fmull", [arg]
| FMUL (Mem ( (REAL4|DWORD), _) as arg) -> "fmuls", [arg]
| FMUL _ -> assert false
| FSUB (Mem ( (REAL8|QWORD), _) as arg, None) -> "fsubl", [arg]
| FSUB (Mem ( (REAL4|DWORD), _) as arg, None) -> "fsubs", [arg]
| FSUB (Mem ( (REAL8|QWORD), _) as arg) -> "fsubl", [arg]
| FSUB (Mem ( (REAL4|DWORD), _) as arg) -> "fsubs", [arg]
| FSUB _ -> assert false
| FSUBR (Mem ( (REAL8|QWORD), _) as arg, None) -> "fsubrl", [arg]
| FSUBR (Mem ( (REAL4|DWORD), _) as arg, None) -> "fsubrs", [arg]
| FSUBR (Mem ( (REAL8|QWORD), _) as arg) -> "fsubrl", [arg]
| FSUBR (Mem ( (REAL4|DWORD), _) as arg) -> "fsubrs", [arg]
| FSUBR _ -> assert false
| FDIV (Mem ( (REAL8|QWORD), _) as arg, None) -> "fdivl", [arg]
| FDIV (Mem ( (REAL4|DWORD), _) as arg, None) -> "fdivs", [arg]
| FDIV (Mem ( (REAL8|QWORD), _) as arg) -> "fdivl", [arg]
| FDIV (Mem ( (REAL4|DWORD), _) as arg) -> "fdivs", [arg]
| FDIV _ -> assert false
| FDIVR (Mem ( (REAL8|QWORD), _) as arg, None) -> "fdivrl", [arg]
| FDIVR (Mem ( (REAL4|DWORD), _) as arg, None) -> "fdivrs", [arg]
| FDIVR (Mem ( (REAL8|QWORD), _) as arg) -> "fdivrl", [arg]
| FDIVR (Mem ( (REAL4|DWORD), _) as arg) -> "fdivrs", [arg]
| FDIVR _ -> assert false
(* Let's be compatible with prehistoric bugs (part2):

View File

@ -269,18 +269,12 @@ let split_instr = function
| FCHS -> "fchs", []
| FABS -> "fabs", []
| FADD (arg, None) -> "fadd", [arg]
| FADD _ -> assert false
| FSUB (arg, None) -> "fsub", [arg]
| FSUB _ -> assert false
| FMUL (arg, None) -> "fmul", [arg]
| FMUL _ -> assert false
| FDIV (arg, None) -> "fdiv", [arg]
| FDIV _ -> assert false
| FSUBR (arg, None) -> "fsubr", [arg]
| FSUBR _ -> assert false
| FDIVR (arg, None) -> "fdivr", [arg]
| FDIVR _ -> assert false
| FADD arg -> "fadd", [arg]
| FSUB arg -> "fsub", [arg]
| FMUL arg -> "fmul", [arg]
| FDIV arg -> "fdiv", [arg]
| FSUBR arg -> "fsubr", [arg]
| FDIVR arg -> "fdivr", [arg]
| FADDP (arg1, arg2) -> "faddp", [ arg1; arg2 ]
| FSUBP (arg1, arg2) -> "fsubp", [ arg1; arg2 ]