14224:2edf6ec03c9d |
26-Aug-2019 |
Pouya Fotouhi <Pouya.Fotouhi@amd.com> |
arch-x86: Adding warning for movnti
We are ignoring the non-temporal hint here, and implementing this instruction as a cacheable instruction.
This change adds a warning to let user know about this workaround.
Change-Id: I2e40437a44282fe9cf7772a25a8870bd8729a6ed Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20428 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> |
12584:2af98e1fb894 |
12-Mar-2018 |
Gabe Black <gabeblack@google.com> |
x86: Replace the .serializing directive with .serialize_(before|after).
This makes it explicit which type of serialization you want, and also makes it possible to make a macroop serialize before. The old serializing directive was renamed .serialize_after in the microcode assembler, and throughout the microcode implementation, and its behavior is unchanged. More specifically, it still marks the last microop within the macroop as IsSerializing and IsSerializeAfter.
The new .serialize_before directive does something similar and marks the first microop as IsSerializing and IsSerializeBefore.
Change-Id: Ia53466c734c651c65400809de7ef903c4a6c3e7e Reviewed-on: https://gem5-review.googlesource.com/9041 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Gabe Black <gabeblack@google.com> |
12463:84f365522633 |
15-Jan-2018 |
Swapnil Haria <swapnilster@gmail.com> |
arch-x86: Adding clflush, clflushopt, clwb instructions
This patch adds support for cache flushing instructions in x86. It piggybacks on support for similar instructions in arm ISA added by Nikos Nikoleris. I have tested each instruction using microbenchmarks.
Change-Id: I72b6b8dc30c236a21eff7958fa231f0663532d7d Reviewed-on: https://gem5-review.googlesource.com/7401 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com> |
12390:464513ab8668 |
13-Dec-2017 |
Gabe Black <gabeblack@google.com> |
x86: Use operand size 4 when it would be 2 for cmpxchg8b.
This means the instruction is treated as cmpxchg8b when the effective operand size is 16 bits.
Change-Id: I4d9bb295f96097e1746a9bbccb2c579d14738fab Reviewed-on: https://gem5-review.googlesource.com/6603 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Gabe Black <gabeblack@google.com> |
12361:ed9f9d629a7e |
04-Dec-2017 |
Gabe Black <gabeblack@google.com> |
x86: LOOP's operand size defaults to 64 bits in 64 bit mode.
The microcode for those instructions needs a directive which overrides that setting in the instructions emulation environment.
Reported-by: Matt Sinclair <mattdsinclair@gmail.com>
Change-Id: I474d938c0b3cf01da92ec817a58b08de783f1967 Reviewed-on: https://gem5-review.googlesource.com/6301 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com> |
11829:cb5390385d87 |
10-Feb-2017 |
Jason Lowe-Power <jason@lowepower.com> |
x86: Fix implicit stack addressing in 64-bit mode
When in 64-bit mode, if the stack is accessed implicitly by an instruction the alternate address prefix should be ignored if present.
This patch adds an extra flag to the ldstop which signifies when the address override should be ignored. Then, for all of the affected instructions, this patch adds two options to the ld and st opcode to use the current stack addressing mode for all addresses and to ignore the AddressSizeFlagBit. Finally, this patch updates the x86 TLB to not truncate the address if it is in 64-bit mode and the IgnoreAddrSizeFlagBit is set.
This fixes a problem when calling __libc_start_main with a binary that is linked with a recent version of ld. This version of ld uses the address override prefix (0x67) on the call instruction instead of a nop.
Note: This has not been tested in compatibility mode and only the call instruction with the address override prefix has been tested.
See [1] page 9 (pdf page 45)
For instructions that are affected see [1] page 519 (pdf page 555).
[1] http://support.amd.com/TechDocs/24594.pdf
Signed-off-by: Jason Lowe-Power <jason@lowepower.com> |
11329:82bb3ee706b3 |
06-Feb-2016 |
Alexandru Dutu <alexandru.dutu@amd.com> |
x86: revamp cmpxchg8b/cmpxchg16b implementation
The previous implementation did a pair of nested RMW operations, which isn't compatible with the way that locked RMW operations are implemented in the cache models. It was convenient though in that it didn't require any new micro-ops, and supported cmpxchg16b using 64-bit memory ops. It also worked in AtomicSimpleCPU where atomicity was guaranteed by the core and not by the memory system. It did not work with timing CPU models though.
This new implementation defines new 'split' load and store micro-ops which allow a single memory operation to use a pair of registers as the source or destination, then uses a single ldsplit/stsplit RMW pair to implement cmpxchg. This patch requires support for 128-bit memory accesses in the ISA (added via a separate patch) to support cmpxchg16b. |
11320:42ecb523c64a |
06-Feb-2016 |
Steve Reinhardt <steve.reinhardt@amd.com> |
style: remove trailing whitespace
Result of running 'hg m5style --skip-all --fix-white -a'. |
10959:30c700ee0d47 |
20-Jul-2015 |
David Hashe <david.hashe@amd.com> |
x86: x86 instruction-implementation bug fixes
Added explicit data sizes and an opcode type for correct execution. |
10544:049273bc03f6 |
17-Nov-2014 |
Gabe Black <gabeblack@google.com> |
x86: Fix setting segment bases in real mode.
The data size used for actually writing the base value for the segment was the default size, but really it should set the entire value without any possible truncation. |
10543:8fb2884b0a75 |
17-Nov-2014 |
Gabe Black <gabeblack@google.com> |
x86: Fix some bugs in the real mode far jmp instruction.
The far pointer should be shifted right to get the selector value, not left. Also, when calculating the width of the offset, the wrong register was used in one spot. |
10474:799c8ee4ecba |
16-Oct-2014 |
Andreas Hansson <andreas.hansson@arm.com> |
arch: Use shared_ptr for all Faults
This patch takes quite a large step in transitioning from the ad-hoc RefCountingPtr to the c++11 shared_ptr by adopting its use for all Faults. There are no changes in behaviour, and the code modifications are mostly just replacing "new" with "make_shared". |
9985:d70124a5d594 |
26-Nov-2013 |
Christian Menard <christian.menard@tu-dresden.de> |
x86: Implementation of Int3 and Int_Ib in long mode
This is an implementation of the x86 int3 and int immediate instructions for long mode according to 'AMD64 Programmers Manual Volume 3'. |
9700:2ea56473f400 |
21-May-2013 |
Nilay Vaish <nilay@cs.wisc.edu> |
x86: mark instructions for being function call/return Currently call and return instructions are marked as IsCall and IsReturn. Thus, the branch predictor does not use RAS for these instructions. Similarly, the number of function calls that took place is recorded as 0. This patch marks these instructions as they should be. |
9671:483f5ff33dd1 |
23-Apr-2013 |
Christian Menard <Christian.Menard@tu-dresden.de> |
x86: increment the stack pointer in lret inst The 'lret' instruction reloads instruction pointer and code segment from the stack and then pops them. But the popping part is missing from the current implementation. This caused incorrect behavior in some code related to the Fiasco OS. Microops are being added to rectify the behavior of the instruction.
Committed by: Nilay Vaish <nilay@cs.wisc.edu> |
8973:d69afa89c2ee |
29-Apr-2012 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix the IMUL_R_P_I macroop.
The disp displacement was left off the load microop so the wrong value was used. |
8672:2c7ece076c8b |
09-Jan-2012 |
Nilay Vaish <nilay@cs.wisc.edu> |
X86: Add memory fence to I/O instructions |
8610:9bdd52a2214c |
03-Nov-2011 |
Nilay Vaish<nilay@cs.wisc.edu> |
x86: Add microop for fence This patch adds a new microop for memory barrier. The microop itself does nothing, but since it is marked as a memory barrier, the O3 CPU should flush all the pending loads and stores before the fence to the memory system. |
8103:53c2d9b1c15d |
02-Mar-2011 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Mark IO reads and writes as non-speculative. |
7932:6220632e8636 |
07-Feb-2011 |
Tim Harris <tharris@microsoft.com> |
X86: Use all 64 bits of the lstar register in the SYSCALL_64 macroop.
During SYSCALL_64, use dataSize=8 when handling new rip (ref http://www.intel.com/Assets/PDF/manual/253668.pdf 5.8.8 IA32_LSTAR is a 64-bit address) |
7931:fb0a01641d73 |
07-Feb-2011 |
Tim Harris <tharris@microsoft.com> |
X86: Fix JMP_FAR_I to unpack a far pointer correctly.
JMP_FAR_I was unpacking its far pointer operand using sll instead of srl like it should, and also putting the components in the wrong registers for use by other microcode. |
7930:fb13c36c3951 |
07-Feb-2011 |
Tim Harris <tharris@microsoft.com> |
X86: Read the LDT/GDT at CPL0 when executing an iret.
During iret access LDT/GDT at CPL0 rather than after transition to user mode (if I'm reading the Intel IA-64 architecture spec correctly, the contents of the descriptor table are read before the CPL is updated). |
7872:b21a94bf6a28 |
02-Feb-2011 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Replace the stupd microop with a store/update sequence. |
7690:ae58aacfab8f |
29-Sep-2010 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix the RIP relative versions of the BT, BTC, BTR, and BTS instructions. |
7622:b49144029ec8 |
23-Aug-2010 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Mark serializing macroops and regular instructions as such. |
7501:a75564db03c3 |
21-Jul-2010 |
Tushar Krishna <Tushar.Krishna@amd.com> |
Fix x86 XCHG macro-op to use locked micro-ops for all memory accesses |
7087:fb8d5786ff30 |
24-May-2010 |
Nathan Binkert <nate@binkert.org> |
copyright: Change HP copyright on x86 code to be more friendly |
6733:16817406af29 |
10-Nov-2009 |
Vince Weaver <vince@csl.cornell.edu> |
X86: Fix bugs in movd implementation.
Unfortunately my implementation of the movd instruction had two bugs.
In one case, when moving a 32-bit value into an xmm register, the lower half of the xmm register was not zero extended.
The other case is that xmm was used instead of xmmlm as the source for a register move. My test case didn't notice this at first as it moved xmm0 to eax, which both have the same register number. |
6706:ea20065f6614 |
30-Oct-2009 |
Vince Weaver <vince@csl.cornell.edu> |
X86: Implement movd_Vo_Edp on X86
This patch implements the movd_Vo_Edp series of instructions.
It addresses various concerns by Gabe Black about which file the instruction belonged in, as well as supporting REX prefixed instructions properly.
This instruction is needed for some of the spec2k benchmarks, most notably bzip2. |
6645:c248b0348d85 |
16-Sep-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix checking the NT bit during an IRET. |
6610:dbfe22c711d5 |
17-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement MOVNTI. |
6514:1802d70f4092 |
17-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Turn the DIV and IDIV microcode into templates and generate all the variants. |
6513:e2ffac65a76a |
17-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Remove some FIXMEs from IDIV that have been fixed. |
6512:b19a86a6d424 |
17-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Turn the CMPXCHG8B microcode into a template and generate each variant. |
6503:843ec3da7584 |
17-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix a bug introduced to IDIV in a recent attempt to fix another bug. |
6486:33faa9915d16 |
09-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the CMPXCHG8B/CMPXCHG16B instruction. |
6485:4f70960761cd |
09-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Don't clobber the original dividend when doing signed divide. |
6482:e4b8ec60fd4b |
08-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make not taken conditional moves leave the destination alone. Adjust CMOVcc. The manuals from both AMD and Intel say that when writing to a 32 bit destination in 64 bit mode, the upper 32 bits of the register are filled with zeros. They also both say that the CMOV instructions leave their destination alone when their condition fails. Unfortunately, it seems that CMOV will zero extend its destination register whether or not it was supposed to actually do a move on both platforms. This seems to be the only case where this happens, but it would be hard to say for sure. |
6481:fa6d324aa2f9 |
07-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: (Re)Implemented SHRD. |
6480:ed9d773de88f |
07-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement SHLD. |
6478:2ec6bfc8f9c7 |
07-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make the qaud width bswap instruction handle the fact that 32 bit operations zero extend. |
6476:adbd07f1630d |
07-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Don't truncate the immediate parameter for the ENTER instruction. |
6475:951199885fd8 |
07-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Adjust the various sizes used for the enter and leave instructions. |
6474:585faad1057f |
07-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make scas compare its operands in the right order. |
6473:2b1bb253c05e |
07-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix a copy/paste error for cmovnp. |
6463:fe6165923529 |
05-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix condition code setting for signed multiplies with negative results. |
6460:59108c231208 |
05-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Use the new forced folding mechanism for the SAHF and LAHF instructions. |
6459:f7f0d361d6fc |
05-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix the indexing for ah in byte division instructions. |
6458:d959f578ae42 |
05-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix the indexing for ah in byte multiply instructions. |
6455:709527fb7250 |
05-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Set the flags on rotate left with carry instructions. |
6450:b9aa6a397b57 |
05-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Set the flags for rotate right with carry instructions. |
6448:a32abe4e17e1 |
05-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Set the flags on a rotate right instruction. |
6445:647111272094 |
05-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Actually set the flags on a rotate left instruction. |
6344:b7104eda0795 |
16-Jul-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix a number of places where the wrong form of a microop was used. |
6298:9af8736c26be |
09-Jul-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix a bug in IRET_PROT's microcode. The immediate form of sra was intended. |
6222:9ee4a06a960b |
29-May-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Keep track of more descriptor state to accomodate KVM. |
6097:842991b33990 |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of XADD. |
6096:72f1239a1583 |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of BTC. |
6095:c36f932461d9 |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of BTR. |
6094:28198ab3adec |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of CMPXCHG. |
6093:7b88298769c7 |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of BTS. |
6092:e4ffbb3546fa |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of DEC. |
6091:d430acd6d5ce |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of INC. |
6090:80d7669e9cdb |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of NEG. |
6089:030c2a63fb61 |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of NOT. |
6088:c698cbf56cf1 |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of XCHG. |
6087:7736bc8824a1 |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of XOR. |
6086:2ac9ab003d54 |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of SUB. |
6085:c210d3e04532 |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of AND. |
6084:cb751de62299 |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of SBB. |
6083:c669a6f8fa9e |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of ADC. |
6082:5db340cc3c47 |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of OR. |
6081:e5da3985fa99 |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of ADD. |
6070:3b0f44b3e0e1 |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make the TEST instruction set all the flags it's supposed to. |
6062:2116d308076f |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Explicitly use the right width in a few places that need a 64 bit value. |
6060:3d524dc980a8 |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement far jmp. |
6051:47a52383002b |
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix the mov to segment selector in real mode instruction microcode. |
6020:0647c8b31a99 |
06-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
Merge ARM into the head. ARM will compile but may not actually work. |
5977:4fff54ab52ae |
27-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement shrd. |
5974:9ed073dd5214 |
27-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Set address size to 64 bits when generating addresses internally. |
5968:6f9f1438360a |
27-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make instructions that use intseg preserve all 8 bytes of their addresses. |
5961:969fb3187eba |
27-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Compute shift instruction flags correctly. |
5934:367ac7cae7b5 |
25-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make rdcr use merge and the mov to control register instructions use the right operand size. |
5932:afa0866171e1 |
25-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make the segment register reading microops use merge. |
5931:d42d507ccdb1 |
25-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the mov to debug register intructions. |
5928:410d14f82f13 |
25-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix a few bugs with the segment register instructions in real mode. Fix a few instances where the register form of zext was used where zexti was intended. Also get rid of the 64 bit only rip relative addressed version since 64 bit and real mode are mutually exclusive. |
5927:5e3367b103da |
25-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Do a merge for the zero extension microop. |
5920:5a9c976270d6 |
25-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a basic prefetch instruction. |
5916:4bbd6239223c |
25-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Update CS later so stack accesses have the right permission checks. |
5908:c24a1ffc4ad0 |
25-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the sysret instruction in long mode. |
5907:8a633e6a8df1 |
25-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the longmode versions of the syscall instruction. |
5846:66021eb985f5 |
01-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix the microcode for the LODS instruction. |
5815:18ed7aa8e8e1 |
25-Jan-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the xadd instruction. |
5814:a9e8668557bf |
25-Jan-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the bswap instruction. |
5812:d12ff89c7692 |
25-Jan-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix a bug in the iret microcode. |
5685:a55b78e4b6d6 |
13-Oct-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix the segment setting code in IRET, and make it restore the flags. |
5661:443e6f925027 |
12-Oct-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Create a SeqOp class of microops and make Br one of them. |
5659:f4b9c344d1ca |
12-Oct-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement CPUID with a magical function instead of microcode. |
5590:2ff5831fd2eb |
09-Oct-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make far ret modify CS instead of some random selector. |
5543:3af77710f397 |
10-Sep-2008 |
Ali Saidi <saidi@eecs.umich.edu> |
style: Remove non-leading tabs everywhere they shouldn't be. Developers should configure their editors to not insert tabs |
5540:bf358d99eff7 |
03-Sep-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix the microcode for sign/zero extending moves that use high byte registers. |
5453:5048e2840f39 |
12-Jun-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make the cpuid processor identifier return a real string. |
5448:67c8b7badec1 |
12-Jun-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement and hook up STI and CLI instructions. |
5434:2f6dad874e14 |
12-Jun-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a partial, sort of correct version of the protected mode variant of iret. |
5433:1b0b8e9ba6a9 |
12-Jun-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Change how segment loading is performed. |
5432:e1e42f18d376 |
12-Jun-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make pushes and pops use the stack size instead of the data size. |
5426:0bdcc60ccc45 |
12-Jun-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Add microops and supporting code to manipulate the whole rflags register. |
5423:536fb3cc5a9b |
12-Jun-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Redo BSF. |
5420:dc0041a51920 |
12-Jun-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make string instructions work when rcx=0. |
5418:501cb81c89df |
12-Jun-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Bypass unaligned access support for register addressed MSRs. |
5415:5c28e3dbdc8e |
12-Jun-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix the implementation of BSF. |
5414:bed5152f6368 |
12-Jun-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Bit scan forward/reverse were accidentally transposed. |
5413:809f33a926c4 |
12-Jun-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix a byte register indexing issue in the sign extending move from memory microcode. |
5333:0e394c08dcbc |
23-Jan-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Optomize the bit scanning instruction microassembly a little. More can be done. |
5332:0e25e0b6982c |
22-Jan-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement and attach the BSR and BSF instructions. |
5331:8d8aaad0bc36 |
21-Jan-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fill out group17 in the decoder. |
5326:7e4cef0e528b |
12-Jan-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Redo the bit test instructions. |
5322:db50c4044662 |
12-Jan-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix the general IO instructions dataSize. |
5307:e27f5a64f459 |
03-Dec-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Please excuse my dear Aunt Sally. (precedence bug) |
5306:79cedb731af5 |
02-Dec-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make sure the memory index is calculated using the address size for bit test instructions. |
5305:8b379ad9406d |
02-Dec-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix a copy/paste mistake where the bit test instructions were using an immediate where they should use a register. |
5302:a1c79b171e23 |
02-Dec-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make the 0xA0-0xA3 versions of mov use the right sized immediates. |
5297:4e2607ff906f |
02-Dec-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix a copy paste error in the bts microcode. |
5296:5caa774215cd |
02-Dec-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement mov from control register. |
5295:5268691561b4 |
02-Dec-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: First crack at far returns. This is grossly approximate. |
5294:7222bdaed33b |
02-Dec-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Reorganize segmentation and implement segment selector movs. |
5241:a6602acdd046 |
12-Nov-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the wrcr microop which writes a control register, and some control register work. |
5240:6dc723c9c6a9 |
12-Nov-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement some bit testing instructions. |
5239:0920dfb94514 |
12-Nov-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Change the meaning of the sext and zext width operand, and make sext set zext if the sign bit is 0. |
5179:9ea5593e01f2 |
22-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Use the cda microop where appropriate. The ENTER instruction still needs these. |
5176:43fb805e1b85 |
21-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Start using the stupd microop, and update statistics accordingly. |
5175:ee904e392de2 |
21-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the stupd microop ("store with update", not "stupid") and use it in ENTER. |
5174:73a760aa0129 |
19-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the PUSHF, POPF, SAHF, and LAHF instructions. |
5171:eab735dc951d |
19-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the ENTER instruction. This could probably be optimized by cleaning up the indexing in the main loop. |
5167:3668fc87f144 |
19-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the string IO instructions, ins and outs. |
5166:d749d156ce52 |
19-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the undocumented SALC instruction which sets AL to 0xFF if CF=1 and 0x00 otherwise. |
5165:ce7b4b8a24c5 |
19-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the XLAT instruction. |
5164:c2124685af1d |
19-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the BOUND instruction. |
5161:e7334f2d7bef |
19-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the in/out instructions. These will still need support from the TLB and memory system. |
5160:ada1b67c97ab |
19-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the LOOP instructions. |
5158:8cf2433105ff |
19-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implemented the jrcx instruction. |
5151:dec27c6c2b3b |
12-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Added some new versions of MOV and a new argument type tag. |
5150:4b5a97744185 |
12-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implemented LODS. |
5125:62bd932bcb0b |
03-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Distinguish between the rep and repe prefixes. STOS and MOVS only accept the rep prefix which always loops until rcx becomes 0. The other string instructions accept repe (same encoding as rep) and repne which also check the condition code flags each iteration. |
5119:a4469f2919f3 |
03-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Put ldst into the microcode (the earlier changeset didn't really). Also clean things up as much as possible so that faulting won't break an instruction. More microops which verify addresses are needed. |
5112:fccb2f791196 |
03-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement MOVS |
5111:65afc8009c08 |
03-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement STOS. |
5081:2ccce8600a9d |
19-Sep-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Put in stubs for x87, 64 bit and 128 bit SIMD instruction microcode. |