Does any one have {data on} or a pointer to {literature on} ST
to LD forwarding occurrences that isolate any of the following
patterns::
ST Rs,[Rbase+smallDisp]
...
LD Rl,[Rbase+smallDisp]
where Rbase is the 5-bit register specifier (not value), and:
ST-Rbase is the same as LD-Rbase AND (of course)
ST-smallDisp == LD-smallDISP,
Where ST-Rbase is different than LD-Rbase but forwarding
happens none-the-less,
Where ST-Rbase is the same as LD-Rbase, but Rbase has been
modified between ST and LD but forwarding happens none-the-
less,
ST Rs,[Rbase+Rindex<<scale+smallDisp]
...
LD Rl,[Rbase+Rindex<<scale+smallDisp]
Where ST-Rbase is the same as LD-Rbase but
St-Rindex is different than LD-Rindex but
forwarding happens none-the-less,
Where ST-Rbase is the same as LD-Rbase but Rbase has been
modified between ST and LD but forwarding happens none-the-
less,
Where ST-Rindex is the same as LD-Rindex but Rindex has been
modified between ST and LD but forwarding happens none-the-
less,
Does any one have {data on} or a pointer to {literature on} ST
to LD forwarding occurrences that isolate any of the following
patterns::
ST Rs,[Rbase+smallDisp]
...
LD Rl,[Rbase+smallDisp]
where Rbase is the 5-bit register specifier (not value), and:
ST-Rbase is the same as LD-Rbase AND (of course)
ST-smallDisp == LD-smallDISP,
Where ST-Rbase is different than LD-Rbase but forwarding
happens none-the-less,
Where ST-Rbase is the same as LD-Rbase, but Rbase has been
modified between ST and LD but forwarding happens none-the-
less,
ST Rs,[Rbase+Rindex<<scale+smallDisp]
...
LD Rl,[Rbase+Rindex<<scale+smallDisp]
Where ST-Rbase is the same as LD-Rbase but
St-Rindex is different than LD-Rindex but
forwarding happens none-the-less,
Where ST-Rbase is the same as LD-Rbase but Rbase has been
modified between ST and LD but forwarding happens none-the-
less,
Where ST-Rindex is the same as LD-Rindex but Rindex has been
modified between ST and LD but forwarding happens none-the-
less,
???
Thanks
Mitch
MitchAlsup <user5857@newsgrouper.org.invalid> schrieb:
Does any one have {data on} or a pointer to {literature on} ST
to LD forwarding occurrences that isolate any of the following
patterns::
ST Rs,[Rbase+smallDisp]
...
LD Rl,[Rbase+smallDisp]
where Rbase is the 5-bit register specifier (not value), and:
ST-Rbase is the same as LD-Rbase AND (of course)
ST-smallDisp == LD-smallDISP,
Where ST-Rbase is different than LD-Rbase but forwarding
happens none-the-less,
Where ST-Rbase is the same as LD-Rbase, but Rbase has been
modified between ST and LD but forwarding happens none-the-
less,
ST Rs,[Rbase+Rindex<<scale+smallDisp]
...
LD Rl,[Rbase+Rindex<<scale+smallDisp]
Where ST-Rbase is the same as LD-Rbase but
St-Rindex is different than LD-Rindex but
forwarding happens none-the-less,
Where ST-Rbase is the same as LD-Rbase but Rbase has been
modified between ST and LD but forwarding happens none-the-
less,
Where ST-Rindex is the same as LD-Rindex but Rindex has been
modified between ST and LD but forwarding happens none-the-
less,
Could this be memory renaming?
https://www.researchgate.net/publication/2504540_Memory_Renaming_Fast_Early_and_Accurate_Processing_of_Memory_Communication
is an older article, Agner Fog wrote something about
something similar in "Mirroring memory operands" in https://agner.org/optimize/microarchitecture.pdf .
HTH (somewhat).--- Synchronet 3.21a-Linux NewsLink 1.2
MitchAlsup wrote:
Does any one have {data on} or a pointer to {literature on} ST
to LD forwarding occurrences that isolate any of the following
patterns::
ST Rs,[Rbase+smallDisp]
...
LD Rl,[Rbase+smallDisp]
where Rbase is the 5-bit register specifier (not value), and:
ST-Rbase is the same as LD-Rbase AND (of course)
ST-smallDisp == LD-smallDISP,
Where ST-Rbase is different than LD-Rbase but forwarding
happens none-the-less,
Where ST-Rbase is the same as LD-Rbase, but Rbase has been
modified between ST and LD but forwarding happens none-the-
less,
ST Rs,[Rbase+Rindex<<scale+smallDisp]
...
LD Rl,[Rbase+Rindex<<scale+smallDisp]
Where ST-Rbase is the same as LD-Rbase but
St-Rindex is different than LD-Rindex but
forwarding happens none-the-less,
Where ST-Rbase is the same as LD-Rbase but Rbase has been
modified between ST and LD but forwarding happens none-the-
less,
Where ST-Rindex is the same as LD-Rindex but Rindex has been
modified between ST and LD but forwarding happens none-the-
less,
???
Thanks
Mitch
There are tons of papers on various aspects of store to load forwarding.
You appear to be interested in detecting not when the ST and LD address
are the same but whether registers have changed but give the same address.
Are you thinking of ST-LD elimination, where a push forwards to a pop
and the ST and LD to the stack memory can be eliminated?
Yes, I want to do the ST-LD earlier than AGEN and/or use fewer
Sysop: | DaiTengu |
---|---|
Location: | Appleton, WI |
Users: | 1,070 |
Nodes: | 10 (0 / 10) |
Uptime: | 127:40:24 |
Calls: | 13,731 |
Calls today: | 1 |
Files: | 186,965 |
D/L today: |
1,257 files (486M bytes) |
Messages: | 2,417,820 |