From ecd2d83096a1fea7d5086736306770bcffa4fdb6 Mon Sep 17 00:00:00 2001 From: Evgeny Astigeevich Date: Fri, 27 Jun 2025 12:49:20 +0000 Subject: [PATCH] 8359435: AArch64: add support for SB instruction to MacroAssembler::spin_wait Reviewed-by: shade, aph --- src/hotspot/cpu/aarch64/assembler_aarch64.hpp | 4 + src/hotspot/cpu/aarch64/globals_aarch64.hpp | 2 +- .../cpu/aarch64/macroAssembler_aarch64.cpp | 3 + src/hotspot/cpu/aarch64/spin_wait_aarch64.hpp | 3 +- .../cpu/aarch64/vm_version_aarch64.cpp | 7 +- .../cpu/aarch64/vm_version_aarch64.hpp | 1 + .../bsd_aarch64/vm_version_bsd_aarch64.cpp | 3 + .../vm_version_linux_aarch64.cpp | 5 + .../classes/jdk/vm/ci/aarch64/AArch64.java | 1 + test/hotspot/gtest/aarch64/aarch64-asmtest.py | 2 +- test/hotspot/gtest/aarch64/asmtest.out.h | 583 +++++++++--------- .../onSpinWait/TestOnSpinWaitAArch64.java | 15 +- 12 files changed, 331 insertions(+), 298 deletions(-) diff --git a/src/hotspot/cpu/aarch64/assembler_aarch64.hpp b/src/hotspot/cpu/aarch64/assembler_aarch64.hpp index 573b451261f..2e35763aa43 100644 --- a/src/hotspot/cpu/aarch64/assembler_aarch64.hpp +++ b/src/hotspot/cpu/aarch64/assembler_aarch64.hpp @@ -1136,6 +1136,10 @@ public: system(0b00, 0b011, 0b00011, SY, 0b110); } + void sb() { + system(0b00, 0b011, 0b00011, 0b0000, 0b111); + } + void sys(int op1, int CRn, int CRm, int op2, Register rt = as_Register(0b11111)) { system(0b01, op1, CRn, CRm, op2, rt); diff --git a/src/hotspot/cpu/aarch64/globals_aarch64.hpp b/src/hotspot/cpu/aarch64/globals_aarch64.hpp index d195af8cef4..ef741c2007a 100644 --- a/src/hotspot/cpu/aarch64/globals_aarch64.hpp +++ b/src/hotspot/cpu/aarch64/globals_aarch64.hpp @@ -117,7 +117,7 @@ define_pd_global(intx, InlineSmallCode, 1000); product(ccstr, OnSpinWaitInst, "yield", DIAGNOSTIC, \ "The instruction to use to implement " \ "java.lang.Thread.onSpinWait()." \ - "Options: none, nop, isb, yield.") \ + "Options: none, nop, isb, yield, sb.") \ product(uint, OnSpinWaitInstCount, 1, DIAGNOSTIC, \ "The number of OnSpinWaitInst instructions to generate." \ "It cannot be used with OnSpinWaitInst=none.") \ diff --git a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp index cbd941397f3..44dbf3692f6 100644 --- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp @@ -6814,6 +6814,9 @@ void MacroAssembler::spin_wait() { case SpinWait::YIELD: yield(); break; + case SpinWait::SB: + sb(); + break; default: ShouldNotReachHere(); } diff --git a/src/hotspot/cpu/aarch64/spin_wait_aarch64.hpp b/src/hotspot/cpu/aarch64/spin_wait_aarch64.hpp index 28ffeafda48..08850f05f53 100644 --- a/src/hotspot/cpu/aarch64/spin_wait_aarch64.hpp +++ b/src/hotspot/cpu/aarch64/spin_wait_aarch64.hpp @@ -31,7 +31,8 @@ public: NONE = -1, NOP, ISB, - YIELD + YIELD, + SB }; private: diff --git a/src/hotspot/cpu/aarch64/vm_version_aarch64.cpp b/src/hotspot/cpu/aarch64/vm_version_aarch64.cpp index 941cb254532..6ee4a0023c6 100644 --- a/src/hotspot/cpu/aarch64/vm_version_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/vm_version_aarch64.cpp @@ -57,8 +57,13 @@ static SpinWait get_spin_wait_desc() { return SpinWait(SpinWait::ISB, OnSpinWaitInstCount); } else if (strcmp(OnSpinWaitInst, "yield") == 0) { return SpinWait(SpinWait::YIELD, OnSpinWaitInstCount); + } else if (strcmp(OnSpinWaitInst, "sb") == 0) { + if (!VM_Version::supports_sb()) { + vm_exit_during_initialization("OnSpinWaitInst is SB but current CPU does not support SB instruction"); + } + return SpinWait(SpinWait::SB, OnSpinWaitInstCount); } else if (strcmp(OnSpinWaitInst, "none") != 0) { - vm_exit_during_initialization("The options for OnSpinWaitInst are nop, isb, yield, and none", OnSpinWaitInst); + vm_exit_during_initialization("The options for OnSpinWaitInst are nop, isb, yield, sb, and none", OnSpinWaitInst); } if (!FLAG_IS_DEFAULT(OnSpinWaitInstCount) && OnSpinWaitInstCount > 0) { diff --git a/src/hotspot/cpu/aarch64/vm_version_aarch64.hpp b/src/hotspot/cpu/aarch64/vm_version_aarch64.hpp index 373f8da5405..99450d3dde1 100644 --- a/src/hotspot/cpu/aarch64/vm_version_aarch64.hpp +++ b/src/hotspot/cpu/aarch64/vm_version_aarch64.hpp @@ -131,6 +131,7 @@ enum Ampere_CPU_Model { decl(SHA3, sha3, 17) \ decl(SHA512, sha512, 21) \ decl(SVE, sve, 22) \ + decl(SB, sb, 29) \ decl(PACA, paca, 30) \ /* flags above must follow Linux HWCAP */ \ decl(SVEBITPERM, svebitperm, 27) \ diff --git a/src/hotspot/os_cpu/bsd_aarch64/vm_version_bsd_aarch64.cpp b/src/hotspot/os_cpu/bsd_aarch64/vm_version_bsd_aarch64.cpp index 5424b58da6d..b55c1cd27c8 100644 --- a/src/hotspot/os_cpu/bsd_aarch64/vm_version_bsd_aarch64.cpp +++ b/src/hotspot/os_cpu/bsd_aarch64/vm_version_bsd_aarch64.cpp @@ -92,6 +92,9 @@ void VM_Version::get_os_cpu_info() { cpu_has("hw.optional.armv8_2_sha3")) { _features |= CPU_SHA3; } + if (cpu_has("hw.optional.arm.FEAT_SB")) { + _features |= CPU_SB; + } int cache_line_size; int hw_conf_cache_line[] = { CTL_HW, HW_CACHELINE }; diff --git a/src/hotspot/os_cpu/linux_aarch64/vm_version_linux_aarch64.cpp b/src/hotspot/os_cpu/linux_aarch64/vm_version_linux_aarch64.cpp index 9725c6cd6c0..a8edeefc885 100644 --- a/src/hotspot/os_cpu/linux_aarch64/vm_version_linux_aarch64.cpp +++ b/src/hotspot/os_cpu/linux_aarch64/vm_version_linux_aarch64.cpp @@ -71,6 +71,10 @@ #define HWCAP_SVE (1 << 22) #endif +#ifndef HWCAP_SB +#define HWCAP_SB (1 << 29) +#endif + #ifndef HWCAP_PACA #define HWCAP_PACA (1 << 30) #endif @@ -143,6 +147,7 @@ void VM_Version::get_os_cpu_info() { HWCAP_SHA3 | HWCAP_SHA512 | HWCAP_SVE | + HWCAP_SB | HWCAP_PACA | HWCAP_FPHP | HWCAP_ASIMDHP); diff --git a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/aarch64/AArch64.java b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/aarch64/AArch64.java index 66aed480bbb..391ac224609 100644 --- a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/aarch64/AArch64.java +++ b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/aarch64/AArch64.java @@ -179,6 +179,7 @@ public class AArch64 extends Architecture { SHA3, SHA512, SVE, + SB, PACA, SVEBITPERM, SVE2, diff --git a/test/hotspot/gtest/aarch64/aarch64-asmtest.py b/test/hotspot/gtest/aarch64/aarch64-asmtest.py index b0c8cdbc330..5b2c18b0a2b 100644 --- a/test/hotspot/gtest/aarch64/aarch64-asmtest.py +++ b/test/hotspot/gtest/aarch64/aarch64-asmtest.py @@ -1605,7 +1605,7 @@ generate (ImmOp, ["svc", "hvc", "smc", "brk", "hlt", # "dcps1", "dcps2", "dcps generate (Op, ["nop", "yield", "wfe", "sev", "sevl", "autia1716", "autiasp", "autiaz", "autib1716", "autibsp", "autibz", "pacia1716", "paciasp", "paciaz", "pacib1716", "pacibsp", "pacibz", - "eret", "drps", "isb",]) + "eret", "drps", "isb", "sb",]) # Ensure the "i" is not stripped off the end of the instruction generate (PostfixExceptionOp, ["wfi", "xpaclri"]) diff --git a/test/hotspot/gtest/aarch64/asmtest.out.h b/test/hotspot/gtest/aarch64/asmtest.out.h index 2b4ea356d70..d90c2479995 100644 --- a/test/hotspot/gtest/aarch64/asmtest.out.h +++ b/test/hotspot/gtest/aarch64/asmtest.out.h @@ -187,6 +187,7 @@ __ eret(); // eret __ drps(); // drps __ isb(); // isb + __ sb(); // sb // PostfixExceptionOp __ wfi(); // wfi @@ -1437,306 +1438,306 @@ 0x9101a1a0, 0xb10a5cc8, 0xd10810aa, 0xf10fd061, 0x120cb166, 0x321764bc, 0x52174681, 0x720c0227, 0x9241018e, 0xb25a2969, 0xd278b411, 0xf26aad01, - 0x14000000, 0x17ffffd7, 0x140004af, 0x94000000, - 0x97ffffd4, 0x940004ac, 0x3400000a, 0x34fffa2a, - 0x3400952a, 0x35000008, 0x35fff9c8, 0x350094c8, - 0xb400000b, 0xb4fff96b, 0xb400946b, 0xb500001d, - 0xb5fff91d, 0xb500941d, 0x10000013, 0x10fff8b3, - 0x100093b3, 0x90000013, 0x36300016, 0x3637f836, - 0x36309336, 0x3758000c, 0x375ff7cc, 0x375892cc, + 0x14000000, 0x17ffffd7, 0x140004b0, 0x94000000, + 0x97ffffd4, 0x940004ad, 0x3400000a, 0x34fffa2a, + 0x3400954a, 0x35000008, 0x35fff9c8, 0x350094e8, + 0xb400000b, 0xb4fff96b, 0xb400948b, 0xb500001d, + 0xb5fff91d, 0xb500943d, 0x10000013, 0x10fff8b3, + 0x100093d3, 0x90000013, 0x36300016, 0x3637f836, + 0x36309356, 0x3758000c, 0x375ff7cc, 0x375892ec, 0x128313a0, 0x528a32c7, 0x7289173b, 0x92ab3acc, 0xd2a0bf94, 0xf2c285e8, 0x9358722f, 0x330e652f, 0x53067f3b, 0x93577c53, 0xb34a1aac, 0xd35a4016, 0x13946c63, 0x93c3dbc8, 0x54000000, 0x54fff5a0, - 0x540090a0, 0x54000001, 0x54fff541, 0x54009041, - 0x54000002, 0x54fff4e2, 0x54008fe2, 0x54000002, - 0x54fff482, 0x54008f82, 0x54000003, 0x54fff423, - 0x54008f23, 0x54000003, 0x54fff3c3, 0x54008ec3, - 0x54000004, 0x54fff364, 0x54008e64, 0x54000005, - 0x54fff305, 0x54008e05, 0x54000006, 0x54fff2a6, - 0x54008da6, 0x54000007, 0x54fff247, 0x54008d47, - 0x54000008, 0x54fff1e8, 0x54008ce8, 0x54000009, - 0x54fff189, 0x54008c89, 0x5400000a, 0x54fff12a, - 0x54008c2a, 0x5400000b, 0x54fff0cb, 0x54008bcb, - 0x5400000c, 0x54fff06c, 0x54008b6c, 0x5400000d, - 0x54fff00d, 0x54008b0d, 0x5400000e, 0x54ffefae, - 0x54008aae, 0x5400000f, 0x54ffef4f, 0x54008a4f, + 0x540090c0, 0x54000001, 0x54fff541, 0x54009061, + 0x54000002, 0x54fff4e2, 0x54009002, 0x54000002, + 0x54fff482, 0x54008fa2, 0x54000003, 0x54fff423, + 0x54008f43, 0x54000003, 0x54fff3c3, 0x54008ee3, + 0x54000004, 0x54fff364, 0x54008e84, 0x54000005, + 0x54fff305, 0x54008e25, 0x54000006, 0x54fff2a6, + 0x54008dc6, 0x54000007, 0x54fff247, 0x54008d67, + 0x54000008, 0x54fff1e8, 0x54008d08, 0x54000009, + 0x54fff189, 0x54008ca9, 0x5400000a, 0x54fff12a, + 0x54008c4a, 0x5400000b, 0x54fff0cb, 0x54008beb, + 0x5400000c, 0x54fff06c, 0x54008b8c, 0x5400000d, + 0x54fff00d, 0x54008b2d, 0x5400000e, 0x54ffefae, + 0x54008ace, 0x5400000f, 0x54ffef4f, 0x54008a6f, 0xd40658e1, 0xd4014d22, 0xd4046543, 0xd4273f60, 0xd44cad80, 0xd503201f, 0xd503203f, 0xd503205f, 0xd503209f, 0xd50320bf, 0xd503219f, 0xd50323bf, 0xd503239f, 0xd50321df, 0xd50323ff, 0xd50323df, 0xd503211f, 0xd503233f, 0xd503231f, 0xd503215f, 0xd503237f, 0xd503235f, 0xd69f03e0, 0xd6bf03e0, - 0xd5033fdf, 0xd503207f, 0xd50320ff, 0xd5033e9f, - 0xd50332bf, 0xd61f0200, 0xd63f0280, 0xdac123ea, - 0xdac127fb, 0xdac12be8, 0xdac12fe0, 0xdac133e1, - 0xdac137f5, 0xdac13bf1, 0xdac13ffd, 0xdac147fd, - 0xd61f0b9f, 0xd61f0c3f, 0xd63f0aff, 0xd63f0ebf, - 0xd51b4434, 0xd51b4216, 0xd53b443b, 0xd53b4213, - 0xd53b00eb, 0xd53b0030, 0xdac143e6, 0xc8117c80, - 0xc80afed8, 0xc85f7e6a, 0xc85ffca1, 0xc89ffd1e, - 0xc8dffe2c, 0x88097cee, 0x8801fe05, 0x885f7d82, - 0x885ffd8a, 0x889fff83, 0x88dfff4e, 0x481e7dca, - 0x4815fd2d, 0x485f7f76, 0x485ffe7c, 0x489fffcb, - 0x48dffc53, 0x08027c37, 0x0800fe0c, 0x085f7ded, - 0x085ffeb1, 0x089ffd6d, 0x08dffd1e, 0xc87f3578, - 0xc87feaa1, 0xc83b506d, 0xc82c87a6, 0x887f1166, - 0x887f93d0, 0x883e32a4, 0x883bf12f, 0xf80011f9, - 0xb81b1022, 0x381ea354, 0x79002fd7, 0xf85cf39a, - 0xb8580309, 0x385e218c, 0x784051e1, 0x389e11d8, - 0x789fa1f8, 0x79c01865, 0xb881131b, 0xfc5dd3ad, - 0xbc5d1137, 0xfc00900b, 0xbc181015, 0xf818ec7d, - 0xb81b8c91, 0x381efc40, 0x78007c3d, 0xf857beb0, - 0xb8413dd4, 0x385fddd6, 0x78409e2f, 0x389eddea, - 0x789e7d94, 0x78de3d55, 0xb8805c13, 0xfc5cadc0, - 0xbc428c23, 0xfc1a2dc4, 0xbc1caf92, 0xf81475f6, - 0xb81f95d1, 0x381e757e, 0x78014561, 0xf8402436, - 0xb85896e2, 0x385f4763, 0x785db4f0, 0x3880374f, - 0x789e25e7, 0x78dd0563, 0xb88166f9, 0xfc529540, - 0xbc4374d3, 0xfc1166ae, 0xbc1ba6c0, 0xf820ea7b, - 0xb82d68c8, 0x38367a04, 0x782f4b59, 0xf878c8a4, - 0xb8674a24, 0x386b78f1, 0x78776bc0, 0x38a15aca, - 0x78bedbd5, 0x78fcd94b, 0xb8aa4a7c, 0xfc6ecbbe, - 0xbc65d8a8, 0xfc2de919, 0xbc3a7b11, 0xf91f1193, - 0xb91ed5f7, 0x391ec9bd, 0x79182ceb, 0xf95d4b0a, - 0xb9581010, 0x395fc034, 0x795fb221, 0x399d8731, - 0x799efb3b, 0x79dd1a2e, 0xb998e4ea, 0xfd583723, - 0xbd5ea12c, 0xfd18dc38, 0xbd1b0e83, 0x58ffdaa2, - 0x1800001d, 0xf885d1c0, 0xd8ffda40, 0xf8a77820, - 0xf9980220, 0x1a030301, 0x3a140311, 0x5a0d000b, - 0x7a07015c, 0x9a1001e4, 0xba140182, 0xda0d01bd, - 0xfa0c00ce, 0x0b31f194, 0x2b206d7b, 0xcb29f027, - 0x6b210f63, 0x8b2cb34d, 0xab2a88b1, 0xcb2f511e, - 0xeb3332f3, 0x3a4533aa, 0x7a4d312b, 0xba442146, - 0xfa42818c, 0x3a466a02, 0x7a4b68ed, 0xba4a9b6b, - 0xfa4dd86d, 0x1a8a637a, 0x1a9cd6aa, 0x5a9bd137, - 0x5a8fd7aa, 0x9a95233e, 0x9a95c620, 0xda9422b0, - 0xda8397d3, 0x5ac00173, 0x5ac00418, 0x5ac00b3b, - 0x5ac0106e, 0x5ac0162e, 0xdac001e7, 0xdac00798, - 0xdac00b31, 0xdac00f42, 0xdac010bc, 0xdac01759, - 0xdac1021b, 0xdac104d1, 0xdac10995, 0xdac10c80, - 0xdac1136c, 0xdac11791, 0xdac1185c, 0xdac11d51, - 0xd71f09ee, 0xd71f0dc3, 0xd73f0b2f, 0xd73f0e6e, - 0x1ac40a05, 0x1ac40f3a, 0x1acc2042, 0x1ac8263d, - 0x1ac42867, 0x1ada2c99, 0x9ad10899, 0x9ad10f40, - 0x9ad521f7, 0x9adb263c, 0x9ac0286a, 0x9ac92f27, - 0x9bdd7de6, 0x9b427d4f, 0x1b0b2cf1, 0x1b1ddcf7, - 0x9b0b2f6e, 0x9b0cbf04, 0x9b2b728e, 0x9b2cdd6d, - 0x9bae275e, 0x9ba7954d, 0x7ec315fe, 0x1ef0098c, - 0x1ef21bff, 0x1ef02ab3, 0x1ef5394f, 0x1efc4942, - 0x1eff5bc7, 0x1ee28832, 0x7ea3d546, 0x1e270979, - 0x1e201981, 0x1e3d2a63, 0x1e263ae6, 0x1e3b4b80, - 0x1e2758a2, 0x1e39899d, 0x7ef8d58d, 0x1e720913, - 0x1e751b56, 0x1e622a74, 0x1e683ade, 0x1e754a76, - 0x1e755a4c, 0x1e638a06, 0x1fc373a3, 0x1f0a35cf, - 0x1f0aea4c, 0x1f2f74e7, 0x1f2032e0, 0x1f4d21d8, - 0x1f49d0ef, 0x1f7f43b3, 0x1f705522, 0x1e20409e, - 0x1e20c361, 0x1e214319, 0x1e21c2ae, 0x1e22c0cd, - 0x1e23c32c, 0x1ee243d9, 0x1e6042bc, 0x1e60c2f0, - 0x1e6143a5, 0x1e61c276, 0x1e62428d, 0x1ee1c393, - 0x1e3800d1, 0x9e3800ed, 0x1e78035c, 0x9e7800d1, - 0x1e220081, 0x9e22028e, 0x1e6202a7, 0x9e6202fb, - 0x1e24028d, 0x9e64039e, 0x1e3002aa, 0x9e700225, - 0x1e2601cb, 0x9e6602ad, 0x1e2701db, 0x9e6702e4, - 0x1e3e2300, 0x1e6e2180, 0x1e202228, 0x1e602388, - 0x29021b40, 0x297c78c0, 0x69660970, 0xa908018f, - 0xa9427ae7, 0x29a03cfa, 0x29fc3d4b, 0x69c84033, - 0xa988240e, 0xa9fa0d9b, 0x28a02d88, 0x28c8408a, - 0x68f87a6a, 0xa8ba09f8, 0xa8c52a18, 0x280257be, - 0x28727948, 0xa83868de, 0xa8440a98, 0x0c40733f, - 0x4cdfa1e5, 0x0ccd6cea, 0x4cdf260d, 0x0d40c227, - 0x4ddfcb30, 0x0dc7cc6b, 0x4c408ced, 0x0cdf8769, - 0x4d60c346, 0x0dffca17, 0x4de8cda6, 0x4cda4834, - 0x0c4049ef, 0x4d40e6dd, 0x4ddfe946, 0x0dcfeccf, - 0x4cdf0546, 0x0cc7006b, 0x0d60e32c, 0x0dffe5eb, - 0x0dfce8de, 0x0e31bb9b, 0x4e31bbbc, 0x0e71b841, - 0x4e71bbbc, 0x4eb1b841, 0x0e30aab4, 0x4e30abdd, - 0x0e70aa30, 0x4e70a9cd, 0x4eb0a96a, 0x6e30fbdd, - 0x0e31abdd, 0x2e31aa93, 0x4e31aaf6, 0x6e31a96a, - 0x0e71a8a4, 0x2e71a81f, 0x4e71aad5, 0x6e71a928, - 0x4eb1a81f, 0x6eb1aa93, 0x6eb0f96a, 0x7e30fbbc, - 0x7e70f862, 0x7eb0fb59, 0x7ef0f8c5, 0x0ea0c883, - 0x4ea0c928, 0x4ee0caf6, 0x2ea0ca93, 0x6ea0c9cd, - 0x6ee0c8c5, 0x0ea0dbdd, 0x4ea0db38, 0x4ee0dad5, - 0x0ea0eb7a, 0x4ea0eb38, 0x4ee0e883, 0x2ea0db38, - 0x6ea0db7a, 0x6ee0db17, 0x0e20ba0f, 0x4e20bad5, - 0x0e60b883, 0x4e60bb38, 0x0ea0b928, 0x4ea0bb59, - 0x4ee0bab4, 0x0ea0fa30, 0x4ea0fa51, 0x4ee0f862, - 0x0ef8f841, 0x4ef8f820, 0x2ea0fb38, 0x6ea0f8a4, - 0x6ee0f883, 0x2ef8f9ac, 0x6ef8f81f, 0x2ea1fbbc, - 0x6ea1f96a, 0x6ee1fb7a, 0x2ef9f862, 0x6ef9f9ac, - 0x2e205a72, 0x6e20581f, 0x0e231c41, 0x4e2f1dcd, - 0x0ebf1fdd, 0x4ea21c20, 0x2e351e93, 0x6e2e1dac, - 0x0e338651, 0x4e3886f6, 0x0e6f85cd, 0x4e7e87bc, - 0x0ea087fe, 0x4ea1841f, 0x4ee38441, 0x0e3c0f7a, - 0x4e3e0fbc, 0x0e660ca4, 0x4e600ffe, 0x0ea60ca4, - 0x4ea80ce6, 0x4ee00ffe, 0x2e3c0f7a, 0x6e340e72, - 0x2e6b0d49, 0x6e6a0d28, 0x2eae0dac, 0x6ea20c20, - 0x6ef60eb4, 0x0e23d441, 0x4e3ad738, 0x4e64d462, - 0x0e421420, 0x4e4b1549, 0x2e3a8738, 0x6e3c877a, - 0x2e728630, 0x6e6087fe, 0x2ea58483, 0x6eac856a, - 0x6ef98717, 0x0e2c2d6a, 0x4e262ca4, 0x0e742e72, - 0x4e642c62, 0x0ead2d8b, 0x4eaa2d28, 0x4eec2d6a, - 0x2e312e0f, 0x6e332e51, 0x2e642c62, 0x6e6c2d6a, - 0x2eae2dac, 0x6eae2dac, 0x6ef12e0f, 0x0eafd5cd, - 0x4ea4d462, 0x4ee9d507, 0x0ed616b4, 0x4edc177a, - 0x0e329e30, 0x4e269ca4, 0x0e649c62, 0x4e669ca4, - 0x0eae9dac, 0x4eb49e72, 0x2eb7d6d5, 0x6eb2d630, - 0x6ef4d672, 0x2ecd158b, 0x6ed716d5, 0x2e39d717, - 0x6e2ed5ac, 0x6e7cd77a, 0x2e591717, 0x6e5e17bc, - 0x2e30ddee, 0x6e2ddd8b, 0x6e7adf38, 0x2e431c41, - 0x6e4e1dac, 0x0e61941f, 0x4e6c956a, 0x0eb29630, - 0x4ea99507, 0x0e24cc62, 0x4e25cc83, 0x4e6fcdcd, - 0x0e550e93, 0x4e530e51, 0x2e729630, 0x6e659483, - 0x2ea39441, 0x6ead958b, 0x0ea0cffe, 0x4ea7ccc5, - 0x4eeacd28, 0x0ed10e0f, 0x4edf0fdd, 0x2e20fffe, - 0x6e22fc20, 0x6e76feb4, 0x2e493d07, 0x6e563eb4, - 0x0e396717, 0x4e3e67bc, 0x0e7766d5, 0x4e7d679b, - 0x0ebb6759, 0x4ea764c5, 0x2e236441, 0x6e396717, - 0x2e726630, 0x6e61641f, 0x2ea764c5, 0x6eae65ac, - 0x0e2ba549, 0x4e3ea7bc, 0x0e71a60f, 0x4e7fa7dd, - 0x0eb8a6f6, 0x4ea1a41f, 0x0e35f693, 0x4e21f41f, - 0x4e67f4c5, 0x0e5035ee, 0x4e543672, 0x0e216c1f, - 0x4e346e72, 0x0e7d6f9b, 0x4e766eb4, 0x0eb26e30, - 0x4eae6dac, 0x2e2d6d8b, 0x6e2b6d49, 0x2e686ce6, - 0x6e606ffe, 0x2eb36e51, 0x6ebd6f9b, 0x0e3eafbc, - 0x4e20affe, 0x0e69ad07, 0x4e6cad6a, 0x0eb6aeb4, - 0x4eacad6a, 0x0e66b4a4, 0x4e7ab738, 0x0eb3b651, - 0x4eb3b651, 0x0e3826f6, 0x4e252483, 0x0e7f27dd, - 0x4e71260f, 0x0eb826f6, 0x4eb52693, 0x0eb5f693, - 0x4eb8f6f6, 0x4ee4f462, 0x0ed1360f, 0x4ec834e6, - 0x2eaeedac, 0x6eb2ee30, 0x6eeded8b, 0x2ecf2dcd, - 0x6ed92f17, 0x0f81100f, 0x4f848862, 0x4fc31841, - 0x0fad518b, 0x4fa780c5, 0x4fd059ee, 0x2fa890e6, - 0x4fa38841, 0x6fc1900f, 0x0f7b8149, 0x4f4688a4, - 0x0faf81cd, 0x4fa58083, 0x0e3736d5, 0x4e393717, - 0x0e61341f, 0x4e7b3759, 0x0ea43462, 0x4ea1341f, - 0x4efd379b, 0x0e343e72, 0x4e2c3d6a, 0x0e793f17, - 0x4e753e93, 0x0ea53c83, 0x4eb43e72, 0x4ee23c20, - 0x2e3b8f59, 0x6e3c8f7a, 0x2e798f17, 0x6e648c62, - 0x2eb48e72, 0x6eae8dac, 0x6ee68ca4, 0x2e3e37bc, - 0x6e2037fe, 0x2e7f37dd, 0x6e723630, 0x2ebd379b, - 0x6ea834e6, 0x6eeb3549, 0x2e3f3fdd, 0x6e343e72, - 0x2e693d07, 0x6e663ca4, 0x2ea93d07, 0x6eb13e0f, - 0x6eeb3d49, 0x0e39e717, 0x4e2ae528, 0x4e64e462, - 0x2ebee7bc, 0x6eb7e6d5, 0x6ee1e41f, 0x2e27e4c5, - 0x6e3de79b, 0x6e62e420, 0x659239e8, 0x65d03b94, - 0x65d0232d, 0x65d120c2, 0x659129f2, 0x65933ca3, - 0x25969683, 0x25961d15, 0x254d1c48, 0x259e3f61, - 0x25953b96, 0x255b91d1, 0x247686ed, 0x24309098, - 0x2462edb9, 0x24a57468, 0xba5fd3e3, 0x3a5f03e5, - 0xfa411be4, 0x7a42cbe2, 0x93df03ff, 0xc820ffff, - 0x8822fc7f, 0xc8247cbf, 0x88267fff, 0x4e010fe0, - 0x5e040420, 0x4e081fe1, 0x4e0c1fe1, 0x4e0a1fe1, - 0x4e071fe1, 0x4e042c20, 0x4e062c20, 0x4e052c20, - 0x4e083c20, 0x0e0c3c20, 0x0e0a3c20, 0x0e073c20, - 0x9eae0020, 0x0f03f409, 0x6f03f40e, 0x4cc0ac3f, - 0x0ea1b820, 0x0ef9b820, 0x4ef9b820, 0x4e21c862, - 0x0e79c862, 0x4e79c862, 0x4e61b8a4, 0x0e79b8a4, - 0x4e79b8a4, 0x05a08020, 0x05104fe0, 0x05505001, - 0x05906fe2, 0x05d03005, 0x05101fea, 0x05901feb, - 0x04b0e3e0, 0x0470e7e1, 0x042f9c20, 0x043f9c35, - 0x047f9c20, 0x04ff9c20, 0x04299420, 0x04319160, - 0x0461943e, 0x04a19020, 0x04038100, 0x040381a0, - 0x040387e1, 0x04438be2, 0x04c38fe3, 0x040181e0, - 0x04018100, 0x04018621, 0x04418b22, 0x04418822, - 0x04818c23, 0x040081e0, 0x04008120, 0x04008761, - 0x04008621, 0x04408822, 0x04808c23, 0x042053ff, - 0x047f5401, 0x25208028, 0x2538cfe0, 0x2578d001, - 0x25b8efe2, 0x25f8f007, 0x2538dfea, 0x25b8dfeb, - 0xa400a3e0, 0xa420a7e0, 0xa4484be0, 0xa467afe0, - 0xa4a8a7ea, 0xa547a814, 0xa4084ffe, 0xa55c53e0, - 0xa5e1540b, 0xe400fbf6, 0xe408ffff, 0xe420e7e0, - 0xe4484be0, 0xe460efe0, 0xe547e400, 0xe4014be0, - 0xe4a84fe0, 0xe5f15000, 0x858043e0, 0x85a043ff, - 0xe59f5d08, 0x0420e3e9, 0x0460e3ea, 0x04a0e3eb, - 0x04e0e3ec, 0x25104042, 0x25104871, 0x25904861, - 0x25904c92, 0x05344020, 0x05744041, 0x05b44062, - 0x05f44083, 0x252c8840, 0x253c1420, 0x25681572, - 0x25a21ce3, 0x25ea1e34, 0x253c0421, 0x25680572, - 0x25a20ce3, 0x25ea0e34, 0x0522c020, 0x05e6c0a4, - 0x2401a001, 0x2443a051, 0x24858881, 0x24c78cd1, - 0x24850891, 0x24c70cc1, 0x250f9001, 0x25508051, - 0x25802491, 0x25df28c1, 0x25850c81, 0x251e10d1, - 0x65816001, 0x65c36051, 0x65854891, 0x65c74cc1, - 0x05733820, 0x05b238a4, 0x05f138e6, 0x0570396a, - 0x65d0a001, 0x65d6a443, 0x65d4a826, 0x6594ac26, - 0x6554ac26, 0x6556ac26, 0x6552ac26, 0x65cbac85, - 0x65caac01, 0x6589ac85, 0x6588ac01, 0x65c9ac85, - 0x65c8ac01, 0x65dea833, 0x659ca509, 0x65d8a801, - 0x65dcac01, 0x655cb241, 0x0520a1e0, 0x0521a601, - 0x052281e0, 0x05238601, 0x04a14026, 0x042244a6, - 0x046344a6, 0x04a444a6, 0x04e544a7, 0x0568aca7, - 0x05b23230, 0x853040af, 0xc5b040af, 0xe57080af, - 0xe5b080af, 0x25034440, 0x254054c4, 0x25034640, - 0x25415a05, 0x25834440, 0x25c54489, 0x250b5d3a, - 0x2550dc20, 0x2518e3e1, 0x2518e021, 0x2518e0a1, - 0x2518e121, 0x2518e1a1, 0x2558e3e2, 0x2558e042, - 0x2558e0c2, 0x2558e142, 0x2598e3e3, 0x2598e063, - 0x2598e0e3, 0x2598e163, 0x25d8e3e4, 0x25d8e084, - 0x25d8e104, 0x25d8e184, 0x2518e407, 0x05214800, - 0x05614800, 0x05a14800, 0x05e14800, 0x05214c00, - 0x05614c00, 0x05a14c00, 0x05e14c00, 0x05304001, - 0x05314001, 0x05a18610, 0x05e18610, 0x05271e11, - 0x6545e891, 0x6585e891, 0x65c5e891, 0x6545c891, - 0x6585c891, 0x65c5c891, 0x45b0c210, 0x45f1c231, - 0x1e601000, 0x1e603000, 0x1e621000, 0x1e623000, - 0x1e641000, 0x1e643000, 0x1e661000, 0x1e663000, - 0x1e681000, 0x1e683000, 0x1e6a1000, 0x1e6a3000, - 0x1e6c1000, 0x1e6c3000, 0x1e6e1000, 0x1e6e3000, - 0x1e701000, 0x1e703000, 0x1e721000, 0x1e723000, - 0x1e741000, 0x1e743000, 0x1e761000, 0x1e763000, - 0x1e781000, 0x1e783000, 0x1e7a1000, 0x1e7a3000, - 0x1e7c1000, 0x1e7c3000, 0x1e7e1000, 0x1e7e3000, - 0xf8268267, 0xf82d023c, 0xf8301046, 0xf83d2083, - 0xf8263290, 0xf82d528c, 0xf8284299, 0xf8337160, - 0xf8386286, 0xf8bf820e, 0xf8a600e0, 0xf8af1353, - 0xf8a922ea, 0xf8b53396, 0xf8a251e3, 0xf8b340f4, - 0xf8a470fd, 0xf8a06209, 0xf8f48097, 0xf8f002ea, - 0xf8eb10d9, 0xf8ff21b0, 0xf8f7302c, 0xf8ee52a9, - 0xf8f041fa, 0xf8e471e4, 0xf8e863c6, 0xf864823d, - 0xf87d013a, 0xf86f1162, 0xf87d20e3, 0xf86132bb, - 0xf870510e, 0xf8704336, 0xf86572b4, 0xf8706217, - 0xb83e8294, 0xb8200264, 0xb8381284, 0xb8242358, - 0xb8333102, 0xb828530e, 0xb83042df, 0xb824703f, - 0xb82a6194, 0xb8a080e9, 0xb8b80090, 0xb8bb1146, - 0xb8bb21b8, 0xb8b032df, 0xb8b653f4, 0xb8bd41c9, - 0xb8b47287, 0xb8bc6169, 0xb8ee828c, 0xb8e10138, - 0xb8f3126d, 0xb8f020b0, 0xb8e03183, 0xb8e851ef, - 0xb8f041e4, 0xb8fe7005, 0xb8ea6376, 0xb8638120, - 0xb873015d, 0xb8781284, 0xb86723b8, 0xb86e3175, - 0xb87b51ed, 0xb87f41d1, 0xb863721e, 0xb87660f4, - 0xce216874, 0xce104533, 0xce648c15, 0xce8e3302, - 0xce6e82ab, 0xce6c87d1, 0xcec08063, 0xce638937, - 0x25e0c358, 0x25a1c7d3, 0x0580785a, 0x05426328, - 0x05009892, 0x25a0cc29, 0x2561cec8, 0x058044b3, - 0x05401c99, 0x05006b49, 0x25e0d6f7, 0x2561c528, - 0x0583c8bc, 0x0542522f, 0x05001ec0, 0x25e0de65, - 0x25a1c113, 0x05803cad, 0x0540f3c0, 0x0500ab15, - 0x2560c28c, 0x2561d7c0, 0x05801ed7, 0x0542633b, - 0x05003696, 0x2560d4b4, 0x25e1c918, 0x058021ff, - 0x05400e15, 0x0500f3de, 0x0473025a, 0x04bd05ab, - 0x658e0025, 0x658a08e2, 0x659a0493, 0x043e1062, - 0x04f418b4, 0x046d15bd, 0x04611fce, 0x04d6a07c, - 0x04001929, 0x041a09da, 0x04d098f4, 0x04db10d4, - 0x0459a3ad, 0x041aa029, 0x041919fb, 0x04d39e24, - 0x04118302, 0x04101dba, 0x04d7ae16, 0x04dea571, - 0x04180210, 0x05e786fc, 0x05e4915c, 0x04881cf1, - 0x044a0f04, 0x04090969, 0x048b16c4, 0x044101e4, - 0x04dcbf44, 0x65809745, 0x658d833f, 0x65c68468, - 0x65c79b07, 0x65829e38, 0x049dafca, 0x6582bba8, - 0x65c0b7ff, 0x65c1b4e0, 0x658dbadd, 0x65819a9d, - 0x65ed9246, 0x65b30815, 0x65e6263c, 0x65eebb94, - 0x65bad14e, 0x65efe178, 0x65fc5697, 0x65e07f14, - 0x040c55a6, 0x04977f4d, 0x043d3046, 0x04b733a0, - 0x046830a4, 0x04ed322d, 0x05686948, 0x05bd6c13, - 0x65c88ef0, 0x450db3d7, 0x4540b6d9, 0x043e3979, - 0x445896ce, 0x445a9005, 0x44d98069, 0x445b87ae, - 0x04da348e, 0x04982edb, 0x0499397f, 0x0408338c, - 0x04ca309c, 0x65c721e6, 0x65c63641, 0x65982882, - 0x04812b8b, 0x0e251083, 0x4e3712d5, 0x0e61101f, - 0x4e6d118b, 0x0eba1338, 0x4eb712d5, 0x2e31120f, - 0x6e2e11ac, 0x2e6810e6, 0x6e6f11cd, 0x2eaa1128, - 0x6eb1120f, + 0xd5033fdf, 0xd50330ff, 0xd503207f, 0xd50320ff, + 0xd5033e9f, 0xd50332bf, 0xd61f0200, 0xd63f0280, + 0xdac123ea, 0xdac127fb, 0xdac12be8, 0xdac12fe0, + 0xdac133e1, 0xdac137f5, 0xdac13bf1, 0xdac13ffd, + 0xdac147fd, 0xd61f0b9f, 0xd61f0c3f, 0xd63f0aff, + 0xd63f0ebf, 0xd51b4434, 0xd51b4216, 0xd53b443b, + 0xd53b4213, 0xd53b00eb, 0xd53b0030, 0xdac143e6, + 0xc8117c80, 0xc80afed8, 0xc85f7e6a, 0xc85ffca1, + 0xc89ffd1e, 0xc8dffe2c, 0x88097cee, 0x8801fe05, + 0x885f7d82, 0x885ffd8a, 0x889fff83, 0x88dfff4e, + 0x481e7dca, 0x4815fd2d, 0x485f7f76, 0x485ffe7c, + 0x489fffcb, 0x48dffc53, 0x08027c37, 0x0800fe0c, + 0x085f7ded, 0x085ffeb1, 0x089ffd6d, 0x08dffd1e, + 0xc87f3578, 0xc87feaa1, 0xc83b506d, 0xc82c87a6, + 0x887f1166, 0x887f93d0, 0x883e32a4, 0x883bf12f, + 0xf80011f9, 0xb81b1022, 0x381ea354, 0x79002fd7, + 0xf85cf39a, 0xb8580309, 0x385e218c, 0x784051e1, + 0x389e11d8, 0x789fa1f8, 0x79c01865, 0xb881131b, + 0xfc5dd3ad, 0xbc5d1137, 0xfc00900b, 0xbc181015, + 0xf818ec7d, 0xb81b8c91, 0x381efc40, 0x78007c3d, + 0xf857beb0, 0xb8413dd4, 0x385fddd6, 0x78409e2f, + 0x389eddea, 0x789e7d94, 0x78de3d55, 0xb8805c13, + 0xfc5cadc0, 0xbc428c23, 0xfc1a2dc4, 0xbc1caf92, + 0xf81475f6, 0xb81f95d1, 0x381e757e, 0x78014561, + 0xf8402436, 0xb85896e2, 0x385f4763, 0x785db4f0, + 0x3880374f, 0x789e25e7, 0x78dd0563, 0xb88166f9, + 0xfc529540, 0xbc4374d3, 0xfc1166ae, 0xbc1ba6c0, + 0xf820ea7b, 0xb82d68c8, 0x38367a04, 0x782f4b59, + 0xf878c8a4, 0xb8674a24, 0x386b78f1, 0x78776bc0, + 0x38a15aca, 0x78bedbd5, 0x78fcd94b, 0xb8aa4a7c, + 0xfc6ecbbe, 0xbc65d8a8, 0xfc2de919, 0xbc3a7b11, + 0xf91f1193, 0xb91ed5f7, 0x391ec9bd, 0x79182ceb, + 0xf95d4b0a, 0xb9581010, 0x395fc034, 0x795fb221, + 0x399d8731, 0x799efb3b, 0x79dd1a2e, 0xb998e4ea, + 0xfd583723, 0xbd5ea12c, 0xfd18dc38, 0xbd1b0e83, + 0x58ffda82, 0x1800001d, 0xf885d1c0, 0xd8ffda20, + 0xf8a77820, 0xf9980220, 0x1a030301, 0x3a140311, + 0x5a0d000b, 0x7a07015c, 0x9a1001e4, 0xba140182, + 0xda0d01bd, 0xfa0c00ce, 0x0b31f194, 0x2b206d7b, + 0xcb29f027, 0x6b210f63, 0x8b2cb34d, 0xab2a88b1, + 0xcb2f511e, 0xeb3332f3, 0x3a4533aa, 0x7a4d312b, + 0xba442146, 0xfa42818c, 0x3a466a02, 0x7a4b68ed, + 0xba4a9b6b, 0xfa4dd86d, 0x1a8a637a, 0x1a9cd6aa, + 0x5a9bd137, 0x5a8fd7aa, 0x9a95233e, 0x9a95c620, + 0xda9422b0, 0xda8397d3, 0x5ac00173, 0x5ac00418, + 0x5ac00b3b, 0x5ac0106e, 0x5ac0162e, 0xdac001e7, + 0xdac00798, 0xdac00b31, 0xdac00f42, 0xdac010bc, + 0xdac01759, 0xdac1021b, 0xdac104d1, 0xdac10995, + 0xdac10c80, 0xdac1136c, 0xdac11791, 0xdac1185c, + 0xdac11d51, 0xd71f09ee, 0xd71f0dc3, 0xd73f0b2f, + 0xd73f0e6e, 0x1ac40a05, 0x1ac40f3a, 0x1acc2042, + 0x1ac8263d, 0x1ac42867, 0x1ada2c99, 0x9ad10899, + 0x9ad10f40, 0x9ad521f7, 0x9adb263c, 0x9ac0286a, + 0x9ac92f27, 0x9bdd7de6, 0x9b427d4f, 0x1b0b2cf1, + 0x1b1ddcf7, 0x9b0b2f6e, 0x9b0cbf04, 0x9b2b728e, + 0x9b2cdd6d, 0x9bae275e, 0x9ba7954d, 0x7ec315fe, + 0x1ef0098c, 0x1ef21bff, 0x1ef02ab3, 0x1ef5394f, + 0x1efc4942, 0x1eff5bc7, 0x1ee28832, 0x7ea3d546, + 0x1e270979, 0x1e201981, 0x1e3d2a63, 0x1e263ae6, + 0x1e3b4b80, 0x1e2758a2, 0x1e39899d, 0x7ef8d58d, + 0x1e720913, 0x1e751b56, 0x1e622a74, 0x1e683ade, + 0x1e754a76, 0x1e755a4c, 0x1e638a06, 0x1fc373a3, + 0x1f0a35cf, 0x1f0aea4c, 0x1f2f74e7, 0x1f2032e0, + 0x1f4d21d8, 0x1f49d0ef, 0x1f7f43b3, 0x1f705522, + 0x1e20409e, 0x1e20c361, 0x1e214319, 0x1e21c2ae, + 0x1e22c0cd, 0x1e23c32c, 0x1ee243d9, 0x1e6042bc, + 0x1e60c2f0, 0x1e6143a5, 0x1e61c276, 0x1e62428d, + 0x1ee1c393, 0x1e3800d1, 0x9e3800ed, 0x1e78035c, + 0x9e7800d1, 0x1e220081, 0x9e22028e, 0x1e6202a7, + 0x9e6202fb, 0x1e24028d, 0x9e64039e, 0x1e3002aa, + 0x9e700225, 0x1e2601cb, 0x9e6602ad, 0x1e2701db, + 0x9e6702e4, 0x1e3e2300, 0x1e6e2180, 0x1e202228, + 0x1e602388, 0x29021b40, 0x297c78c0, 0x69660970, + 0xa908018f, 0xa9427ae7, 0x29a03cfa, 0x29fc3d4b, + 0x69c84033, 0xa988240e, 0xa9fa0d9b, 0x28a02d88, + 0x28c8408a, 0x68f87a6a, 0xa8ba09f8, 0xa8c52a18, + 0x280257be, 0x28727948, 0xa83868de, 0xa8440a98, + 0x0c40733f, 0x4cdfa1e5, 0x0ccd6cea, 0x4cdf260d, + 0x0d40c227, 0x4ddfcb30, 0x0dc7cc6b, 0x4c408ced, + 0x0cdf8769, 0x4d60c346, 0x0dffca17, 0x4de8cda6, + 0x4cda4834, 0x0c4049ef, 0x4d40e6dd, 0x4ddfe946, + 0x0dcfeccf, 0x4cdf0546, 0x0cc7006b, 0x0d60e32c, + 0x0dffe5eb, 0x0dfce8de, 0x0e31bb9b, 0x4e31bbbc, + 0x0e71b841, 0x4e71bbbc, 0x4eb1b841, 0x0e30aab4, + 0x4e30abdd, 0x0e70aa30, 0x4e70a9cd, 0x4eb0a96a, + 0x6e30fbdd, 0x0e31abdd, 0x2e31aa93, 0x4e31aaf6, + 0x6e31a96a, 0x0e71a8a4, 0x2e71a81f, 0x4e71aad5, + 0x6e71a928, 0x4eb1a81f, 0x6eb1aa93, 0x6eb0f96a, + 0x7e30fbbc, 0x7e70f862, 0x7eb0fb59, 0x7ef0f8c5, + 0x0ea0c883, 0x4ea0c928, 0x4ee0caf6, 0x2ea0ca93, + 0x6ea0c9cd, 0x6ee0c8c5, 0x0ea0dbdd, 0x4ea0db38, + 0x4ee0dad5, 0x0ea0eb7a, 0x4ea0eb38, 0x4ee0e883, + 0x2ea0db38, 0x6ea0db7a, 0x6ee0db17, 0x0e20ba0f, + 0x4e20bad5, 0x0e60b883, 0x4e60bb38, 0x0ea0b928, + 0x4ea0bb59, 0x4ee0bab4, 0x0ea0fa30, 0x4ea0fa51, + 0x4ee0f862, 0x0ef8f841, 0x4ef8f820, 0x2ea0fb38, + 0x6ea0f8a4, 0x6ee0f883, 0x2ef8f9ac, 0x6ef8f81f, + 0x2ea1fbbc, 0x6ea1f96a, 0x6ee1fb7a, 0x2ef9f862, + 0x6ef9f9ac, 0x2e205a72, 0x6e20581f, 0x0e231c41, + 0x4e2f1dcd, 0x0ebf1fdd, 0x4ea21c20, 0x2e351e93, + 0x6e2e1dac, 0x0e338651, 0x4e3886f6, 0x0e6f85cd, + 0x4e7e87bc, 0x0ea087fe, 0x4ea1841f, 0x4ee38441, + 0x0e3c0f7a, 0x4e3e0fbc, 0x0e660ca4, 0x4e600ffe, + 0x0ea60ca4, 0x4ea80ce6, 0x4ee00ffe, 0x2e3c0f7a, + 0x6e340e72, 0x2e6b0d49, 0x6e6a0d28, 0x2eae0dac, + 0x6ea20c20, 0x6ef60eb4, 0x0e23d441, 0x4e3ad738, + 0x4e64d462, 0x0e421420, 0x4e4b1549, 0x2e3a8738, + 0x6e3c877a, 0x2e728630, 0x6e6087fe, 0x2ea58483, + 0x6eac856a, 0x6ef98717, 0x0e2c2d6a, 0x4e262ca4, + 0x0e742e72, 0x4e642c62, 0x0ead2d8b, 0x4eaa2d28, + 0x4eec2d6a, 0x2e312e0f, 0x6e332e51, 0x2e642c62, + 0x6e6c2d6a, 0x2eae2dac, 0x6eae2dac, 0x6ef12e0f, + 0x0eafd5cd, 0x4ea4d462, 0x4ee9d507, 0x0ed616b4, + 0x4edc177a, 0x0e329e30, 0x4e269ca4, 0x0e649c62, + 0x4e669ca4, 0x0eae9dac, 0x4eb49e72, 0x2eb7d6d5, + 0x6eb2d630, 0x6ef4d672, 0x2ecd158b, 0x6ed716d5, + 0x2e39d717, 0x6e2ed5ac, 0x6e7cd77a, 0x2e591717, + 0x6e5e17bc, 0x2e30ddee, 0x6e2ddd8b, 0x6e7adf38, + 0x2e431c41, 0x6e4e1dac, 0x0e61941f, 0x4e6c956a, + 0x0eb29630, 0x4ea99507, 0x0e24cc62, 0x4e25cc83, + 0x4e6fcdcd, 0x0e550e93, 0x4e530e51, 0x2e729630, + 0x6e659483, 0x2ea39441, 0x6ead958b, 0x0ea0cffe, + 0x4ea7ccc5, 0x4eeacd28, 0x0ed10e0f, 0x4edf0fdd, + 0x2e20fffe, 0x6e22fc20, 0x6e76feb4, 0x2e493d07, + 0x6e563eb4, 0x0e396717, 0x4e3e67bc, 0x0e7766d5, + 0x4e7d679b, 0x0ebb6759, 0x4ea764c5, 0x2e236441, + 0x6e396717, 0x2e726630, 0x6e61641f, 0x2ea764c5, + 0x6eae65ac, 0x0e2ba549, 0x4e3ea7bc, 0x0e71a60f, + 0x4e7fa7dd, 0x0eb8a6f6, 0x4ea1a41f, 0x0e35f693, + 0x4e21f41f, 0x4e67f4c5, 0x0e5035ee, 0x4e543672, + 0x0e216c1f, 0x4e346e72, 0x0e7d6f9b, 0x4e766eb4, + 0x0eb26e30, 0x4eae6dac, 0x2e2d6d8b, 0x6e2b6d49, + 0x2e686ce6, 0x6e606ffe, 0x2eb36e51, 0x6ebd6f9b, + 0x0e3eafbc, 0x4e20affe, 0x0e69ad07, 0x4e6cad6a, + 0x0eb6aeb4, 0x4eacad6a, 0x0e66b4a4, 0x4e7ab738, + 0x0eb3b651, 0x4eb3b651, 0x0e3826f6, 0x4e252483, + 0x0e7f27dd, 0x4e71260f, 0x0eb826f6, 0x4eb52693, + 0x0eb5f693, 0x4eb8f6f6, 0x4ee4f462, 0x0ed1360f, + 0x4ec834e6, 0x2eaeedac, 0x6eb2ee30, 0x6eeded8b, + 0x2ecf2dcd, 0x6ed92f17, 0x0f81100f, 0x4f848862, + 0x4fc31841, 0x0fad518b, 0x4fa780c5, 0x4fd059ee, + 0x2fa890e6, 0x4fa38841, 0x6fc1900f, 0x0f7b8149, + 0x4f4688a4, 0x0faf81cd, 0x4fa58083, 0x0e3736d5, + 0x4e393717, 0x0e61341f, 0x4e7b3759, 0x0ea43462, + 0x4ea1341f, 0x4efd379b, 0x0e343e72, 0x4e2c3d6a, + 0x0e793f17, 0x4e753e93, 0x0ea53c83, 0x4eb43e72, + 0x4ee23c20, 0x2e3b8f59, 0x6e3c8f7a, 0x2e798f17, + 0x6e648c62, 0x2eb48e72, 0x6eae8dac, 0x6ee68ca4, + 0x2e3e37bc, 0x6e2037fe, 0x2e7f37dd, 0x6e723630, + 0x2ebd379b, 0x6ea834e6, 0x6eeb3549, 0x2e3f3fdd, + 0x6e343e72, 0x2e693d07, 0x6e663ca4, 0x2ea93d07, + 0x6eb13e0f, 0x6eeb3d49, 0x0e39e717, 0x4e2ae528, + 0x4e64e462, 0x2ebee7bc, 0x6eb7e6d5, 0x6ee1e41f, + 0x2e27e4c5, 0x6e3de79b, 0x6e62e420, 0x659239e8, + 0x65d03b94, 0x65d0232d, 0x65d120c2, 0x659129f2, + 0x65933ca3, 0x25969683, 0x25961d15, 0x254d1c48, + 0x259e3f61, 0x25953b96, 0x255b91d1, 0x247686ed, + 0x24309098, 0x2462edb9, 0x24a57468, 0xba5fd3e3, + 0x3a5f03e5, 0xfa411be4, 0x7a42cbe2, 0x93df03ff, + 0xc820ffff, 0x8822fc7f, 0xc8247cbf, 0x88267fff, + 0x4e010fe0, 0x5e040420, 0x4e081fe1, 0x4e0c1fe1, + 0x4e0a1fe1, 0x4e071fe1, 0x4e042c20, 0x4e062c20, + 0x4e052c20, 0x4e083c20, 0x0e0c3c20, 0x0e0a3c20, + 0x0e073c20, 0x9eae0020, 0x0f03f409, 0x6f03f40e, + 0x4cc0ac3f, 0x0ea1b820, 0x0ef9b820, 0x4ef9b820, + 0x4e21c862, 0x0e79c862, 0x4e79c862, 0x4e61b8a4, + 0x0e79b8a4, 0x4e79b8a4, 0x05a08020, 0x05104fe0, + 0x05505001, 0x05906fe2, 0x05d03005, 0x05101fea, + 0x05901feb, 0x04b0e3e0, 0x0470e7e1, 0x042f9c20, + 0x043f9c35, 0x047f9c20, 0x04ff9c20, 0x04299420, + 0x04319160, 0x0461943e, 0x04a19020, 0x04038100, + 0x040381a0, 0x040387e1, 0x04438be2, 0x04c38fe3, + 0x040181e0, 0x04018100, 0x04018621, 0x04418b22, + 0x04418822, 0x04818c23, 0x040081e0, 0x04008120, + 0x04008761, 0x04008621, 0x04408822, 0x04808c23, + 0x042053ff, 0x047f5401, 0x25208028, 0x2538cfe0, + 0x2578d001, 0x25b8efe2, 0x25f8f007, 0x2538dfea, + 0x25b8dfeb, 0xa400a3e0, 0xa420a7e0, 0xa4484be0, + 0xa467afe0, 0xa4a8a7ea, 0xa547a814, 0xa4084ffe, + 0xa55c53e0, 0xa5e1540b, 0xe400fbf6, 0xe408ffff, + 0xe420e7e0, 0xe4484be0, 0xe460efe0, 0xe547e400, + 0xe4014be0, 0xe4a84fe0, 0xe5f15000, 0x858043e0, + 0x85a043ff, 0xe59f5d08, 0x0420e3e9, 0x0460e3ea, + 0x04a0e3eb, 0x04e0e3ec, 0x25104042, 0x25104871, + 0x25904861, 0x25904c92, 0x05344020, 0x05744041, + 0x05b44062, 0x05f44083, 0x252c8840, 0x253c1420, + 0x25681572, 0x25a21ce3, 0x25ea1e34, 0x253c0421, + 0x25680572, 0x25a20ce3, 0x25ea0e34, 0x0522c020, + 0x05e6c0a4, 0x2401a001, 0x2443a051, 0x24858881, + 0x24c78cd1, 0x24850891, 0x24c70cc1, 0x250f9001, + 0x25508051, 0x25802491, 0x25df28c1, 0x25850c81, + 0x251e10d1, 0x65816001, 0x65c36051, 0x65854891, + 0x65c74cc1, 0x05733820, 0x05b238a4, 0x05f138e6, + 0x0570396a, 0x65d0a001, 0x65d6a443, 0x65d4a826, + 0x6594ac26, 0x6554ac26, 0x6556ac26, 0x6552ac26, + 0x65cbac85, 0x65caac01, 0x6589ac85, 0x6588ac01, + 0x65c9ac85, 0x65c8ac01, 0x65dea833, 0x659ca509, + 0x65d8a801, 0x65dcac01, 0x655cb241, 0x0520a1e0, + 0x0521a601, 0x052281e0, 0x05238601, 0x04a14026, + 0x042244a6, 0x046344a6, 0x04a444a6, 0x04e544a7, + 0x0568aca7, 0x05b23230, 0x853040af, 0xc5b040af, + 0xe57080af, 0xe5b080af, 0x25034440, 0x254054c4, + 0x25034640, 0x25415a05, 0x25834440, 0x25c54489, + 0x250b5d3a, 0x2550dc20, 0x2518e3e1, 0x2518e021, + 0x2518e0a1, 0x2518e121, 0x2518e1a1, 0x2558e3e2, + 0x2558e042, 0x2558e0c2, 0x2558e142, 0x2598e3e3, + 0x2598e063, 0x2598e0e3, 0x2598e163, 0x25d8e3e4, + 0x25d8e084, 0x25d8e104, 0x25d8e184, 0x2518e407, + 0x05214800, 0x05614800, 0x05a14800, 0x05e14800, + 0x05214c00, 0x05614c00, 0x05a14c00, 0x05e14c00, + 0x05304001, 0x05314001, 0x05a18610, 0x05e18610, + 0x05271e11, 0x6545e891, 0x6585e891, 0x65c5e891, + 0x6545c891, 0x6585c891, 0x65c5c891, 0x45b0c210, + 0x45f1c231, 0x1e601000, 0x1e603000, 0x1e621000, + 0x1e623000, 0x1e641000, 0x1e643000, 0x1e661000, + 0x1e663000, 0x1e681000, 0x1e683000, 0x1e6a1000, + 0x1e6a3000, 0x1e6c1000, 0x1e6c3000, 0x1e6e1000, + 0x1e6e3000, 0x1e701000, 0x1e703000, 0x1e721000, + 0x1e723000, 0x1e741000, 0x1e743000, 0x1e761000, + 0x1e763000, 0x1e781000, 0x1e783000, 0x1e7a1000, + 0x1e7a3000, 0x1e7c1000, 0x1e7c3000, 0x1e7e1000, + 0x1e7e3000, 0xf8268267, 0xf82d023c, 0xf8301046, + 0xf83d2083, 0xf8263290, 0xf82d528c, 0xf8284299, + 0xf8337160, 0xf8386286, 0xf8bf820e, 0xf8a600e0, + 0xf8af1353, 0xf8a922ea, 0xf8b53396, 0xf8a251e3, + 0xf8b340f4, 0xf8a470fd, 0xf8a06209, 0xf8f48097, + 0xf8f002ea, 0xf8eb10d9, 0xf8ff21b0, 0xf8f7302c, + 0xf8ee52a9, 0xf8f041fa, 0xf8e471e4, 0xf8e863c6, + 0xf864823d, 0xf87d013a, 0xf86f1162, 0xf87d20e3, + 0xf86132bb, 0xf870510e, 0xf8704336, 0xf86572b4, + 0xf8706217, 0xb83e8294, 0xb8200264, 0xb8381284, + 0xb8242358, 0xb8333102, 0xb828530e, 0xb83042df, + 0xb824703f, 0xb82a6194, 0xb8a080e9, 0xb8b80090, + 0xb8bb1146, 0xb8bb21b8, 0xb8b032df, 0xb8b653f4, + 0xb8bd41c9, 0xb8b47287, 0xb8bc6169, 0xb8ee828c, + 0xb8e10138, 0xb8f3126d, 0xb8f020b0, 0xb8e03183, + 0xb8e851ef, 0xb8f041e4, 0xb8fe7005, 0xb8ea6376, + 0xb8638120, 0xb873015d, 0xb8781284, 0xb86723b8, + 0xb86e3175, 0xb87b51ed, 0xb87f41d1, 0xb863721e, + 0xb87660f4, 0xce216874, 0xce104533, 0xce648c15, + 0xce8e3302, 0xce6e82ab, 0xce6c87d1, 0xcec08063, + 0xce638937, 0x25e0c358, 0x25a1c7d3, 0x0580785a, + 0x05426328, 0x05009892, 0x25a0cc29, 0x2561cec8, + 0x058044b3, 0x05401c99, 0x05006b49, 0x25e0d6f7, + 0x2561c528, 0x0583c8bc, 0x0542522f, 0x05001ec0, + 0x25e0de65, 0x25a1c113, 0x05803cad, 0x0540f3c0, + 0x0500ab15, 0x2560c28c, 0x2561d7c0, 0x05801ed7, + 0x0542633b, 0x05003696, 0x2560d4b4, 0x25e1c918, + 0x058021ff, 0x05400e15, 0x0500f3de, 0x0473025a, + 0x04bd05ab, 0x658e0025, 0x658a08e2, 0x659a0493, + 0x043e1062, 0x04f418b4, 0x046d15bd, 0x04611fce, + 0x04d6a07c, 0x04001929, 0x041a09da, 0x04d098f4, + 0x04db10d4, 0x0459a3ad, 0x041aa029, 0x041919fb, + 0x04d39e24, 0x04118302, 0x04101dba, 0x04d7ae16, + 0x04dea571, 0x04180210, 0x05e786fc, 0x05e4915c, + 0x04881cf1, 0x044a0f04, 0x04090969, 0x048b16c4, + 0x044101e4, 0x04dcbf44, 0x65809745, 0x658d833f, + 0x65c68468, 0x65c79b07, 0x65829e38, 0x049dafca, + 0x6582bba8, 0x65c0b7ff, 0x65c1b4e0, 0x658dbadd, + 0x65819a9d, 0x65ed9246, 0x65b30815, 0x65e6263c, + 0x65eebb94, 0x65bad14e, 0x65efe178, 0x65fc5697, + 0x65e07f14, 0x040c55a6, 0x04977f4d, 0x043d3046, + 0x04b733a0, 0x046830a4, 0x04ed322d, 0x05686948, + 0x05bd6c13, 0x65c88ef0, 0x450db3d7, 0x4540b6d9, + 0x043e3979, 0x445896ce, 0x445a9005, 0x44d98069, + 0x445b87ae, 0x04da348e, 0x04982edb, 0x0499397f, + 0x0408338c, 0x04ca309c, 0x65c721e6, 0x65c63641, + 0x65982882, 0x04812b8b, 0x0e251083, 0x4e3712d5, + 0x0e61101f, 0x4e6d118b, 0x0eba1338, 0x4eb712d5, + 0x2e31120f, 0x6e2e11ac, 0x2e6810e6, 0x6e6f11cd, + 0x2eaa1128, 0x6eb1120f, }; // END Generated code -- do not edit diff --git a/test/hotspot/jtreg/compiler/onSpinWait/TestOnSpinWaitAArch64.java b/test/hotspot/jtreg/compiler/onSpinWait/TestOnSpinWaitAArch64.java index 76953bfb124..a4f40ccda92 100644 --- a/test/hotspot/jtreg/compiler/onSpinWait/TestOnSpinWaitAArch64.java +++ b/test/hotspot/jtreg/compiler/onSpinWait/TestOnSpinWaitAArch64.java @@ -33,9 +33,11 @@ * @run driver compiler.onSpinWait.TestOnSpinWaitAArch64 c2 nop 7 * @run driver compiler.onSpinWait.TestOnSpinWaitAArch64 c2 isb 3 * @run driver compiler.onSpinWait.TestOnSpinWaitAArch64 c2 yield 1 + * @run driver compiler.onSpinWait.TestOnSpinWaitAArch64 c2 sb 1 * @run driver compiler.onSpinWait.TestOnSpinWaitAArch64 c1 nop 7 * @run driver compiler.onSpinWait.TestOnSpinWaitAArch64 c1 isb 3 - * @run driver compiler.onSpinWait.TestOnSpinWaitAArch64 c1 yield + * @run driver compiler.onSpinWait.TestOnSpinWaitAArch64 c1 yield 1 + * @run driver compiler.onSpinWait.TestOnSpinWaitAArch64 c1 sb 1 */ package compiler.onSpinWait; @@ -50,13 +52,12 @@ public class TestOnSpinWaitAArch64 { public static void main(String[] args) throws Exception { String compiler = args[0]; String spinWaitInst = args[1]; - String spinWaitInstCount = (args.length == 3) ? args[2] : "1"; + String spinWaitInstCount = args[2]; ArrayList command = new ArrayList(); command.add("-XX:+IgnoreUnrecognizedVMOptions"); command.add("-showversion"); command.add("-XX:-BackgroundCompilation"); command.add("-XX:+UnlockDiagnosticVMOptions"); - command.add("-XX:+PrintAssembly"); if (compiler.equals("c2")) { command.add("-XX:-TieredCompilation"); } else if (compiler.equals("c1")) { @@ -69,12 +70,18 @@ public class TestOnSpinWaitAArch64 { command.add("-XX:OnSpinWaitInst=" + spinWaitInst); command.add("-XX:OnSpinWaitInstCount=" + spinWaitInstCount); command.add("-XX:CompileCommand=compileonly," + Launcher.class.getName() + "::" + "test"); + command.add("-XX:CompileCommand=print," + Launcher.class.getName() + "::" + "test"); command.add(Launcher.class.getName()); ProcessBuilder pb = ProcessTools.createLimitedTestJavaProcessBuilder(command); OutputAnalyzer analyzer = new OutputAnalyzer(pb.start()); + if ("sb".equals(spinWaitInst) && analyzer.contains("CPU does not support SB")) { + System.out.println("Skipping the test. The current CPU does not support SB instruction."); + return; + } + analyzer.shouldHaveExitValue(0); System.out.println(analyzer.getOutput()); @@ -89,6 +96,8 @@ public class TestOnSpinWaitAArch64 { return "df3f 03d5"; } else if ("yield".equals(spinWaitInst)) { return "3f20 03d5"; + } else if ("sb".equals(spinWaitInst)) { + return "ff30 03d5"; } else { throw new RuntimeException("Unknown spin wait instruction: " + spinWaitInst); }