diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-12-01 16:00:14 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-12-01 16:00:14 +0000 |
| commit | 5fe6236035db58365a1ac8d6782cead7f7bca123 (patch) | |
| tree | a2e9197dd5261cfd004de6cd42005f80f497cdf9 /llvm/lib/Target | |
| parent | a37e110def03a8829081a775e33f6b91a1fdd161 (diff) | |
| download | bcm5719-llvm-5fe6236035db58365a1ac8d6782cead7f7bca123.tar.gz bcm5719-llvm-5fe6236035db58365a1ac8d6782cead7f7bca123.zip | |
[X86][SSE] Classify AND bitmasks as variable shuffle masks
They are loading the bitmasks from the constant pool so the cost is similar to loading a shuffle mask.
llvm-svn: 288367
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 85766c9f0cc..926d3456764 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -4061,6 +4061,7 @@ static bool isTargetShuffle(unsigned Opcode) { static bool isTargetShuffleVariableMask(unsigned Opcode) { switch (Opcode) { default: return false; + // Target Shuffles. case X86ISD::PSHUFB: case X86ISD::VPERMILPV: case X86ISD::VPERMIL2: @@ -4069,6 +4070,9 @@ static bool isTargetShuffleVariableMask(unsigned Opcode) { case X86ISD::VPERMV3: case X86ISD::VPERMIV3: return true; + // 'Faux' Target Shuffles. + case ISD::AND: + return true; } } |

