Code Monkey home page Code Monkey logo

gem5-avx's People

Stargazers

hideaway_cs avatar  avatar Liu Yanzhao avatar  avatar HAOYU  LI avatar Yang Yang avatar Khushboo Rani avatar Jingyao Zhang avatar Preet Derasari avatar  avatar Masanori Ogino avatar Hanrui Wang avatar

Watchers

James Cloos avatar Zhengrong Wang avatar  avatar

gem5-avx's Issues

PrintReg assertion failure for microop `vclear`

I was running an AVX2 code with VXORPD_XMM_XMM instruction with O3CPUAll debug flag on to trace the pipeline execution. And I hit an assertion failure at here (in X86StaticInst::printReg):

assert(size == 1 || size == 2 || size == 4 || size == 8 ||
size == 16 || size == 32 || size == 64);

I noticed that this instruction is decoded to three microops including the vclear microop to clear the higher bits. The assertion failure is caused by the vclear due to the destSize is 0 (which is not assigned in the microop).

The calling path is as follows:
disassemble(thisPC.instAddr()) -> generateDisassembly(pc, symtab) -> printDestReg(response, 0, destSize); -> printReg(os, destRegIdx(reg), size); -> assert(...);

I wondered if I am doing the right thing? If so, whether the assertion condition should be changed, or the vclear microop and the macroop to microop conversion should be updated?

Does _mm512_store_ps() only support store data in the stack?

Hi, All:

Thanks for the great work for supporting avx in gem5.

Today, I have met a problem when I run the example of avx_test.
If _mm512_store_ps() is used to store an _mm512 variable into the main memory.
The code is like below:

float a= (float *)aligned_malloc(64, 16); _mm512 b; _mm512_store_ps(a,b);

The gem5 reported an error: panic: Unrecognized/invalid instruction executed:
panic: Unrecognized/invalid instruction executed:

{
leg = 0x10,
rex = 0,
evex = 0x842,
op = {
type = two byte,
op = 0xef,
},
modRM = 0xe4,
sib = 0,
immediate = 0,
displacement = 0
dispSize = 0}
Memory Usage: 8566948 KBytes
Program aborted at tick 17968375710
Then the simulation is terminated.

But if I change it into the following code:

void func(){
float a[16];
__mm512 b;
_mm512_store_ps(a,b);
}

It works fine.

Do you have any clue about why it happens and how to fix it?

Thanks in advance.

Best,
Dong

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.