@@ -1337,6 +1337,9 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
1337
1337
setOperationAction(ISD::AVGFLOORU, VT, Custom);
1338
1338
setOperationAction(ISD::AVGCEILS, VT, Custom);
1339
1339
setOperationAction(ISD::AVGCEILU, VT, Custom);
1340
+
1341
+ if (!Subtarget->isLittleEndian())
1342
+ setOperationAction(ISD::BITCAST, VT, Expand);
1340
1343
}
1341
1344
1342
1345
// Illegal unpacked integer vector types.
@@ -1486,6 +1489,9 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
1486
1489
setCondCodeAction(ISD::SETUGT, VT, Expand);
1487
1490
setCondCodeAction(ISD::SETUEQ, VT, Expand);
1488
1491
setCondCodeAction(ISD::SETONE, VT, Expand);
1492
+
1493
+ if (!Subtarget->isLittleEndian())
1494
+ setOperationAction(ISD::BITCAST, VT, Expand);
1489
1495
}
1490
1496
1491
1497
for (auto VT : {MVT::nxv2bf16, MVT::nxv4bf16, MVT::nxv8bf16}) {
@@ -1495,6 +1501,9 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
1495
1501
setOperationAction(ISD::MLOAD, VT, Custom);
1496
1502
setOperationAction(ISD::INSERT_SUBVECTOR, VT, Custom);
1497
1503
setOperationAction(ISD::SPLAT_VECTOR, VT, Legal);
1504
+
1505
+ if (!Subtarget->isLittleEndian())
1506
+ setOperationAction(ISD::BITCAST, VT, Expand);
1498
1507
}
1499
1508
1500
1509
setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::i8, Custom);
0 commit comments