aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/X86/X86InstrSSE.td
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2013-10-14 01:42:32 +0000
committerCraig Topper <craig.topper@gmail.com>2013-10-14 01:42:32 +0000
commit8e121843c19297205fe9acb9153570f596838eb9 (patch)
tree0853174a297d18a94cf35753dedfe4b9bf96bfd2 /lib/Target/X86/X86InstrSSE.td
parentbae9f69d37a60aad0185cdf17434ec188c976e67 (diff)
downloadexternal_llvm-8e121843c19297205fe9acb9153570f596838eb9.zip
external_llvm-8e121843c19297205fe9acb9153570f596838eb9.tar.gz
external_llvm-8e121843c19297205fe9acb9153570f596838eb9.tar.bz2
Add disassembler support for SSE4.1 register/register form of PEXTRW. There is a shorter encoding that was part of SSE2, but a memory form was added in SSE4.1. This is the register form of that encoding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192566 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86InstrSSE.td')
-rw-r--r--lib/Target/X86/X86InstrSSE.td7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/Target/X86/X86InstrSSE.td b/lib/Target/X86/X86InstrSSE.td
index 90bdfa3..15b9b91 100644
--- a/lib/Target/X86/X86InstrSSE.td
+++ b/lib/Target/X86/X86InstrSSE.td
@@ -6053,6 +6053,13 @@ defm PEXTRB : SS41I_extract8<0x14, "pextrb">;
/// SS41I_extract16 - SSE 4.1 extract 16 bits to memory destination
multiclass SS41I_extract16<bits<8> opc, string OpcodeStr> {
+ let isCodeGenOnly = 1, hasSideEffects = 0 in
+ def rr_REV : SS4AIi8<opc, MRMDestReg, (outs GR32:$dst),
+ (ins VR128:$src1, i32i8imm:$src2),
+ !strconcat(OpcodeStr,
+ "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
+ []>, OpSize;
+
let neverHasSideEffects = 1, mayStore = 1 in
def mr : SS4AIi8<opc, MRMDestMem, (outs),
(ins i16mem:$dst, VR128:$src1, i32i8imm:$src2),