History log of /gem5/src/arch/x86/isa/insts/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
14289:49005710b522 26-Aug-2019 Pouya Fotouhi <Pouya.Fotouhi@amd.com>

arch-x86: ignore non-temporal hint for movntps/movntpd SSE insts

Making the implementation of movntps/movntpd consistent with other
non-temporal instructions. We are ignoring the hint here, and
implementing those instructions as cacheable instructions.

This change adds a warning to let user know about this workaround.
Also, this change add the address check for second part of move.

Change-Id: I811652b24cf39ca2f5c5d4c9e9e417f69190b55c
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20408
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14287:1c9774d969ac 18-Sep-2019 Hoa Nguyen <hoanguyen@ucdavis.edu>

arch-x86: Change warn to warn_once for NT instructions

Change-Id: I50353716f2a913b9b106b140644d95991879f662
Signed-off-by: Hoa Nguyen <hoanguyen@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/21039
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Pouya Fotouhi <pfotouhi@ucdavis.edu>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

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>

14220:d8f83e601091 20-Aug-2019 Pouya Fotouhi <Pouya.Fotouhi@amd.com>

arch-x86: implement movntq/movntdq instructions

Non-temporal quadword/double-quadword move instructions.
This change ignores the non-temporal hint and instructions are
implemented to send cacheable request to memory.
This would have some "performance" impact (i.e. having some cache
pollution) to get better "correctness" in behavior.

Change-Id: I2052ac0970f61a54bafb7332762debcb7103202d
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20288
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

14033:a1cb162f68d9 31-May-2019 Brandon Potter <brandon.potter@amd.com>

x86: fix movsd bug on %xmm register

The movsd instruction should zero out half the register, but
does not do it. This changeset adds the necessary microop to
the instruction to cause correct behavior.

Change-Id: I5278da3634c78a97ed0586f687a36c6dc5a34c60
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19068
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Michael LeBeane <Michael.Lebeane@amd.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

12683:6e14a1dd346d 20-Apr-2017 Steve Reinhardt <steve.reinhardt@amd.com>

arch-x86: implement movntps/movntpd SSE insts

These are non-temporal packed SSE stores.

Change-Id: I526cd6551b38d6d35010bc6173f23d017106b466
Reviewed-on: https://gem5-review.googlesource.com/9861
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12587:e7ce22ce119f 12-Mar-2018 Gabe Black <gabeblack@google.com>

x86: Simplify the implementations of RDTSC and RDTSCP slightly.

These instructions originally read the TSC into t1 and then unpacked it
into eax and edx using a move, a right shift, and then another move.
We can combine the second shift and move. The shift will move the
upper 32 bits into the lower 32 bits, and clear the upper 32 bits to
zero. This has the same effect as moving the lower 32 bits post-shift
into another register, since the upper 32 bits will be cleared to zero
based on x86 partial register access semantics.

Change-Id: Iba85e501c7e84147ad0047f5c555e61bdf8f032b
Reviewed-on: https://gem5-review.googlesource.com/9044
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12586:ab24f7edc1e3 12-Mar-2018 Gabe Black <gabeblack@google.com>

x86: Implement the RDTSCP instruction.

This is very similar to RDTSC, except that it requires all younger
instructions to retire before it completes, and it writes the TSC_AUX
MSR into ECX. I've added an mfence as an iniitial microop to ensure
that memory accesses complete before RDTSCP runs, and added an rdval
microop at the end to read the TSC_AUX value into ECX.

Change-Id: I9766af562b7fd0c22e331b56e06e8818a9e268c9
Reviewed-on: https://gem5-review.googlesource.com/9043
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12585:d8dc3be32b91 12-Mar-2018 Gabe Black <gabeblack@google.com>

x86: Mark the RDTSC instruction as .serialize_before.

Change-Id: I20bf6a57ea4354aac9267845bb37b70b83d6fcde
Reviewed-on: https://gem5-review.googlesource.com/9042
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.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>

12368:511bd7aa22d1 05-Dec-2017 Gabe Black <gabeblack@google.com>

x86: Split apart x87's FSW and TOP, and add a missing break.

The FSW and TOP values are technically part of the same register, but
they have very different behaviors. One of them can be renamed and
float along without affecting global state, while the other requires
serialization. They just need to *look* like the same register when
read by the user.

Also, there was a missing break in setMiscRegNoEffect.

Change-Id: If58de0f566f65068208240f4001209fb9e1826d6
Reviewed-on: https://gem5-review.googlesource.com/6441
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'.


/gem5/configs/common/CacheConfig.py
/gem5/configs/common/Simulation.py
/gem5/configs/example/ruby_mem_test.py
/gem5/src/arch/alpha/isa/decoder.isa
/gem5/src/arch/alpha/linux/linux.hh
/gem5/src/arch/alpha/process.cc
/gem5/src/arch/alpha/tlb.cc
/gem5/src/arch/arm/SConscript
/gem5/src/arch/arm/interrupts.cc
/gem5/src/arch/arm/isa/bitfields.isa
/gem5/src/arch/arm/isa/formats/pred.isa
/gem5/src/arch/arm/linux/linux.hh
/gem5/src/arch/arm/stacktrace.cc
/gem5/src/arch/mips/isa/decoder.isa
/gem5/src/arch/mips/linux/linux.hh
/gem5/src/arch/mips/linux/process.cc
/gem5/src/arch/mips/pagetable.hh
/gem5/src/arch/power/SConscript
/gem5/src/arch/sparc/interrupts.cc
/gem5/src/arch/sparc/linux/linux.hh
/gem5/src/arch/sparc/pagetable.hh
/gem5/src/arch/x86/cpuid.cc
/gem5/src/arch/x86/faults.cc
/gem5/src/arch/x86/insts/micromediaop.hh
general_purpose/system_calls.py
romutil.py
simd64/integer/data_transfer/move.py
/gem5/src/arch/x86/isa/microops/base.isa
/gem5/src/arch/x86/isa/microops/mediaop.isa
/gem5/src/arch/x86/isa/microops/regop.isa
/gem5/src/arch/x86/process.cc
/gem5/src/arch/x86/process.hh
/gem5/src/base/cp_annotate.cc
/gem5/src/base/cp_annotate.hh
/gem5/src/base/cprintf.hh
/gem5/src/base/flags.hh
/gem5/src/base/inet.cc
/gem5/src/base/inet.hh
/gem5/src/base/loader/ecoff_object.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/statistics.cc
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/testers/directedtest/DirectedGenerator.cc
/gem5/src/cpu/testers/directedtest/DirectedGenerator.hh
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.cc
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.hh
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.cc
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.hh
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/timebuf.hh
/gem5/src/dev/mc146818.cc
/gem5/src/dev/net/i8254xGBe.cc
/gem5/src/dev/net/i8254xGBe.hh
/gem5/src/dev/net/i8254xGBe_defs.hh
/gem5/src/dev/x86/i8042.cc
/gem5/src/dev/x86/i8254.hh
/gem5/src/dev/x86/intdev.hh
/gem5/src/mem/mport.hh
/gem5/src/mem/ruby/network/Topology.cc
/gem5/src/mem/ruby/network/Topology.hh
/gem5/src/mem/ruby/network/fault_model/FaultModel.cc
/gem5/src/mem/ruby/network/fault_model/FaultModel.hh
/gem5/src/mem/ruby/network/fault_model/FaultModel.py
/gem5/src/mem/ruby/network/fault_model/SConscript
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/GarnetLink_d.py
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetLink.py
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh
/gem5/src/mem/ruby/network/simple/SimpleLink.cc
/gem5/src/mem/slicc/ast/StallAndWaitStatementAST.py
/gem5/src/mem/slicc/ast/TypeFieldEnumAST.py
/gem5/src/mem/slicc/ast/TypeFieldStateAST.py
/gem5/src/python/m5/util/__init__.py
/gem5/src/python/swig/event.i
/gem5/src/sim/Root.py
/gem5/src/sim/eventq.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/insttracer.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/unittest/cprintftest.cc
/gem5/system/alpha/console/console.c
/gem5/tests/configs/memtest-ruby.py
/gem5/util/checkpoint-tester.py
/gem5/util/compile
/gem5/util/m5/m5.c
/gem5/util/qdo
/gem5/util/statetrace/SConstruct
11160:10f28b61fcb1 06-Oct-2015 Steve Reinhardt <steve.reinhardt@amd.com>

x86: implement rcpps and rcpss SSE insts

These are packed single-precision approximate reciprocal operations,
vector and scalar versions, respectively.

This code was basically developed by copying the code for
sqrtps and sqrtss. The mrcp micro-op was simplified relative to
msqrt since there are no double-precision versions of this operation.

11159:9459593cb649 06-Oct-2015 Steve Reinhardt <steve.reinhardt@amd.com>

x86: implement fild, fucomi, and fucomip x87 insts

fild loads an integer value into the x87 top of stack register.
fucomi/fucomip compare two x87 register values (the latter
also doing a stack pop).
These instructions are used by some versions of GNU libstdc++.

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.

10899:b8b8ad2c72dd 04-Jul-2015 Nikos Nikoleris <nikos.nikoleris@gmail.com>

x86: Adjust the size of the values written to the x87 misc registers
All x87 misc registers are implemented in an array of 64 bit values
but in real hardware the size of some of these registers is smaller.
Previsouly all 64 bits where incorrectly set and then later read. To
ensure correctness we mask the value in setMiscRegNoEffect to write
only the valid bits.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10784:2f1a0f6d5d77 13-Apr-2015 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements x87 mult/div instructions

10644:24447dc69101 10-Jan-2015 Emilio Castillo <castilloe@unican.es>

x86 : fxsave and fxrestore missing template code

