diff options
author | Lang Hames <lhames@gmail.com> | 2014-04-02 22:06:16 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2014-04-02 22:06:16 +0000 |
commit | b1b4d0819577bfa2a7538b7b2437bc3ffd52d4bb (patch) | |
tree | f546aed09997af5ba1a049b7347250b2f1b1c9b3 /lib/Target/X86/X86InstrFMA.td | |
parent | 3845c071a7b4ff54d7d8ff4642a66e3a666349d1 (diff) |
[X86] Make the VFMA*231 variants commutable and relax the alignment restrictions
on FMA3 memory operands. FMA3 instructions are VEX encoded, so they can load
from unaligned memory.
Testcase to follow, along with related patch.
<rdar://problem/16478629>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205472 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86InstrFMA.td')
-rw-r--r-- | lib/Target/X86/X86InstrFMA.td | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/Target/X86/X86InstrFMA.td b/lib/Target/X86/X86InstrFMA.td index d994f5f3ecb..df6c9da6977 100644 --- a/lib/Target/X86/X86InstrFMA.td +++ b/lib/Target/X86/X86InstrFMA.td @@ -67,6 +67,7 @@ let neverHasSideEffects = 1 in { defm r132 : fma3p_rm<opc132, !strconcat(OpcodeStr, "132", PackTy), MemFrag128, MemFrag256, OpTy128, OpTy256>; + let isCommutable = 1 in defm r231 : fma3p_rm<opc231, !strconcat(OpcodeStr, "231", PackTy), MemFrag128, MemFrag256, OpTy128, OpTy256>; @@ -146,6 +147,7 @@ multiclass fma3s_forms<bits<8> opc132, bits<8> opc213, bits<8> opc231, let neverHasSideEffects = 1 in { defm r132 : fma3s_rm<opc132, !strconcat(OpStr, "132", PackTy), x86memop, RC, OpVT, mem_frag>; + let isCommutable = 1 in defm r231 : fma3s_rm<opc231, !strconcat(OpStr, "231", PackTy), x86memop, RC, OpVT, mem_frag>; } |