Changes
Summary
- [x86] add tests for fneg IR with undef; NFC
- [AArch64][GlobalISel] Use fcsel instead of csel for G_SELECT on FPRs This saves us some unnecessary copies. If the inputs to a G_SELECT are floating point, we should use fcsel rather than csel. Changes here are... - Teach selectCopy about s1-to-s1 copies across register banks. - AArch64RegisterBankInfo about G_SELECT in general. - Teach the instruction selector about the FCSEL instructions. Also add two tests: - select-select.mir to show that we get the expected FCSEL - regbank-select.mir (unfortunately named) to show the register banks on G_SELECT are properly preserved And update fast-isel-select.ll to show that we do the same thing as other instruction selectors in these cases.
Change Type | Path in Repository | Path in Workspace |
---|---|---|
![]() | /llvm/trunk/test/CodeGen/X86/vec_fneg.ll | trunk/test/CodeGen/X86/vec_fneg.ll |
Change Type | Path in Repository | Path in Workspace |
![]() | /llvm/trunk/lib/Target/AArch64/AArch64InstructionSelector.cpp | trunk/lib/Target/AArch64/AArch64InstructionSelector.cpp |
![]() | /llvm/trunk/lib/Target/AArch64/AArch64RegisterBankInfo.cpp | trunk/lib/Target/AArch64/AArch64RegisterBankInfo.cpp |
![]() | /llvm/trunk/test/CodeGen/AArch64/GlobalISel/regbank-select.mir | trunk/test/CodeGen/AArch64/GlobalISel/regbank-select.mir |
![]() | /llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-select.mir | trunk/test/CodeGen/AArch64/GlobalISel/select-select.mir |
![]() | /llvm/trunk/test/CodeGen/AArch64/fast-isel-select.ll | trunk/test/CodeGen/AArch64/fast-isel-select.ll |