This patch corrects the FXSAVE and FXRSTOR Macroops. The actual code used for
saving/restore the FP registers is in the file but it was not used.

The FXSAVE and FXRSTOR instructions are used in the kernel for saving and
loading the state of the mmx,xmm and fpu registers.

This operation is triggered in FS by issuing a Device Not Available Fault. The
cr0 register has a TS flag that is set upon each context change. Every time a
task access any FP related register (SIMD as well) if the TS flag is set to
one, the device not available fault is issued. The kernel saves the current
state of the registers, and restore the previous state of the currently running
task.

Right now Gem5 lacks of this capability. the Device Not Available Fault is
never issued, leading to several problems when different threads share the same
CPU and SMT is not used. The PARSEC Ferret benchmark is an example of this
behavior.

In order to test this a hack in the atomic cpu code was done to detect if a
static instruction has any FP operands and the cr0 reg TS bit is set. This
check must be done in the ISA dependent code. But it seems to be tricky to
access the cr0 register while executing an instruction.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10632:b415e0dabe21 03-Jan-2015 Maxime Martinasso <maxime.cscs@gmail.com>

x86: implements the simd128 ADDSUBPD instruction

This patch implements the simd128 ADDSUBPD instruction for the x86 architecture.

Tested with a simple program in assembly language which executes the
instruction. Checked that different versions of the instruction are executed
by using the execution tracing option.

Committed by: Nilay Vaish <nilay@cs.wisc.edu

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".


/gem5/src/arch/alpha/ev5.cc
/gem5/src/arch/alpha/faults.hh
/gem5/src/arch/alpha/interrupts.hh
/gem5/src/arch/alpha/isa/decoder.isa
/gem5/src/arch/alpha/isa/fp.isa
/gem5/src/arch/alpha/isa/opcdec.isa
/gem5/src/arch/alpha/isa/unimp.isa
/gem5/src/arch/alpha/isa/unknown.isa
/gem5/src/arch/alpha/tlb.cc
/gem5/src/arch/alpha/tlb.hh
/gem5/src/arch/arm/insts/static_inst.hh
/gem5/src/arch/arm/interrupts.hh
/gem5/src/arch/arm/isa/formats/breakpoint.isa
/gem5/src/arch/arm/isa/formats/unimp.isa
/gem5/src/arch/arm/isa/insts/branch.isa
/gem5/src/arch/arm/isa/insts/branch64.isa
/gem5/src/arch/arm/isa/insts/data64.isa
/gem5/src/arch/arm/isa/insts/fp.isa
/gem5/src/arch/arm/isa/insts/macromem.isa
/gem5/src/arch/arm/isa/insts/misc.isa
/gem5/src/arch/arm/isa/insts/misc64.isa
/gem5/src/arch/arm/isa/insts/neon.isa
/gem5/src/arch/arm/isa/insts/neon64.isa
/gem5/src/arch/arm/isa/insts/neon64_mem.isa
/gem5/src/arch/arm/isa/insts/swap.isa
/gem5/src/arch/arm/isa/templates/mem64.isa
/gem5/src/arch/arm/isa/templates/neon.isa
/gem5/src/arch/arm/isa/templates/vfp.isa
/gem5/src/arch/arm/table_walker.cc
/gem5/src/arch/arm/table_walker.hh
/gem5/src/arch/arm/tlb.cc
/gem5/src/arch/arm/tlb.hh
/gem5/src/arch/arm/utility.cc
/gem5/src/arch/generic/memhelpers.hh
/gem5/src/arch/mips/interrupts.cc
/gem5/src/arch/mips/isa.hh
/gem5/src/arch/mips/isa/decoder.isa
/gem5/src/arch/mips/isa/formats/control.isa
/gem5/src/arch/mips/isa/formats/dsp.isa
/gem5/src/arch/mips/isa/formats/fp.isa
/gem5/src/arch/mips/isa/formats/int.isa
/gem5/src/arch/mips/isa/formats/mt.isa
/gem5/src/arch/mips/isa/formats/trap.isa
/gem5/src/arch/mips/isa/formats/unimp.isa
/gem5/src/arch/mips/isa/formats/unknown.isa
/gem5/src/arch/mips/mt.hh
/gem5/src/arch/mips/tlb.hh
/gem5/src/arch/power/isa/formats/unimp.isa
/gem5/src/arch/power/isa/formats/unknown.isa
/gem5/src/arch/power/tlb.cc
/gem5/src/arch/power/tlb.hh
/gem5/src/arch/sparc/interrupts.hh
/gem5/src/arch/sparc/isa/base.isa
/gem5/src/arch/sparc/isa/decoder.isa
/gem5/src/arch/sparc/isa/formats/mem/util.isa
/gem5/src/arch/sparc/isa/formats/priv.isa
/gem5/src/arch/sparc/isa/formats/trap.isa
/gem5/src/arch/sparc/isa/formats/unknown.isa
/gem5/src/arch/sparc/tlb.cc
/gem5/src/arch/sparc/tlb.hh
/gem5/src/arch/sparc/utility.cc
/gem5/src/arch/sparc/utility.hh
/gem5/src/arch/x86/interrupts.cc
/gem5/src/arch/x86/isa/formats/string.isa
/gem5/src/arch/x86/isa/formats/unknown.isa
general_purpose/compare_and_test/bounds.py
general_purpose/control_transfer/interrupts_and_exceptions.py
general_purpose/control_transfer/jump.py
system/undefined_operation.py
x87/arithmetic/addition.py
x87/arithmetic/subtraction.py
x87/data_transfer_and_conversion/exchange.py
/gem5/src/arch/x86/isa/microops/debug.isa
/gem5/src/arch/x86/isa/microops/regop.isa
/gem5/src/arch/x86/memhelpers.hh
/gem5/src/arch/x86/pagetable_walker.cc
/gem5/src/arch/x86/tlb.cc
/gem5/src/arch/x86/tlb.hh
/gem5/src/arch/x86/vtophys.cc
/gem5/src/base/types.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.hh
/gem5/src/cpu/o3/dyn_inst_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/sim/fault_fwd.hh
/gem5/src/sim/faults.hh
/gem5/src/sim/tlb.hh
10045:8bc3887d5e72 27-Jan-2014 Nilay Vaish <nilay@cs.wisc.edu>

x86: use lfpimm instead of limm for fptan

10044:42e058cae3d0 27-Jan-2014 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements x87 add/sub instructions

10043:301f2c0b3423 27-Jan-2014 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements fxch instruction.

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'.

9896:e31776cf4743 29-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support for FXSAVE, FXSAVE64, FXRSTOR, and FXRSTOR64

9895:a1f661af9dc9 29-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support for FLDENV & FNSTENV

9894:c0a3920859bd 29-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support for loading 32-bit and 80-bit floats in the x87

The x87 FPU supports three floating point formats: 32-bit, 64-bit, and
80-bit floats. The current gem5 implementation supports 32-bit and
64-bit floats, but only works correctly for 64-bit floats. This
changeset fixes the 32-bit float handling by correctly loading and
rounding (using truncation) 32-bit floats instead of simply truncating
the bit pattern.

80-bit floats are loaded by first loading the 80-bits of the float to
two temporary integer registers. A micro-op (cvtint_fp80) then
converts the contents of the two integer registers to the internal FP
representation (double). Similarly, when storing an 80-bit float,
there are two conversion routines (ctvfp80h_int and cvtfp80l_int) that
convert an internal FP register to 80-bit and stores the upper 64-bits
or lower 32-bits to an integer register, which is the written to
memory using normal integer stores.

9893:5924b77fb8fc 30-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Fix re-entrancy problems in x87 store instructions

X87 store instructions typically loads and pops the top value of the
stack and stores it in memory. The current implementation pops the
stack at the same time as the floating point value is loaded to a
temporary register. This will corrupt the state of the x87 stack if
the store fails. This changeset introduces a pop87 micro-instruction
that pops the stack and uses this instruction in the affected
macro-instructions to pop the stack after storing the value to memory.

9764:7e744dcb1904 18-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Fix loading of floating point constants

This changeset actually fixes two issues:

* The lfpimm instruction didn't work correctly when applied to a
floating point constant (it did work for integers containing the
bit string representation of a constant) since it used
reinterpret_cast to convert a double to a uint64_t. This caused a
compilation error, at least, in gcc 4.6.3.

* The instructions loading floating point constants in the x87
processor didn't work correctly since they just stored a truncated
integer instead of a double in the floating point register. This
changeset fixes the old microcode by using lfpimm instruction
instead of the limm instructions.

9761:f2102d45a753 18-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Make fprem like the fprem on a real x87

The current implementation of fprem simply does an fmod and doesn't
simulate any of the iterative behavior in a real fprem. This isn't
normally a problem, however, it can lead to problems when switching
between CPU models. If switching from a real CPU in the middle of an
fprem loop to a simulated CPU, the output of the fprem loop becomes
correupted. This changeset changes the fprem implementation to work
like the one on real hardware.

9758:353587055aff 18-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Fix the flag handling code in FABS and FCHS

This changeset fixes two problems in the FABS and FCHS
implementation. First, the ISA parser expects the assignment in
flag_code to be a pure assignment and not an and-assignment, which
leads to the isa_parser omitting the misc reg update. Second, the FCHS
and FABS macro-ops don't set the SetStatus flag, which means that the
default micro-op version, which doesn't update FSW, is executed.

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>

9582:0632d2d1575c 11-Mar-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: implement some of the x87 instructions
This patch implements ftan, fprem, fyl2x, fld* floating-point instructions.

9472:8a2175fa7fa0 15-Jan-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements fsin, fcos instructions

9471:4193ed60eed7 15-Jan-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements emms instruction

9470:68f7e0bcf4aa 15-Jan-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: implement fabs, fchs instructions

