[X86] Add a test case for r208252.
authorQuentin Colombet <qcolombet@apple.com>
Wed, 7 May 2014 22:52:58 +0000 (22:52 +0000)
committerQuentin Colombet <qcolombet@apple.com>
Wed, 7 May 2014 22:52:58 +0000 (22:52 +0000)
commit57b4c5d4730081ea4e8bd21cd747865411ad5cf3
tree5470e965529d5610ac7028f83be219de372e4735
parent318659742325cb41797a93b9e7932509c708ec23
[X86] Add a test case for r208252.
Prior to r208252, the FMA 231 family was marked as isCommutable. However the
memory variants of this family are not commutable. Therefore, we did not
implemented the findCommutedOpIndices for those variants and missed that
the default implementation (more or less: commute indices 1 and 2) was
firing behind our back.
As a result, as demonstrated in the test case before the fix, we were
transforming a = b * c + a into a = a * c + b.

I.e., before r208252 we were generating for this test case:
vmovaps %xmm0, %xmm1
vmoss (%rsi), %xmm0
vfmadd231ss (%rdi), %xmm1, %xmm0

Instead of:
vmoss (%rsi), %xmm1
vfmadd231ss (%rdi), %xmm1, %xmm0

<rdar://problem/16800495>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208260 91177308-0d34-0410-b5e6-96231b3b80d8
test/CodeGen/X86/fma-do-not-commute.ll [new file with mode: 0644]