summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/insts/simd128
AgeCommit message (Collapse)Author
2015-10-06x86: implement rcpps and rcpss SSE instsSteve Reinhardt
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.
2015-07-04x86: Adjust the size of the values written to the x87 misc registersNikos Nikoleris
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>
2015-01-10x86 : fxsave and fxrestore missing template codeEmilio Castillo
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>
2015-01-03x86: implements the simd128 ADDSUBPD instructionMaxime Martinasso
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
2013-09-30x86: Add support for FXSAVE, FXSAVE64, FXRSTOR, and FXRSTOR64Andreas Sandberg
2012-05-19x86 ISA: Implement the sse3 haddps instruction.Marc Orr
Shuffle the 32 bit values into position, and then add in parallel.
2010-05-23copyright: Change HP copyright on x86 code to be more friendlyNathan Binkert
2009-12-19X86: Add a common named flag for signed media operations.Gabe Black
2009-12-19X86: Create a common flag with a name to indicate high multiplies.Gabe Black
2009-12-19X86: Create a common flag with a name to indicate scalar media instructions.Gabe Black
2009-11-04X86: Fix problem with movhps instructionVince Weaver
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.
2009-10-30X86: Add support for x86 psrldq and pslldq instructionsVince Weaver
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.
2009-10-30X86: Implement the X86 sse2 haddpd instructionVince Weaver
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.
2009-10-27X86: Replace "DISPLACEMENT" with disp in movhpd.Gabe Black
2009-10-27Fix problem with the x86 sse movhpd instruction.Vince Weaver
The movhpd instruction was writing to the wrong memory offset.
2009-10-21Implement X86 sse2 movdqu and movdqa instructionsVince Weaver
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.
2009-08-17X86: Implement MOVQ2DQ.Gabe Black
2009-08-17X86: Implement MOVDQ2Q.Gabe Black
2009-08-17X86: Implement the media instructions that convert fp values to ints.Gabe Black
2009-08-17X86: Implement the instructions that compare fp values and write a mask as a ↵Gabe Black
result.
2009-08-17X86: Implement the instructions that compare fp values and write to rflags.Gabe Black
2009-08-17X86: Implement MOVSS.Gabe Black
2009-08-17X86: Implement LDMXCSR.Gabe Black
2009-08-17X86: Implement STMXCSR.Gabe Black
2009-08-17X86: Implement the shuffle media instructions.Gabe Black
2009-08-17X86: Implement the mask move instructions.Gabe Black
2009-08-17X86: Implement the instructions that move sign bits.Gabe Black
2009-08-17X86: Implement the insert/extract instructions.Gabe Black
2009-08-17X86: Implement the media average instructions.Gabe Black
2009-08-17X86: Implement the multiply and add instructions.Gabe Black
2009-08-17X86: Implement the media shifts that operate on 64 bits or less at a time.Gabe Black
2009-08-17X86: Implement the sum of absolute differences instructions.Gabe Black
2009-08-17X86: Implement the media integer subtract instructions.Gabe Black
2009-08-17X86: Implement the integer media multiply instructions.Gabe Black
2009-08-17X86: Implement the integer media max instructions.Gabe Black
2009-08-17X86: Implement the integer media min instructions.Gabe Black
2009-08-17X86: Implement the media integer addition instructions.Gabe Black
2009-08-17X86: Implement the instructions that convert between forms of floating point.Gabe Black
2009-08-17X86: Implement the instructions that compare fp values and write masks as ↵Gabe Black
the result.
2009-08-17X86: Implement the MOVDDUP instruction.Gabe Black
2009-08-17X86: Implement many of the media mov instructions.Gabe Black
2009-08-17X86: Implement the media instructions that convert integer values to ↵Gabe Black
floating point.
2009-08-17X86: Implement the floating point media instructions.Gabe Black
2009-08-17X86: Implement the floating point media multiply instructions.Gabe Black
2009-08-17X86: Implement the floating point media subtract instructions.Gabe Black
2009-08-17X86: Implement the floating point media add instructions.Gabe Black
2009-08-17X86: Implement the media sqrt instructions.Gabe Black
2009-08-17X86: Implement the media floating point max instructions.Gabe Black
2009-08-17X86: Implement the media floating point min instructions.Gabe Black
2009-08-17X86: Implement the pack instructions.Gabe Black