9372:7ba317c33683 30-Dec-2012 Nilay Vaish <nilay@cs.wisc.edu>

x86: implement x87 fp instruction fnstsw
This patch implements the fnstsw instruction. The code was originally written
by Vince Weaver. Gabe had made some comments about the code, but those were
never addressed. This patch addresses those comments.

9371:7c1484cc9b10 30-Dec-2012 Nilay Vaish <nilay@cs.wisc.edu>

x86: implement x87 fp instruction fsincos
This patch implements the fsincos instruction. The code was originally written
by Vince Weaver. Gabe had made some comments about the code, but those were
never addressed. This patch addresses those comments.

9009:d45a02bd5391 19-May-2012 Marc Orr <marc.orr@gmail.com>

x86 ISA: Implement the sse3 haddps instruction.

Shuffle the 32 bit values into position, and then add in parallel.

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.

8290:3c628a51f6e1 06-May-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the Lldt instructions so they load the ldtr and not the tr.

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


/gem5/src/arch/x86/SConscript
/gem5/src/arch/x86/X86System.py
/gem5/src/arch/x86/X86TLB.py
/gem5/src/arch/x86/arguments.hh
/gem5/src/arch/x86/bios/ACPI.py
/gem5/src/arch/x86/bios/E820.py
/gem5/src/arch/x86/bios/IntelMP.py
/gem5/src/arch/x86/bios/SConscript
/gem5/src/arch/x86/bios/SMBios.py
/gem5/src/arch/x86/bios/acpi.cc
/gem5/src/arch/x86/bios/acpi.hh
/gem5/src/arch/x86/bios/e820.cc
/gem5/src/arch/x86/bios/e820.hh
/gem5/src/arch/x86/bios/intelmp.cc
/gem5/src/arch/x86/bios/intelmp.hh
/gem5/src/arch/x86/bios/smbios.cc
/gem5/src/arch/x86/bios/smbios.hh
/gem5/src/arch/x86/emulenv.cc
/gem5/src/arch/x86/emulenv.hh
/gem5/src/arch/x86/faults.cc
/gem5/src/arch/x86/faults.hh
/gem5/src/arch/x86/floatregs.hh
/gem5/src/arch/x86/insts/macroop.hh
/gem5/src/arch/x86/insts/microfpop.cc
/gem5/src/arch/x86/insts/microfpop.hh
/gem5/src/arch/x86/insts/microldstop.cc
/gem5/src/arch/x86/insts/microldstop.hh
/gem5/src/arch/x86/insts/microop.cc
/gem5/src/arch/x86/insts/microop.hh
/gem5/src/arch/x86/insts/microregop.cc
/gem5/src/arch/x86/insts/microregop.hh
/gem5/src/arch/x86/insts/static_inst.cc
/gem5/src/arch/x86/insts/static_inst.hh
/gem5/src/arch/x86/interrupts.cc
/gem5/src/arch/x86/interrupts.hh
/gem5/src/arch/x86/intregs.hh
/gem5/src/arch/x86/isa/bitfields.isa
/gem5/src/arch/x86/isa/decoder/decoder.isa
/gem5/src/arch/x86/isa/decoder/one_byte_opcodes.isa
/gem5/src/arch/x86/isa/decoder/two_byte_opcodes.isa
/gem5/src/arch/x86/isa/decoder/x87.isa
/gem5/src/arch/x86/isa/formats/basic.isa
/gem5/src/arch/x86/isa/formats/cpuid.isa
/gem5/src/arch/x86/isa/formats/error.isa
/gem5/src/arch/x86/isa/formats/formats.isa
/gem5/src/arch/x86/isa/formats/multi.isa
/gem5/src/arch/x86/isa/formats/string.isa
/gem5/src/arch/x86/isa/formats/syscall.isa
/gem5/src/arch/x86/isa/formats/unimp.isa
/gem5/src/arch/x86/isa/formats/unknown.isa
/gem5/src/arch/x86/isa/includes.isa
__init__.py
general_purpose/__init__.py
general_purpose/arithmetic/__init__.py
general_purpose/arithmetic/add_and_subtract.py
general_purpose/arithmetic/increment_and_decrement.py
general_purpose/arithmetic/multiply_and_divide.py
general_purpose/cache_and_memory_management.py
general_purpose/compare_and_test/__init__.py
general_purpose/compare_and_test/bit_scan.py
general_purpose/compare_and_test/bit_test.py
general_purpose/compare_and_test/bounds.py
general_purpose/compare_and_test/compare.py
general_purpose/compare_and_test/set_byte_on_condition.py
general_purpose/compare_and_test/test.py
general_purpose/control_transfer/__init__.py
general_purpose/control_transfer/call.py
general_purpose/control_transfer/conditional_jump.py
general_purpose/control_transfer/interrupts_and_exceptions.py
general_purpose/control_transfer/jump.py
general_purpose/control_transfer/loop.py
general_purpose/control_transfer/xreturn.py
general_purpose/data_conversion/__init__.py
general_purpose/data_conversion/ascii_adjust.py
general_purpose/data_conversion/bcd_adjust.py
general_purpose/data_conversion/endian_conversion.py
general_purpose/data_conversion/extract_sign_mask.py
general_purpose/data_conversion/sign_extension.py
general_purpose/data_conversion/translate.py
general_purpose/data_transfer/__init__.py
general_purpose/data_transfer/conditional_move.py
general_purpose/data_transfer/move.py
general_purpose/data_transfer/stack_operations.py
general_purpose/data_transfer/xchg.py
general_purpose/flags/__init__.py
general_purpose/flags/load_and_store.py
general_purpose/flags/push_and_pop.py
general_purpose/flags/set_and_clear.py
general_purpose/input_output/__init__.py
general_purpose/input_output/general_io.py
general_purpose/input_output/string_io.py
general_purpose/load_effective_address.py
general_purpose/load_segment_registers.py
general_purpose/logical.py
general_purpose/no_operation.py
general_purpose/rotate_and_shift/__init__.py
general_purpose/rotate_and_shift/rotate.py
general_purpose/rotate_and_shift/shift.py
general_purpose/semaphores.py
general_purpose/string/__init__.py
general_purpose/string/compare_strings.py
general_purpose/string/load_string.py
general_purpose/string/move_string.py
general_purpose/string/scan_string.py
general_purpose/string/store_string.py
general_purpose/system_calls.py
simd128/__init__.py
simd128/floating_point/__init__.py
simd128/floating_point/arithmetic/__init__.py
simd128/floating_point/arithmetic/addition.py
simd128/floating_point/arithmetic/division.py
simd128/floating_point/arithmetic/horizontal_addition.py
simd128/floating_point/arithmetic/horizontal_subtraction.py
simd128/floating_point/arithmetic/multiplication.py
simd128/floating_point/arithmetic/reciprocal_estimation.py
simd128/floating_point/arithmetic/reciprocal_square_root.py
simd128/floating_point/arithmetic/simultaneous_addition_and_subtraction.py
simd128/floating_point/arithmetic/square_root.py
simd128/floating_point/arithmetic/subtraction.py
simd128/floating_point/compare/__init__.py
simd128/floating_point/compare/compare_and_write_mask.py
simd128/floating_point/compare/compare_and_write_minimum_or_maximum.py
simd128/floating_point/compare/compare_and_write_rflags.py
simd128/floating_point/data_conversion/__init__.py
simd128/floating_point/data_conversion/convert_floating_point_to_floating_point.py
simd128/floating_point/data_conversion/convert_floating_point_to_gpr_integer.py
simd128/floating_point/data_conversion/convert_floating_point_to_mmx_integer.py
simd128/floating_point/data_conversion/convert_floating_point_to_xmm_integer.py
simd128/floating_point/data_reordering/__init__.py
simd128/floating_point/data_reordering/shuffle.py
simd128/floating_point/data_reordering/unpack_and_interleave.py
simd128/floating_point/data_transfer/__init__.py
simd128/floating_point/data_transfer/move.py
simd128/floating_point/data_transfer/move_mask.py
simd128/floating_point/data_transfer/move_non_temporal.py
simd128/floating_point/data_transfer/move_with_duplication.py
simd128/floating_point/logical/__init__.py
simd128/floating_point/logical/andp.py
simd128/floating_point/logical/exclusive_or.py
simd128/floating_point/logical/orp.py
simd128/integer/__init__.py
simd128/integer/arithmetic/__init__.py
simd128/integer/arithmetic/addition.py
simd128/integer/arithmetic/average.py
simd128/integer/arithmetic/multiplication.py
simd128/integer/arithmetic/multiply_add.py
simd128/integer/arithmetic/subtraction.py
simd128/integer/arithmetic/sum_of_absolute_differences.py
simd128/integer/compare/__init__.py
simd128/integer/compare/compare_and_write_mask.py
simd128/integer/compare/compare_and_write_minimum_or_maximum.py
simd128/integer/data_conversion/__init__.py
simd128/integer/data_conversion/convert_gpr_integer_to_floating_point.py
simd128/integer/data_conversion/convert_integer_to_floating_point.py
simd128/integer/data_conversion/convert_mmx_integer_to_floating_point.py
simd128/integer/data_reordering/__init__.py
simd128/integer/data_reordering/extract_and_insert.py
simd128/integer/data_reordering/pack_with_saturation.py
simd128/integer/data_reordering/shuffle.py
simd128/integer/data_reordering/unpack_and_interleave.py
simd128/integer/data_transfer/__init__.py
simd128/integer/data_transfer/move.py
simd128/integer/data_transfer/move_mask.py
simd128/integer/data_transfer/move_non_temporal.py
simd128/integer/logical/__init__.py
simd128/integer/logical/exclusive_or.py
simd128/integer/logical/pand.py
simd128/integer/logical/por.py
simd128/integer/save_and_restore_state/__init__.py
simd128/integer/save_and_restore_state/save_and_restore_control_and_status.py
simd128/integer/save_and_restore_state/save_and_restore_state.py
simd128/integer/shift/__init__.py
simd128/integer/shift/left_logical_shift.py
simd128/integer/shift/right_arithmetic_shift.py
simd128/integer/shift/right_logical_shift.py
simd64/__init__.py
simd64/floating_point/__init__.py
simd64/floating_point/arithmetic/__init__.py
simd64/floating_point/arithmetic/accumulation.py
simd64/floating_point/arithmetic/addition.py
simd64/floating_point/arithmetic/multiplication.py
simd64/floating_point/arithmetic/reciprocal_estimation.py
simd64/floating_point/arithmetic/reciprocal_square_root.py
simd64/floating_point/arithmetic/subtraction.py
simd64/floating_point/compare/__init__.py
simd64/floating_point/compare/compare_and_write_mask.py
simd64/floating_point/compare/compare_and_write_minimum_or_maximum.py
simd64/floating_point/data_conversion.py
simd64/integer/__init__.py
simd64/integer/arithmetic/__init__.py
simd64/integer/arithmetic/addition.py
simd64/integer/arithmetic/average.py
simd64/integer/arithmetic/multiplication.py
simd64/integer/arithmetic/multiply_add.py
simd64/integer/arithmetic/subtraction.py
simd64/integer/arithmetic/sum_of_absolute_differences.py
simd64/integer/compare/__init__.py
simd64/integer/compare/compare_and_write_mask.py
simd64/integer/compare/compare_and_write_minimum_or_maximum.py
simd64/integer/data_conversion.py
simd64/integer/data_reordering/__init__.py
simd64/integer/data_reordering/extract_and_insert.py
simd64/integer/data_reordering/pack_with_saturation.py
simd64/integer/data_reordering/shuffle_and_swap.py
simd64/integer/data_reordering/unpack_and_interleave.py
simd64/integer/data_transfer/__init__.py
simd64/integer/data_transfer/move.py
simd64/integer/data_transfer/move_mask.py
simd64/integer/data_transfer/move_non_temporal.py
simd64/integer/exit_media_state.py
simd64/integer/logical/__init__.py
simd64/integer/logical/exclusive_or.py
simd64/integer/logical/pand.py
simd64/integer/logical/por.py
simd64/integer/save_and_restore_state.py
simd64/integer/shift/__init__.py
simd64/integer/shift/left_logical_shift.py
simd64/integer/shift/right_arithmetic_shift.py
simd64/integer/shift/right_logical_shift.py
system/__init__.py
system/halt.py
system/invlpg.py
system/msrs.py
system/segmentation.py
system/undefined_operation.py
x87/__init__.py
x87/arithmetic/__init__.py
x87/arithmetic/addition.py
x87/arithmetic/change_sign.py
x87/arithmetic/division.py
x87/arithmetic/multiplication.py
x87/arithmetic/partial_remainder.py
x87/arithmetic/round.py
x87/arithmetic/square_root.py
x87/arithmetic/subtraction.py
x87/compare_and_test/__init__.py
x87/compare_and_test/classify.py
x87/compare_and_test/floating_point_ordered_compare.py
x87/compare_and_test/floating_point_unordered_compare.py
x87/compare_and_test/integer_compare.py
x87/compare_and_test/test.py
x87/control/__init__.py
x87/control/clear_exceptions.py
x87/control/initialize.py
x87/control/save_and_restore_x87_control_word.py
x87/control/save_and_restore_x87_environment.py
x87/control/save_x87_status_word.py
x87/control/wait_for_exceptions.py
x87/data_transfer_and_conversion/__init__.py
x87/data_transfer_and_conversion/conditional_move.py
x87/data_transfer_and_conversion/convert_and_load_or_store_bcd.py
x87/data_transfer_and_conversion/convert_and_load_or_store_integer.py
x87/data_transfer_and_conversion/exchange.py
x87/data_transfer_and_conversion/extract.py
x87/data_transfer_and_conversion/load_or_store_floating_point.py
x87/load_constants/__init__.py
x87/load_constants/load_0_1_or_pi.py
x87/load_constants/load_logarithm.py
x87/no_operation.py
x87/stack_management/__init__.py
x87/stack_management/clear_state.py
x87/stack_management/stack_control.py
x87/transcendental_functions/__init__.py
x87/transcendental_functions/logarithmic_functions.py
x87/transcendental_functions/trigonometric_functions.py
/gem5/src/arch/x86/isa/macroop.isa
/gem5/src/arch/x86/isa/main.isa
/gem5/src/arch/x86/isa/microasm.isa
/gem5/src/arch/x86/isa/microops/base.isa
/gem5/src/arch/x86/isa/microops/debug.isa
/gem5/src/arch/x86/isa/microops/fpop.isa
/gem5/src/arch/x86/isa/microops/ldstop.isa
/gem5/src/arch/x86/isa/microops/limmop.isa
/gem5/src/arch/x86/isa/microops/microops.isa
/gem5/src/arch/x86/isa/microops/regop.isa
/gem5/src/arch/x86/isa/microops/seqop.isa
/gem5/src/arch/x86/isa/microops/specop.isa
/gem5/src/arch/x86/isa/operands.isa
/gem5/src/arch/x86/isa/outputblock.isa
/gem5/src/arch/x86/isa/specialize.isa
/gem5/src/arch/x86/isa_traits.hh
/gem5/src/arch/x86/kernel_stats.hh
/gem5/src/arch/x86/linux/linux.cc
/gem5/src/arch/x86/linux/linux.hh
/gem5/src/arch/x86/linux/process.cc
/gem5/src/arch/x86/linux/process.hh
/gem5/src/arch/x86/linux/syscalls.cc
/gem5/src/arch/x86/linux/system.cc
/gem5/src/arch/x86/linux/system.hh
/gem5/src/arch/x86/miscregs.hh
/gem5/src/arch/x86/mmaped_ipr.hh
/gem5/src/arch/x86/pagetable.cc
/gem5/src/arch/x86/pagetable.hh
/gem5/src/arch/x86/pagetable_walker.cc
/gem5/src/arch/x86/pagetable_walker.hh
/gem5/src/arch/x86/predecoder.cc
/gem5/src/arch/x86/predecoder.hh
/gem5/src/arch/x86/predecoder_tables.cc
/gem5/src/arch/x86/process.cc
/gem5/src/arch/x86/process.hh
/gem5/src/arch/x86/registers.hh
/gem5/src/arch/x86/remote_gdb.cc
/gem5/src/arch/x86/remote_gdb.hh
/gem5/src/arch/x86/segmentregs.hh
/gem5/src/arch/x86/system.cc
/gem5/src/arch/x86/system.hh
/gem5/src/arch/x86/tlb.cc
/gem5/src/arch/x86/tlb.hh
/gem5/src/arch/x86/types.hh
/gem5/src/arch/x86/utility.cc
/gem5/src/arch/x86/utility.hh
/gem5/src/arch/x86/vtophys.cc
/gem5/src/arch/x86/vtophys.hh
/gem5/src/arch/x86/x86_traits.hh
6801:353726c415f4 19-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a common named flag for signed media operations.

