This is an archive of the discontinued LLVM Phabricator instance.

[RISCV] Add support for integer fixed vector setcc
ClosedPublic

Authored by craig.topper on Feb 10 2021, 12:06 PM.

Details

Summary

I believe I've covered all orderings of splat operands here. Better
canonicalization in lowering might help reduce this. I did not handle
the immediate adjustments needed for set(u)gt/set(u)lt.

Testing here is limited to byte types because the scalable vector
type used for masks for the store is calculated assuming 8 byte
elements. But for the setcc its based on the element count of the
container type for the setcc input. So they don't agree. We'll need
to enhanced D96352 to handle this I think.

Diff Detail

Event Timeline

craig.topper created this revision.Feb 10 2021, 12:06 PM
craig.topper requested review of this revision.Feb 10 2021, 12:06 PM
Herald added a project: Restricted Project. · View Herald TranscriptFeb 10 2021, 12:06 PM
Herald added a subscriber: MaskRay. · View Herald Transcript

Add mask load pattern even though its not tested. I think I'll try to split this patch up.

Remove masked load/store handling. That's been moved to another patch

craig.topper retitled this revision from [RISCV] Add support for integer fixed vector setcc and storing a mask vector. to [RISCV] Add support for integer fixed vector setcc.Feb 10 2021, 7:27 PM
craig.topper edited the summary of this revision. (Show Details)
This revision is now accepted and ready to land.Feb 11 2021, 7:56 AM

Use the splat ComplexPatterns that were updated for vmv_v_x_vl in the integer binary operation patch.

This revision was landed with ongoing or failed builds.Feb 12 2021, 9:30 AM
This revision was automatically updated to reflect the committed changes.