mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
[ARM] Fast-Isel was incorrectly selecting <2 x double> adds.
With neon enabled, we reach SelectBinaryFPOp and are able to get registers for a <2 x double> add. However, we shouldn't actually attempt arithmetic on it as ARMIselLowering says "v2f64 is legal so that QR subregs can be extracted as f64 elements, but neither Neon nor VFP support any arithmetic operations on it." This commit disables SelectBinaryFPOp for any vector types. There's already a FIXME to try handle neon. Doing so would require fixing this conditional which isn't safe for vectors 'VT == MVT::f64 || VT == MVT::i64' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236609 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1794,6 +1794,10 @@ bool ARMFastISel::SelectBinaryFPOp(const Instruction *I, unsigned ISDOpcode) {
|
||||
if (!FPVT.isSimple()) return false;
|
||||
MVT VT = FPVT.getSimpleVT();
|
||||
|
||||
// FIXME: Support vector types where possible.
|
||||
if (VT.isVector())
|
||||
return false;
|
||||
|
||||
// We can get here in the case when we want to use NEON for our fp
|
||||
// operations, but can't figure out how to. Just use the vfp instructions
|
||||
// if we have them.
|
||||
|
Reference in New Issue
Block a user