forked from M-Labs/artiq
8a908a7656
First, this calling convention doesn't actually exist in OR1K and trying to use it in Asserts build causes an UNREACHABLE. Second, I tried to introduce it and it does not appear to produce any measurable benefit: not only OR1K has a ton of CSRs but also it is quite hard, if not realistically impossible, to produce the kind of register pressure that would be relieved by sparing a few more CSRs for our exception raising function calls, since temporaries don't have to be preserved before a noreturn call and spilling over ten registers across an exceptional edge is not something that the code we care about would do. Third, it produces measurable drawbacks: it inflates code size of check:* functions by adding spills. Of course, this could be alleviated by making __artiq_raise coldcc as well, but what's the point anyway? |
||
---|---|---|
.. | ||
algorithms | ||
analyses | ||
testbench | ||
transforms | ||
validators | ||
__init__.py | ||
asttyped.py | ||
builtins.py | ||
embedding.py | ||
iodelay.py | ||
ir.py | ||
module.py | ||
prelude.py | ||
targets.py | ||
types.py |