diff options
| author | Craig Topper <craig.topper@gmail.com> | 2016-07-29 06:06:04 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@gmail.com> | 2016-07-29 06:06:04 +0000 |
| commit | e4f868ea1625b06baf97d79bdb3de54e66af36b2 (patch) | |
| tree | 45e1c2689757b617568b490cf6c9bcc06187d2f3 /llvm/lib | |
| parent | 5625d24977087bd2143341ab1e6991fdcc623bc4 (diff) | |
| download | bcm5719-llvm-e4f868ea1625b06baf97d79bdb3de54e66af36b2.tar.gz bcm5719-llvm-e4f868ea1625b06baf97d79bdb3de54e66af36b2.zip | |
[AVX512] Mark EVEX VMOVSSrm and VMOVSDrm as canFoldAsLoad and isReMaterializable.
llvm-svn: 277120
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86InstrAVX512.td | 1 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86InstrInfo.cpp | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86InstrAVX512.td b/llvm/lib/Target/X86/X86InstrAVX512.td index ebef4b19466..86ccc532514 100644 --- a/llvm/lib/Target/X86/X86InstrAVX512.td +++ b/llvm/lib/Target/X86/X86InstrAVX512.td @@ -3050,6 +3050,7 @@ multiclass avx512_move_scalar<string asm, SDNode OpNode, (_.VT (OpNode _.RC:$src1, _.RC:$src2)), (_.VT _.RC:$src0))))], _.ExeDomain,IIC_SSE_MOV_S_RR>, EVEX_4V, EVEX_K; + let canFoldAsLoad = 1, isReMaterializable = 1 in def rm : AVX512PI<0x10, MRMSrcMem, (outs _.FRC:$dst), (ins _.ScalarMemOp:$src), !strconcat(asm, "\t{$src, $dst|$dst, $src}"), [(set _.FRC:$dst, (_.ScalarLdFrag addr:$src))], diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp index aca28c9c6c2..44e4d5c9d72 100644 --- a/llvm/lib/Target/X86/X86InstrInfo.cpp +++ b/llvm/lib/Target/X86/X86InstrInfo.cpp @@ -2617,6 +2617,8 @@ bool X86InstrInfo::isReallyTriviallyReMaterializable(const MachineInstr &MI, case X86::FsMOVAPSrm: case X86::FsMOVAPDrm: // AVX-512 + case X86::VMOVSSZrm: + case X86::VMOVSDZrm: case X86::VMOVAPDZ128rm: case X86::VMOVAPDZ256rm: case X86::VMOVAPDZrm: |