6800:335f8b406bb9 19-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Create a common flag with a name to indicate high multiplies.

6799:36131e4dfb6e 19-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Create a common flag with a name to indicate scalar media instructions.

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.

6715:fb4a3a61bc74 04-Nov-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Fix problem with movhps instruction

This problem is like the one fixed with movhpd a few weeks ago.
A +8 displacement is used to access memory when there should
be none.

This fix is needed for the perlbmk spec2k benchmark to run.

6707:0e5037cecaf7 30-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Add support for x86 psrldq and pslldq instructions

These are complicated instructions and the micro-code might be suboptimal.

This has been tested with some small sample programs (attached)

The psrldq instruction is needed by various spec2k programs.

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.

6705:3c810b64ee7d 30-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Implement the X86 sse2 haddpd instruction

This patch implements the haddpd instruction.

It fixes the problem in the previous version (pointed out by Gabe Black)
where an incorrect result would happen if you issue the instruction
with the same argument twice, i.e. "haddpd %xmm0,%xmm0"

This instruction is used by many spec2k benchmarks.

6698:21047815f78e 28-Oct-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Replace "DISPLACEMENT" with disp in movhpd.

6697:4863725cb4d9 27-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

Fix problem with the x86 sse movhpd instruction.

The movhpd instruction was writing to the wrong memory offset.

6696:e533bec78924 21-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

Implement X86 sse2 movdqu and movdqa instructions

The movdqa instruction should enforce 16-byte alignment.
This implementation does not do that.

These instructions are needed for most of x86_64 spec2k to run.

6645:c248b0348d85 16-Sep-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix checking the NT bit during an IRET.

6644:57fba079b7ff 16-Sep-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix setting the busy bit in the task descriptor in LTR.

6619:de112a8ac3d8 20-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the decoding for and fill out FST and FSTP.

6610:dbfe22c711d5 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MOVNTI.

6608:6d1f74b21533 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MOVQ2DQ.

6607:dba8e329e783 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MOVDQ2Q.

6606:03fd282998d0 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media instructions that convert fp values to ints.

6604:b750348f6da3 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that compare fp values and write a mask as a result.

6602:95b882ce7b10 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that compare fp values and write to rflags.

6600:bb997cd711af 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MOVSS.

6599:a578850e7524 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement LDMXCSR.

6598:82d1d4d217e4 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement STMXCSR.

6597:4903cea6a8c2 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the shuffle media instructions.

6595:2aec993cdd8f 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the mask move instructions.

6593:f27fd3c3a153 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that move sign bits.

6591:3d1ea9362fe5 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the insert/extract instructions.

6588:f449753172ee 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media average instructions.

6586:e8af0cf94c37 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the multiply and add instructions.

6584:5355f44912f6 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media shifts that operate on 64 bits or less at a time.

6582:7e1af04f4ead 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the sum of absolute differences instructions.

6580:a1c40860fe09 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media integer subtract instructions.

6578:825b77196521 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the integer media multiply instructions.

6575:e5a3ae40c4d0 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the integer media max instructions.

6573:6e14c5d36a1a 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the integer media min instructions.

6571:91d9599956f3 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media integer addition instructions.

6569:e8cb266c9451 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that convert between forms of floating point.

6567:819107c2c851 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that compare fp values and write masks as the result.

6565:b7f5a02ea9b7 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the MOVDDUP instruction.

6564:9ed64f6888cf 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement many of the media mov instructions.

6563:2c5b80c75da7 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media instructions that convert integer values to floating point.

6561:3f716cda05c9 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the floating point media instructions.

6559:e4f60f716103 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the floating point media multiply instructions.

6557:f677e05d723d 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the floating point media subtract instructions.

6555:dae81a15cfcc 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the floating point media add instructions.

6553:897523ead7ce 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media sqrt instructions.

6551:52b4167056ed 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media floating point max instructions.

6549:d6ae13f56801 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media floating point min instructions.

6547:3f6c31c3d59e 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the pack instructions.

6545:9c68aea7b1e6 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Rename sel to ext for media microops.

6544:406ad51ece90 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Move the MMX version of MOVD into the simd64 directory.

6543:a9a5dd560925 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the remaining unpack instructions.

6542:059e35b593a8 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PANDN, ANDNPS, and ANDNPD.

6540:17414b661543 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PAND, ANDPS, and ANDPD.

6538:6cf5a0235ae8 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement POR, ORPD and ORPS.

6536:dc54f4fd6116 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PXOR.

6535:b595412884f9 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: (Re)implement XORPS and XORPD.

6533:2977e2e2dc27 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKLQDQ.

6532:f7c42d003529 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKHQDQ.

6531:6e2f4aa11482 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKHDQ.

6530:cdb6bde20266 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKHWD.

6529:cde96afcb3e3 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKHBW.

6528:5c3a713ec1bb 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKLDQ.

6527:4af40cccf527 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKLWD.

6526:2f72755b4af7 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the versions of PUNPCKLBW that use XMM registers.

6525:b252af5cda46 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the MOVQ instruction.

6523:da0f91a2d60b 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the versions of MOVD that have an MMX source.

6522:c256e28ad056 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the versions of PUNPCKLBW that use MMX registers.

6520:962f58808d53 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the versions of MOVD that have an MMX destination.

6519:36369ba5fad6 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Ignore the size part of XMM/MMX operands. The instructions know what they want.

6518:1ad4a7774b3c 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Use suffixes to differentiate XMM/MMX/GPR operands.

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.

6345:f9ae7c3a036c 16-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Take limitted advantage of the compilers type checking for microop operands.

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.

6057:882f1b921de7 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the interrupt entering microcode record the value to use, not actually use it.

6055:40bdbc32e3db 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the save machine status word instruction (SMSW).

6054:0aa0a6189767 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the load machine status word instruction (LMSW).

6051:47a52383002b 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the mov to segment selector in real mode instruction microcode.

6048:65a321a3a691 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the INIT IPI.

6020:0647c8b31a99 06-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

Merge ARM into the head. ARM will compile but may not actually work.


/gem5/ext/dnet/dnet/addr.h
/gem5/ext/dnet/dnet/arp.h
/gem5/ext/dnet/dnet/blob.h
/gem5/ext/dnet/dnet/eth.h
/gem5/ext/dnet/dnet/fw.h
/gem5/ext/dnet/dnet/icmp.h
/gem5/ext/dnet/dnet/intf.h
/gem5/ext/dnet/dnet/ip.h
/gem5/ext/dnet/dnet/ip6.h
/gem5/ext/dnet/dnet/os.h
/gem5/ext/dnet/dnet/rand.h
/gem5/ext/dnet/dnet/route.h
/gem5/ext/dnet/dnet/tcp.h
/gem5/ext/dnet/dnet/udp.h
/gem5/src/arch/alpha/syscallreturn.hh
/gem5/src/arch/arm/ArmTLB.py
/gem5/src/arch/arm/isa_traits.hh
/gem5/src/arch/arm/linux/process.cc
/gem5/src/arch/arm/process.cc
/gem5/src/arch/arm/process.hh
/gem5/src/arch/arm/regfile/regfile.cc
/gem5/src/arch/arm/regfile/regfile.hh
/gem5/src/arch/arm/syscallreturn.hh
/gem5/src/arch/arm/tlb.cc
/gem5/src/arch/arm/tlb.hh
/gem5/src/arch/mips/syscallreturn.hh
/gem5/src/arch/sparc/syscallreturn.hh
general_purpose/processor_information.py
/gem5/src/arch/x86/smbios.cc
/gem5/src/arch/x86/smbios.hh
/gem5/src/arch/x86/syscallreturn.hh
/gem5/src/base/annotate.cc
/gem5/src/base/annotate.hh
/gem5/src/base/stats/statdb.cc
/gem5/src/base/stats/statdb.hh
/gem5/src/cpu/o3/alpha/cpu.cc
/gem5/src/cpu/o3/alpha/cpu.hh
/gem5/src/cpu/o3/alpha/cpu_builder.cc
/gem5/src/cpu/o3/alpha/cpu_impl.hh
/gem5/src/cpu/o3/alpha/dyn_inst.cc
/gem5/src/cpu/o3/alpha/dyn_inst.hh
/gem5/src/cpu/o3/alpha/dyn_inst_impl.hh
/gem5/src/cpu/o3/alpha/impl.hh
/gem5/src/cpu/o3/alpha/params.hh
/gem5/src/cpu/o3/alpha/thread_context.cc
/gem5/src/cpu/o3/alpha/thread_context.hh
/gem5/src/cpu/o3/mips/cpu.cc
/gem5/src/cpu/o3/mips/cpu.hh
/gem5/src/cpu/o3/mips/cpu_builder.cc
/gem5/src/cpu/o3/mips/cpu_impl.hh
/gem5/src/cpu/o3/mips/dyn_inst.cc
/gem5/src/cpu/o3/mips/dyn_inst.hh
/gem5/src/cpu/o3/mips/dyn_inst_impl.hh
/gem5/src/cpu/o3/mips/impl.hh
/gem5/src/cpu/o3/mips/params.hh
/gem5/src/cpu/o3/mips/thread_context.cc
/gem5/src/cpu/o3/mips/thread_context.hh
/gem5/src/cpu/o3/params.hh
/gem5/src/cpu/o3/sparc/cpu.cc
/gem5/src/cpu/o3/sparc/cpu.hh
/gem5/src/cpu/o3/sparc/cpu_builder.cc
/gem5/src/cpu/o3/sparc/cpu_impl.hh
/gem5/src/cpu/o3/sparc/dyn_inst.cc
/gem5/src/cpu/o3/sparc/dyn_inst.hh
/gem5/src/cpu/o3/sparc/dyn_inst_impl.hh
/gem5/src/cpu/o3/sparc/impl.hh
/gem5/src/cpu/o3/sparc/params.hh
/gem5/src/cpu/o3/sparc/thread_context.cc
/gem5/src/cpu/o3/sparc/thread_context.hh
/gem5/src/dev/SimConsole.py
/gem5/src/dev/alpha/AlphaConsole.py
/gem5/src/dev/alpha/console.cc
/gem5/src/dev/alpha/console.hh
/gem5/src/dev/mips/MipsConsole.py
/gem5/src/dev/mips/console.cc
/gem5/src/dev/mips/console.hh
/gem5/src/dev/pitreg.h
/gem5/src/dev/simconsole.cc
/gem5/src/dev/simconsole.hh
/gem5/src/dev/x86/Opteron.py
/gem5/src/dev/x86/opteron.cc
/gem5/src/dev/x86/opteron.hh
/gem5/src/mem/cache/tags/split.cc
/gem5/src/mem/cache/tags/split.hh
/gem5/src/mem/cache/tags/split_blk.hh
/gem5/src/mem/cache/tags/split_lifo.cc
/gem5/src/mem/cache/tags/split_lifo.hh
/gem5/src/mem/cache/tags/split_lru.cc
/gem5/src/mem/cache/tags/split_lru.hh
/gem5/src/mem/config/prefetch.hh
/gem5/src/python/generate.py
/gem5/src/python/m5/attrdict.py
/gem5/src/python/m5/multidict.py
/gem5/src/python/m5/util.py
/gem5/src/python/swig/init.hh
/gem5/src/unittest/Makefile
/gem5/src/unittest/initest.ini
/gem5/src/unittest/lru_test.cc
/gem5/src/unittest/offtest.cc
/gem5/src/unittest/paramtest.cc
/gem5/src/unittest/rangemaptest2.cc
/gem5/src/unittest/sized_test.cc
/gem5/src/unittest/tracetest.cc
/gem5/tests/long/00.gzip/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/00.gzip/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/stdout
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/30.eon/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/30.eon/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/30.eon/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/50.vortex/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/50.vortex/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/50.vortex/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/60.bzip2/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/60.bzip2/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/60.bzip2/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/70.twolf/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/70.twolf/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/console.system.t1000.hconsole
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/console.system.t1000.pconsole
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/m5stats.txt
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/stderr
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/alpha/linux/o3-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/linux/o3-timing/stderr
/gem5/tests/quick/00.hello/ref/alpha/linux/o3-timing/stdout
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-timing/stderr
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/quick/00.hello/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/mips/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/mips/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/mips/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/mips/linux/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/mips/linux/simple-timing/stderr
/gem5/tests/quick/00.hello/ref/mips/linux/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/stderr
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/stdout
/gem5/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/m5stats.txt
/gem5/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/stderr
/gem5/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/stderr
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/stderr
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/console.system.sim_console
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stderr
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/console.system.sim_console
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stderr
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/console.system.sim_console
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stderr
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/console.system.sim_console
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stderr
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stdout
/gem5/tests/quick/20.eio-short/ref/alpha/eio/detailed/m5stats.txt
/gem5/tests/quick/20.eio-short/ref/alpha/eio/detailed/stderr
/gem5/tests/quick/20.eio-short/ref/alpha/eio/detailed/stdout
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-atomic/m5stats.txt
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-atomic/stderr
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-atomic/stdout
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-timing/m5stats.txt
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-timing/stderr
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-timing/stdout
/gem5/tests/quick/50.memtest/ref/alpha/linux/memtest/m5stats.txt
/gem5/tests/quick/50.memtest/ref/alpha/linux/memtest/stderr
/gem5/tests/quick/50.memtest/ref/alpha/linux/memtest/stdout
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/console.drivesys.sim_console
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/console.testsys.sim_console
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/m5stats.txt
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stderr
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stdout
/gem5/util/batch/jobfile.py
/gem5/util/pbs/jobfile.py
/gem5/util/stats/orderdict.py
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.

