This change enable the divergence driven selection for the SEXT DAG opcode.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Test name is misleading, this should just go in the realgar sext test. Also I would expect this to already be well covered
This is not covered properly. Most of the tests except those I have already updated assume that we select everything to scalars and rely on the latest SIFixSGPRCopies moveToVALU.
Also, their names are misleading as well:
sext-eliminate.ll - eliminate what? sext-in-reg - it contains a couple of tests that are not scalar but they're testing some special conditions.
My test checks specifically the functionality added by the change - proper selection of i16 to i32 uniform/divergent and i16 to i64 uniform/divergent.
As for the name: does sext-divergence-driven-selection.ll looks better?
Also, I would prefer to have the tests checking divergence driven ISel separately until we remove moveToVALU path completely. Otherwise I always should expect someone accidentally removing selection predicates that generates no errors but silently go through the moveToVALU.
This is an optimization test
sext-in-reg - it contains a couple of tests that are not scalar but they're testing some special conditions.
sext_inreg is a different opcode. You're looking for sign_extend.ll
My test checks specifically the functionality added by the change - proper selection of i16 to i32 uniform/divergent and i16 to i64 uniform/divergent.
As for the name: does sext-divergence-driven-selection.ll looks better?
Also, I would prefer to have the tests checking divergence driven ISel separately until we remove moveToVALU path completely. Otherwise I always should expect someone accidentally removing selection predicates that generates no errors but silently go through the moveToVALU.