#
14087:ca8b1211541c |
|
12-Jul-2019 |
Hoa Nguyen <hoanguyen@ucdavis.edu> |
arch-x86: add unconditional tag to calls/returns
The branch predictor checks whether an instruction is unconditional branch before adding it or checking the RAS. With this change, the RAS is significantly more effective for short running x86 workloads.
Change-Id: I60af5f2f583b898ad77f79f4b0478d6cda88fc21 Signed-off-by: Hoa Nguyen <hoanguyen@ucdavis.edu> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19448 Maintainer: Jason Lowe-Power <jason@lowepower.com> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Gabe Black <gabeblack@google.com>
|
#
13675:afeab32b3655 |
|
24-Jan-2019 |
Andreas Sandberg <andreas.sandberg@arm.com> |
python: Replace dict.has_key with 'key in dict'
Python 3 has removed dict.has_key in favour of 'key in dict'.
Change-Id: I9852a5f57d672bea815308eb647a0ce45624fad5 Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/15987 Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.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>
|
#
12236:126ac9da6050 |
|
04-Nov-2017 |
Gabe Black <gabeblack@google.com> |
alpha,arm,mips,power,riscv,sparc,x86: Merge exec decl templates.
In the ISA instruction definitions, some classes were declared with execute, etc., functions outside of the main template because they had CPU specific signatures and would need to be duplicated with each CPU plugged into them. Now that the instructions always just use an ExecContext, there's no reason for those templates to be separate. This change folds those templates together.
Change-Id: I13bda247d3d1cc07c0ea06968e48aa5b4aace7fa Reviewed-on: https://gem5-review.googlesource.com/5401 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Alec Roelke <ar4jc@virginia.edu> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
|
#
12234:78ece221f9f5 |
|
02-Nov-2017 |
Gabe Black <gabeblack@google.com> |
alpha,arm,mips,power,riscv,sparc,x86,isa: De-specialize ExecContexts.
The ISA parser used to generate different copies of exec functions for each exec context class a particular CPU wanted to use. That's since been changed so that those functions take a pointer to the base ExecContext, so the code which would generate those extra functions can be removed, and some functions which used to be templated on an ExecContext subclass can be untemplated, or minimally less templated.
Now that some functions aren't going to be instantiated multiple times with different signatures, there are also opportunities to collapse templates and make many instruction definitions simpler within the parser. Since those changes will be less mechanical, they're left for later changes and will probably be done in smaller increments.
Change-Id: I0015307bb02dfb9c60380b56d2a820f12169ebea Reviewed-on: https://gem5-review.googlesource.com/5381 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
|
#
10184:bbfa3152bdea |
|
09-May-2014 |
Curtis Dunham <Curtis.Dunham@arm.com> |
arch: remove inline specifiers on all inst constrs, all ISAs
With (upcoming) separate compilation, they are useless. Only link-time optimization could re-inline them, but ideally feedback-directed optimization would choose to do so only for profitable (i.e. common) instructions.
|
#
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.
|
#
8902:75b524b64c28 |
|
19-Mar-2012 |
Andreas Hansson <andreas.hansson@arm.com> |
gcc: Clean-up of non-C++0x compliant code, first steps
This patch cleans up a number of minor issues aiming to get closer to compliance with the C++0x standard as interpreted by gcc and clang (compile with std=c++0x and -pedantic-errors). In particular, the patch cleans up enums where the last item was succeded by a comma, namespaces closed by a curcly brace followed by a semi-colon, and the use of the GNU-extension typeof (replaced by templated functions). It does not address variable-length arrays, zero-size arrays, anonymous structs, range expressions in switch statements, and the use of long long. The generated CPU code also has a large number of issues that remain to be fixed, mainly related to overflows in implicit constant conversion (due to shifts).
|
#
7621:3a6468fa514f |
|
23-Aug-2010 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Add a .serializing directive that makes a macroop serializing.
This directive really just tells the macroop to set IsSerializing and IsSerializeAfter on its final microop.
|
#
7620:3d8a23caa1ef |
|
23-Aug-2010 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Consolidate extra microop flags into one parameter.
This single parameter replaces the collection of bools that set up various flavors of microops. A flag parameter also allows other flags to be set like the serialize before/after flags, etc., without having to change the constructor.
|
#
7087:fb8d5786ff30 |
|
24-May-2010 |
Nathan Binkert <nate@binkert.org> |
copyright: Change HP copyright on x86 code to be more friendly
|
#
5966:833e487aa8f7 |
|
27-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Respect segment override prefixes even when there's no ModRM byte.
|
#
5788:6d4161a36ca1 |
|
07-Jan-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Autogenerate macroop generateDisassemble function.
|
#
5786:07f635cab026 |
|
07-Jan-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Move the macroop class out of the isa description into C++.
|
#
5692:0d6addcde185 |
|
13-Oct-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Set the delayed commit flag in x86 microops appropriately.
|
#
5666:e7925fa8f0d6 |
|
12-Oct-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make X86's microcode ROM actually do something.
|
#
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.
|
#
5046:da031ef02439 |
|
05-Sep-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Add some SSE floating point/integer conversion microops.
|
#
5040:126e4510b5bb |
|
01-Sep-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Major rework of how regop microops are generated. The new implementation uses metaclass, and gives a lot more precise control with a lot less verbosity. The flags/no flags reg/imm variants are all handled by the same python class now which supplies a constructor to the right C++ class based on context.
|
#
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.
|
#
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.
|
#
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
|
#
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.
|
#
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.
|
#
4567:5c7b9832235d |
|
14-Jun-2007 |
Gabe Black <gblack@eecs.umich.edu> |
Get rid of some debug output and let macroops set headers in their constructor. The intention is to allow them to modify the emulation environment struct before it's used to construct its microops.
|
#
4539:6eeeea62b7c4 |
|
12-Jun-2007 |
Gabe Black <gblack@eecs.umich.edu> |
Make microOp vs microop and macroOp vs macroop capitilization consistent.
src/arch/x86/isa/macroop.isa: Make microOp vs microop and macroOp vs macroop capitilization consistent. Also fill out the emulation environment handling a little more, and use an object to pass around output code. src/arch/x86/isa/microops/base.isa: Make microOp vs microop and macroOp vs macroop capitilization consistent. Also adjust python to C++ bool translation.
|
#
4528:f0b19ee67a7b |
|
08-Jun-2007 |
Gabe Black <gblack@eecs.umich.edu> |
Big changes to use the new microcode assembler.
|
#
4519:f8da6b45573f |
|
04-Jun-2007 |
Gabe Black <gblack@eecs.umich.edu> |
Reworking x86's microcode system. This is a work in progress, and X86 doesn't compile.
src/arch/x86/isa/decoder/one_byte_opcodes.isa: src/arch/x86/isa/macroop.isa: src/arch/x86/isa/main.isa: src/arch/x86/isa/microasm.isa: src/arch/x86/isa/microops/base.isa: src/arch/x86/isa/microops/microops.isa: src/arch/x86/isa/operands.isa: src/arch/x86/isa/microops/regop.isa: src/arch/x86/isa/microops/specop.isa: Reworking x86's microcode system
|
#
4371:c5003760793e |
|
10-Apr-2007 |
Gabe Black <gblack@eecs.umich.edu> |
Reworked x86 a bit
|
#
4343:3f11bcf873b3 |
|
06-Apr-2007 |
Gabe Black <gblack@eecs.umich.edu> |
Refactored the x86 isa description some more. There should be more seperation between x86 specific parts, and those parts which are implemented in the isa description but could eventually be moved elsewhere.
|