5948:871fccb3fb7a 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement IST stack switching.

5937:177534612ec0 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the lldt instruction.

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.

5933:8b9bc09b149c 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement CLTS.

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.

5930:ec124ac0984b 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Rename oszForPseudoDesc maxOsz to reflect its more general use.

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.

5913:f2bfe08dc873 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Use atCPL0 for accesses that are part of CPU machinery.

5911:8d6e40f38063 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Move where CS is set so CPL checks work out.

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.

5903:3d7f94358641 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make exceptions handle stack switching.

5902:7a323daa3df2 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the LTR instruction.

5858:54f64fb1bd62 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: All x86 fault classes now attempt to do something useful.

5856:f770af5600c9 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the long mode interrupt/exception microcode handle an error code.

5853:606b9525071d 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the chks microop check for the right int descriptor type.

5852:1a40b07bbc30 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Touch up the interrupt entering microcode.

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.

5683:e1a1d8bba254 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the swapgs instruction.

5680:39ae093fb4eb 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement entering an interrupt in microcode.

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


/gem5/configs/common/Benchmarks.py
/gem5/src/arch/alpha/aout_machdep.h
/gem5/src/arch/alpha/ev5.cc
/gem5/src/arch/alpha/floatregfile.hh
/gem5/src/arch/alpha/ipr.cc
/gem5/src/arch/alpha/ipr.hh
/gem5/src/arch/alpha/isa_traits.hh
/gem5/src/arch/alpha/linux/linux.cc
/gem5/src/arch/alpha/linux/linux.hh
/gem5/src/arch/alpha/miscregfile.hh
/gem5/src/arch/alpha/osfpal.cc
/gem5/src/arch/alpha/pagetable.hh
/gem5/src/arch/alpha/regfile.hh
/gem5/src/arch/alpha/remote_gdb.cc
/gem5/src/arch/alpha/system.cc
/gem5/src/arch/alpha/tlb.cc
/gem5/src/arch/alpha/tru64/process.cc
/gem5/src/arch/alpha/tru64/tru64.cc
/gem5/src/arch/alpha/tru64/tru64.hh
/gem5/src/arch/isa_parser.py
/gem5/src/arch/isa_specific.hh
/gem5/src/arch/mips/isa_traits.hh
/gem5/src/arch/mips/linux/linux.cc
/gem5/src/arch/mips/linux/linux.hh
/gem5/src/arch/mips/regfile/regfile.hh
/gem5/src/arch/mips/system.cc
/gem5/src/arch/mips/tlb.cc
/gem5/src/arch/mips/tlb.hh
/gem5/src/arch/sparc/isa_traits.hh
/gem5/src/arch/sparc/linux/linux.cc
/gem5/src/arch/sparc/linux/linux.hh
/gem5/src/arch/sparc/miscregfile.hh
/gem5/src/arch/sparc/regfile.hh
/gem5/src/arch/sparc/remote_gdb.cc
/gem5/src/arch/sparc/solaris/solaris.cc
/gem5/src/arch/sparc/solaris/solaris.hh
/gem5/src/arch/sparc/sparc_traits.hh
general_purpose/cache_and_memory_management.py
general_purpose/control_transfer/call.py
general_purpose/control_transfer/interrupts_and_exceptions.py
general_purpose/data_conversion/ascii_adjust.py
general_purpose/data_conversion/bcd_adjust.py
general_purpose/data_conversion/endian_conversion.py
general_purpose/data_conversion/extract_sign_mask.py
general_purpose/data_transfer/move.py
general_purpose/load_segment_registers.py
general_purpose/semaphores.py
general_purpose/system_calls.py
/gem5/src/arch/x86/linux/linux.hh
/gem5/src/arch/x86/remote_gdb.cc
/gem5/src/base/bitunion.hh
/gem5/src/base/crc.cc
/gem5/src/base/fast_alloc.cc
/gem5/src/base/fast_alloc.hh
/gem5/src/base/inifile.hh
/gem5/src/base/loader/aout_object.cc
/gem5/src/base/loader/coff_sym.h
/gem5/src/base/loader/coff_symconst.h
/gem5/src/base/loader/ecoff_object.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/hex_file.hh
/gem5/src/base/loader/object_file.hh
/gem5/src/base/loader/symtab.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/base/res_list.hh
/gem5/src/base/stats/flags.hh
/gem5/src/base/stats/mysql.cc
/gem5/src/base/time.hh
/gem5/src/base/trace.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/memtest/memtest.hh
/gem5/src/cpu/o3/alpha/dyn_inst.hh
/gem5/src/cpu/o3/mips/dyn_inst.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/ozone/back_end.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/front_end.hh
/gem5/src/cpu/ozone/inorder_back_end.hh
/gem5/src/cpu/ozone/lsq_unit_impl.hh
/gem5/src/cpu/ozone/lw_back_end.hh
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/dev/alpha/access.h
/gem5/src/dev/etherdump.cc
/gem5/src/dev/mips/access.h
/gem5/src/dev/ns_gige.hh
/gem5/src/dev/pcidev.cc
/gem5/src/dev/pcireg.h
/gem5/src/dev/sinicreg.hh
/gem5/src/kern/linux/linux.hh
/gem5/src/kern/operatingsystem.hh
/gem5/src/kern/solaris/solaris.hh
/gem5/src/kern/tru64/mbuf.hh
/gem5/src/kern/tru64/tru64.hh
/gem5/src/kern/tru64/tru64_syscalls.cc
/gem5/src/mem/cache/blk.hh
/gem5/src/mem/cache/builder.cc
/gem5/src/mem/cache/prefetch/stride.cc
/gem5/src/mem/cache/prefetch/stride.hh
/gem5/src/mem/cache/tags/iic.cc
/gem5/src/mem/cache/tags/lru.cc
/gem5/src/mem/cache/tags/lru.hh
/gem5/src/mem/cache/tags/split_lru.cc
/gem5/src/mem/dram.cc
/gem5/src/mem/physical.hh
/gem5/src/mem/request.hh
/gem5/src/python/m5/SimObject.py
/gem5/src/sim/async.hh
/gem5/src/sim/debug.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/host.hh
/gem5/src/sim/insttracer.hh
/gem5/src/sim/process.hh
/gem5/src/sim/serialize.cc
/gem5/src/sim/serialize.hh
/gem5/src/sim/sim_events.hh
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/util/m5/m5op_alpha.S
/gem5/util/m5/m5ops.h
/gem5/util/term/term.c
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.


general_purpose/data_transfer/move.py
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/stdout
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.

5409:0343cd06df4f 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add in some support for the tsc register.

5359:8c6ff200e4c1 26-Feb-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the INVLPG instruction and the TIA microop.

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.

5325:f55260052610 12-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the wrmsr instruction.

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.

5292:a26311673ef0 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the LIDT instruction.

5291:5d38610cff05 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the lgdt instruction.

5243:4228b7b5704b 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a stupid typo where WRMSR and RDMSR were switched, and add a debug statement.

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.

5173:07204d59a328 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Impelement the HLT instruction and fix the "halt" microop.

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.

5149:356e00996637 12-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MSR reads and writes and the wrsmr and rdmsr instructions.
There are no priviledge checks, so these instructions will all work in all
modes.

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.

5123:cd30bb46e146 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix places where movfp was used incorrectly.

5121:a5f3cfdc4ee5 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix x87 floating point stack register indexing.

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.

5117:b422964a705c 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix up the microcode for the FST and FSTP instructions.

5114:edcdf9b908ec 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add classes for the actual x86 faults.

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.

5084:675cb680830f 19-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the fld, fst, and fstp instructions.

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.


