Oh I see. This particular instruction was also an SSE instruction. Thanks
for the clarification.

On Sun, Oct 29, 2017, 12:02 AM Gabe Black <[email protected]> wrote:

> As I mentioned before, the instruction is not unimplemented.
>
> Gabe
>
> On Sat, Oct 28, 2017 at 8:20 AM, Sam Xi <[email protected]> wrote:
>
> > I just tried out this change. It seems like it works in that the
> simulator
> > now decodes the instruction correctly, but I would have expected to get
> an
> > unimplemented instruction crash, and I don't. Does gem5 just skip the
> > instruction in this case?
> >
> > On Fri, Oct 27, 2017 at 4:53 PM Gabe Black <[email protected]> wrote:
> >
> > > https://gem5-review.googlesource.com/c/public/gem5/+/5281
> > >
> > > On Fri, Oct 27, 2017 at 1:18 PM, Gabe Black <[email protected]>
> > wrote:
> > >
> > > > Actually, I remember implementing most if not all of SSE of some
> > > > particular vintage, so those should work just fine. I even used a
> test
> > > > program QEMU has to do some small amount of verification! :-) But
> > > > unfortunately I think you're right that the AVX instructions which
> > aren't
> > > > also SSE instructions are basically unimplemented. They should be
> > decoded
> > > > properly however, so it's probably worth looking into why this one
> > > wasn't.
> > > >
> > > > Gabe
> > > >
> > > > On Fri, Oct 27, 2017 at 1:07 PM, Sam Xi <[email protected]>
> > wrote:
> > > >
> > > >> Ah, I see...I noticed a few commits involving decoding of VEX-prefix
> > > >> instructions and so I assumed that AVX was supported. Or is the
> > problem
> > > >> that the decoding is supported to some degree but the actual
> execution
> > > >> hasn't been implemented?
> > > >>
> > > >> For what I need to do at the moment, not having good x86 SIMD
> support
> > > is a
> > > >> bit of a pain but not a dealbreaker.
> > > >>
> > > >> On Fri, Oct 27, 2017 at 4:02 PM Jason Lowe-Power <
> [email protected]
> > >
> > > >> wrote:
> > > >>
> > > >> > Hey Sam,
> > > >> >
> > > >> > I've got some bad news... I don't think we've implemented any of
> the
> > > AVX
> > > >> > instructions in gem5. In fact, many of the SSE instructions are
> > still
> > > >> > unimplemented.
> > > >> >
> > > >> > Overall, the SIMD support for x86 is pretty awful, as of the last
> > > time I
> > > >> > checked (some can correct me if things have changed
> significantly).
> > > It's
> > > >> > much better for ARM. I believe most, if not all, of the NEON
> > > >> instructions
> > > >> > are implemented.
> > > >> >
> > > >> > It would be great for someone to tackle the SIMD instructions on
> > x86!
> > > In
> > > >> > fact, since the ARM SIMD instructions were implemented there is a
> > new
> > > >> > vector register interface that we should migrate the x86 ISA to
> use.
> > > >> It's
> > > >> > possible that AMD has some of this code internally that's not
> pushed
> > > out
> > > >> > yet. Brad, Tony, care to comment?
> > > >> >
> > > >> > Sorry this isn't better news. This has been a pain point for me
> for
> > a
> > > >> > while, but I haven't had any time to work on it.
> > > >> >
> > > >> > Cheers,
> > > >> > Jason
> > > >> >
> > > >> > On Fri, Oct 27, 2017 at 12:38 PM Sam Xi <[email protected]>
> > > >> wrote:
> > > >> >
> > > >> > > Hi all,
> > > >> > >
> > > >> > > I ran into a problem today involving an incorrectly decoded AVX
> > > >> > > instruction. Hoping someone can tell me of a workaround or a
> quick
> > > fix
> > > >> > > other than disabling AVX (unless that's the only solution).
> > > >> > >
> > > >> > > Here's a basic testcase.
> > > >> > >
> > > >> > >  int main() {
> > > >> > >   float x;
> > > >> > >   __asm__("vxorps %0, %0, %0" : "=x"(x) : "x"(x) :);
> > > >> > >
> > > >> > >   return x == 0;
> > > >> > > }
> > > >> > >
> > > >> > > Compiled with gcc 5.4:
> > > >> > >   gcc -static -O3 -o test -mavx test.c
> > > >> > >
> > > >> > > Produces the following assembly:
> > > >> > >
> > > >> > > 00000000004005f0 <main>:
> > > >> > >   4005f0: 66 0f ef c9           pxor   xmm1,xmm1
> > > >> > >   4005f4: 31 c0                 xor    eax,eax
> > > >> > >   4005f6: 66 0f ef c0           pxor   xmm0,xmm0
> > > >> > >   4005fa: ba 00 00 00 00        mov    edx,0x0
> > > >> > >   4005ff: c5 f8 57 c0           vxorps xmm0,xmm0,xmm0
> > > >> > >   400603: 0f 2e c1              ucomiss xmm0,xmm1
> > > >> > >   400606: 0f 9b c0              setnp  al
> > > >> > >   400609: 0f 45 c2              cmovne eax,edx
> > > >> > >   40060c: c3                    ret
> > > >> > >   40060d: 0f 1f 00              nop    DWORD PTR [rax]
> > > >> > >
> > > >> > > gem5 decodes the instruction as XORPS_XMM_M, instead of
> (something
> > > >> more
> > > >> > > like) VXORPS_XMM_XMM_XMM. This leads to a segfault in the
> > simulated
> > > >> > program
> > > >> > > when it attempts to access an unmapped address
> > > >> > >
> > > >> > > Here is the relevant section of the debug trace.
> > > >> > >
> > > >> > > 416293000: system.cpu: Fetch
> > > >> > > 416293000: system.cpu: Translating address 0x4005f0
> > > >> > > 416293000: system.cpu: Sending fetch for addr 0x4005f0(pa:
> 0x5f0)
> > > >> > > 416293000: system.cpu:  -- pkt addr: 0x5f0
> > > >> > > 416348000: system.cpu.icache_port: Received fetch response 0x5f0
> > > >> > > 416348000: system.cpu: Complete ICache Fetch for addr 0x5f0
> > > >> > > 416348000: global: Getting more bytes.
> > > >> > > 416348000: global: Setting origPC to 0x4005f0
> > > >> > > 416348000: global: Found VEX two-byte prefix 0xc5.
> > > >> > > 416348000: global: Found VEX opcode 0x57.
> > > >> > > 416348000: global: Found modrm byte 0x57.
> > > >> > > 416348000: global: Collecting 1 byte displacement, got 1 bytes.
> > > >> > > 416348000: global: Collected displacement 0xffffffffffffffc9.
> > > >> > > 416348000: global: Calculating the instruction size: basePC:
> > > 0x4005f0
> > > >> > > offset: 0x4 origPC: 0x4005f0 size: 4
> > > >> > > 416348000: global: XORPS_XMM_M : ldfp: The address is
> > > >> 0xffffffffffffffca
> > > >> > > 416348000: system.cpu: Fault occured, scheduling fetch event
> > > >> > > panic: Tried to read unmapped address 0xffffffffffffffca.
> > > >> > >
> > > >> > >
> > > >> > > Toolchain information
> > > >> > > =====================
> > > >> > >
> > > >> > > samxi $ gcc --version
> > > >> > > gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609
> > > >> > >
> > > >> > >
> > > >> > > samxi $ as --version
> > > >> > > GNU assembler (GNU Binutils for Ubuntu) 2.26.1
> > > >> > >
> > > >> > > gem5 revision: e79c4c6f033581f84072ddb45d2ec9543c31af55
> > > >> > >
> > > >> > > Thanks,
> > > >> > > Sam
> > > >> > >
> > > >> > > --
> > > >> > > Thanks,
> > > >> > >
> > > >> > > Sam Xi
> > > >> > > Harvard University
> > > >> > > Computer Science, Ph.D. Candidate
> > > >> > > http://www.samxi.org
> > > >> > > _______________________________________________
> > > >> > > 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
> > > >>
> > > >> --
> > > >> Thanks,
> > > >>
> > > >> Sam Xi
> > > >> Harvard University
> > > >> Computer Science, Ph.D. Candidate
> > > >> http://www.samxi.org
> > > >> _______________________________________________
> > > >> 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
> >
> > --
> > Thanks,
> >
> > Sam Xi
> > Harvard University
> > Computer Science, Ph.D. Candidate
> > http://www.samxi.org
> > _______________________________________________
> > 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

-- 
Thanks,

Sam Xi
Harvard University
Computer Science, Ph.D. Candidate
http://www.samxi.org
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to