@@ -5279,25 +5279,31 @@ SDValue AArch64TargetLowering::LowerALIAS_LANE_MASK(SDValue Op,
5279
5279
unsigned IntrinsicID = 0;
5280
5280
uint64_t EltSize = Op.getOperand(2)->getAsZExtVal();
5281
5281
bool IsWriteAfterRead = Op.getOperand(3)->getAsZExtVal() == 1;
5282
- IntrinsicID = IsWriteAfterRead ? Intrinsic::aarch64_sve_whilewr
5283
- : Intrinsic::aarch64_sve_whilerw;
5284
5282
EVT VT = Op.getValueType();
5285
5283
MVT SimpleVT = VT.getSimpleVT();
5286
5284
// Make sure that the promoted mask size and element size match
5287
5285
switch (EltSize) {
5288
5286
case 1:
5287
+ IntrinsicID = IsWriteAfterRead ? Intrinsic::aarch64_sve_whilewr_b
5288
+ : Intrinsic::aarch64_sve_whilerw_b;
5289
5289
assert((SimpleVT == MVT::v16i8 || SimpleVT == MVT::nxv16i1) &&
5290
5290
"Unexpected mask or element size");
5291
5291
break;
5292
5292
case 2:
5293
+ IntrinsicID = IsWriteAfterRead ? Intrinsic::aarch64_sve_whilewr_h
5294
+ : Intrinsic::aarch64_sve_whilerw_h;
5293
5295
assert((SimpleVT == MVT::v8i8 || SimpleVT == MVT::nxv8i1) &&
5294
5296
"Unexpected mask or element size");
5295
5297
break;
5296
5298
case 4:
5299
+ IntrinsicID = IsWriteAfterRead ? Intrinsic::aarch64_sve_whilewr_s
5300
+ : Intrinsic::aarch64_sve_whilerw_s;
5297
5301
assert((SimpleVT == MVT::v4i16 || SimpleVT == MVT::nxv4i1) &&
5298
5302
"Unexpected mask or element size");
5299
5303
break;
5300
5304
case 8:
5305
+ IntrinsicID = IsWriteAfterRead ? Intrinsic::aarch64_sve_whilewr_d
5306
+ : Intrinsic::aarch64_sve_whilerw_d;
5301
5307
assert((SimpleVT == MVT::v2i32 || SimpleVT == MVT::nxv2i1) &&
5302
5308
"Unexpected mask or element size");
5303
5309
break;
0 commit comments