Skip to content

Commit

Permalink
[Backport] 8235719: C2: Merge AD instructions for ShiftV, AbsV, and N…
Browse files Browse the repository at this point in the history
…egV nodes

Summary: Backport VectorAPI 8235719: C2: Merge AD instructions for ShiftV, AbsV, and NegV nodes

Test Plan: ci jtreg

Reviewed-by: JoshuaZhuwj

Issue: dragonwell-project#287
  • Loading branch information
JinZhonghui committed Sep 5, 2022
1 parent eb775a2 commit 046303e
Show file tree
Hide file tree
Showing 3 changed files with 174 additions and 556 deletions.
10 changes: 8 additions & 2 deletions src/hotspot/cpu/x86/macroAssembler_x86.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4336,7 +4336,10 @@ void MacroAssembler::vpxor(XMMRegister dst, XMMRegister nds, AddressLiteral src,
#ifdef COMPILER2
// Generic instructions support for use in .ad files C2 code generation

void MacroAssembler::vabsnegd(int opcode, XMMRegister dst, Register scr) {
void MacroAssembler::vabsnegd(int opcode, XMMRegister dst, XMMRegister src, Register scr) {
if (dst != src) {
movdqu(dst, src);
}
if (opcode == Op_AbsVD) {
andpd(dst, ExternalAddress(StubRoutines::x86::vector_double_sign_mask()), scr);
} else {
Expand All @@ -4354,7 +4357,10 @@ void MacroAssembler::vabsnegd(int opcode, XMMRegister dst, XMMRegister src, int
}
}

void MacroAssembler::vabsnegf(int opcode, XMMRegister dst, Register scr) {
void MacroAssembler::vabsnegf(int opcode, XMMRegister dst, XMMRegister src, Register scr) {
if (dst != src) {
movdqu(dst, src);
}
if (opcode == Op_AbsVF) {
andps(dst, ExternalAddress(StubRoutines::x86::vector_float_sign_mask()), scr);
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/hotspot/cpu/x86/macroAssembler_x86.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1627,9 +1627,9 @@ class MacroAssembler: public Assembler {

#ifdef COMPILER2
// Generic instructions support for use in .ad files C2 code generation
void vabsnegd(int opcode, XMMRegister dst, Register scr);
void vabsnegd(int opcode, XMMRegister dst, XMMRegister src, Register scr);
void vabsnegd(int opcode, XMMRegister dst, XMMRegister src, int vector_len, Register scr);
void vabsnegf(int opcode, XMMRegister dst, Register scr);
void vabsnegf(int opcode, XMMRegister dst, XMMRegister src, Register scr);
void vabsnegf(int opcode, XMMRegister dst, XMMRegister src, int vector_len, Register scr);
void vextendbw(bool sign, XMMRegister dst, XMMRegister src, int vector_len);
void vextendbw(bool sign, XMMRegister dst, XMMRegister src);
Expand Down
Loading

0 comments on commit 046303e

Please sign in to comment.