summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa
AgeCommit message (Collapse)Author
2007-09-19X86: Move the fp microops to their own file with their own base classes in ↵Gabe Black
C++ and python. --HG-- extra : convert_revision : 9cd223f2005adb36fea2bb56fa39793a58ec958c
2007-09-19X86: Put in the foundation for x87 stack based fp registers.Gabe Black
--HG-- extra : convert_revision : 940f92efd4a9dc59106e991cc6d9836861ab69de
2007-09-19X86: Put in stubs for x87, 64 bit and 128 bit SIMD instruction microcode.Gabe Black
--HG-- rename : src/arch/x86/isa/insts/sse/__init__.py => src/arch/x86/isa/insts/simd128/__init__.py extra : convert_revision : efb4405aebaa4a04f33572e7d078ceca45872d9c
2007-09-13X86: Fix how ECF is computed in genFlags, and get rid of some duplicate code.Gabe Black
--HG-- extra : convert_revision : f86330a5a9fea782ee63aaa18ca964fb6f9cef0b
2007-09-13X86: Make the shift and rotate instructions set the carry flag(s) and ↵Gabe Black
overflow flags like they're supposed to. --HG-- extra : convert_revision : c0523a5bbf53375ce979ca7d98a95e465be66fbe
2007-09-13X86: Total overhaul of the division instructions and microops.Gabe Black
--HG-- extra : convert_revision : 303ea45f69f7805361ad877fe6bb43fbc3dfd7a6
2007-09-10X86: Move a comment to be next to the code it describes.Gabe Black
--HG-- extra : convert_revision : c384391175babb7cfdd3885ae9d9f1a9405ea44f
2007-09-06X86: Rework the multiplication microops so that they work like they would in ↵Gabe Black
the patent. --HG-- extra : convert_revision : 6fcf5dee440288d8bf92f6c5c2f97ef019975536
2007-09-06X86: Make signed multiplication do something different from unsigned.Gabe Black
--HG-- extra : convert_revision : 333c4a3464d708d4d8cea88931259ab96c2f75ed
2007-09-06X86: Make signed versions of partial register values available to microops.Gabe Black
--HG-- extra : convert_revision : c820d1250f505911a341ced42d4f73796ea77f87
2007-09-06X86: Correct how the hi portion of a product is computed.Gabe Black
--HG-- extra : convert_revision : 1f503e1cae0374e62e6254e8073e903adc29d067
2007-09-06X86: Add a square root microop and the SSE sqrt instruction.Gabe Black
--HG-- extra : convert_revision : ddc6e7e95111189d43f75bf84cd3d82433d982b3
2007-09-06X86: Add SSE comparison instructions and microops and move some FP microops ↵Gabe Black
to be with the other ones. --HG-- extra : convert_revision : ee0b5acde08d12c51a5282efb58d1ac72e0779af
2007-09-04X86: Implement an SSE xor microop and instruction.Gabe Black
--HG-- extra : convert_revision : 949737d0f5d6fe4aa77cc4680d0c88caab3e8174
2007-09-04X86: Make the movfp microop use FloatRegBits instead of FloatRegs.Gabe Black
This fixes a problem where interpreting arbitrary bits as floating point would change what the value was. These values are legitimate because the fp registers could be used to move around arbitrary data. --HG-- extra : convert_revision : f1d7159ba137702b5722cc7c1b64ed7dd06c21de
2007-09-04X86: Hook in the fp arithmetic instructions. Stale python made it work before.Gabe Black
--HG-- extra : convert_revision : af27f26ae810ebaae13faa572c5b4eb074620d91
2007-09-04X86: Implement some SSE fp microops and instructions.Gabe Black
--HG-- extra : convert_revision : 7e0595ef542fbfb701bfac7e9ac4648349a92b26
2007-09-04X86: Add some SSE floating point/integer conversion microops.Gabe Black
--HG-- extra : convert_revision : 2a1aa16709db940f5f40bbd84ca082f26b03b9c5
2007-09-04X86: Add floating point micro registers.Gabe Black
--HG-- extra : convert_revision : 442a5f8b9216638e4e6898f89eacb8695719e20f
2007-09-04X86: Fix a typo in the microassembly for the cqo instruction.Gabe Black
--HG-- extra : convert_revision : ddf739e591e4414ade37b806a88f3c11292627e2
2007-09-04X86: Implement idiv and propogate the mul corner case fix.Gabe Black
--HG-- extra : convert_revision : 348aa081067728afa14dc5b609fc7e26dbc5fad5
2007-09-04X86: Fix a corner case where mul would overwrite an original register value ↵Gabe Black
it still needed. --HG-- extra : convert_revision : 86ee0e2bf716d52c34ee731727d6366935f103ed
2007-08-31X86: Major rework of how regop microops are generated.Gabe Black
The new implementation uses metaclass, and gives a lot more precise control with a lot less verbosity. The flags/no flags reg/imm variants are all handled by the same python class now which supplies a constructor to the right C++ class based on context. --HG-- extra : convert_revision : 712e3ec6de7a5a038da083f79635fd7a687d56e5
2007-08-29X86: Fix the sra microop to get the sign bit from the right operand.Gabe Black
--HG-- extra : convert_revision : 71e58dd6dd6918ee403f2e332c47e29acdace464
2007-08-29X86: Implement the movaps instruction.Gabe Black
--HG-- extra : convert_revision : 2aeb1c05205f8ea8f7484e8bacf3fbbc581defd2
2007-08-29X86: Implement the movsd instruction.Gabe Black
--HG-- extra : convert_revision : a5a73e0ddd39144d2aeeb9cc6a299516752fd4c2
2007-08-29X86: Implement the movlpd instruction.Gabe Black
--HG-- extra : convert_revision : dddb20fe48c0ae9de7cd0ba1a1467ecb690056c1
2007-08-29X86: Add an fp move microop.Gabe Black
--HG-- extra : convert_revision : a9d6d3568cd2c6a65df91bf56ee1e43523f04630
2007-08-29X86: Add load and store microops that use the fp registers.Gabe Black
--HG-- extra : convert_revision : 153a055e888d8c47d59758a599dbd38f63008137
2007-08-29X86: Add operands to handle floating point registers.Gabe Black
--HG-- extra : convert_revision : 2e8289dbd3f5dda1221014d4ed0e9450f60de0cf
2007-08-29X86: Flesh out register indexing constants.Gabe Black
--HG-- extra : convert_revision : 56eedc076bbb7962c3976599a15ed93c7cb154c0
2007-08-28X86: More two byte opcode decoding. I missed two groups in the last changeset.Gabe Black
--HG-- extra : convert_revision : 1a2813b2e7d3e0e02c8f1474f372de5cf16e7d7b
2007-08-28X86: More fully decode two byte opcodes.Gabe Black
This includes the most of the SSE stuff, but not some of the "groups" of instructions. --HG-- extra : convert_revision : 4725c34f3d73971ae1763611685c5877b6c51412
2007-08-26X86: Make the Ruflag microop work correctly, and make the code a little clearer.Gabe Black
--HG-- extra : convert_revision : c551f51cdda46df99370363ed2d70916db8413eb
2007-08-26X86: Return values for some cpuid functions that match what my development ↵Gabe Black
machine returns. --HG-- extra : convert_revision : e6619da11f43bbe025ceabd06387dd24e1cd883b
2007-08-26X86: Make the microassembler accept lines which are just labels.Gabe Black
The labels on these lines will be associated with whatever the next microop is. --HG-- extra : convert_revision : 80c260e48ec1c16e6325061608e37c95a0610cfa
2007-08-26X86: Make cpuid actually consider the eax parameter and return different values.Gabe Black
--HG-- extra : convert_revision : 527c1cacdd20ab162859bba7f9a6bed33afa2d4f
2007-08-26X86: Fix the sign extension microop so it extends zeros correctly.Gabe Black
--HG-- extra : convert_revision : 9d7ca286ba7709175fa75226320601acce4ced98
2007-08-26X86: Implement cmps (string compare)Gabe Black
--HG-- extra : convert_revision : 0d6b783b2246b8ad8d91e4c63e407307ee11c651
2007-08-26X86: Make shift instructions set some of the flags they're supposed to.Gabe Black
The flag mechanism for microops needs to be fleshd out a little more to allow for custom flag calculation methods for certain microops. Shift is an example where the rules for calculating OF and CF are unique. --HG-- extra : convert_revision : 91981a00c1efd05db702fffa9cea51f912583013
2007-08-26X86: Remove x86 code that attempted to fix misaligned accesses.Gabe Black
--HG-- extra : convert_revision : 42f68010e6498aceb7ed25da278093e99150e4df
2007-08-07X86: Implemented and hooked in SCAS (scan string)Gabe Black
Fixed the asz assembler symbol. Adjusted the condion checks to have appropriate options. Implemented the SCAS microcode. Attached SCAS into the decoder. --HG-- extra : convert_revision : 17bf9ddae6bc2069e43b076f8f83c4e54fb7966c
2007-08-07X86: Add a format to handle string instructions which can use the repe and ↵Gabe Black
repne prefixes. --HG-- extra : convert_revision : 205fbbb947258bc0ef2915e22d5b32a3df1a1ce2
2007-08-07X86: Overhaul of ruflags to get it to work correctly.Gabe Black
--HG-- extra : convert_revision : 00a36a80a1945806aac9fa7d9d6a3906465dcad2
2007-08-07X86: Make a microcode branch microop.Gabe Black
Also some touch up for ruflag. --HG-- extra : convert_revision : 829947169af25ca6573f53b9430707101c75cc23
2007-08-04X86: Implement microops and instructions that manipulate the flags register.Gabe Black
--HG-- extra : convert_revision : 566841577bf4a98cac0b65292fe0f7daf89a9203
2007-08-04X86: Make 64 bit unaligned accesses work as well as the other sizes.Gabe Black
There is a fundemental flaw in how unaligned accesses are supported, but this is still an improvement. --HG-- extra : convert_revision : 1c20b524ac24cd4a812c876b067495ee6a7ae29f
2007-08-04X86: Make fixed register operands ignore register index extensions from the ↵Gabe Black
REX prefix. The only cases where this was the correct behavior are now handled with the "B" operand type, and doing things this way was breaking some instructions, notably a shift. --HG-- extra : convert_revision : 072346d4f541edaceba7aecc26ba8d2cd756e481
2007-08-04X86: Implement the cmpxchg instruction.Gabe Black
--HG-- extra : convert_revision : b9e172bcb9551edf65c63f26dfa07d771edf3e1e
2007-08-04X86: Start implementing segmentation support.Gabe Black
Make instructions observe segment prefixes, default segment rules, segment base addresses. Also fix some microcode and add sib and riprel "keywords" to the x86 specialization of the microassembler. --HG-- extra : convert_revision : be5a3b33d33f243ed6e1ad63faea8495e46d0ac9