From 686328a965114abb2add7ef6992484c8cb05c58e Mon Sep 17 00:00:00 2001 From: Andrew Haley Date: Wed, 22 Jun 2022 13:01:10 -0400 Subject: [PATCH] 8288992: AArch64: CMN should be handled the same way as CMP --- src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp | 8 ++++---- src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp | 7 +++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp index 39c5c3af1bc44..c9a56f0666506 100644 --- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp @@ -3355,7 +3355,7 @@ void MacroAssembler::kernel_crc32_using_crc32(Register crc, Register buf, crc32x(crc, crc, tmp2); crc32x(crc, crc, tmp3); br(Assembler::GE, CRC_by32_loop); - cmn(len, 32); + cmn(len, (u1)32); br(Assembler::NE, CRC_less32); b(L_exit); @@ -3418,7 +3418,7 @@ void MacroAssembler::kernel_crc32_using_crc32(Register crc, Register buf, sub(len, len, 64); add(buf, buf, 8); - cmn(len, 128); + cmn(len, (u1)128); br(Assembler::NE, CRC_less64); BIND(L_exit); mvnw(crc, crc); @@ -3652,7 +3652,7 @@ void MacroAssembler::kernel_crc32c_using_crc32c(Register crc, Register buf, crc32cx(crc, crc, tmp2); crc32cx(crc, crc, tmp3); br(Assembler::GE, CRC_by32_loop); - cmn(len, 32); + cmn(len, (u1)32); br(Assembler::NE, CRC_less32); b(L_exit); @@ -3715,7 +3715,7 @@ void MacroAssembler::kernel_crc32c_using_crc32c(Register crc, Register buf, sub(len, len, 64); add(buf, buf, 8); - cmn(len, 128); + cmn(len, (u1)128); br(Assembler::NE, CRC_less64); BIND(L_exit); } diff --git a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp index 6f68f5ec06b6f..de453084f3bbe 100644 --- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp +++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp @@ -197,8 +197,11 @@ class MacroAssembler: public Assembler { inline void cmp(Register Rd, unsigned char imm8) { subs(zr, Rd, imm8); } inline void cmp(Register Rd, unsigned imm) = delete; - inline void cmnw(Register Rd, unsigned imm) { addsw(zr, Rd, imm); } - inline void cmn(Register Rd, unsigned imm) { adds(zr, Rd, imm); } + template + inline void cmnw(Register Rd, T imm) { addsw(zr, Rd, imm); } + + inline void cmn(Register Rd, unsigned char imm8) { adds(zr, Rd, imm8); } + inline void cmn(Register Rd, unsigned imm) = delete; void cset(Register Rd, Assembler::Condition cond) { csinc(Rd, zr, zr, ~cond);