aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/X86/X86InstrXOP.td
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2012-06-13 07:18:53 +0000
committerCraig Topper <craig.topper@gmail.com>2012-06-13 07:18:53 +0000
commitcc95b57d42a4af1cbb0a0e4a4efc2133116dd21c (patch)
treec5200cf87afd379d7f5cf5f233f150956c023aee /lib/Target/X86/X86InstrXOP.td
parent79248299f6ca12926088a4adebbbbe00b05a2642 (diff)
downloadexternal_llvm-cc95b57d42a4af1cbb0a0e4a4efc2133116dd21c.zip
external_llvm-cc95b57d42a4af1cbb0a0e4a4efc2133116dd21c.tar.gz
external_llvm-cc95b57d42a4af1cbb0a0e4a4efc2133116dd21c.tar.bz2
Fix intrinsics for XOP frczss/sd instructions. These instructions only take one source register and zero the upper bits of the destination rather than preserving them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158396 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86InstrXOP.td')
-rw-r--r--lib/Target/X86/X86InstrXOP.td18
1 files changed, 6 insertions, 12 deletions
diff --git a/lib/Target/X86/X86InstrXOP.td b/lib/Target/X86/X86InstrXOP.td
index 16a7a1a..8ec2c68 100644
--- a/lib/Target/X86/X86InstrXOP.td
+++ b/lib/Target/X86/X86InstrXOP.td
@@ -39,22 +39,16 @@ let isAsmParserOnly = 1 in {
}
// Scalar load 2 addr operand instructions
-let Constraints = "$src1 = $dst" in {
multiclass xop2opsld<bits<8> opc, string OpcodeStr, Intrinsic Int,
Operand memop, ComplexPattern mem_cpat> {
- def rr : IXOP<opc, MRMSrcReg, (outs VR128:$dst), (ins VR128:$src1,
- VR128:$src2),
- !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
- [(set VR128:$dst, (Int VR128:$src1, VR128:$src2))]>, VEX;
- def rm : IXOP<opc, MRMSrcMem, (outs VR128:$dst), (ins VR128:$src1,
- memop:$src2),
- !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
- [(set VR128:$dst, (Int VR128:$src1,
- (bitconvert mem_cpat:$src2)))]>, VEX;
+ def rr : IXOP<opc, MRMSrcReg, (outs VR128:$dst), (ins VR128:$src),
+ !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
+ [(set VR128:$dst, (Int VR128:$src))]>, VEX;
+ def rm : IXOP<opc, MRMSrcMem, (outs VR128:$dst), (ins memop:$src),
+ !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
+ [(set VR128:$dst, (Int (bitconvert mem_cpat:$src)))]>, VEX;
}
-} // Constraints = "$src1 = $dst"
-
let isAsmParserOnly = 1 in {
defm VFRCZSS : xop2opsld<0x82, "vfrczss", int_x86_xop_vfrcz_ss,
ssmem, sse_load_f32>;