From 116579782380c80b73054f0ef636605976b78afd Mon Sep 17 00:00:00 2001 From: Tony Printezis Date: Fri, 2 Jun 2023 10:49:32 -0700 Subject: [PATCH 1/2] 8308726: RISC-V: avoid unnecessary slli in the vectorized arraycopy stubs for bytes --- src/hotspot/cpu/riscv/stubGenerator_riscv.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp b/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp index 0112de0584ccb..cca1b915cf9db 100644 --- a/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp +++ b/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp @@ -915,7 +915,10 @@ class StubGenerator: public StubCodeGenerator { __ vlex_v(v0, src, sew); __ sub(cnt, cnt, vl); - __ slli(vl, vl, (int)sew); + if (sew != Assembler::e8) { + // when sew == e8 (e.g., elem size is 1 byte), slli R, R, 0 is a nop and unnecessary + __ slli(vl, vl, (int)sew); + } __ add(src, src, vl); __ vsex_v(v0, dst, sew); @@ -927,7 +930,10 @@ class StubGenerator: public StubCodeGenerator { __ bind(loop_backward); __ sub(t0, cnt, vl); - __ slli(t0, t0, sew); + if (sew != Assembler::e8) { + // when sew == e8 (e.g., elem size is 1 byte), slli R, R, 0 is a nop and unnecessary + __ slli(t0, t0, sew); + } __ add(tmp1, s, t0); __ vlex_v(v0, tmp1, sew); __ add(tmp2, d, t0); From 58b0e7989671ff0926a23a640f42cf36d4ba46d4 Mon Sep 17 00:00:00 2001 From: Tony Printezis Date: Sat, 3 Jun 2023 05:51:54 -0700 Subject: [PATCH 2/2] fixed minor typo --- src/hotspot/cpu/riscv/stubGenerator_riscv.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp b/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp index cca1b915cf9db..0522c8070fb69 100644 --- a/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp +++ b/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp @@ -917,7 +917,7 @@ class StubGenerator: public StubCodeGenerator { __ sub(cnt, cnt, vl); if (sew != Assembler::e8) { // when sew == e8 (e.g., elem size is 1 byte), slli R, R, 0 is a nop and unnecessary - __ slli(vl, vl, (int)sew); + __ slli(vl, vl, sew); } __ add(src, src, vl);