summaryrefslogtreecommitdiff
path: root/compiler/utils/x86/assembler_x86.cc
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2019-10-29 10:17:53 +0000
committer Vladimir Marko <vmarko@google.com> 2019-10-31 09:19:22 +0000
commit7cf5607f472020711e36eedbbfebb25b40d3f90e (patch)
tree71f30133f4650656911f2fb72e3b8d203b355635 /compiler/utils/x86/assembler_x86.cc
parentd55b844e39c4d5eb1a56de6cb95c891659f8a27f (diff)
Revert^2 "Implement Dot Product Vectorization for x86"
This reverts commit b8c884e5f22390386b202459ab55ef3046631e42. And fixes a codegen bug (the reason why the original CL was reverted). Test: 684-checker-simd-dotprod Test: DEX2OAT_HOST_INSTRUCTION_SET_FEATURES="sse4.1" test.py --host Test: test.py --host --jit --gcstress Change-Id: Ibef925d1037abc9cb5f3d4dbd79f1d1eceae2f71 Signed-off-by: Shalini Salomi Bodapati <shalini.salomi.bodapati@intel.com>
Diffstat (limited to 'compiler/utils/x86/assembler_x86.cc')
-rw-r--r--compiler/utils/x86/assembler_x86.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/compiler/utils/x86/assembler_x86.cc b/compiler/utils/x86/assembler_x86.cc
index 166aec81a7..55f7691514 100644
--- a/compiler/utils/x86/assembler_x86.cc
+++ b/compiler/utils/x86/assembler_x86.cc
@@ -2268,6 +2268,20 @@ void X86Assembler::pmaddwd(XmmRegister dst, XmmRegister src) {
}
+void X86Assembler::vpmaddwd(XmmRegister dst, XmmRegister src1, XmmRegister src2) {
+ DCHECK(CpuHasAVXorAVX2FeatureFlag());
+ AssemblerBuffer::EnsureCapacity ensured(&buffer_);
+ uint8_t ByteZero = 0x00, ByteOne = 0x00;
+ ByteZero = EmitVexPrefixByteZero(/* is_twobyte_form=*/ true);
+ X86ManagedRegister vvvv_reg = X86ManagedRegister::FromXmmRegister(src1);
+ ByteOne = EmitVexPrefixByteOne(/*R=*/ false, vvvv_reg, SET_VEX_L_128, SET_VEX_PP_66);
+ EmitUint8(ByteZero);
+ EmitUint8(ByteOne);
+ EmitUint8(0xF5);
+ EmitXmmRegisterOperand(dst, src2);
+}
+
+
void X86Assembler::phaddw(XmmRegister dst, XmmRegister src) {
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0x66);