Displaying 8 results from an estimated 8 matches for "mri_mustmod".
2017 Oct 10
4
Expose aliasing information in getModRefInfo (or viceversa?)
...ite: start lattice at
> bottom, set to top.
>
> What I was trying, that *somewhat* made sense:
> enum ModRefInfo {
> MRI_NoModRef = 0,
> MRI_Ref = 1,
> MRI_Mod = 2,
> MRI_ModRef = MRI_Ref | MRI_Mod,
> MRI_Must = 4,
> MRI_MustRef = MRI_Ref | MRI_Must,
> MRI_MustMod = MRI_Mod | MRI_Must,
> MRI_MustModRef = MRI_ModRef | MRI_Must
> };
> // + shift values in FunctionModRefLocation to 8, 16, 32.
>
> Recursive masking of MRI_Ref/MRI_Mod would get replaced by
> MRI_MustRef/MRI_MustMod.
> But the top of the lattice is still MRI_ModRef.
> Whi...
2017 Nov 28
1
Expose aliasing information in getModRefInfo (or viceversa?)
...> ’t know enough about this specific code to help with this respect.
>>
>>
>>
>> My concern was with the users of getModReg(). In your new proposal,
>> doing & on the result of getModRef() may yield unexpected results.
>>
>> E.g., “getModRef() & MRI_MustMod != 0” doesn’t imply that the
>> instruction will write because the result might have been MRI_Mod (=
>> NoModRef | MustMod).
>>
>> As long as this fact is properly document, I’m good :) (btw, thanks for
>> fixing the documentation of the old MRI_* values; it was reall...
2017 Oct 10
2
Expose aliasing information in getModRefInfo (or viceversa?)
...is
conservative) and then preserving it, so the opposite: start lattice at
bottom, set to top.
What I was trying, that *somewhat* made sense:
enum ModRefInfo {
MRI_NoModRef = 0,
MRI_Ref = 1,
MRI_Mod = 2,
MRI_ModRef = MRI_Ref | MRI_Mod,
MRI_Must = 4,
MRI_MustRef = MRI_Ref | MRI_Must,
MRI_MustMod = MRI_Mod | MRI_Must,
MRI_MustModRef = MRI_ModRef | MRI_Must
};
// + shift values in FunctionModRefLocation to 8, 16, 32.
Recursive masking of MRI_Ref/MRI_Mod would get replaced by
MRI_MustRef/MRI_MustMod.
But the top of the lattice is still MRI_ModRef.
While the implementation details *may* be...
2017 Oct 10
2
Expose aliasing information in getModRefInfo (or viceversa?)
...s of a set of things, we could do the same
If we determine it's a must-alias of the live on entry def, etc
If I understand correctly, the necessary info for fp in this example is:
isMustAlias (CallSite argument a, Value a) && getModRefBehavior(CallSite)==
onlyReadsMemory.
So adding a MRI_MustMod is insufficient?
Are we instead looking to set a MRI_Must bit, disjunct of MRI_Mod, and test
for MRI_Ref&MRI_Must or MRI_Mod&MRI_Must?
In getModRefInfo(CS, Loc), the MRI_Must bit would then be set if
doesAccessArgPointees and ArgAlias == MustAlias for all Args, which seems
correct.
I may...
2017 Oct 09
3
Expose aliasing information in getModRefInfo (or viceversa?)
...adInst *LI, MemoryLocation Loc, bool
SetAliasResultField);
Add wrapper APIs to preserve current calls.
e.g.:
ModRefInfo getModRefInfo (LoadInst *LI, MemoryLocation Loc) {
return getModRefInfoAlias (LI, Loc, false).MRI;
}
(b) From talking offline with George, introducing a MRI_MustMod in
ModRefInfo.
Open question: How to handle callsites.
In terms of whether this is worth doing, as a preliminary timing test I
timed the llvm bootstrap build with 1 vs 2 alias calls in D38569:
instructionClobbersQuery:296, and got the following:
2 alias calls:
real 62m52.627s
user 2769m46...
2017 Oct 10
2
Expose aliasing information in getModRefInfo (or viceversa?)
...s.
>>>> e.g.:
>>>> ModRefInfo getModRefInfo (LoadInst *LI, MemoryLocation Loc) {
>>>> return getModRefInfoAlias (LI, Loc, false).MRI;
>>>> }
>>>>
>>>> (b) From talking offline with George, introducing a MRI_MustMod in
>>>> ModRefInfo.
>>>>
>>>>
>>>> Open question: How to handle callsites.
>>>>
>>>>
>>>> In terms of whether this is worth doing, as a preliminary timing test I
>>>> timed the llvm bootstrap build with...
2017 Oct 09
2
Expose aliasing information in getModRefInfo (or viceversa?)
...t;> Add wrapper APIs to preserve current calls.
>> e.g.:
>> ModRefInfo getModRefInfo (LoadInst *LI, MemoryLocation Loc) {
>> return getModRefInfoAlias (LI, Loc, false).MRI;
>> }
>>
>> (b) From talking offline with George, introducing a MRI_MustMod in
>> ModRefInfo.
>>
>>
>> Open question: How to handle callsites.
>>
>>
>> In terms of whether this is worth doing, as a preliminary timing test I
>> timed the llvm bootstrap build with 1 vs 2 alias calls in D38569:
>> instructionClobbersQuery:...
2017 Oct 09
1
Expose aliasing information in getModRefInfo (or viceversa?)
...;
> Add wrapper APIs to preserve current calls.
> e.g.:
> ModRefInfo getModRefInfo (LoadInst *LI, MemoryLocation Loc) {
> return getModRefInfoAlias (LI, Loc, false).MRI;
> }
>
> (b) From talking offline with George, introducing a MRI_MustMod in
> ModRefInfo.
>
>
> Open question: How to handle callsites.
>
>
> In terms of whether this is worth doing, as a preliminary timing
> test I timed the llvm bootstrap build with 1 vs 2 alias calls in
> D38569: instructionClobbersQuery:296, and got the...