Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Event Timeline
llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp | ||
---|---|---|
1213 | doesn't SmallVector need an initial size? | |
1233 | I think CTPOP is only used here? Maybe it's a little cleaner to move it and related stuff down near it. | |
1240 | I don't think you should have to do this here, since we're before register bank selection? | |
1246 | Logic here is getting a little complex. Maybe this? if (Ty.isScalar() && Size == 64) MIRBuilder.buildZExt(Dst, UADD); else UADD->getOperand(0).setReg(Dst); | |
1254 | This shouldn't be necessary since we haven't selected regbanks yet. |
llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp | ||
---|---|---|
1213 | Sean Silva recently added a default to it: https://reviews.llvm.org/D92522 | |
1233 | I wanted to keep HAdds near where it was used. | |
1240 | MachineVerifier seems to expect them just after legalization: *** Bad machine code: Virtual register does not match instruction constraint *** - function: s32_lower - basic block: %bb.0 (0x7fba998570c8) - instruction: %ctpop:_(s32) = UADDLVv8i8v %4:_(<8 x s8>) - operand 0: %ctpop:_ Expect register class FPR16 but got nothing | |
1246 | ๐ |
llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp | ||
---|---|---|
1240 | ah, yeah I guess it's cause it's not a generic instr. :/ Maybe it would make sense to add a G_UADDLV generic instruction to avoid emitting target instrs. IIRC we import tablegen patterns for the uaddlv intrinsic allowing us to select it easily. Maybe if we had a generic instruction, we could do something similar. |
llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp | ||
---|---|---|
1240 | maybe I ought to just use the intrinsics then |
clang-format: please reformat the code