/gem5/src/arch/x86/SConscript
__init__.py
arithmetic/__init__.py
arithmetic/add_and_subtract.py
arithmetic/increment_and_decrement.py
arithmetic/multiply_and_divide.py
cache_and_memory_management.py
compare_and_test/__init__.py
compare_and_test/bit_scan.py
compare_and_test/bit_test.py
compare_and_test/bounds.py
compare_and_test/compare.py
compare_and_test/set_byte_on_condition.py
compare_and_test/test.py
control_transfer/__init__.py
control_transfer/call.py
control_transfer/conditional_jump.py
control_transfer/interrupts_and_exceptions.py
control_transfer/jump.py
control_transfer/loop.py
control_transfer/xreturn.py
data_conversion/__init__.py
data_conversion/ascii_adjust.py
data_conversion/bcd_adjust.py
data_conversion/endian_conversion.py
data_conversion/extract_sign_mask.py
data_conversion/sign_extension.py
data_conversion/translate.py
data_transfer/__init__.py
data_transfer/conditional_move.py
data_transfer/move.py
data_transfer/stack_operations.py
data_transfer/xchg.py
flags/__init__.py
flags/load_and_store.py
flags/push_and_pop.py
flags/set_and_clear.py
general_purpose/__init__.py
general_purpose/arithmetic/__init__.py
general_purpose/arithmetic/add_and_subtract.py
general_purpose/arithmetic/increment_and_decrement.py
general_purpose/arithmetic/multiply_and_divide.py
general_purpose/cache_and_memory_management.py
general_purpose/compare_and_test/__init__.py
general_purpose/compare_and_test/bit_scan.py
general_purpose/compare_and_test/bit_test.py
general_purpose/compare_and_test/bounds.py
general_purpose/compare_and_test/compare.py
general_purpose/compare_and_test/set_byte_on_condition.py
general_purpose/compare_and_test/test.py
general_purpose/control_transfer/__init__.py
general_purpose/control_transfer/call.py
general_purpose/control_transfer/conditional_jump.py
general_purpose/control_transfer/interrupts_and_exceptions.py
general_purpose/control_transfer/jump.py
general_purpose/control_transfer/loop.py
general_purpose/control_transfer/xreturn.py
general_purpose/data_conversion/__init__.py
general_purpose/data_conversion/ascii_adjust.py
general_purpose/data_conversion/bcd_adjust.py
general_purpose/data_conversion/endian_conversion.py
general_purpose/data_conversion/extract_sign_mask.py
general_purpose/data_conversion/sign_extension.py
general_purpose/data_conversion/translate.py
general_purpose/data_transfer/__init__.py
general_purpose/data_transfer/conditional_move.py
general_purpose/data_transfer/move.py
general_purpose/data_transfer/stack_operations.py
general_purpose/data_transfer/xchg.py
general_purpose/flags/__init__.py
general_purpose/flags/load_and_store.py
general_purpose/flags/push_and_pop.py
general_purpose/flags/set_and_clear.py
general_purpose/input_output/__init__.py
general_purpose/input_output/general_io.py
general_purpose/input_output/string_io.py
general_purpose/load_effective_address.py
general_purpose/load_segment_registers.py
general_purpose/logical.py
general_purpose/no_operation.py
general_purpose/processor_information.py
general_purpose/rotate_and_shift/__init__.py
general_purpose/rotate_and_shift/rotate.py
general_purpose/rotate_and_shift/shift.py
general_purpose/semaphores.py
general_purpose/string/__init__.py
general_purpose/string/compare_strings.py
general_purpose/string/load_string.py
general_purpose/string/move_string.py
general_purpose/string/scan_string.py
general_purpose/string/store_string.py
general_purpose/system_calls.py
input_output/__init__.py
input_output/general_io.py
input_output/string_io.py
load_effective_address.py
load_segment_registers.py
logical.py
no_operation.py
processor_information.py
rotate_and_shift/__init__.py
rotate_and_shift/rotate.py
rotate_and_shift/shift.py
semaphores.py
simd128/__init__.py
simd128/floating_point/__init__.py
simd128/floating_point/arithmetic/__init__.py
simd128/floating_point/arithmetic/addition.py
simd128/floating_point/arithmetic/division.py
simd128/floating_point/arithmetic/horizontal_addition.py
simd128/floating_point/arithmetic/horizontal_subtraction.py
simd128/floating_point/arithmetic/multiplication.py
simd128/floating_point/arithmetic/reciprocal_estimation.py
simd128/floating_point/arithmetic/reciprocal_square_root.py
simd128/floating_point/arithmetic/simultaneous_addition_and_subtraction.py
simd128/floating_point/arithmetic/square_root.py
simd128/floating_point/arithmetic/subtraction.py
simd128/floating_point/compare/__init__.py
simd128/floating_point/compare/compare_and_write_mask.py
simd128/floating_point/compare/compare_and_write_minimum_or_maximum.py
simd128/floating_point/compare/compare_and_write_rflags.py
simd128/floating_point/data_conversion/__init__.py
simd128/floating_point/data_conversion/convert_floating_point_to_floating_point.py
simd128/floating_point/data_conversion/convert_floating_point_to_gpr_integer.py
simd128/floating_point/data_conversion/convert_floating_point_to_mmx_integer.py
simd128/floating_point/data_conversion/convert_floating_point_to_xmm_integer.py
simd128/floating_point/data_reordering/__init__.py
simd128/floating_point/data_reordering/shuffle.py
simd128/floating_point/data_reordering/unpack_and_interleave.py
simd128/floating_point/data_transfer/__init__.py
simd128/floating_point/data_transfer/move.py
simd128/floating_point/data_transfer/move_mask.py
simd128/floating_point/data_transfer/move_non_temporal.py
simd128/floating_point/data_transfer/move_with_duplication.py
simd128/floating_point/logical/__init__.py
simd128/floating_point/logical/andp.py
simd128/floating_point/logical/exclusive_or.py
simd128/floating_point/logical/orp.py
simd128/integer/__init__.py
simd128/integer/arithmetic/__init__.py
simd128/integer/arithmetic/addition.py
simd128/integer/arithmetic/average.py
simd128/integer/arithmetic/multiplication.py
simd128/integer/arithmetic/multiply_add.py
simd128/integer/arithmetic/subtraction.py
simd128/integer/arithmetic/sum_of_absolute_differences.py
simd128/integer/compare/__init__.py
simd128/integer/compare/compare_and_write_mask.py
simd128/integer/compare/compare_and_write_minimum_or_maximum.py
simd128/integer/data_conversion/__init__.py
simd128/integer/data_conversion/convert_gpr_integer_to_floating_point.py
simd128/integer/data_conversion/convert_integer_to_floating_point.py
simd128/integer/data_conversion/convert_mmx_integer_to_floating_point.py
simd128/integer/data_reordering/__init__.py
simd128/integer/data_reordering/extract_and_insert.py
simd128/integer/data_reordering/pack_with_saturation.py
simd128/integer/data_reordering/shuffle.py
simd128/integer/data_reordering/unpack_and_interleave.py
simd128/integer/data_transfer/__init__.py
simd128/integer/data_transfer/move.py
simd128/integer/data_transfer/move_mask.py
simd128/integer/data_transfer/move_non_temporal.py
simd128/integer/logical/__init__.py
simd128/integer/logical/exclusive_or.py
simd128/integer/logical/pand.py
simd128/integer/logical/por.py
simd128/integer/save_and_restore_state/__init__.py
simd128/integer/save_and_restore_state/save_and_restore_control_and_status.py
simd128/integer/save_and_restore_state/save_and_restore_state.py
simd128/integer/shift/__init__.py
simd128/integer/shift/left_logical_shift.py
simd128/integer/shift/right_arithmetic_shift.py
simd128/integer/shift/right_logical_shift.py
simd64/__init__.py
simd64/floating_point/__init__.py
simd64/floating_point/arithmetic/__init__.py
simd64/floating_point/arithmetic/accumulation.py
simd64/floating_point/arithmetic/addition.py
simd64/floating_point/arithmetic/multiplication.py
simd64/floating_point/arithmetic/reciprocal_estimation.py
simd64/floating_point/arithmetic/reciprocal_square_root.py
simd64/floating_point/arithmetic/subtraction.py
simd64/floating_point/compare/__init__.py
simd64/floating_point/compare/compare_and_write_mask.py
simd64/floating_point/compare/compare_and_write_minimum_or_maximum.py
simd64/floating_point/data_conversion.py
simd64/integer/__init__.py
simd64/integer/arithmetic/__init__.py
simd64/integer/arithmetic/addition.py
simd64/integer/arithmetic/average.py
simd64/integer/arithmetic/multiplication.py
simd64/integer/arithmetic/multiply_add.py
simd64/integer/arithmetic/subtraction.py
simd64/integer/arithmetic/sum_of_absolute_differences.py
simd64/integer/compare/__init__.py
simd64/integer/compare/compare_and_write_mask.py
simd64/integer/compare/compare_and_write_minimum_or_maximum.py
simd64/integer/data_conversion.py
simd64/integer/data_reordering/__init__.py
simd64/integer/data_reordering/extract_and_insert.py
simd64/integer/data_reordering/pack_with_saturation.py
simd64/integer/data_reordering/shuffle_and_swap.py
simd64/integer/data_reordering/unpack_and_interleave.py
simd64/integer/data_transfer/__init__.py
simd64/integer/data_transfer/move.py
simd64/integer/data_transfer/move_mask.py
simd64/integer/data_transfer/move_non_temporal.py
simd64/integer/exit_media_state.py
simd64/integer/logical/__init__.py
simd64/integer/logical/exclusive_or.py
simd64/integer/logical/pand.py
simd64/integer/logical/por.py
simd64/integer/save_and_restore_state.py
simd64/integer/shift/__init__.py
simd64/integer/shift/left_logical_shift.py
simd64/integer/shift/right_arithmetic_shift.py
simd64/integer/shift/right_logical_shift.py
sse/__init__.py
sse/add_and_subtract.py
sse/compare.py
sse/convert.py
sse/logical.py
sse/move.py
sse/multiply_and_divide.py
sse/square_root.py
string/__init__.py
string/compare_strings.py
string/load_string.py
string/move_string.py
string/scan_string.py
string/store_string.py
system_calls.py
x87/__init__.py
x87/arithmetic/__init__.py
x87/arithmetic/addition.py
x87/arithmetic/change_sign.py
x87/arithmetic/division.py
x87/arithmetic/multiplication.py
x87/arithmetic/partial_remainder.py
x87/arithmetic/round.py
x87/arithmetic/square_root.py
x87/arithmetic/subtraction.py
x87/compare_and_test/__init__.py
x87/compare_and_test/classify.py
x87/compare_and_test/floating_point_ordered_compare.py
x87/compare_and_test/floating_point_unordered_compare.py
x87/compare_and_test/integer_compare.py
x87/compare_and_test/test.py
x87/control/__init__.py
x87/control/clear_exceptions.py
x87/control/initialize.py
x87/control/save_and_restore_x87_control_word.py
x87/control/save_and_restore_x87_environment.py
x87/control/save_x87_status_word.py
x87/control/wait_for_exceptions.py
x87/data_transfer_and_conversion/__init__.py
x87/data_transfer_and_conversion/conditional_move.py
x87/data_transfer_and_conversion/convert_and_load_or_store_bcd.py
x87/data_transfer_and_conversion/convert_and_load_or_store_integer.py
x87/data_transfer_and_conversion/exchange.py
x87/data_transfer_and_conversion/extract.py
x87/data_transfer_and_conversion/load_or_store_floating_point.py
x87/load_constants/__init__.py
x87/load_constants/load_0_1_or_pi.py
x87/load_constants/load_logarithm.py
x87/no_operation.py
x87/stack_management/__init__.py
x87/stack_management/clear_state.py
x87/stack_management/stack_control.py
x87/transcendental_functions/__init__.py
x87/transcendental_functions/logarithmic_functions.py
x87/transcendental_functions/trigonometric_functions.py
5077:4c25f95fa600 13-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix how ECF is computed in genFlags, and get rid of some duplicate code.

