[gem5-dev] Vector register file
Hi folks, Yesterday I submitted five patches to the review board. The idea of the patches is to implement a proper vector register file. To enable cleaner implementations of the SIMD ISAs. The first patch extends what Nathanael Premillieu did in spring, taking the hierarchical RegIds, and generalising the usage of them. The second patch is an 'enabler'. It is a refactorisation of the InstResult, as having Vector Regs, and being able to define operations that operate on a vector register, we need to contemplate the possibility of instructions generating vector results. There are a couple points in the code that require bearing in mind that this change is right before adding vector registers to make sense. The third patch adds the vector register class. For the implementation we decided to decouple the uarch entity that is the register, codified in the VecRegContainer class, which is just a group of bytes, from the interpretation of it, which belongs to the arch world. To do that, VecRegContainers have methods to create a view of the bytes as a vector of any plain type. This views, VecRegT have the expected functionality to inspect and modify the contents of the register. The fourth patch (cpu: Added interface for vector reg file) creates a vector register file in the cpu models, and adds all the interface functions required across classes that implement ThreadContext or ExecContext interfaces. The rename is extended. Due to the particularities of some ISAs, the same set of registers can be accessed at register level, or at 'native element' level. Therefore, the rename stage and the rename map are updated in this patch to address that need. One particularly odd piece of functionality is a function to change the mode, as different 'chunks' may need to be consolidated into one physical vector register to preserve ISA semantics. Finally, the last patch proposes updates to the parsing of the operands in Neon instructions for ARM to use the newly added Vector Register file. Cheers, Rekai IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Review Request 3757: arch: added generic vector register
--- This is an automatically generated e-mail. To reply, visit: http://reviews.gem5.org/r/3757/ --- Review request for Default. Repository: gem5 Description --- Changeset 11762:51e68b2eed8a --- arch: added generic vector register This commit adds a new generic vector register to have a cleaner implementation of SIMD ISAs. Nathanael's idea, Rekai's implementation. Change-Id: I60b250bba6423153b7e04d2e6988d517a70a3e6b Reviewed-by: Andreas SandbergDiffs - src/arch/generic/vec_reg.hh PRE-CREATION Diff: http://reviews.gem5.org/r/3757/diff/ Testing --- Builtin regressions Thanks, Rekai Gonzalez Alberquilla ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
Re: [gem5-dev] Review Request 3762: config: Fix missing include in fs.py
--- This is an automatically generated e-mail. To reply, visit: http://reviews.gem5.org/r/3762/ --- (Updated Dez. 10, 2016, 10:33 vorm.) Review request for Default. Summary (updated) - config: Fix missing include in fs.py Repository: gem5 Description --- Bugfix for Elastic Traces This patch fixes the bug when elastic traces are used: ```bash build/ARM/gem5.opt \ configs/example/fs.py \ --cpu-type=arm_detailed \ --num-cpu=1 \ --mem-type=SimpleMemory \ --mem-size=512MB \ --mem-channels=1 \ --caches \ --elastic-trace-en \ --data-trace-file=data.proto.gz \ --inst-trace-file=inst.proto.gz \ --machine-type=VExpress_EMM \ --dtb-filename=vexpress.aarch32.ll_20131205.0-gem5.1cpu.dtb \ --kernel=vmlinux.aarch32.ll_20131205.0-gem5 \ --disk-image=linux-aarch32-ael.img ``` NameError: global name 'CpuConfig' is not defined Diffs - configs/example/fs.py 78ef8daecd81 Diff: http://reviews.gem5.org/r/3762/diff/ Testing --- Thanks, Matthias Jung ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
Re: [gem5-dev] Review Request 3762: Bugfix for Elastic Traces
--- This is an automatically generated e-mail. To reply, visit: http://reviews.gem5.org/r/3762/ --- (Updated Dec. 10, 2016, 10:31 a.m.) Review request for Default. Repository: gem5 Description --- Bugfix for Elastic Traces This patch fixes the bug when elastic traces are used: ```bash build/ARM/gem5.opt \ configs/example/fs.py \ --cpu-type=arm_detailed \ --num-cpu=1 \ --mem-type=SimpleMemory \ --mem-size=512MB \ --mem-channels=1 \ --caches \ --elastic-trace-en \ --data-trace-file=data.proto.gz \ --inst-trace-file=inst.proto.gz \ --machine-type=VExpress_EMM \ --dtb-filename=vexpress.aarch32.ll_20131205.0-gem5.1cpu.dtb \ --kernel=vmlinux.aarch32.ll_20131205.0-gem5 \ --disk-image=linux-aarch32-ael.img ``` NameError: global name 'CpuConfig' is not defined Diffs (updated) - configs/example/fs.py 78ef8daecd81 Diff: http://reviews.gem5.org/r/3762/diff/ Testing --- Thanks, Matthias Jung ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Cron <m5test@zizzer> /z/m5/regression/do-regression quick
* build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64i/minor-timing: CHANGED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64i/simple-timing: CHANGED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64i/simple-timing-ruby: CHANGED! * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/minor-timing: passed. * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-timing: passed. * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-atomic: passed. * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/o3-timing: passed.* build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-timing-ruby: passed. * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual: passed. * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-timing-dual: passed. * build/ALPHA/tests/opt/quick/fs/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic: passed. * build/ALPHA/tests/opt/quick/se/50.memtest/alpha/linux/memtest-ruby: passed. * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-timing: passed. * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-atomic: passed. * build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-two-level: passed. * build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-simple: passed.* build/ALPHA/tests/opt/quick/se/01.hello-2T-smt/alpha/linux/o3-timing-mt: passed. * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/o3-timing: passed.* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-atomic: passed. * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing: passed. * build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-simple: passed. * build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-two-level: passed. * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing-ruby: passed. * build/NULL/tests/opt/quick/se/50.memtest/null/none/memtest: passed. * build/NULL/tests/opt/quick/se/50.memtest/null/none/memtest-filter: passed.* build/NULL/tests/opt/quick/se/51.memcheck/null/none/memcheck: passed. * build/NULL/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby: passed. * build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-dram-ctrl: passed. * build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-simple-mem: passed. * build/NULL_MOESI_hammer/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_hammer: passed. * build/NULL_MESI_Two_Level/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MESI_Two_Level: passed. * build/NULL_MOESI_CMP_directory/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_directory: passed. * build/NULL_MOESI_CMP_token/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_token: passed. * build/POWER/tests/opt/quick/se/00.hello/power/linux/simple-atomic: passed.* build/POWER/tests/opt/quick/se/00.hello/power/linux/o3-timing: passed. * build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-atomic: passed. * build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing: passed. * build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/o3-timing: passed.* build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing-ruby: passed. * build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-atomic: passed.* build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-timing: passed. * build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-simple: passed. * build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-two-level: passed. * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/o3-timing-mp: passed. * build/SPARC/tests/opt/quick/se/10.mcf/sparc/linux/simple-atomic: passed. * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-atomic-mp: passed. * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-timing-mp: passed. * build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-atomic: passed. * build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-timing: passed. * build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-timing: passed. * build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-atomic: passed. * build/X86/tests/opt/quick/se/10.mcf/x86/linux/simple-atomic: passed. * build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-timing-ruby: passed. * build/X86/tests/opt/quick/se/00.hello/x86/linux/o3-timing: passed.* build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-timing: passed. * build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-atomic: passed. *