-
Notifications
You must be signed in to change notification settings - Fork 274
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
adds semantics for the x86 SSE floating-point instructions (#1466)
* marks synthetic subroutines with proper attributes All synthetic subroutines are marked with the synthetic attribute, and special together with intrinsic functions are marked as intrinsic. * prevents C ABI pass from clobbering registers on intrinsic calls a little bit hacky, but will make it better in the future * do not correct the stack pointer on calls to intrinsic functions * adds the MXCSR register to the x86-64 environment * fixes a bug in the intrinisic primtive the repetitive parameters were ignored * fixes the IR contraction procedure again and enables unconditionally * adds the semantics of the basic SSE floating-point operations * adds the implementation of some ieee754 intrinsics * relaxes the contraction predicate * fixes the pcode floating-point lifter we now are passing the tests! * makes the word-width primitive equal in both versions of Primus * adds the ieee754-is-nan primitive * adds more SSE instruction, implements branchless comparison * allows the normalization procedure to fail The Ghidra lifter generates code that is either invalid or our interpretation of it is not valid, e.g., `int3` instructioin on x86 is lifted as ``` CALL x; RETURN y; ``` where according to the documentation both CALL and RETURN should be treated initially as indirect jumps * renames the `system` feature in Lisp context to the target-system to prevent clashing with the Primus Lisp systems * adds the Lisp.Semantics.context to control the Lisp definitions * disables x86 FP intrinsic semantics when the legacy lifter is used Otherwise, they both try to provide semantics that is conflicting. * adds the --x86-disable-floating-point-intrinsics as an escape hatch This option makes it possible to still use the old BIL plugin feature that translates unknown (to the BIL lifters) instructions into intrinsic calls. * updates the testsuite revision
- Loading branch information
Showing
27 changed files
with
555 additions
and
75 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.