diff options
author | Craig Topper <craig.topper@intel.com> | 2019-06-18 03:23:15 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2019-06-18 03:23:15 +0000 |
commit | 587427716c3aa923ca51674e8970b9e1c3108754 (patch) | |
tree | 7fa32884a1ab50f5a8e0213b390cde0b2c8cba20 /llvm/lib/Target/X86/X86InstrFoldTables.cpp | |
parent | 8582ecd8d9370878f47486690b684e0448d70300 (diff) | |
download | bcm5719-llvm-587427716c3aa923ca51674e8970b9e1c3108754.tar.gz bcm5719-llvm-587427716c3aa923ca51674e8970b9e1c3108754.zip |
[X86] Remove MOVDI2SSrm/MOV64toSDrm/MOVSS2DImr/MOVSDto64mr CodeGenOnly instructions.
The isel patterns for these use a bitcast and load/store, but
DAG combine should have canonicalized those away.
For the purposes of the memory folding table these opcodes can be
replaced by the MOVSSrm_alt/MOVSDrm_alt and MOVSSmr/MOVSDmr opcodes.
llvm-svn: 363644
Diffstat (limited to 'llvm/lib/Target/X86/X86InstrFoldTables.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86InstrFoldTables.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/llvm/lib/Target/X86/X86InstrFoldTables.cpp b/llvm/lib/Target/X86/X86InstrFoldTables.cpp index 73263f23f84..4b24dd1058e 100644 --- a/llvm/lib/Target/X86/X86InstrFoldTables.cpp +++ b/llvm/lib/Target/X86/X86InstrFoldTables.cpp @@ -307,8 +307,8 @@ static const X86MemoryFoldTableEntry MemoryFoldTable0[] = { { X86::MOVDQUrr, X86::MOVDQUmr, TB_FOLDED_STORE }, { X86::MOVPDI2DIrr, X86::MOVPDI2DImr, TB_FOLDED_STORE }, { X86::MOVPQIto64rr, X86::MOVPQI2QImr, TB_FOLDED_STORE | TB_NO_REVERSE }, - { X86::MOVSDto64rr, X86::MOVSDto64mr, TB_FOLDED_STORE | TB_NO_REVERSE }, - { X86::MOVSS2DIrr, X86::MOVSS2DImr, TB_FOLDED_STORE }, + { X86::MOVSDto64rr, X86::MOVSDmr, TB_FOLDED_STORE | TB_NO_REVERSE }, + { X86::MOVSS2DIrr, X86::MOVSSmr, TB_FOLDED_STORE }, { X86::MOVUPDrr, X86::MOVUPDmr, TB_FOLDED_STORE }, { X86::MOVUPSrr, X86::MOVUPSmr, TB_FOLDED_STORE }, { X86::MUL16r, X86::MUL16m, TB_FOLDED_LOAD }, @@ -391,10 +391,10 @@ static const X86MemoryFoldTableEntry MemoryFoldTable0[] = { { X86::VMOVPDI2DIrr, X86::VMOVPDI2DImr, TB_FOLDED_STORE }, { X86::VMOVPQIto64Zrr, X86::VMOVPQI2QIZmr, TB_FOLDED_STORE | TB_NO_REVERSE }, { X86::VMOVPQIto64rr, X86::VMOVPQI2QImr, TB_FOLDED_STORE | TB_NO_REVERSE }, - { X86::VMOVSDto64Zrr, X86::VMOVSDto64Zmr, TB_FOLDED_STORE | TB_NO_REVERSE }, - { X86::VMOVSDto64rr, X86::VMOVSDto64mr, TB_FOLDED_STORE | TB_NO_REVERSE }, - { X86::VMOVSS2DIZrr, X86::VMOVSS2DIZmr, TB_FOLDED_STORE }, - { X86::VMOVSS2DIrr, X86::VMOVSS2DImr, TB_FOLDED_STORE }, + { X86::VMOVSDto64Zrr, X86::VMOVSDZmr, TB_FOLDED_STORE | TB_NO_REVERSE }, + { X86::VMOVSDto64rr, X86::VMOVSDmr, TB_FOLDED_STORE | TB_NO_REVERSE }, + { X86::VMOVSS2DIZrr, X86::VMOVSSZmr, TB_FOLDED_STORE }, + { X86::VMOVSS2DIrr, X86::VMOVSSmr, TB_FOLDED_STORE }, { X86::VMOVUPDYrr, X86::VMOVUPDYmr, TB_FOLDED_STORE }, { X86::VMOVUPDZ128rr, X86::VMOVUPDZ128mr, TB_FOLDED_STORE }, { X86::VMOVUPDZ256rr, X86::VMOVUPDZ256mr, TB_FOLDED_STORE }, @@ -531,13 +531,13 @@ static const X86MemoryFoldTableEntry MemoryFoldTable1[] = { { X86::MOV32rr, X86::MOV32rm, 0 }, { X86::MOV64rr, X86::MOV64rm, 0 }, { X86::MOV64toPQIrr, X86::MOVQI2PQIrm, TB_NO_REVERSE }, - { X86::MOV64toSDrr, X86::MOV64toSDrm, TB_NO_REVERSE }, + { X86::MOV64toSDrr, X86::MOVSDrm_alt, TB_NO_REVERSE }, { X86::MOV8rr, X86::MOV8rm, 0 }, { X86::MOVAPDrr, X86::MOVAPDrm, TB_ALIGN_16 }, { X86::MOVAPSrr, X86::MOVAPSrm, TB_ALIGN_16 }, { X86::MOVDDUPrr, X86::MOVDDUPrm, TB_NO_REVERSE }, { X86::MOVDI2PDIrr, X86::MOVDI2PDIrm, 0 }, - { X86::MOVDI2SSrr, X86::MOVDI2SSrm, 0 }, + { X86::MOVDI2SSrr, X86::MOVSSrm_alt, 0 }, { X86::MOVDQArr, X86::MOVDQArm, TB_ALIGN_16 }, { X86::MOVDQUrr, X86::MOVDQUrm, 0 }, { X86::MOVSHDUPrr, X86::MOVSHDUPrm, TB_ALIGN_16 }, @@ -820,8 +820,8 @@ static const X86MemoryFoldTableEntry MemoryFoldTable1[] = { { X86::VGETMANTPSZrri, X86::VGETMANTPSZrmi, 0 }, { X86::VMOV64toPQIZrr, X86::VMOVQI2PQIZrm, TB_NO_REVERSE }, { X86::VMOV64toPQIrr, X86::VMOVQI2PQIrm, TB_NO_REVERSE }, - { X86::VMOV64toSDZrr, X86::VMOV64toSDZrm, TB_NO_REVERSE }, - { X86::VMOV64toSDrr, X86::VMOV64toSDrm, TB_NO_REVERSE }, + { X86::VMOV64toSDZrr, X86::VMOVSDZrm_alt, TB_NO_REVERSE }, + { X86::VMOV64toSDrr, X86::VMOVSDrm_alt, TB_NO_REVERSE }, { X86::VMOVAPDYrr, X86::VMOVAPDYrm, TB_ALIGN_32 }, { X86::VMOVAPDZ128rr, X86::VMOVAPDZ128rm, TB_ALIGN_16 }, { X86::VMOVAPDZ256rr, X86::VMOVAPDZ256rm, TB_ALIGN_32 }, @@ -839,8 +839,8 @@ static const X86MemoryFoldTableEntry MemoryFoldTable1[] = { { X86::VMOVDDUPrr, X86::VMOVDDUPrm, TB_NO_REVERSE }, { X86::VMOVDI2PDIZrr, X86::VMOVDI2PDIZrm, 0 }, { X86::VMOVDI2PDIrr, X86::VMOVDI2PDIrm, 0 }, - { X86::VMOVDI2SSZrr, X86::VMOVDI2SSZrm, 0 }, - { X86::VMOVDI2SSrr, X86::VMOVDI2SSrm, 0 }, + { X86::VMOVDI2SSZrr, X86::VMOVSSZrm_alt, 0 }, + { X86::VMOVDI2SSrr, X86::VMOVSSrm_alt, 0 }, { X86::VMOVDQA32Z128rr, X86::VMOVDQA32Z128rm, TB_ALIGN_16 }, { X86::VMOVDQA32Z256rr, X86::VMOVDQA32Z256rm, TB_ALIGN_32 }, { X86::VMOVDQA32Zrr, X86::VMOVDQA32Zrm, TB_ALIGN_64 }, |