Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td | ||
---|---|---|
451–452 | Are you sure these produce the same result? It looks like the input pattern sets the result of inactive lanes to zero but CNOT_ZPmZ_B will set them to whatever is in $Op2. Perhaps the pattern should be restricted to all active predicates. Is it possible to add these patterns to the PatFrags used to define AArch64cnot_mt? |
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td | ||
---|---|---|
451–452 |
Good spot! I've updated the patterns to only match all active predicate.
I can't figure out how to express the all active predicate restriction in a PatFrag, happy to make the change if you know how. |
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td | ||
---|---|---|
451–452 | Fair enough. With the all active restriction they're not really the same thing anymore so my PatFrag idea goes out of the window. | |
459 | Here you should be able to use (SVEAllActive):$Pg that will catch more cases whilst also enabling you to use $Pg in place of (PTRUE_# 31). |
Are you sure these produce the same result? It looks like the input pattern sets the result of inactive lanes to zero but CNOT_ZPmZ_B will set them to whatever is in $Op2. Perhaps the pattern should be restricted to all active predicates.
Is it possible to add these patterns to the PatFrags used to define AArch64cnot_mt?