You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The problem here is that %0:_(<19 x s32>) = G_BUILD_VECTOR is not legal for <19 x s32>
while the user of %0:_(<19 x s32>) is legal for <19 x s32>. User is G_BITCAST
%20:_(<38 x s16>) = G_BITCAST %0:_(<19 x s32>)
%32:_(<19 x s32>) = G_BITCAST %20:_(<38 x s16>)
G_BUILD_VECTOR waits for user to get legalized, legalization process should create G_UNMERGE_VALUES (<19 x s32>) and this two should be combined away.
Note: artifact combiner is not allowed to look through G_BITCAST so G_BITCAST has to be legalized by the target.
The not allowed to look through comes from how G_BITCAST was described in globalisel documentation if I remember correctly.
In summary G_BITCAST should not be legal for <19 x s32> and <38 x s16>
Good first step is to first properly list all all legal types.
There is a PR that tried to implement this #68189
… types, instead of checking bit width. (#68189)
In D151116 it was suggested to have a set of classes to cover every
possible case. This does it for bitcast first.
closes#79578
The text was updated successfully, but these errors were encountered: