Git Product home page Git Product logo

Comments (4)

wysiwyng avatar wysiwyng commented on June 29, 2024

As I see it, this problem is caused by the recent commits removing static scalars (which of course was necessary due to other issues). A quick fix would be to add an attribute to scalars, allowing manual specification whether a scalar should be treated as non-static. In the long run, the staticness detection of scalars has to be implemented correctly of course.

Changing the CoreDSL files is not that big of a problem, as long as the functionality stays the same.

I tried some stuff with the suggested double (static and non-static) assignments already and came to no satisfying result.

Another more fundamental problem I see here is that ETISS simply does not support the case of register accesses where the index is only known at runtime. Perhaps this should also be an issue over on that repository, @rafzi do you have some comments regarding this?

from m2-isa-r.

fpedd avatar fpedd commented on June 29, 2024

In the long run, the staticness detection of scalars has to be implemented correctly of course.

Do you have any concrete idea or concept on how to do that? Or can you recommend any good resources I can also have a look at to get an idea of what you have in mind? Thanks in advance :)

Changing the CoreDSL files is not that big of a problem, as long as the functionality stays the same.

I would see that as the most sensible solution for now.

I tried some stuff with the suggested double (static and non-static) assignments already and came to no satisfying result.

Let me know if I can help you in any way by coming up with solutions or testing stuff.

I just want to point out that the CoreDSL referenced in #3 requires M2-ISA-R to be able to handle such statements. So we need a different solution in the long run. Particularly since the backend won't change significantly for M2-ISA-R CoreDSL 2.0.

Another more fundamental problem I see here is that ETISS simply does not support the case of register accesses where the index is only known at runtime. Perhaps this should also be an issue over on that repository, @rafzi do you have some comments regarding this?

But is that even required? Are there any instructions for which the register index is not known at compile-time?

from m2-isa-r.

wysiwyng avatar wysiwyng commented on June 29, 2024

Do you have any concrete idea or concept on how to do that?

At the moment not really, but probably something along the lines of full static code analysis will be required. The current static detection logic is rather dumb, it does not take scoping into account properly.

I will probably try the double assignments again, this sounds (at least for now) the easiest to implement. I will again have to check whether this works with scoping though.

But is that even required?

Not yet, but it is possible in theory. Another example here: ARM has load / store multiple instructions, which can currently only be implemented as multiple repeated statements and not as loop.

from m2-isa-r.

rafzi avatar rafzi commented on June 29, 2024

Another more fundamental problem I see here is that ETISS simply does not support the case of register accesses where the index is only known at runtime. Perhaps this should also be an issue over on that repository, @rafzi do you have some comments regarding this?

This probably would never make sense in an ISA. It'd be horrible for pipelining and many other microarchitectural optimizations.

So it should be safe to assume that the expressions indexing registers are always statically resolvable. However, this might of course get quite complex in some cases like the ARM instructions that reference multiple registers.

from m2-isa-r.

Related Issues (19)

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.