Skip to content
This repository was archived by the owner on Apr 23, 2020. It is now read-only.

Commit e821fb0

Browse files
committed
[X86] Use the extended vector register classes in fast isel with AVX512F/VL.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316857 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 2c43c3b commit e821fb0

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

lib/Target/X86/X86FastISel.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ bool X86FastISel::X86FastEmitLoad(EVT VT, X86AddressMode &AM,
351351
case MVT::f32:
352352
if (X86ScalarSSEf32) {
353353
Opc = HasAVX512 ? X86::VMOVSSZrm : HasAVX ? X86::VMOVSSrm : X86::MOVSSrm;
354-
RC = &X86::FR32RegClass;
354+
RC = HasAVX512 ? &X86::FR32XRegClass : &X86::FR32RegClass;
355355
} else {
356356
Opc = X86::LD_Fp32m;
357357
RC = &X86::RFP32RegClass;
@@ -360,7 +360,7 @@ bool X86FastISel::X86FastEmitLoad(EVT VT, X86AddressMode &AM,
360360
case MVT::f64:
361361
if (X86ScalarSSEf64) {
362362
Opc = HasAVX512 ? X86::VMOVSDZrm : HasAVX ? X86::VMOVSDrm : X86::MOVSDrm;
363-
RC = &X86::FR64RegClass;
363+
RC = HasAVX512 ? &X86::FR64XRegClass : &X86::FR64RegClass;
364364
} else {
365365
Opc = X86::LD_Fp64m;
366366
RC = &X86::RFP64RegClass;
@@ -379,7 +379,7 @@ bool X86FastISel::X86FastEmitLoad(EVT VT, X86AddressMode &AM,
379379
else
380380
Opc = HasVLX ? X86::VMOVUPSZ128rm :
381381
HasAVX ? X86::VMOVUPSrm : X86::MOVUPSrm;
382-
RC = &X86::VR128RegClass;
382+
RC = HasVLX ? &X86::VR128XRegClass : &X86::VR128RegClass;
383383
break;
384384
case MVT::v2f64:
385385
if (IsNonTemporal && Alignment >= 16 && HasSSE41)
@@ -391,7 +391,7 @@ bool X86FastISel::X86FastEmitLoad(EVT VT, X86AddressMode &AM,
391391
else
392392
Opc = HasVLX ? X86::VMOVUPDZ128rm :
393393
HasAVX ? X86::VMOVUPDrm : X86::MOVUPDrm;
394-
RC = &X86::VR128RegClass;
394+
RC = HasVLX ? &X86::VR128XRegClass : &X86::VR128RegClass;
395395
break;
396396
case MVT::v4i32:
397397
case MVT::v2i64:
@@ -406,7 +406,7 @@ bool X86FastISel::X86FastEmitLoad(EVT VT, X86AddressMode &AM,
406406
else
407407
Opc = HasVLX ? X86::VMOVDQU64Z128rm :
408408
HasAVX ? X86::VMOVDQUrm : X86::MOVDQUrm;
409-
RC = &X86::VR128RegClass;
409+
RC = HasVLX ? &X86::VR128XRegClass : &X86::VR128RegClass;
410410
break;
411411
case MVT::v8f32:
412412
assert(HasAVX);
@@ -418,7 +418,7 @@ bool X86FastISel::X86FastEmitLoad(EVT VT, X86AddressMode &AM,
418418
Opc = HasVLX ? X86::VMOVAPSZ256rm : X86::VMOVAPSYrm;
419419
else
420420
Opc = HasVLX ? X86::VMOVUPSZ256rm : X86::VMOVUPSYrm;
421-
RC = &X86::VR256RegClass;
421+
RC = HasVLX ? &X86::VR256XRegClass : &X86::VR256RegClass;
422422
break;
423423
case MVT::v4f64:
424424
assert(HasAVX);
@@ -430,7 +430,7 @@ bool X86FastISel::X86FastEmitLoad(EVT VT, X86AddressMode &AM,
430430
Opc = HasVLX ? X86::VMOVAPDZ256rm : X86::VMOVAPDYrm;
431431
else
432432
Opc = HasVLX ? X86::VMOVUPDZ256rm : X86::VMOVUPDYrm;
433-
RC = &X86::VR256RegClass;
433+
RC = HasVLX ? &X86::VR256XRegClass : &X86::VR256RegClass;
434434
break;
435435
case MVT::v8i32:
436436
case MVT::v4i64:
@@ -445,7 +445,7 @@ bool X86FastISel::X86FastEmitLoad(EVT VT, X86AddressMode &AM,
445445
Opc = HasVLX ? X86::VMOVDQA64Z256rm : X86::VMOVDQAYrm;
446446
else
447447
Opc = HasVLX ? X86::VMOVDQU64Z256rm : X86::VMOVDQUYrm;
448-
RC = &X86::VR256RegClass;
448+
RC = HasVLX ? &X86::VR256XRegClass : &X86::VR256RegClass;
449449
break;
450450
case MVT::v16f32:
451451
assert(HasAVX512);
@@ -3723,7 +3723,7 @@ unsigned X86FastISel::X86MaterializeFP(const ConstantFP *CFP, MVT VT) {
37233723
Opc = Subtarget->hasAVX512()
37243724
? X86::VMOVSSZrm
37253725
: Subtarget->hasAVX() ? X86::VMOVSSrm : X86::MOVSSrm;
3726-
RC = &X86::FR32RegClass;
3726+
RC = Subtarget->hasAVX512() ? &X86::FR32XRegClass : &X86::FR32RegClass;
37273727
} else {
37283728
Opc = X86::LD_Fp32m;
37293729
RC = &X86::RFP32RegClass;
@@ -3734,7 +3734,7 @@ unsigned X86FastISel::X86MaterializeFP(const ConstantFP *CFP, MVT VT) {
37343734
Opc = Subtarget->hasAVX512()
37353735
? X86::VMOVSDZrm
37363736
: Subtarget->hasAVX() ? X86::VMOVSDrm : X86::MOVSDrm;
3737-
RC = &X86::FR64RegClass;
3737+
RC = Subtarget->hasAVX512() ? &X86::FR64XRegClass : &X86::FR64RegClass;
37383738
} else {
37393739
Opc = X86::LD_Fp64m;
37403740
RC = &X86::RFP64RegClass;

0 commit comments

Comments
 (0)