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-0dff7051ff02master
parent
9eb911370b
commit
ca45ce13ca
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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 ]
|
||||
|
|
Loading…
Reference in New Issue