Vyacheslav Klochkov
6daefcf626
X86-FMA3: Implemented commute transformation for EVEX/AVX512 FMA3 opcodes.
...
This helped to improved memory-folding and register coalescing optimizations.
Also, this patch fixed the tracker #17229 .
Reviewer: Craig Topper.
Differential Revision: https://reviews.llvm.org/D23108
llvm-svn: 278431
2016-08-11 22:07:33 +00:00
Craig Topper
6bcbf5338c
[AVX512] Cleanup FMA operand order in patterns to match the VEX versions and to really be 213, 231, and 132.
...
llvm-svn: 276613
2016-07-25 07:20:28 +00:00
Craig Topper
b6519db90d
[AVX512] Implement commuting support for EVEX encoded FMA3 instructions.
...
llvm-svn: 276521
2016-07-23 07:16:56 +00:00
Craig Topper
5c913e84df
[AVX512] Use VMOVAPSZ128rr/VMOVAPS256rr for VR128X/VR256X physreg moves when VLX is supported.
...
Ideally we would use VEX encoded moves instead of EVEX if the high 16 registers aren't referenced, but this a good first step.
llvm-svn: 275763
2016-07-18 06:14:34 +00:00
Elena Demikhovsky
86528270b9
AVX-512: Fixed a bug in FMA instruction selection on KNL
...
The FMA instruction was selected from AVX2 set instead of AVX-512
Differential Revision: http://reviews.llvm.org/D16884
llvm-svn: 259792
2016-02-04 15:11:11 +00:00
Igor Breger
756c289dd8
AVX512: Change VPMOVB2M DAG lowering , use CVT2MASK node instead TRUNCATE.
...
Fix TRUNCATE lowering vector to vector i1, use LSB and not MSB.
Implement VPMOVB/W/D/Q2M intrinsic.
Differential Revision: http://reviews.llvm.org/D15675
llvm-svn: 256470
2015-12-27 13:56:16 +00:00
Igor Breger
15820b072b
AVX-512: Implemented missing encoding for FMA scalar instructions
...
Added tests for encoding
Differential Revision: http://reviews.llvm.org/D10865
llvm-svn: 241159
2015-07-01 13:24:28 +00:00
Igor Breger
a7a8e9a018
AVX-512: Implemented missing encoding and intrinsics for FMA instructions
...
Added tests for DAG lowering ,encoding and intrinsics
Differential Revision: http://reviews.llvm.org/D10796
llvm-svn: 240926
2015-06-29 09:10:00 +00:00
Ahmed Bougacha
f1eccbecf8
[X86] Accept hasAVX512() as well as hasFMA() when generating FMA.
...
We don't always have FMA, for example when using 'clang -mavx512f'
without an explicit CPU.
Also check for an explicit +avx512f instead of CPUs in a couple
related tests.
llvm-svn: 240616
2015-06-25 00:44:46 +00:00
Elena Demikhovsky
12f24673e0
AVX-512: Added FMA instructions.
...
llvm-svn: 189326
2013-08-27 08:39:25 +00:00