5075:4ae876c5037d 13-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Total overhaul of the division instructions and microops.

5063:8eb72b1bd3c6 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Rework the multiplication microops so that they work like they would in the patent.

5062:4c98f8cdcc11 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make signed multiplication do something different from unsigned.

5059:33478a26f73e 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add a square root microop and the SSE sqrt instruction.

5058:be23162b7370 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add SSE comparison instructions and microops and move some FP microops to be with the other ones.

5052:791ae1b04d72 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement an SSE xor microop and instruction.

5048:59b695cf3799 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Hook in the fp arithmetic instructions. Stale python made it work before.

5047:4a3593bec248 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement some SSE fp microops and instructions.

5046:da031ef02439 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add some SSE floating point/integer conversion microops.

5044:b5a2bcd3d9a3 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a typo in the microassembly for the cqo instruction.

5043:a69b7f532f79 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement idiv and propogate the mul corner case fix.

5042:bc2c08abe249 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a corner case where mul would overwrite an original register value it still needed.

5031:53b9e86e652d 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the movaps instruction.

5030:bd8f65d4ac59 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the movsd instruction.

5029:68c3f3be8c8a 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the movlpd instruction.

5010:e53f4e0bb2ac 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Return values for some cpuid functions that match what my development machine returns.

5009:78d53ea88c74 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the microassembler accept lines which are just labels.
The labels on these lines will be associated with whatever the next microop
is.

5008:2d852642081e 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make cpuid actually consider the eax parameter and return different values.

5006:46bde2e856dd 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement cmps (string compare)

5005:a7d60f1aa908 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make shift instructions set some of the flags they're supposed to.
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.

4953:1181cf10e11e 07-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implemented and hooked in SCAS (scan string)
Fixed the asz assembler symbol.
Adjusted the condion checks to have appropriate options.
Implemented the SCAS microcode.
Attached SCAS into the decoder.

4868:99d4946469a1 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement microops and instructions that manipulate the flags register.

4864:a78c58ce5499 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the cmpxchg instruction.

4863:b6dacc9a39ff 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Start implementing segmentation support.
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.

4861:d73032e1dca0 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add the arch_prctl system call and fix up some microcoding.
The arch_prctl system call is used to set and get the FS and GS segment
bases. The FS segment is use for TLS, so glibc needs to be able to set it
up.

4819:4d21a72b55ed 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Set up RIP relative LEA instructions operands correctly.

4818:f05a634443c5 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement unsigned divide. The non-byte version ignores rdx which it shouldn't.

4811:f4c050c1edeb 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a stub CPUID function which is hardcode to return certain values.

4810:27acbaf1d4e3 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Force jumps to use 64 bit operand size.

4809:ee82bc15a483 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make instructions use pick, and implement/adjust some multiplication microops and instructions.

4802:512e30d94584 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement LEAVE

4798:85351424da98 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make logic instructions flag setting work.
The instructions now ask for the appropriate flags to be set, and the microops do the "right thing" with the CF and OF flags, namely zero them.

4797:f26c5c593b7a 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make arithmetic instructions set the appropriate flags.

4788:2128419a6dd2 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix popa and push with the stack pointer.
POPA used st instead of ld, and it didn't skip rsp. push rsp needs to store the -original- value of the stack pointer.

4770:52a479af7b14 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix pc relative versions of add and subtract.

4769:3e3254436181 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement rotate-by-one instructions, and make register rotates use registers.

4768:ce8d118a1fa7 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement shift-by-one instructions, and make register shifts use registers.

4764:3cc6c2bddf1c 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement NOT

4755:b7b9c2e654a5 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix immediate shifts. Implement register shifts.

4754:6550874ebca8 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix immediate rotates and add register ones.

4753:0b7f5f77ee84 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Clean out part of an old comment.

4752:fc6ee2904dad 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement cmov.

4751:e1f5eee86899 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement cdqe and cqo, which are also called cbw and cwde, and cwd and cdq respectively, depending on the operand size.

4750:fb23e50d24cd 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement setcc.

4749:1ee5f5cd8001 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of an old comment.

4748:4e34bb56cfd4 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of an old comment

4747:0971cd0cf1da 23-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement pusha, popa, three operand imul, hook them into the decoder, and clean up the decoder a little.

4746:7960a6867f55 22-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make the operand size reflect the size specifier on the operand tags, and implement NEG

4734:a71b1b6b0678 21-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implemented and hooked in xchg, rotate with carry, and ret instructions

4732:9fdd1a5ab692 21-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fixed the distinction between far and near versions of jmp, call and ret. Implemented some shifts, rotates, and pushes.

4730:77e3e9b15e7e 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement UD2 and replace the place holder in the decoder.

4728:d60b98171bef 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement adc and sbb instructions and microops.

4727:8a6b7746df57 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement the rest of the conditional jump instructions and hook them into the decoder.

4725:441c280b5936 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Define and fill out a lot of different instructions and instruction versions. Added two of the shift microops.

4723:b663328cf5a1 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Comment, implement, fix, and trim the move microassembly.

4722:0659a6c26d3c 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement jnbe.

4721:0399ca728102 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Appended _NEAR to the near version of call and return.

4719:6e85e2d8b07c 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement the increment and decrement instructions, and the two operand form of signed multiplication.

4712:79b4c64296ce 19-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

x86 fixes
Make the emulation environment consider the rex prefix.
Implement and hook in forms of j, jmp, cmp, syscall, movzx
Added a format for an instruction to carry a call to the SE mode syscalls system
Made memory instructions which refer to the rip do so directly
Made the operand size overridable in the microassembly
Made the "ext" field of register operations 16 bits to hold a sparse encoding of flags to set or conditions to predicate on
Added an explicit "rax" operand for the syscall format
Implemented syscall returns.

4709:884a54d8d22f 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement near returns.

4705:7fc758c834c0 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix a comment to refer to the right type of instruction.

4703:4158cad49287 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement some forms of add.

4697:8d9b2d777c61 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement the x86 nop to be a "fault" microop which returns "NoFault".

4692:8536c20cdc5b 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implemented jnz.

4691:52ec6c3573f6 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Use limm to set up immediate value for subtract instruction.

4690:1f1a4393c47c 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement the jz instruction.

4689:51d601a6be95 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make "test" set some condition codes.
It still needs to zero the overflow and carry flags to be correct.

4620:5acc50eeacf7 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make symbols for regular registers.

4617:42cb778fbe66 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Use the new symbols to clean up the assembler.

4609:29b5f66fed1a 20-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Implement rip relative addressing and put in some missing loads and stores.

4601:38c989d15fef 20-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make memory instructions work better, add more macroop implementations, add an lea microop, move EmulEnv into it's own .cc and .hh.

4595:5162e9a7728c 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

More faithfulness to what instructions should work in what modes, and added the MOVSXD instruction.

4592:520664dfb26f 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make instructions that are illegal in 64 bit mode not do the wrong thing in 64 bit mode. Also add in more versions of PUSH and POP, and a version of near CALL.

4589:97c65c2bd53f 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of the commented out versions of macroops which have been reimplemented. The comments are basically functioning like a todo list.

4587:2c9a2534a489 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of the immediate and displacement components of the EmulEnv struct and use them directly out of the instruction. The extra copies are conceptually realistic but are just innefficient as implemented. Also don't use the zeroeth microcode register for general storage since it's now the zero register, and implement a load and a store microops.

4575:d0017efdfa02 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Implement a handful more instructions and differentiate macroops based on the operand types they expect.

4570:24eda664bafa 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make POP special case its dataSize to default to 64 bits in 64 bit mode.

4562:ebc2d9545634 13-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Partially implement "POP"

4545:03725ca8b7ea 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add in MOV instructions.

4529:5f32651bc10e 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Move the microcode assembly to a python package instead of isa_parser files. Also, the code is now a single string which runs through the microcode assembler rather than docstrings associated with classes named after each architectural level instruction.