@@ -357,48 +357,27 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
357
357
addRegisterClass(MVT::f128, &AArch64::FPR128RegClass);
358
358
}
359
359
360
- if (Subtarget->isNeonAvailable()) {
361
- addRegisterClass(MVT::v16i8, &AArch64::FPR8RegClass);
362
- addRegisterClass(MVT::v8i16, &AArch64::FPR16RegClass);
363
- // Someone set us up the NEON.
364
- addDRTypeForNEON(MVT::v2f32);
365
- addDRTypeForNEON(MVT::v8i8);
366
- addDRTypeForNEON(MVT::v4i16);
367
- addDRTypeForNEON(MVT::v2i32);
368
- addDRTypeForNEON(MVT::v1i64);
369
- addDRTypeForNEON(MVT::v1f64);
370
- addDRTypeForNEON(MVT::v4f16);
371
- addDRTypeForNEON(MVT::v4bf16);
372
-
373
- addQRTypeForNEON(MVT::v4f32);
374
- addQRTypeForNEON(MVT::v2f64);
375
- addQRTypeForNEON(MVT::v16i8);
376
- addQRTypeForNEON(MVT::v8i16);
377
- addQRTypeForNEON(MVT::v4i32);
378
- addQRTypeForNEON(MVT::v2i64);
379
- addQRTypeForNEON(MVT::v8f16);
380
- addQRTypeForNEON(MVT::v8bf16);
381
- } else if (Subtarget->hasNEON() || Subtarget->useSVEForFixedLengthVectors()) {
360
+ if (Subtarget->hasNEON()) {
382
361
addRegisterClass(MVT::v16i8, &AArch64::FPR8RegClass);
383
362
addRegisterClass(MVT::v8i16, &AArch64::FPR16RegClass);
384
363
385
- addRegisterClass (MVT::v2f32, &AArch64::FPR64RegClass );
386
- addRegisterClass (MVT::v8i8, &AArch64::FPR64RegClass );
387
- addRegisterClass (MVT::v4i16, &AArch64::FPR64RegClass );
388
- addRegisterClass (MVT::v2i32, &AArch64::FPR64RegClass );
389
- addRegisterClass (MVT::v1i64, &AArch64::FPR64RegClass );
390
- addRegisterClass (MVT::v1f64, &AArch64::FPR64RegClass );
391
- addRegisterClass (MVT::v4f16, &AArch64::FPR64RegClass );
392
- addRegisterClass (MVT::v4bf16, &AArch64::FPR64RegClass );
393
-
394
- addRegisterClass (MVT::v4f32, &AArch64::FPR128RegClass );
395
- addRegisterClass (MVT::v2f64, &AArch64::FPR128RegClass );
396
- addRegisterClass (MVT::v16i8, &AArch64::FPR128RegClass );
397
- addRegisterClass (MVT::v8i16, &AArch64::FPR128RegClass );
398
- addRegisterClass (MVT::v4i32, &AArch64::FPR128RegClass );
399
- addRegisterClass (MVT::v2i64, &AArch64::FPR128RegClass );
400
- addRegisterClass (MVT::v8f16, &AArch64::FPR128RegClass );
401
- addRegisterClass (MVT::v8bf16, &AArch64::FPR128RegClass );
364
+ addDRType (MVT::v2f32);
365
+ addDRType (MVT::v8i8);
366
+ addDRType (MVT::v4i16);
367
+ addDRType (MVT::v2i32);
368
+ addDRType (MVT::v1i64);
369
+ addDRType (MVT::v1f64);
370
+ addDRType (MVT::v4f16);
371
+ addDRType (MVT::v4bf16);
372
+
373
+ addQRType (MVT::v4f32);
374
+ addQRType (MVT::v2f64);
375
+ addQRType (MVT::v16i8);
376
+ addQRType (MVT::v8i16);
377
+ addQRType (MVT::v4i32);
378
+ addQRType (MVT::v2i64);
379
+ addQRType (MVT::v8f16);
380
+ addQRType (MVT::v8bf16);
402
381
}
403
382
404
383
if (Subtarget->hasSVEorSME()) {
@@ -1358,7 +1337,7 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
1358
1337
// FADDP custom lowering
1359
1338
for (MVT VT : { MVT::v16f16, MVT::v8f32, MVT::v4f64 })
1360
1339
setOperationAction(ISD::FADD, VT, Custom);
1361
- } else {
1340
+ } else /* !isNeonAvailable */ {
1362
1341
for (MVT VT : MVT::fixedlen_vector_valuetypes()) {
1363
1342
for (unsigned Op = 0; Op < ISD::BUILTIN_OP_END; ++Op)
1364
1343
setOperationAction(Op, VT, Expand);
@@ -2059,14 +2038,16 @@ void AArch64TargetLowering::addTypeForFixedLengthSVE(MVT VT) {
2059
2038
setOperationAction(ISD::ZERO_EXTEND, VT, Default);
2060
2039
}
2061
2040
2062
- void AArch64TargetLowering::addDRTypeForNEON (MVT VT) {
2041
+ void AArch64TargetLowering::addDRType (MVT VT) {
2063
2042
addRegisterClass(VT, &AArch64::FPR64RegClass);
2064
- addTypeForNEON(VT);
2043
+ if (Subtarget->isNeonAvailable())
2044
+ addTypeForNEON(VT);
2065
2045
}
2066
2046
2067
- void AArch64TargetLowering::addQRTypeForNEON (MVT VT) {
2047
+ void AArch64TargetLowering::addQRType (MVT VT) {
2068
2048
addRegisterClass(VT, &AArch64::FPR128RegClass);
2069
- addTypeForNEON(VT);
2049
+ if (Subtarget->isNeonAvailable())
2050
+ addTypeForNEON(VT);
2070
2051
}
2071
2052
2072
2053
EVT AArch64TargetLowering::getSetCCResultType(const DataLayout &,
0 commit comments