@@ -5296,7 +5296,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5296
5296
}
5297
5297
case Intrinsic::aarch64_sve_ld1_pn_x2: {
5298
5298
if (VT == MVT::nxv16i8) {
5299
- if (Subtarget->hasSME2 ())
5299
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5300
5300
SelectContiguousMultiVectorLoad (
5301
5301
Node, 2 , 0 , AArch64::LD1B_2Z_IMM_PSEUDO, AArch64::LD1B_2Z_PSEUDO);
5302
5302
else if (Subtarget->hasSVE2p1 ())
@@ -5307,7 +5307,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5307
5307
return ;
5308
5308
} else if (VT == MVT::nxv8i16 || VT == MVT::nxv8f16 ||
5309
5309
VT == MVT::nxv8bf16) {
5310
- if (Subtarget->hasSME2 ())
5310
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5311
5311
SelectContiguousMultiVectorLoad (
5312
5312
Node, 2 , 1 , AArch64::LD1H_2Z_IMM_PSEUDO, AArch64::LD1H_2Z_PSEUDO);
5313
5313
else if (Subtarget->hasSVE2p1 ())
@@ -5317,7 +5317,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5317
5317
break ;
5318
5318
return ;
5319
5319
} else if (VT == MVT::nxv4i32 || VT == MVT::nxv4f32) {
5320
- if (Subtarget->hasSME2 ())
5320
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5321
5321
SelectContiguousMultiVectorLoad (
5322
5322
Node, 2 , 2 , AArch64::LD1W_2Z_IMM_PSEUDO, AArch64::LD1W_2Z_PSEUDO);
5323
5323
else if (Subtarget->hasSVE2p1 ())
@@ -5327,7 +5327,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5327
5327
break ;
5328
5328
return ;
5329
5329
} else if (VT == MVT::nxv2i64 || VT == MVT::nxv2f64) {
5330
- if (Subtarget->hasSME2 ())
5330
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5331
5331
SelectContiguousMultiVectorLoad (
5332
5332
Node, 2 , 3 , AArch64::LD1D_2Z_IMM_PSEUDO, AArch64::LD1D_2Z_PSEUDO);
5333
5333
else if (Subtarget->hasSVE2p1 ())
@@ -5341,7 +5341,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5341
5341
}
5342
5342
case Intrinsic::aarch64_sve_ld1_pn_x4: {
5343
5343
if (VT == MVT::nxv16i8) {
5344
- if (Subtarget->hasSME2 ())
5344
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5345
5345
SelectContiguousMultiVectorLoad (
5346
5346
Node, 4 , 0 , AArch64::LD1B_4Z_IMM_PSEUDO, AArch64::LD1B_4Z_PSEUDO);
5347
5347
else if (Subtarget->hasSVE2p1 ())
@@ -5352,7 +5352,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5352
5352
return ;
5353
5353
} else if (VT == MVT::nxv8i16 || VT == MVT::nxv8f16 ||
5354
5354
VT == MVT::nxv8bf16) {
5355
- if (Subtarget->hasSME2 ())
5355
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5356
5356
SelectContiguousMultiVectorLoad (
5357
5357
Node, 4 , 1 , AArch64::LD1H_4Z_IMM_PSEUDO, AArch64::LD1H_4Z_PSEUDO);
5358
5358
else if (Subtarget->hasSVE2p1 ())
@@ -5362,7 +5362,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5362
5362
break ;
5363
5363
return ;
5364
5364
} else if (VT == MVT::nxv4i32 || VT == MVT::nxv4f32) {
5365
- if (Subtarget->hasSME2 ())
5365
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5366
5366
SelectContiguousMultiVectorLoad (
5367
5367
Node, 4 , 2 , AArch64::LD1W_4Z_IMM_PSEUDO, AArch64::LD1W_4Z_PSEUDO);
5368
5368
else if (Subtarget->hasSVE2p1 ())
@@ -5372,7 +5372,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5372
5372
break ;
5373
5373
return ;
5374
5374
} else if (VT == MVT::nxv2i64 || VT == MVT::nxv2f64) {
5375
- if (Subtarget->hasSME2 ())
5375
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5376
5376
SelectContiguousMultiVectorLoad (
5377
5377
Node, 4 , 3 , AArch64::LD1D_4Z_IMM_PSEUDO, AArch64::LD1D_4Z_PSEUDO);
5378
5378
else if (Subtarget->hasSVE2p1 ())
@@ -5386,7 +5386,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5386
5386
}
5387
5387
case Intrinsic::aarch64_sve_ldnt1_pn_x2: {
5388
5388
if (VT == MVT::nxv16i8) {
5389
- if (Subtarget->hasSME2 ())
5389
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5390
5390
SelectContiguousMultiVectorLoad (Node, 2 , 0 ,
5391
5391
AArch64::LDNT1B_2Z_IMM_PSEUDO,
5392
5392
AArch64::LDNT1B_2Z_PSEUDO);
@@ -5398,7 +5398,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5398
5398
return ;
5399
5399
} else if (VT == MVT::nxv8i16 || VT == MVT::nxv8f16 ||
5400
5400
VT == MVT::nxv8bf16) {
5401
- if (Subtarget->hasSME2 ())
5401
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5402
5402
SelectContiguousMultiVectorLoad (Node, 2 , 1 ,
5403
5403
AArch64::LDNT1H_2Z_IMM_PSEUDO,
5404
5404
AArch64::LDNT1H_2Z_PSEUDO);
@@ -5409,7 +5409,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5409
5409
break ;
5410
5410
return ;
5411
5411
} else if (VT == MVT::nxv4i32 || VT == MVT::nxv4f32) {
5412
- if (Subtarget->hasSME2 ())
5412
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5413
5413
SelectContiguousMultiVectorLoad (Node, 2 , 2 ,
5414
5414
AArch64::LDNT1W_2Z_IMM_PSEUDO,
5415
5415
AArch64::LDNT1W_2Z_PSEUDO);
@@ -5420,7 +5420,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5420
5420
break ;
5421
5421
return ;
5422
5422
} else if (VT == MVT::nxv2i64 || VT == MVT::nxv2f64) {
5423
- if (Subtarget->hasSME2 ())
5423
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5424
5424
SelectContiguousMultiVectorLoad (Node, 2 , 3 ,
5425
5425
AArch64::LDNT1D_2Z_IMM_PSEUDO,
5426
5426
AArch64::LDNT1D_2Z_PSEUDO);
@@ -5435,7 +5435,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5435
5435
}
5436
5436
case Intrinsic::aarch64_sve_ldnt1_pn_x4: {
5437
5437
if (VT == MVT::nxv16i8) {
5438
- if (Subtarget->hasSME2 ())
5438
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5439
5439
SelectContiguousMultiVectorLoad (Node, 4 , 0 ,
5440
5440
AArch64::LDNT1B_4Z_IMM_PSEUDO,
5441
5441
AArch64::LDNT1B_4Z_PSEUDO);
@@ -5447,7 +5447,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5447
5447
return ;
5448
5448
} else if (VT == MVT::nxv8i16 || VT == MVT::nxv8f16 ||
5449
5449
VT == MVT::nxv8bf16) {
5450
- if (Subtarget->hasSME2 ())
5450
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5451
5451
SelectContiguousMultiVectorLoad (Node, 4 , 1 ,
5452
5452
AArch64::LDNT1H_4Z_IMM_PSEUDO,
5453
5453
AArch64::LDNT1H_4Z_PSEUDO);
@@ -5458,7 +5458,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5458
5458
break ;
5459
5459
return ;
5460
5460
} else if (VT == MVT::nxv4i32 || VT == MVT::nxv4f32) {
5461
- if (Subtarget->hasSME2 ())
5461
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5462
5462
SelectContiguousMultiVectorLoad (Node, 4 , 2 ,
5463
5463
AArch64::LDNT1W_4Z_IMM_PSEUDO,
5464
5464
AArch64::LDNT1W_4Z_PSEUDO);
@@ -5469,7 +5469,7 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
5469
5469
break ;
5470
5470
return ;
5471
5471
} else if (VT == MVT::nxv2i64 || VT == MVT::nxv2f64) {
5472
- if (Subtarget->hasSME2 ())
5472
+ if (Subtarget->hasSME2 () && Subtarget-> isStreaming () )
5473
5473
SelectContiguousMultiVectorLoad (Node, 4 , 3 ,
5474
5474
AArch64::LDNT1D_4Z_IMM_PSEUDO,
5475
5475
AArch64::LDNT1D_4Z_PSEUDO);
0 commit comments