< prev index next >

src/hotspot/cpu/aarch64/stubRoutines_aarch64.cpp

Print this page
8248238: Adding Windows support to OpenJDK on AArch64

Summary: Adding Windows support for AArch64

Contributed-by: Ludovic Henry <luhenry@microsoft.com>, Monica Beckwith <monica.beckwith@microsoft.com>
Reviewed-by:


  45 address StubRoutines::aarch64::_double_sign_mask = NULL;
  46 address StubRoutines::aarch64::_double_sign_flip = NULL;
  47 address StubRoutines::aarch64::_zero_blocks = NULL;
  48 address StubRoutines::aarch64::_has_negatives = NULL;
  49 address StubRoutines::aarch64::_has_negatives_long = NULL;
  50 address StubRoutines::aarch64::_large_array_equals = NULL;
  51 address StubRoutines::aarch64::_compare_long_string_LL = NULL;
  52 address StubRoutines::aarch64::_compare_long_string_UU = NULL;
  53 address StubRoutines::aarch64::_compare_long_string_LU = NULL;
  54 address StubRoutines::aarch64::_compare_long_string_UL = NULL;
  55 address StubRoutines::aarch64::_string_indexof_linear_ll = NULL;
  56 address StubRoutines::aarch64::_string_indexof_linear_uu = NULL;
  57 address StubRoutines::aarch64::_string_indexof_linear_ul = NULL;
  58 address StubRoutines::aarch64::_large_byte_array_inflate = NULL;
  59 address StubRoutines::aarch64::_method_entry_barrier = NULL;
  60 bool StubRoutines::aarch64::_completed = false;
  61 
  62 /**
  63  *  crc_table[] from jdk/src/share/native/java/util/zip/zlib-1.2.5/crc32.h
  64  */
  65 juint StubRoutines::aarch64::_crc_table[] ATTRIBUTE_ALIGNED(4096) =
  66 {
  67     // Table 0
  68     0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
  69     0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
  70     0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
  71     0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
  72     0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
  73     0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
  74     0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
  75     0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
  76     0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
  77     0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
  78     0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
  79     0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
  80     0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
  81     0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
  82     0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
  83     0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
  84     0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
  85     0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,


 272     0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
 273     0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
 274     0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
 275     0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
 276     0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
 277     0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
 278     0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
 279     0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
 280     0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
 281     0xde0506f1UL,
 282     // Constants for Neon CRC232 implementation
 283     // k3 = 0x78ED02D5 = x^288 mod poly - bit reversed
 284     // k4 = 0xED627DAE = x^256 mod poly - bit reversed
 285     0x78ED02D5UL, 0xED627DAEUL,         // k4:k3
 286     0xED78D502UL, 0x62EDAE7DUL,         // byte swap
 287     0x02D578EDUL, 0x7DAEED62UL,         // word swap
 288     0xD502ED78UL, 0xAE7D62EDUL,         // byte swap of word swap
 289 };
 290 
 291 // Accumulation coefficients for adler32 upper 16 bits
 292 jubyte StubRoutines::aarch64::_adler_table[] __attribute__ ((aligned(64))) = {
 293     16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
 294 };
 295 
 296 juint StubRoutines::aarch64::_npio2_hw[] __attribute__ ((aligned(64))) = {
 297     // first, various coefficient values: 0.5, invpio2, pio2_1, pio2_1t, pio2_2,
 298     // pio2_2t, pio2_3, pio2_3t
 299     // This is a small optimization wich keeping double[8] values in int[] table
 300     // to have less address calculation instructions
 301     //
 302     // invpio2:  53 bits of 2/pi (enough for cases when trigonometric argument is small)
 303     // pio2_1:   first  33 bit of pi/2
 304     // pio2_1t:  pi/2 - pio2_1
 305     // pio2_2:   second 33 bit of pi/2
 306     // pio2_2t:  pi/2 - (pio2_1+pio2_2)
 307     // pio2_3:   third  33 bit of pi/2
 308     // pio2_3t:  pi/2 - (pio2_1+pio2_2+pio2_3)
 309     0x00000000, 0x3fe00000, // 0.5
 310     0x6DC9C883, 0x3FE45F30, // invpio2 = 6.36619772367581382433e-01
 311     0x54400000, 0x3FF921FB, // pio2_1 = 1.57079632673412561417e+00
 312     0x1A626331, 0x3DD0B461, // pio2_1t = 6.07710050650619224932e-11
 313     0x1A600000, 0x3DD0B461, // pio2_2 = 6.07710050630396597660e-11
 314     0x2E037073, 0x3BA3198A, // pio2_2t = 2.02226624879595063154e-21
 315     0x2E000000, 0x3BA3198A, // pio2_3 = 2.02226624871116645580e-21
 316     0x252049C1, 0x397B839A, // pio2_3t = 8.47842766036889956997e-32
 317     // now, npio2_hw itself
 318     0x3FF921FB, 0x400921FB, 0x4012D97C, 0x401921FB, 0x401F6A7A, 0x4022D97C,
 319     0x4025FDBB, 0x402921FB, 0x402C463A, 0x402F6A7A, 0x4031475C, 0x4032D97C,
 320     0x40346B9C, 0x4035FDBB, 0x40378FDB, 0x403921FB, 0x403AB41B, 0x403C463A,
 321     0x403DD85A, 0x403F6A7A, 0x40407E4C, 0x4041475C, 0x4042106C, 0x4042D97C,
 322     0x4043A28C, 0x40446B9C, 0x404534AC, 0x4045FDBB, 0x4046C6CB, 0x40478FDB,
 323     0x404858EB, 0x404921FB
 324 };
 325 
 326 // Coefficients for sin(x) polynomial approximation: S1..S6.
 327 // See kernel_sin comments in macroAssembler_aarch64_trig.cpp for details
 328 jdouble StubRoutines::aarch64::_dsin_coef[] __attribute__ ((aligned(64))) = {
 329     -1.66666666666666324348e-01, // 0xBFC5555555555549
 330      8.33333333332248946124e-03, // 0x3F8111111110F8A6
 331     -1.98412698298579493134e-04, // 0xBF2A01A019C161D5
 332      2.75573137070700676789e-06, // 0x3EC71DE357B1FE7D
 333     -2.50507602534068634195e-08, // 0xBE5AE5E68A2B9CEB
 334      1.58969099521155010221e-10  // 0x3DE5D93A5ACFD57C
 335 };
 336 
 337 // Coefficients for cos(x) polynomial approximation: C1..C6.
 338 // See kernel_cos comments in macroAssembler_aarch64_trig.cpp for details
 339 jdouble StubRoutines::aarch64::_dcos_coef[] __attribute__ ((aligned(64))) = {
 340      4.16666666666666019037e-02, // c0x3FA555555555554C
 341     -1.38888888888741095749e-03, // 0xBF56C16C16C15177
 342      2.48015872894767294178e-05, // 0x3EFA01A019CB1590
 343     -2.75573143513906633035e-07, // 0xBE927E4F809C52AD
 344      2.08757232129817482790e-09, // 0x3E21EE9EBDB4B1C4
 345     -1.13596475577881948265e-11  // 0xBDA8FAE9BE8838D4
 346 };
 347 
 348 // Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi.
 349 // Used in cases of very large argument. 396 hex digits is enough to support
 350 // required precision.
 351 // Converted to double to avoid unnecessary conversion in code
 352 // NOTE: table looks like original int table: {0xA2F983, 0x6E4E44,...} with
 353 //       only (double) conversion added
 354 jdouble StubRoutines::aarch64::_two_over_pi[] __attribute__ ((aligned(64))) = {
 355   (double)0xA2F983, (double)0x6E4E44, (double)0x1529FC, (double)0x2757D1, (double)0xF534DD, (double)0xC0DB62,
 356   (double)0x95993C, (double)0x439041, (double)0xFE5163, (double)0xABDEBB, (double)0xC561B7, (double)0x246E3A,
 357   (double)0x424DD2, (double)0xE00649, (double)0x2EEA09, (double)0xD1921C, (double)0xFE1DEB, (double)0x1CB129,
 358   (double)0xA73EE8, (double)0x8235F5, (double)0x2EBB44, (double)0x84E99C, (double)0x7026B4, (double)0x5F7E41,
 359   (double)0x3991D6, (double)0x398353, (double)0x39F49C, (double)0x845F8B, (double)0xBDF928, (double)0x3B1FF8,
 360   (double)0x97FFDE, (double)0x05980F, (double)0xEF2F11, (double)0x8B5A0A, (double)0x6D1F6D, (double)0x367ECF,
 361   (double)0x27CB09, (double)0xB74F46, (double)0x3F669E, (double)0x5FEA2D, (double)0x7527BA, (double)0xC7EBE5,
 362   (double)0xF17B3D, (double)0x0739F7, (double)0x8A5292, (double)0xEA6BFB, (double)0x5FB11F, (double)0x8D5D08,
 363   (double)0x560330, (double)0x46FC7B, (double)0x6BABF0, (double)0xCFBC20, (double)0x9AF436, (double)0x1DA9E3,
 364   (double)0x91615E, (double)0xE61B08, (double)0x659985, (double)0x5F14A0, (double)0x68408D, (double)0xFFD880,
 365   (double)0x4D7327, (double)0x310606, (double)0x1556CA, (double)0x73A8C9, (double)0x60E27B, (double)0xC08C6B,
 366 };
 367 
 368 // Pi over 2 value
 369 jdouble StubRoutines::aarch64::_pio2[] __attribute__ ((aligned(64))) = {
 370   1.57079625129699707031e+00, // 0x3FF921FB40000000
 371   7.54978941586159635335e-08, // 0x3E74442D00000000
 372   5.39030252995776476554e-15, // 0x3CF8469880000000
 373   3.28200341580791294123e-22, // 0x3B78CC5160000000
 374   1.27065575308067607349e-29, // 0x39F01B8380000000
 375   1.22933308981111328932e-36, // 0x387A252040000000
 376   2.73370053816464559624e-44, // 0x36E3822280000000
 377   2.16741683877804819444e-51, // 0x3569F31D00000000
 378 };


  45 address StubRoutines::aarch64::_double_sign_mask = NULL;
  46 address StubRoutines::aarch64::_double_sign_flip = NULL;
  47 address StubRoutines::aarch64::_zero_blocks = NULL;
  48 address StubRoutines::aarch64::_has_negatives = NULL;
  49 address StubRoutines::aarch64::_has_negatives_long = NULL;
  50 address StubRoutines::aarch64::_large_array_equals = NULL;
  51 address StubRoutines::aarch64::_compare_long_string_LL = NULL;
  52 address StubRoutines::aarch64::_compare_long_string_UU = NULL;
  53 address StubRoutines::aarch64::_compare_long_string_LU = NULL;
  54 address StubRoutines::aarch64::_compare_long_string_UL = NULL;
  55 address StubRoutines::aarch64::_string_indexof_linear_ll = NULL;
  56 address StubRoutines::aarch64::_string_indexof_linear_uu = NULL;
  57 address StubRoutines::aarch64::_string_indexof_linear_ul = NULL;
  58 address StubRoutines::aarch64::_large_byte_array_inflate = NULL;
  59 address StubRoutines::aarch64::_method_entry_barrier = NULL;
  60 bool StubRoutines::aarch64::_completed = false;
  61 
  62 /**
  63  *  crc_table[] from jdk/src/share/native/java/util/zip/zlib-1.2.5/crc32.h
  64  */
  65 ATTRIBUTE_ALIGNED(4096) juint StubRoutines::aarch64::_crc_table[] =
  66 {
  67     // Table 0
  68     0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
  69     0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
  70     0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
  71     0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
  72     0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
  73     0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
  74     0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
  75     0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
  76     0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
  77     0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
  78     0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
  79     0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
  80     0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
  81     0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
  82     0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
  83     0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
  84     0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
  85     0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,


 272     0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
 273     0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
 274     0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
 275     0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
 276     0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
 277     0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
 278     0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
 279     0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
 280     0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
 281     0xde0506f1UL,
 282     // Constants for Neon CRC232 implementation
 283     // k3 = 0x78ED02D5 = x^288 mod poly - bit reversed
 284     // k4 = 0xED627DAE = x^256 mod poly - bit reversed
 285     0x78ED02D5UL, 0xED627DAEUL,         // k4:k3
 286     0xED78D502UL, 0x62EDAE7DUL,         // byte swap
 287     0x02D578EDUL, 0x7DAEED62UL,         // word swap
 288     0xD502ED78UL, 0xAE7D62EDUL,         // byte swap of word swap
 289 };
 290 
 291 // Accumulation coefficients for adler32 upper 16 bits
 292 ATTRIBUTE_ALIGNED(64) jubyte StubRoutines::aarch64::_adler_table[] = {
 293     16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
 294 };
 295 
 296 ATTRIBUTE_ALIGNED(64) juint StubRoutines::aarch64::_npio2_hw[] = {
 297     // first, various coefficient values: 0.5, invpio2, pio2_1, pio2_1t, pio2_2,
 298     // pio2_2t, pio2_3, pio2_3t
 299     // This is a small optimization wich keeping double[8] values in int[] table
 300     // to have less address calculation instructions
 301     //
 302     // invpio2:  53 bits of 2/pi (enough for cases when trigonometric argument is small)
 303     // pio2_1:   first  33 bit of pi/2
 304     // pio2_1t:  pi/2 - pio2_1
 305     // pio2_2:   second 33 bit of pi/2
 306     // pio2_2t:  pi/2 - (pio2_1+pio2_2)
 307     // pio2_3:   third  33 bit of pi/2
 308     // pio2_3t:  pi/2 - (pio2_1+pio2_2+pio2_3)
 309     0x00000000, 0x3fe00000, // 0.5
 310     0x6DC9C883, 0x3FE45F30, // invpio2 = 6.36619772367581382433e-01
 311     0x54400000, 0x3FF921FB, // pio2_1 = 1.57079632673412561417e+00
 312     0x1A626331, 0x3DD0B461, // pio2_1t = 6.07710050650619224932e-11
 313     0x1A600000, 0x3DD0B461, // pio2_2 = 6.07710050630396597660e-11
 314     0x2E037073, 0x3BA3198A, // pio2_2t = 2.02226624879595063154e-21
 315     0x2E000000, 0x3BA3198A, // pio2_3 = 2.02226624871116645580e-21
 316     0x252049C1, 0x397B839A, // pio2_3t = 8.47842766036889956997e-32
 317     // now, npio2_hw itself
 318     0x3FF921FB, 0x400921FB, 0x4012D97C, 0x401921FB, 0x401F6A7A, 0x4022D97C,
 319     0x4025FDBB, 0x402921FB, 0x402C463A, 0x402F6A7A, 0x4031475C, 0x4032D97C,
 320     0x40346B9C, 0x4035FDBB, 0x40378FDB, 0x403921FB, 0x403AB41B, 0x403C463A,
 321     0x403DD85A, 0x403F6A7A, 0x40407E4C, 0x4041475C, 0x4042106C, 0x4042D97C,
 322     0x4043A28C, 0x40446B9C, 0x404534AC, 0x4045FDBB, 0x4046C6CB, 0x40478FDB,
 323     0x404858EB, 0x404921FB
 324 };
 325 
 326 // Coefficients for sin(x) polynomial approximation: S1..S6.
 327 // See kernel_sin comments in macroAssembler_aarch64_trig.cpp for details
 328 ATTRIBUTE_ALIGNED(64) julong StubRoutines::aarch64::_dsin_coef[] = {
 329     0xBFC5555555555549, //  1.66666666666666324348e-01
 330     0x3F8111111110F8A6, //  8.33333333332248946124e-03
 331     0xBF2A01A019C161D5, // -1.98412698298579493134e-04
 332     0x3EC71DE357B1FE7D, //  2.75573137070700676789e-06
 333     0xBE5AE5E68A2B9CEB, // -2.50507602534068634195e-08
 334     0x3DE5D93A5ACFD57C  //  1.58969099521155010221e-10
 335 };
 336 
 337 // Coefficients for cos(x) polynomial approximation: C1..C6.
 338 // See kernel_cos comments in macroAssembler_aarch64_trig.cpp for details
 339 ATTRIBUTE_ALIGNED(64) julong StubRoutines::aarch64::_dcos_coef[] = {
 340     0x3FA555555555554C, //  4.16666666666666019037e-02
 341     0xBF56C16C16C15177, // -1.38888888888741095749e-03
 342     0x3EFA01A019CB1590, //  2.48015872894767294178e-05
 343     0xBE927E4F809C52AD, // -2.75573143513906633035e-07
 344     0x3E21EE9EBDB4B1C4, //  2.08757232129817482790e-09
 345     0xBDA8FAE9BE8838D4  // -1.13596475577881948265e-11
 346 };
 347 
 348 // Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi.
 349 // Used in cases of very large argument. 396 hex digits is enough to support
 350 // required precision.
 351 // Converted to double to avoid unnecessary conversion in code
 352 // NOTE: table looks like original int table: {0xA2F983, 0x6E4E44,...} with
 353 //       only (double) conversion added
 354 ATTRIBUTE_ALIGNED(64) jdouble StubRoutines::aarch64::_two_over_pi[] = {
 355   (double)0xA2F983, (double)0x6E4E44, (double)0x1529FC, (double)0x2757D1, (double)0xF534DD, (double)0xC0DB62,
 356   (double)0x95993C, (double)0x439041, (double)0xFE5163, (double)0xABDEBB, (double)0xC561B7, (double)0x246E3A,
 357   (double)0x424DD2, (double)0xE00649, (double)0x2EEA09, (double)0xD1921C, (double)0xFE1DEB, (double)0x1CB129,
 358   (double)0xA73EE8, (double)0x8235F5, (double)0x2EBB44, (double)0x84E99C, (double)0x7026B4, (double)0x5F7E41,
 359   (double)0x3991D6, (double)0x398353, (double)0x39F49C, (double)0x845F8B, (double)0xBDF928, (double)0x3B1FF8,
 360   (double)0x97FFDE, (double)0x05980F, (double)0xEF2F11, (double)0x8B5A0A, (double)0x6D1F6D, (double)0x367ECF,
 361   (double)0x27CB09, (double)0xB74F46, (double)0x3F669E, (double)0x5FEA2D, (double)0x7527BA, (double)0xC7EBE5,
 362   (double)0xF17B3D, (double)0x0739F7, (double)0x8A5292, (double)0xEA6BFB, (double)0x5FB11F, (double)0x8D5D08,
 363   (double)0x560330, (double)0x46FC7B, (double)0x6BABF0, (double)0xCFBC20, (double)0x9AF436, (double)0x1DA9E3,
 364   (double)0x91615E, (double)0xE61B08, (double)0x659985, (double)0x5F14A0, (double)0x68408D, (double)0xFFD880,
 365   (double)0x4D7327, (double)0x310606, (double)0x1556CA, (double)0x73A8C9, (double)0x60E27B, (double)0xC08C6B,
 366 };
 367 
 368 // Pi over 2 value
 369 ATTRIBUTE_ALIGNED(64) julong StubRoutines::aarch64::_pio2[] = {
 370     0x3FF921FB40000000, // 1.57079625129699707031e+00
 371     0x3E74442D00000000, // 7.54978941586159635335e-08
 372     0x3CF8469880000000, // 5.39030252995776476554e-15
 373     0x3B78CC5160000000, // 3.28200341580791294123e-22
 374     0x39F01B8380000000, // 1.27065575308067607349e-29
 375     0x387A252040000000, // 1.22933308981111328932e-36
 376     0x36E3822280000000, // 2.73370053816464559624e-44
 377     0x3569F31D00000000  // 2.16741683877804819444e-51
 378 };
< prev index next >