summaryrefslogtreecommitdiff
path: root/lib/Target/X86/X86InstrInfo.cpp
diff options
context:
space:
mode:
authorElena Demikhovsky <elena.demikhovsky@intel.com>2013-12-10 11:58:35 +0000
committerElena Demikhovsky <elena.demikhovsky@intel.com>2013-12-10 11:58:35 +0000
commit89458ced873df1095f6afa9cd9864c46f8a692fe (patch)
treee7a3f0f5d233743eaaaae58ede06943c7f8fa2a3 /lib/Target/X86/X86InstrInfo.cpp
parent9f84f21a4c92f03d02c56cecb07b88290cabf419 (diff)
downloadllvm-89458ced873df1095f6afa9cd9864c46f8a692fe.tar.gz
llvm-89458ced873df1095f6afa9cd9864c46f8a692fe.tar.bz2
llvm-89458ced873df1095f6afa9cd9864c46f8a692fe.tar.xz
AVX-512: Changed intrinsics of VPCONFLICT to match GCC builtin form
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196914 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86InstrInfo.cpp')
-rw-r--r--lib/Target/X86/X86InstrInfo.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/Target/X86/X86InstrInfo.cpp b/lib/Target/X86/X86InstrInfo.cpp
index 45af24b50d..ae4982f404 100644
--- a/lib/Target/X86/X86InstrInfo.cpp
+++ b/lib/Target/X86/X86InstrInfo.cpp
@@ -3029,6 +3029,22 @@ unsigned copyPhysRegOpcode_AVX512(unsigned& DestReg, unsigned& SrcReg) {
(X86::VK8RegClass.contains(SrcReg) ||
X86::VK16RegClass.contains(SrcReg)))
return X86::KMOVWkk;
+ if ((X86::VK8RegClass.contains(DestReg) ||
+ X86::VK16RegClass.contains(DestReg)) &&
+ (X86::GR32RegClass.contains(SrcReg) ||
+ X86::GR16RegClass.contains(SrcReg) ||
+ X86::GR8RegClass.contains(SrcReg))) {
+ SrcReg = getX86SubSuperRegister(SrcReg, MVT::i32);
+ return X86::KMOVWkr;
+ }
+ if ((X86::GR32RegClass.contains(DestReg) ||
+ X86::GR16RegClass.contains(DestReg) ||
+ X86::GR8RegClass.contains(DestReg)) &&
+ (X86::VK8RegClass.contains(SrcReg) ||
+ X86::VK16RegClass.contains(SrcReg))) {
+ DestReg = getX86SubSuperRegister(DestReg, MVT::i32);
+ return X86::KMOVWrk;
+ }
return 0;
}