Stephen Williams <[EMAIL PROTECTED]> writes:
> This has nothing to do with sign. The real problem here, now that I
> look at it, is that there is apparently an 'x' or 'z' in a constant
> memory address vector.


[EMAIL PROTECTED] said:
> The %ix/load loads a negative memory index (-4).  The actual memory
> reference is supposed to yield 4'hx, since there is no mem[1].  This
> is all correct, except that the vvp parser does not like negative
> integers.

I see your point. However, your workaround of changing unsigned longs
to unsigned int is not really a fix. I see some potential issues here:

1) Thread index registers can hold *signed*long* values. However,

2) memory addresses are normalized and cannot be <0.

In this case, it seems to me that the proper solution is to notice
that the *constant* index is outside the range of the memory and elide
the memory access completely. This fixes the problem *and* improves
the performance of the generated code.

There may come a time when the vvp parser needs to learn about signed
numbers, at least for loading index registers, but this bug can be
handled better without that sort of change.
-- 
Steve Williams                "The woods are lovely, dark and deep.
steve at icarus.com           But I have promises to keep,
steve at picturel.com         and lines to code before I sleep,
http://www.picturel.com       And lines to code before I sleep."


Reply via email to