The x86 implementation has always supported SSE, and support for decoding
AVX instructions was added a while ago. This particular instruction is SHLX
which is part of the BMI2 instruction set which was introduced with Intel's
Haswell microarchitecture (according to wikipedia) which makes it only
about 5 years old.

In general though, using fancy new instructions is unlikely to work, so you
should compile for an older (but not that old) version of the instruction
set. Also, while gem5 doesn't specifically model either Intel or AMD cpus,
the documentation I used to implement the initial version of it was from
AMD and AMD contributes to it actively, so AMD-ish features/behaviors are
more likely to be supported correctly.

Gabe

On Fri, Feb 8, 2019 at 7:17 AM Jason Lowe-Power <[email protected]> wrote:

> Hey Dan,
>
> There are probably a couple of issues you're seeing:
> 1) The invalid instruction is likely an SSE or AVX instruction that gem5
> doesn't implement. You *could* solve this by using something like
> -march=athlon64, but there are downsides to compiling for a 20 year old
> processor....
> 2) Running in SE mode, you'll likely find important syscalls that aren't
> implemented (and you may get bad data). SE mode doesn't model many
> important system-level interaction (e.g., page table walks) which can have
> significant effects on modern workloads.
>
> The "solution" to 2) is to use FS mode, but I don't have a good solution to
> 1). We need to get our x86 implementation up to date, but as far as I know
> no one is working on it right now.
>
> Cheers,
> Jason
>
> On Fri, Feb 8, 2019 at 6:40 AM Dan Recher <[email protected]> wrote:
>
> > Hello,
> >
> > While trying to run perlbench from SPEC2017 with se.py config on top of
> > Ubuntu 18 and perlbench compiled in Ubuntu 18 as well, it's seems that
> > compilation generated modern instruction that are not supported by Gem5.
> >
> > log:
> > command line: ./build/X86/gem5.opt configs/example/se.py -c
> >
> >
> /home/dan/SPEC2017/benchspec/CPU/500.perlbench_r/exe/perlbench_r_base.mytest-m64
> > -o /home/dan/SPEC2017/benchspec/CPU/500.perlbench_r/data/test/input/
> > makerand.pl
> > **** REAL SIMULATION ****
> > info: Entering event queue @ 0.  Starting simulation...
> > warn: ignoring syscall access(...)
> > warn: ignoring syscall access(...)
> > warn: ignoring syscall access(...)
> > warn: ignoring syscall mprotect(...)
> > warn: ignoring syscall access(...)
> > warn: ignoring syscall mprotect(...)
> > warn: ignoring syscall mprotect(...)
> > warn: ignoring syscall mprotect(...)
> > warn: ignoring syscall mprotect(...)
> > warn: ignoring syscall mprotect(...)
> > warn: ignoring syscall rt_sigaction(...)
> >       (further warnings will be suppressed)
> > panic: Unrecognized/invalid instruction executed:
> >
> > {
> > leg = 0x10,
> > rex = 0x8,
> > vex/xop = 0x61,
> > op = {
> > type = three byte 0f38,
> > op = 0xf7,
> > },
> > modRM = 0,
> > sib = 0,
> > immediate = 0,
> > displacement = 0
> > dispSize = 0}
> > Memory Usage: 694576 KBytes
> > Program aborted at tick 327822000
> >
> >
> > --> does anyone encounter with this problem? does anyone run SPEC2017 in
> > GEM5?
> > should I downgrade my ubuntu to previous version or there is any other
> > solution?
> >
> > Thanks,
> > Dan Recher
> > _______________________________________________
> > gem5-dev mailing list
> > [email protected]
> > http://m5sim.org/mailman/listinfo/gem5-dev
> _______________________________________________
> gem5-dev mailing list
> [email protected]
> http://m5sim.org/mailman/listinfo/gem5-dev
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to