src/hotspot/cpu/x86/macroAssembler_x86_log10.cpp
author lfoltan
Mon, 23 Sep 2019 14:49:04 -0400
changeset 58273 08a5148e7c4e
parent 51756 4bd35a5ec694
permissions -rw-r--r--
8230505: Replace JVM type comparisons to T_OBJECT and T_ARRAY with call to is_reference_type Summary: Consistently use is_reference_type when comparing type for T_OBJECT or T_ARRAY. Reviewed-by: dlong, coleenp, hseigel Contributed-by: lois.foltan@oracle.com, john.r.rose@oracle.com
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
38018
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
     1
/*
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
     2
* Copyright (c) 2016, Intel Corporation.
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
     3
* Intel Math Library (LIBM) Source Code
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
     4
*
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
     5
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
     6
*
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
     7
* This code is free software; you can redistribute it and/or modify it
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
     8
* under the terms of the GNU General Public License version 2 only, as
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
     9
* published by the Free Software Foundation.
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    10
*
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    11
* This code is distributed in the hope that it will be useful, but WITHOUT
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    13
* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    14
* version 2 for more details (a copy is included in the LICENSE file that
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    15
* accompanied this code).
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    16
*
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    17
* You should have received a copy of the GNU General Public License version
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    18
* 2 along with this work; if not, write to the Free Software Foundation,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    20
*
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    22
* or visit www.oracle.com if you need additional information or have any
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    23
* questions.
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    24
*
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    25
*/
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    26
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    27
#include "precompiled.hpp"
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    28
#include "asm/assembler.hpp"
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    29
#include "asm/assembler.inline.hpp"
50120
9da00197ff72 8203220: Introduce ATTRIBUTE_ALIGNED macro
pliden
parents: 47216
diff changeset
    30
#include "macroAssembler_x86.hpp"
38018
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    31
#include "runtime/stubRoutines.hpp"
50120
9da00197ff72 8203220: Introduce ATTRIBUTE_ALIGNED macro
pliden
parents: 47216
diff changeset
    32
#include "utilities/globalDefinitions.hpp"
38018
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    33
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    34
/******************************************************************************/
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    35
//                     ALGORITHM DESCRIPTION - LOG10()
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    36
//                     ---------------------
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    37
//
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    38
//    Let x=2^k * mx, mx in [1,2)
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    39
//
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    40
//    Get B~1/mx based on the output of rcpss instruction (B0)
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    41
//    B = int((B0*LH*2^7+0.5))/2^7
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    42
//    LH is a short approximation for log10(e)
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    43
//
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    44
//    Reduced argument: r=B*mx-LH (computed accurately in high and low parts)
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    45
//
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    46
//    Result:  k*log10(2) - log(B) + p(r)
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    47
//             p(r) is a degree 7 polynomial
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    48
//             -log(B) read from data table (high, low parts)
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    49
//             Result is formed from high and low parts
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    50
//
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    51
// Special cases:
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    52
//  log10(0) = -INF with divide-by-zero exception raised
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    53
//  log10(1) = +0
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    54
//  log10(x) = NaN with invalid exception raised if x < -0, including -INF
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    55
//  log10(+INF) = +INF
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    56
//
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    57
/******************************************************************************/
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    58
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    59
#ifdef _LP64
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    60
// The 64 bit code is at most SSE2 compliant
50120
9da00197ff72 8203220: Introduce ATTRIBUTE_ALIGNED macro
pliden
parents: 47216
diff changeset
    61
ATTRIBUTE_ALIGNED(16) juint _HIGHSIGMASK_log10[] =
38018
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    62
{
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    63
    0xf8000000UL, 0xffffffffUL, 0x00000000UL, 0xffffe000UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    64
};
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    65
50120
9da00197ff72 8203220: Introduce ATTRIBUTE_ALIGNED macro
pliden
parents: 47216
diff changeset
    66
ATTRIBUTE_ALIGNED(16) juint _LOG10_E[] =
38018
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    67
{
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    68
    0x00000000UL, 0x3fdbc000UL, 0xbf2e4108UL, 0x3f5a7a6cUL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    69
};
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    70
50120
9da00197ff72 8203220: Introduce ATTRIBUTE_ALIGNED macro
pliden
parents: 47216
diff changeset
    71
ATTRIBUTE_ALIGNED(16) juint _L_tbl_log10[] =
38018
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    72
{
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    73
    0x509f7800UL, 0x3fd34413UL, 0x1f12b358UL, 0x3d1fef31UL, 0x80333400UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    74
    0x3fd32418UL, 0xc671d9d0UL, 0xbcf542bfUL, 0x51195000UL, 0x3fd30442UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    75
    0x78a4b0c3UL, 0x3d18216aUL, 0x6fc79400UL, 0x3fd2e490UL, 0x80fa389dUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    76
    0xbc902869UL, 0x89d04000UL, 0x3fd2c502UL, 0x75c2f564UL, 0x3d040754UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    77
    0x4ddd1c00UL, 0x3fd2a598UL, 0xd219b2c3UL, 0xbcfa1d84UL, 0x6baa7c00UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    78
    0x3fd28651UL, 0xfd9abec1UL, 0x3d1be6d3UL, 0x94028800UL, 0x3fd2672dUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    79
    0xe289a455UL, 0xbd1ede5eUL, 0x78b86400UL, 0x3fd2482cUL, 0x6734d179UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    80
    0x3d1fe79bUL, 0xcca3c800UL, 0x3fd2294dUL, 0x981a40b8UL, 0xbced34eaUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    81
    0x439c5000UL, 0x3fd20a91UL, 0xcc392737UL, 0xbd1a9cc3UL, 0x92752c00UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    82
    0x3fd1ebf6UL, 0x03c9afe7UL, 0x3d1e98f8UL, 0x6ef8dc00UL, 0x3fd1cd7dUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    83
    0x71dae7f4UL, 0x3d08a86cUL, 0x8fe4dc00UL, 0x3fd1af25UL, 0xee9185a1UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    84
    0xbcff3412UL, 0xace59400UL, 0x3fd190eeUL, 0xc2cab353UL, 0x3cf17ed9UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    85
    0x7e925000UL, 0x3fd172d8UL, 0x6952c1b2UL, 0x3cf1521cUL, 0xbe694400UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    86
    0x3fd154e2UL, 0xcacb79caUL, 0xbd0bdc78UL, 0x26cbac00UL, 0x3fd1370dUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    87
    0xf71f4de1UL, 0xbd01f8beUL, 0x72fa0800UL, 0x3fd11957UL, 0x55bf910bUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    88
    0x3c946e2bUL, 0x5f106000UL, 0x3fd0fbc1UL, 0x39e639c1UL, 0x3d14a84bUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    89
    0xa802a800UL, 0x3fd0de4aUL, 0xd3f31d5dUL, 0xbd178385UL, 0x0b992000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    90
    0x3fd0c0f3UL, 0x3843106fUL, 0xbd1f602fUL, 0x486ce800UL, 0x3fd0a3baUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    91
    0x8819497cUL, 0x3cef987aUL, 0x1de49400UL, 0x3fd086a0UL, 0x1caa0467UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    92
    0x3d0faec7UL, 0x4c30cc00UL, 0x3fd069a4UL, 0xa4424372UL, 0xbd1618fcUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    93
    0x94490000UL, 0x3fd04cc6UL, 0x946517d2UL, 0xbd18384bUL, 0xb7e84000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    94
    0x3fd03006UL, 0xe0109c37UL, 0xbd19a6acUL, 0x798a0c00UL, 0x3fd01364UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    95
    0x5121e864UL, 0xbd164cf7UL, 0x38ce8000UL, 0x3fcfedbfUL, 0x46214d1aUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    96
    0xbcbbc402UL, 0xc8e62000UL, 0x3fcfb4efUL, 0xdab93203UL, 0x3d1e0176UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    97
    0x2cb02800UL, 0x3fcf7c5aUL, 0x2a2ea8e4UL, 0xbcfec86aUL, 0xeeeaa000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    98
    0x3fcf43fdUL, 0xc18e49a4UL, 0x3cf110a8UL, 0x9bb6e800UL, 0x3fcf0bdaUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
    99
    0x923cc9c0UL, 0xbd15ce99UL, 0xc093f000UL, 0x3fced3efUL, 0x4d4b51e9UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   100
    0x3d1a04c7UL, 0xec58f800UL, 0x3fce9c3cUL, 0x163cad59UL, 0x3cac8260UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   101
    0x9a907000UL, 0x3fce2d7dUL, 0x3fa93646UL, 0x3ce4a1c0UL, 0x37311000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   102
    0x3fcdbf99UL, 0x32abd1fdUL, 0x3d07ea9dUL, 0x6744b800UL, 0x3fcd528cUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   103
    0x4dcbdfd4UL, 0xbd1b08e2UL, 0xe36de800UL, 0x3fcce653UL, 0x0b7b7f7fUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   104
    0xbd1b8f03UL, 0x77506800UL, 0x3fcc7aecUL, 0xa821c9fbUL, 0x3d13c163UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   105
    0x00ff8800UL, 0x3fcc1053UL, 0x536bca76UL, 0xbd074ee5UL, 0x70719800UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   106
    0x3fcba684UL, 0xd7da9b6bUL, 0xbd1fbf16UL, 0xc6f8d800UL, 0x3fcb3d7dUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   107
    0xe2220bb3UL, 0x3d1a295dUL, 0x16c15800UL, 0x3fcad53cUL, 0xe724911eUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   108
    0xbcf55822UL, 0x82533800UL, 0x3fca6dbcUL, 0x6d982371UL, 0x3cac567cUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   109
    0x3c19e800UL, 0x3fca06fcUL, 0x84d17d80UL, 0x3d1da204UL, 0x85ef8000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   110
    0x3fc9a0f8UL, 0x54466a6aUL, 0xbd002204UL, 0xb0ac2000UL, 0x3fc93baeUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   111
    0xd601fd65UL, 0x3d18840cUL, 0x1bb9b000UL, 0x3fc8d71cUL, 0x7bf58766UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   112
    0xbd14f897UL, 0x34aae800UL, 0x3fc8733eUL, 0x3af6ac24UL, 0xbd0f5c45UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   113
    0x76d68000UL, 0x3fc81012UL, 0x4303e1a1UL, 0xbd1f9a80UL, 0x6af57800UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   114
    0x3fc7ad96UL, 0x43fbcb46UL, 0x3cf4c33eUL, 0xa6c51000UL, 0x3fc74bc7UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   115
    0x70f0eac5UL, 0xbd192e3bUL, 0xccab9800UL, 0x3fc6eaa3UL, 0xc0093dfeUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   116
    0xbd0faf15UL, 0x8b60b800UL, 0x3fc68a28UL, 0xde78d5fdUL, 0xbc9ea4eeUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   117
    0x9d987000UL, 0x3fc62a53UL, 0x962bea6eUL, 0xbd194084UL, 0xc9b0e800UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   118
    0x3fc5cb22UL, 0x888dd999UL, 0x3d1fe201UL, 0xe1634800UL, 0x3fc56c93UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   119
    0x16ada7adUL, 0x3d1b1188UL, 0xc176c000UL, 0x3fc50ea4UL, 0x4159b5b5UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   120
    0xbcf09c08UL, 0x51766000UL, 0x3fc4b153UL, 0x84393d23UL, 0xbcf6a89cUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   121
    0x83695000UL, 0x3fc4549dUL, 0x9f0b8bbbUL, 0x3d1c4b8cUL, 0x538d5800UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   122
    0x3fc3f881UL, 0xf49df747UL, 0x3cf89b99UL, 0xc8138000UL, 0x3fc39cfcUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   123
    0xd503b834UL, 0xbd13b99fUL, 0xf0df0800UL, 0x3fc3420dUL, 0xf011b386UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   124
    0xbd05d8beUL, 0xe7466800UL, 0x3fc2e7b2UL, 0xf39c7bc2UL, 0xbd1bb94eUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   125
    0xcdd62800UL, 0x3fc28de9UL, 0x05e6d69bUL, 0xbd10ed05UL, 0xd015d800UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   126
    0x3fc234b0UL, 0xe29b6c9dUL, 0xbd1ff967UL, 0x224ea800UL, 0x3fc1dc06UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   127
    0x727711fcUL, 0xbcffb30dUL, 0x01540000UL, 0x3fc183e8UL, 0x39786c5aUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   128
    0x3cc23f57UL, 0xb24d9800UL, 0x3fc12c54UL, 0xc905a342UL, 0x3d003a1dUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   129
    0x82835800UL, 0x3fc0d54aUL, 0x9b9920c0UL, 0x3d03b25aUL, 0xc72ac000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   130
    0x3fc07ec7UL, 0x46f26a24UL, 0x3cf0fa41UL, 0xdd35d800UL, 0x3fc028caUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   131
    0x41d9d6dcUL, 0x3d034a65UL, 0x52474000UL, 0x3fbfa6a4UL, 0x44f66449UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   132
    0x3d19cad3UL, 0x2da3d000UL, 0x3fbefcb8UL, 0x67832999UL, 0x3d18400fUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   133
    0x32a10000UL, 0x3fbe53ceUL, 0x9c0e3b1aUL, 0xbcff62fdUL, 0x556b7000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   134
    0x3fbdabe3UL, 0x02976913UL, 0xbcf8243bUL, 0x97e88000UL, 0x3fbd04f4UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   135
    0xec793797UL, 0x3d1c0578UL, 0x09647000UL, 0x3fbc5effUL, 0x05fc0565UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   136
    0xbd1d799eUL, 0xc6426000UL, 0x3fbbb9ffUL, 0x4625f5edUL, 0x3d1f5723UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   137
    0xf7afd000UL, 0x3fbb15f3UL, 0xdd5aae61UL, 0xbd1a7e1eUL, 0xd358b000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   138
    0x3fba72d8UL, 0x3314e4d3UL, 0x3d17bc91UL, 0x9b1f5000UL, 0x3fb9d0abUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   139
    0x9a4d514bUL, 0x3cf18c9bUL, 0x9cd4e000UL, 0x3fb92f69UL, 0x7e4496abUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   140
    0x3cf1f96dUL, 0x31f4f000UL, 0x3fb88f10UL, 0xf56479e7UL, 0x3d165818UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   141
    0xbf628000UL, 0x3fb7ef9cUL, 0x26bf486dUL, 0xbd1113a6UL, 0xb526b000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   142
    0x3fb7510cUL, 0x1a1c3384UL, 0x3ca9898dUL, 0x8e31e000UL, 0x3fb6b35dUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   143
    0xb3875361UL, 0xbd0661acUL, 0xd01de000UL, 0x3fb6168cUL, 0x2a7cacfaUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   144
    0xbd1bdf10UL, 0x0af23000UL, 0x3fb57a98UL, 0xff868816UL, 0x3cf046d0UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   145
    0xd8ea0000UL, 0x3fb4df7cUL, 0x1515fbe7UL, 0xbd1fd529UL, 0xde3b2000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   146
    0x3fb44538UL, 0x6e59a132UL, 0x3d1faeeeUL, 0xc8df9000UL, 0x3fb3abc9UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   147
    0xf1322361UL, 0xbd198807UL, 0x505f1000UL, 0x3fb3132dUL, 0x0888e6abUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   148
    0x3d1e5380UL, 0x359bd000UL, 0x3fb27b61UL, 0xdfbcbb22UL, 0xbcfe2724UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   149
    0x429ee000UL, 0x3fb1e463UL, 0x6eb4c58cUL, 0xbcfe4dd6UL, 0x4a673000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   150
    0x3fb14e31UL, 0x4ce1ac9bUL, 0x3d1ba691UL, 0x28b96000UL, 0x3fb0b8c9UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   151
    0x8c7813b8UL, 0xbd0b3872UL, 0xc1f08000UL, 0x3fb02428UL, 0xc2bc8c2cUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   152
    0x3cb5ea6bUL, 0x05a1a000UL, 0x3faf209cUL, 0x72e8f18eUL, 0xbce8df84UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   153
    0xc0b5e000UL, 0x3fadfa6dUL, 0x9fdef436UL, 0x3d087364UL, 0xaf416000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   154
    0x3facd5c2UL, 0x1068c3a9UL, 0x3d0827e7UL, 0xdb356000UL, 0x3fabb296UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   155
    0x120a34d3UL, 0x3d101a9fUL, 0x5dfea000UL, 0x3faa90e6UL, 0xdaded264UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   156
    0xbd14c392UL, 0x6034c000UL, 0x3fa970adUL, 0x1c9d06a9UL, 0xbd1b705eUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   157
    0x194c6000UL, 0x3fa851e8UL, 0x83996ad9UL, 0xbd0117bcUL, 0xcf4ac000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   158
    0x3fa73492UL, 0xb1a94a62UL, 0xbca5ea42UL, 0xd67b4000UL, 0x3fa618a9UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   159
    0x75aed8caUL, 0xbd07119bUL, 0x9126c000UL, 0x3fa4fe29UL, 0x5291d533UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   160
    0x3d12658fUL, 0x6f4d4000UL, 0x3fa3e50eUL, 0xcd2c5cd9UL, 0x3d1d5c70UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   161
    0xee608000UL, 0x3fa2cd54UL, 0xd1008489UL, 0x3d1a4802UL, 0x9900e000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   162
    0x3fa1b6f9UL, 0x54fb5598UL, 0xbd16593fUL, 0x06bb6000UL, 0x3fa0a1f9UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   163
    0x64ef57b4UL, 0xbd17636bUL, 0xb7940000UL, 0x3f9f1c9fUL, 0xee6a4737UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   164
    0x3cb5d479UL, 0x91aa0000UL, 0x3f9cf7f5UL, 0x3a16373cUL, 0x3d087114UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   165
    0x156b8000UL, 0x3f9ad5edUL, 0x836c554aUL, 0x3c6900b0UL, 0xd4764000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   166
    0x3f98b67fUL, 0xed12f17bUL, 0xbcffc974UL, 0x77dec000UL, 0x3f9699a7UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   167
    0x232ce7eaUL, 0x3d1e35bbUL, 0xbfbf4000UL, 0x3f947f5dUL, 0xd84ffa6eUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   168
    0x3d0e0a49UL, 0x82c7c000UL, 0x3f92679cUL, 0x8d170e90UL, 0xbd14d9f2UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   169
    0xadd20000UL, 0x3f90525dUL, 0x86d9f88eUL, 0x3cdeb986UL, 0x86f10000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   170
    0x3f8c7f36UL, 0xb9e0a517UL, 0x3ce29faaUL, 0xb75c8000UL, 0x3f885e9eUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   171
    0x542568cbUL, 0xbd1f7bdbUL, 0x46b30000UL, 0x3f8442e8UL, 0xb954e7d9UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   172
    0x3d1e5287UL, 0xb7e60000UL, 0x3f802c07UL, 0x22da0b17UL, 0xbd19fb27UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   173
    0x6c8b0000UL, 0x3f7833e3UL, 0x821271efUL, 0xbd190f96UL, 0x29910000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   174
    0x3f701936UL, 0xbc3491a5UL, 0xbd1bcf45UL, 0x354a0000UL, 0x3f600fe3UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   175
    0xc0ff520aUL, 0xbd19d71cUL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   176
    0x00000000UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   177
};
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   178
50120
9da00197ff72 8203220: Introduce ATTRIBUTE_ALIGNED macro
pliden
parents: 47216
diff changeset
   179
ATTRIBUTE_ALIGNED(16) juint _log2_log10[] =
38018
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   180
{
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   181
    0x509f7800UL, 0x3f934413UL, 0x1f12b358UL, 0x3cdfef31UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   182
};
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   183
50120
9da00197ff72 8203220: Introduce ATTRIBUTE_ALIGNED macro
pliden
parents: 47216
diff changeset
   184
ATTRIBUTE_ALIGNED(16) juint _coeff_log10[] =
38018
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   185
{
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   186
    0xc1a5f12eUL, 0x40358874UL, 0x64d4ef0dUL, 0xc0089309UL, 0x385593b1UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   187
    0xc025c917UL, 0xdc963467UL, 0x3ffc6a02UL, 0x7f9d3aa1UL, 0x4016ab9fUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   188
    0xdc77b115UL, 0xbff27af2UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   189
};
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   190
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   191
// Registers:
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   192
// input: xmm0
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   193
// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   194
//          rax, rdx, rcx, tmp - r11
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   195
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   196
// Code generated by Intel C compiler for LIBM library
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   197
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   198
void MacroAssembler::fast_log10(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register r11) {
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   199
  Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   200
  Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
51756
4bd35a5ec694 8210676: Remove some unused Label variables
mikael
parents: 50120
diff changeset
   201
  Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, B1_2, B1_3, B1_5, start;
38018
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   202
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   203
  assert_different_registers(r11, eax, ecx, edx);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   204
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   205
  address HIGHSIGMASK = (address)_HIGHSIGMASK_log10;
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   206
  address LOG10_E = (address)_LOG10_E;
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   207
  address L_tbl = (address)_L_tbl_log10;
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   208
  address log2 = (address)_log2_log10;
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   209
  address coeff = (address)_coeff_log10;
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   210
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   211
  bind(start);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   212
  subq(rsp, 24);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   213
  movsd(Address(rsp, 0), xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   214
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   215
  bind(B1_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   216
  xorpd(xmm2, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   217
  movl(eax, 16368);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   218
  pinsrw(xmm2, eax, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   219
  movl(ecx, 1054736384);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   220
  movdl(xmm7, ecx);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   221
  xorpd(xmm3, xmm3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   222
  movl(edx, 30704);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   223
  pinsrw(xmm3, edx, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   224
  movdqu(xmm1, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   225
  movl(edx, 32768);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   226
  movdl(xmm4, edx);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   227
  movdqu(xmm5, ExternalAddress(HIGHSIGMASK));    //0xf8000000UL, 0xffffffffUL, 0x00000000UL, 0xffffe000UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   228
  pextrw(eax, xmm0, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   229
  por(xmm0, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   230
  movl(ecx, 16352);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   231
  psrlq(xmm0, 27);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   232
  movdqu(xmm2, ExternalAddress(LOG10_E));    //0x00000000UL, 0x3fdbc000UL, 0xbf2e4108UL, 0x3f5a7a6cUL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   233
  psrld(xmm0, 2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   234
  rcpps(xmm0, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   235
  psllq(xmm1, 12);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   236
  pshufd(xmm6, xmm5, 78);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   237
  psrlq(xmm1, 12);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   238
  subl(eax, 16);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   239
  cmpl(eax, 32736);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   240
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   241
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   242
  bind(L_2TAG_PACKET_1_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   243
  mulss(xmm0, xmm7);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   244
  por(xmm1, xmm3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   245
  lea(r11, ExternalAddress(L_tbl));
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   246
  andpd(xmm5, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   247
  paddd(xmm0, xmm4);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   248
  subsd(xmm1, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   249
  movdl(edx, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   250
  psllq(xmm0, 29);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   251
  andpd(xmm0, xmm6);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   252
  andl(eax, 32752);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   253
  subl(eax, ecx);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   254
  cvtsi2sdl(xmm7, eax);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   255
  mulpd(xmm5, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   256
  mulsd(xmm1, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   257
  movq(xmm6, ExternalAddress(log2));    //0x509f7800UL, 0x3f934413UL, 0x1f12b358UL, 0x3cdfef31UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   258
  movdqu(xmm3, ExternalAddress(coeff));    //0xc1a5f12eUL, 0x40358874UL, 0x64d4ef0dUL, 0xc0089309UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   259
  subsd(xmm5, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   260
  andl(edx, 16711680);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   261
  shrl(edx, 12);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   262
  movdqu(xmm0, Address(r11, rdx, Address::times_1, -1504));
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   263
  movdqu(xmm4, ExternalAddress(16 + coeff));    //0x385593b1UL, 0xc025c917UL, 0xdc963467UL, 0x3ffc6a02UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   264
  addsd(xmm1, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   265
  movdqu(xmm2, ExternalAddress(32 + coeff));    //0x7f9d3aa1UL, 0x4016ab9fUL, 0xdc77b115UL, 0xbff27af2UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   266
  mulsd(xmm6, xmm7);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   267
  pshufd(xmm5, xmm1, 68);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   268
  mulsd(xmm7, ExternalAddress(8 + log2));    //0x1f12b358UL, 0x3cdfef31UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   269
  mulsd(xmm3, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   270
  addsd(xmm0, xmm6);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   271
  mulpd(xmm4, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   272
  movq(xmm6, ExternalAddress(8 + LOG10_E));    //0xbf2e4108UL, 0x3f5a7a6cUL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   273
  mulpd(xmm5, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   274
  addpd(xmm4, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   275
  mulpd(xmm3, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   276
  pshufd(xmm2, xmm0, 228);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   277
  addsd(xmm0, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   278
  mulsd(xmm4, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   279
  subsd(xmm2, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   280
  mulsd(xmm6, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   281
  addsd(xmm1, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   282
  pshufd(xmm2, xmm0, 238);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   283
  mulsd(xmm5, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   284
  addsd(xmm7, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   285
  addsd(xmm1, xmm6);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   286
  addpd(xmm4, xmm3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   287
  addsd(xmm1, xmm7);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   288
  mulpd(xmm4, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   289
  addsd(xmm1, xmm4);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   290
  pshufd(xmm5, xmm4, 238);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   291
  addsd(xmm1, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   292
  addsd(xmm0, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   293
  jmp(B1_5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   294
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   295
  bind(L_2TAG_PACKET_0_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   296
  movq(xmm0, Address(rsp, 0));
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   297
  movq(xmm1, Address(rsp, 0));
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   298
  addl(eax, 16);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   299
  cmpl(eax, 32768);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   300
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_2_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   301
  cmpl(eax, 16);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   302
  jcc(Assembler::below, L_2TAG_PACKET_3_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   303
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   304
  bind(L_2TAG_PACKET_4_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   305
  addsd(xmm0, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   306
  jmp(B1_5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   307
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   308
  bind(L_2TAG_PACKET_5_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   309
  jcc(Assembler::above, L_2TAG_PACKET_4_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   310
  cmpl(edx, 0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   311
  jcc(Assembler::above, L_2TAG_PACKET_4_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   312
  jmp(L_2TAG_PACKET_6_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   313
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   314
  bind(L_2TAG_PACKET_3_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   315
  xorpd(xmm1, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   316
  addsd(xmm1, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   317
  movdl(edx, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   318
  psrlq(xmm1, 32);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   319
  movdl(ecx, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   320
  orl(edx, ecx);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   321
  cmpl(edx, 0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   322
  jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   323
  xorpd(xmm1, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   324
  movl(eax, 18416);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   325
  pinsrw(xmm1, eax, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   326
  mulsd(xmm0, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   327
  xorpd(xmm2, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   328
  movl(eax, 16368);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   329
  pinsrw(xmm2, eax, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   330
  movdqu(xmm1, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   331
  pextrw(eax, xmm0, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   332
  por(xmm0, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   333
  movl(ecx, 18416);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   334
  psrlq(xmm0, 27);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   335
  movdqu(xmm2, ExternalAddress(LOG10_E));    //0x00000000UL, 0x3fdbc000UL, 0xbf2e4108UL, 0x3f5a7a6cUL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   336
  psrld(xmm0, 2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   337
  rcpps(xmm0, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   338
  psllq(xmm1, 12);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   339
  pshufd(xmm6, xmm5, 78);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   340
  psrlq(xmm1, 12);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   341
  jmp(L_2TAG_PACKET_1_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   342
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   343
  bind(L_2TAG_PACKET_2_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   344
  movdl(edx, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   345
  psrlq(xmm1, 32);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   346
  movdl(ecx, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   347
  addl(ecx, ecx);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   348
  cmpl(ecx, -2097152);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   349
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_5_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   350
  orl(edx, ecx);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   351
  cmpl(edx, 0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   352
  jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   353
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   354
  bind(L_2TAG_PACKET_6_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   355
  xorpd(xmm1, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   356
  xorpd(xmm0, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   357
  movl(eax, 32752);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   358
  pinsrw(xmm1, eax, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   359
  mulsd(xmm0, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   360
  movl(Address(rsp, 16), 9);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   361
  jmp(L_2TAG_PACKET_8_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   362
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   363
  bind(L_2TAG_PACKET_7_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   364
  xorpd(xmm1, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   365
  xorpd(xmm0, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   366
  movl(eax, 49136);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   367
  pinsrw(xmm0, eax, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   368
  divsd(xmm0, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   369
  movl(Address(rsp, 16), 8);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   370
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   371
  bind(L_2TAG_PACKET_8_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   372
  movq(Address(rsp, 8), xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   373
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   374
  bind(B1_3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   375
  movq(xmm0, Address(rsp, 8));
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   376
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   377
  bind(L_2TAG_PACKET_9_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   378
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   379
  bind(B1_5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   380
  addq(rsp, 24);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   381
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   382
}
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   383
#else
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   384
// The 32 bit code is at most SSE2 compliant
50120
9da00197ff72 8203220: Introduce ATTRIBUTE_ALIGNED macro
pliden
parents: 47216
diff changeset
   385
ATTRIBUTE_ALIGNED(16) juint _static_const_table_log10[] =
38018
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   386
{
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   387
    0x509f7800UL, 0x3fd34413UL, 0x1f12b358UL, 0x3d1fef31UL, 0x80333400UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   388
    0x3fd32418UL, 0xc671d9d0UL, 0xbcf542bfUL, 0x51195000UL, 0x3fd30442UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   389
    0x78a4b0c3UL, 0x3d18216aUL, 0x6fc79400UL, 0x3fd2e490UL, 0x80fa389dUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   390
    0xbc902869UL, 0x89d04000UL, 0x3fd2c502UL, 0x75c2f564UL, 0x3d040754UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   391
    0x4ddd1c00UL, 0x3fd2a598UL, 0xd219b2c3UL, 0xbcfa1d84UL, 0x6baa7c00UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   392
    0x3fd28651UL, 0xfd9abec1UL, 0x3d1be6d3UL, 0x94028800UL, 0x3fd2672dUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   393
    0xe289a455UL, 0xbd1ede5eUL, 0x78b86400UL, 0x3fd2482cUL, 0x6734d179UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   394
    0x3d1fe79bUL, 0xcca3c800UL, 0x3fd2294dUL, 0x981a40b8UL, 0xbced34eaUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   395
    0x439c5000UL, 0x3fd20a91UL, 0xcc392737UL, 0xbd1a9cc3UL, 0x92752c00UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   396
    0x3fd1ebf6UL, 0x03c9afe7UL, 0x3d1e98f8UL, 0x6ef8dc00UL, 0x3fd1cd7dUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   397
    0x71dae7f4UL, 0x3d08a86cUL, 0x8fe4dc00UL, 0x3fd1af25UL, 0xee9185a1UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   398
    0xbcff3412UL, 0xace59400UL, 0x3fd190eeUL, 0xc2cab353UL, 0x3cf17ed9UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   399
    0x7e925000UL, 0x3fd172d8UL, 0x6952c1b2UL, 0x3cf1521cUL, 0xbe694400UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   400
    0x3fd154e2UL, 0xcacb79caUL, 0xbd0bdc78UL, 0x26cbac00UL, 0x3fd1370dUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   401
    0xf71f4de1UL, 0xbd01f8beUL, 0x72fa0800UL, 0x3fd11957UL, 0x55bf910bUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   402
    0x3c946e2bUL, 0x5f106000UL, 0x3fd0fbc1UL, 0x39e639c1UL, 0x3d14a84bUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   403
    0xa802a800UL, 0x3fd0de4aUL, 0xd3f31d5dUL, 0xbd178385UL, 0x0b992000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   404
    0x3fd0c0f3UL, 0x3843106fUL, 0xbd1f602fUL, 0x486ce800UL, 0x3fd0a3baUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   405
    0x8819497cUL, 0x3cef987aUL, 0x1de49400UL, 0x3fd086a0UL, 0x1caa0467UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   406
    0x3d0faec7UL, 0x4c30cc00UL, 0x3fd069a4UL, 0xa4424372UL, 0xbd1618fcUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   407
    0x94490000UL, 0x3fd04cc6UL, 0x946517d2UL, 0xbd18384bUL, 0xb7e84000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   408
    0x3fd03006UL, 0xe0109c37UL, 0xbd19a6acUL, 0x798a0c00UL, 0x3fd01364UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   409
    0x5121e864UL, 0xbd164cf7UL, 0x38ce8000UL, 0x3fcfedbfUL, 0x46214d1aUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   410
    0xbcbbc402UL, 0xc8e62000UL, 0x3fcfb4efUL, 0xdab93203UL, 0x3d1e0176UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   411
    0x2cb02800UL, 0x3fcf7c5aUL, 0x2a2ea8e4UL, 0xbcfec86aUL, 0xeeeaa000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   412
    0x3fcf43fdUL, 0xc18e49a4UL, 0x3cf110a8UL, 0x9bb6e800UL, 0x3fcf0bdaUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   413
    0x923cc9c0UL, 0xbd15ce99UL, 0xc093f000UL, 0x3fced3efUL, 0x4d4b51e9UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   414
    0x3d1a04c7UL, 0xec58f800UL, 0x3fce9c3cUL, 0x163cad59UL, 0x3cac8260UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   415
    0x9a907000UL, 0x3fce2d7dUL, 0x3fa93646UL, 0x3ce4a1c0UL, 0x37311000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   416
    0x3fcdbf99UL, 0x32abd1fdUL, 0x3d07ea9dUL, 0x6744b800UL, 0x3fcd528cUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   417
    0x4dcbdfd4UL, 0xbd1b08e2UL, 0xe36de800UL, 0x3fcce653UL, 0x0b7b7f7fUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   418
    0xbd1b8f03UL, 0x77506800UL, 0x3fcc7aecUL, 0xa821c9fbUL, 0x3d13c163UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   419
    0x00ff8800UL, 0x3fcc1053UL, 0x536bca76UL, 0xbd074ee5UL, 0x70719800UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   420
    0x3fcba684UL, 0xd7da9b6bUL, 0xbd1fbf16UL, 0xc6f8d800UL, 0x3fcb3d7dUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   421
    0xe2220bb3UL, 0x3d1a295dUL, 0x16c15800UL, 0x3fcad53cUL, 0xe724911eUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   422
    0xbcf55822UL, 0x82533800UL, 0x3fca6dbcUL, 0x6d982371UL, 0x3cac567cUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   423
    0x3c19e800UL, 0x3fca06fcUL, 0x84d17d80UL, 0x3d1da204UL, 0x85ef8000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   424
    0x3fc9a0f8UL, 0x54466a6aUL, 0xbd002204UL, 0xb0ac2000UL, 0x3fc93baeUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   425
    0xd601fd65UL, 0x3d18840cUL, 0x1bb9b000UL, 0x3fc8d71cUL, 0x7bf58766UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   426
    0xbd14f897UL, 0x34aae800UL, 0x3fc8733eUL, 0x3af6ac24UL, 0xbd0f5c45UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   427
    0x76d68000UL, 0x3fc81012UL, 0x4303e1a1UL, 0xbd1f9a80UL, 0x6af57800UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   428
    0x3fc7ad96UL, 0x43fbcb46UL, 0x3cf4c33eUL, 0xa6c51000UL, 0x3fc74bc7UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   429
    0x70f0eac5UL, 0xbd192e3bUL, 0xccab9800UL, 0x3fc6eaa3UL, 0xc0093dfeUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   430
    0xbd0faf15UL, 0x8b60b800UL, 0x3fc68a28UL, 0xde78d5fdUL, 0xbc9ea4eeUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   431
    0x9d987000UL, 0x3fc62a53UL, 0x962bea6eUL, 0xbd194084UL, 0xc9b0e800UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   432
    0x3fc5cb22UL, 0x888dd999UL, 0x3d1fe201UL, 0xe1634800UL, 0x3fc56c93UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   433
    0x16ada7adUL, 0x3d1b1188UL, 0xc176c000UL, 0x3fc50ea4UL, 0x4159b5b5UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   434
    0xbcf09c08UL, 0x51766000UL, 0x3fc4b153UL, 0x84393d23UL, 0xbcf6a89cUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   435
    0x83695000UL, 0x3fc4549dUL, 0x9f0b8bbbUL, 0x3d1c4b8cUL, 0x538d5800UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   436
    0x3fc3f881UL, 0xf49df747UL, 0x3cf89b99UL, 0xc8138000UL, 0x3fc39cfcUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   437
    0xd503b834UL, 0xbd13b99fUL, 0xf0df0800UL, 0x3fc3420dUL, 0xf011b386UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   438
    0xbd05d8beUL, 0xe7466800UL, 0x3fc2e7b2UL, 0xf39c7bc2UL, 0xbd1bb94eUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   439
    0xcdd62800UL, 0x3fc28de9UL, 0x05e6d69bUL, 0xbd10ed05UL, 0xd015d800UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   440
    0x3fc234b0UL, 0xe29b6c9dUL, 0xbd1ff967UL, 0x224ea800UL, 0x3fc1dc06UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   441
    0x727711fcUL, 0xbcffb30dUL, 0x01540000UL, 0x3fc183e8UL, 0x39786c5aUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   442
    0x3cc23f57UL, 0xb24d9800UL, 0x3fc12c54UL, 0xc905a342UL, 0x3d003a1dUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   443
    0x82835800UL, 0x3fc0d54aUL, 0x9b9920c0UL, 0x3d03b25aUL, 0xc72ac000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   444
    0x3fc07ec7UL, 0x46f26a24UL, 0x3cf0fa41UL, 0xdd35d800UL, 0x3fc028caUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   445
    0x41d9d6dcUL, 0x3d034a65UL, 0x52474000UL, 0x3fbfa6a4UL, 0x44f66449UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   446
    0x3d19cad3UL, 0x2da3d000UL, 0x3fbefcb8UL, 0x67832999UL, 0x3d18400fUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   447
    0x32a10000UL, 0x3fbe53ceUL, 0x9c0e3b1aUL, 0xbcff62fdUL, 0x556b7000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   448
    0x3fbdabe3UL, 0x02976913UL, 0xbcf8243bUL, 0x97e88000UL, 0x3fbd04f4UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   449
    0xec793797UL, 0x3d1c0578UL, 0x09647000UL, 0x3fbc5effUL, 0x05fc0565UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   450
    0xbd1d799eUL, 0xc6426000UL, 0x3fbbb9ffUL, 0x4625f5edUL, 0x3d1f5723UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   451
    0xf7afd000UL, 0x3fbb15f3UL, 0xdd5aae61UL, 0xbd1a7e1eUL, 0xd358b000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   452
    0x3fba72d8UL, 0x3314e4d3UL, 0x3d17bc91UL, 0x9b1f5000UL, 0x3fb9d0abUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   453
    0x9a4d514bUL, 0x3cf18c9bUL, 0x9cd4e000UL, 0x3fb92f69UL, 0x7e4496abUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   454
    0x3cf1f96dUL, 0x31f4f000UL, 0x3fb88f10UL, 0xf56479e7UL, 0x3d165818UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   455
    0xbf628000UL, 0x3fb7ef9cUL, 0x26bf486dUL, 0xbd1113a6UL, 0xb526b000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   456
    0x3fb7510cUL, 0x1a1c3384UL, 0x3ca9898dUL, 0x8e31e000UL, 0x3fb6b35dUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   457
    0xb3875361UL, 0xbd0661acUL, 0xd01de000UL, 0x3fb6168cUL, 0x2a7cacfaUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   458
    0xbd1bdf10UL, 0x0af23000UL, 0x3fb57a98UL, 0xff868816UL, 0x3cf046d0UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   459
    0xd8ea0000UL, 0x3fb4df7cUL, 0x1515fbe7UL, 0xbd1fd529UL, 0xde3b2000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   460
    0x3fb44538UL, 0x6e59a132UL, 0x3d1faeeeUL, 0xc8df9000UL, 0x3fb3abc9UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   461
    0xf1322361UL, 0xbd198807UL, 0x505f1000UL, 0x3fb3132dUL, 0x0888e6abUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   462
    0x3d1e5380UL, 0x359bd000UL, 0x3fb27b61UL, 0xdfbcbb22UL, 0xbcfe2724UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   463
    0x429ee000UL, 0x3fb1e463UL, 0x6eb4c58cUL, 0xbcfe4dd6UL, 0x4a673000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   464
    0x3fb14e31UL, 0x4ce1ac9bUL, 0x3d1ba691UL, 0x28b96000UL, 0x3fb0b8c9UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   465
    0x8c7813b8UL, 0xbd0b3872UL, 0xc1f08000UL, 0x3fb02428UL, 0xc2bc8c2cUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   466
    0x3cb5ea6bUL, 0x05a1a000UL, 0x3faf209cUL, 0x72e8f18eUL, 0xbce8df84UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   467
    0xc0b5e000UL, 0x3fadfa6dUL, 0x9fdef436UL, 0x3d087364UL, 0xaf416000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   468
    0x3facd5c2UL, 0x1068c3a9UL, 0x3d0827e7UL, 0xdb356000UL, 0x3fabb296UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   469
    0x120a34d3UL, 0x3d101a9fUL, 0x5dfea000UL, 0x3faa90e6UL, 0xdaded264UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   470
    0xbd14c392UL, 0x6034c000UL, 0x3fa970adUL, 0x1c9d06a9UL, 0xbd1b705eUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   471
    0x194c6000UL, 0x3fa851e8UL, 0x83996ad9UL, 0xbd0117bcUL, 0xcf4ac000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   472
    0x3fa73492UL, 0xb1a94a62UL, 0xbca5ea42UL, 0xd67b4000UL, 0x3fa618a9UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   473
    0x75aed8caUL, 0xbd07119bUL, 0x9126c000UL, 0x3fa4fe29UL, 0x5291d533UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   474
    0x3d12658fUL, 0x6f4d4000UL, 0x3fa3e50eUL, 0xcd2c5cd9UL, 0x3d1d5c70UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   475
    0xee608000UL, 0x3fa2cd54UL, 0xd1008489UL, 0x3d1a4802UL, 0x9900e000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   476
    0x3fa1b6f9UL, 0x54fb5598UL, 0xbd16593fUL, 0x06bb6000UL, 0x3fa0a1f9UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   477
    0x64ef57b4UL, 0xbd17636bUL, 0xb7940000UL, 0x3f9f1c9fUL, 0xee6a4737UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   478
    0x3cb5d479UL, 0x91aa0000UL, 0x3f9cf7f5UL, 0x3a16373cUL, 0x3d087114UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   479
    0x156b8000UL, 0x3f9ad5edUL, 0x836c554aUL, 0x3c6900b0UL, 0xd4764000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   480
    0x3f98b67fUL, 0xed12f17bUL, 0xbcffc974UL, 0x77dec000UL, 0x3f9699a7UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   481
    0x232ce7eaUL, 0x3d1e35bbUL, 0xbfbf4000UL, 0x3f947f5dUL, 0xd84ffa6eUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   482
    0x3d0e0a49UL, 0x82c7c000UL, 0x3f92679cUL, 0x8d170e90UL, 0xbd14d9f2UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   483
    0xadd20000UL, 0x3f90525dUL, 0x86d9f88eUL, 0x3cdeb986UL, 0x86f10000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   484
    0x3f8c7f36UL, 0xb9e0a517UL, 0x3ce29faaUL, 0xb75c8000UL, 0x3f885e9eUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   485
    0x542568cbUL, 0xbd1f7bdbUL, 0x46b30000UL, 0x3f8442e8UL, 0xb954e7d9UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   486
    0x3d1e5287UL, 0xb7e60000UL, 0x3f802c07UL, 0x22da0b17UL, 0xbd19fb27UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   487
    0x6c8b0000UL, 0x3f7833e3UL, 0x821271efUL, 0xbd190f96UL, 0x29910000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   488
    0x3f701936UL, 0xbc3491a5UL, 0xbd1bcf45UL, 0x354a0000UL, 0x3f600fe3UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   489
    0xc0ff520aUL, 0xbd19d71cUL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   490
    0x00000000UL, 0x509f7800UL, 0x3f934413UL, 0x1f12b358UL, 0x3cdfef31UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   491
    0xc1a5f12eUL, 0x40358874UL, 0x64d4ef0dUL, 0xc0089309UL, 0x385593b1UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   492
    0xc025c917UL, 0xdc963467UL, 0x3ffc6a02UL, 0x7f9d3aa1UL, 0x4016ab9fUL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   493
    0xdc77b115UL, 0xbff27af2UL, 0xf8000000UL, 0xffffffffUL, 0x00000000UL,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   494
    0xffffe000UL, 0x00000000UL, 0x3fdbc000UL, 0xbf2e4108UL, 0x3f5a7a6cUL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   495
};
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   496
//registers,
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   497
// input: xmm0
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   498
// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   499
//          rax, rdx, rcx, rbx (tmp)
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   500
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   501
void MacroAssembler::fast_log10(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   502
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   503
  Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   504
  Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   505
  Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, start;
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   506
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   507
  assert_different_registers(tmp, eax, ecx, edx);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   508
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   509
  address static_const_table_log10 = (address)_static_const_table_log10;
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   510
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   511
  bind(start);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   512
  subl(rsp, 104);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   513
  movl(Address(rsp, 40), tmp);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   514
  lea(tmp, ExternalAddress(static_const_table_log10));
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   515
  xorpd(xmm2, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   516
  movl(eax, 16368);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   517
  pinsrw(xmm2, eax, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   518
  movl(ecx, 1054736384);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   519
  movdl(xmm7, ecx);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   520
  xorpd(xmm3, xmm3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   521
  movl(edx, 30704);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   522
  pinsrw(xmm3, edx, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   523
  movsd(xmm0, Address(rsp, 112));
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   524
  movdqu(xmm1, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   525
  movl(edx, 32768);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   526
  movdl(xmm4, edx);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   527
  movdqu(xmm5, Address(tmp, 2128));    //0x3ffc6a02UL, 0x7f9d3aa1UL, 0x4016ab9fUL, 0xdc77b115UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   528
  pextrw(eax, xmm0, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   529
  por(xmm0, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   530
  movl(ecx, 16352);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   531
  psllq(xmm0, 5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   532
  movsd(xmm2, Address(tmp, 2144));    //0xbff27af2UL, 0xf8000000UL, 0xffffffffUL, 0x00000000UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   533
  psrlq(xmm0, 34);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   534
  rcpss(xmm0, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   535
  psllq(xmm1, 12);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   536
  pshufd(xmm6, xmm5, 78);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   537
  psrlq(xmm1, 12);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   538
  subl(eax, 16);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   539
  cmpl(eax, 32736);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   540
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   541
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   542
  bind(L_2TAG_PACKET_1_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   543
  mulss(xmm0, xmm7);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   544
  por(xmm1, xmm3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   545
  andpd(xmm5, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   546
  paddd(xmm0, xmm4);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   547
  subsd(xmm1, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   548
  movdl(edx, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   549
  psllq(xmm0, 29);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   550
  andpd(xmm0, xmm6);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   551
  andl(eax, 32752);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   552
  subl(eax, ecx);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   553
  cvtsi2sdl(xmm7, eax);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   554
  mulpd(xmm5, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   555
  mulsd(xmm1, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   556
  movsd(xmm6, Address(tmp, 2064));    //0xbd19d71cUL, 0x00000000UL, 0x00000000UL, 0x00000000UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   557
  movdqu(xmm3, Address(tmp, 2080));    //0x00000000UL, 0x509f7800UL, 0x3f934413UL, 0x1f12b358UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   558
  subsd(xmm5, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   559
  andl(edx, 16711680);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   560
  shrl(edx, 12);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   561
  movdqu(xmm0, Address(tmp, edx, Address::times_1, -1504));
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   562
  movdqu(xmm4, Address(tmp, 2096));    //0x3cdfef31UL, 0xc1a5f12eUL, 0x40358874UL, 0x64d4ef0dUL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   563
  addsd(xmm1, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   564
  movdqu(xmm2, Address(tmp, 2112));    //0xc0089309UL, 0x385593b1UL, 0xc025c917UL, 0xdc963467UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   565
  mulsd(xmm6, xmm7);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   566
  pshufd(xmm5, xmm1, 68);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   567
  mulsd(xmm7, Address(tmp, 2072));    //0x00000000UL, 0x00000000UL, 0x00000000UL, 0x509f7800UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   568
  mulsd(xmm3, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   569
  addsd(xmm0, xmm6);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   570
  mulpd(xmm4, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   571
  movsd(xmm6, Address(tmp, 2152));    //0xffffffffUL, 0x00000000UL, 0xffffe000UL, 0x00000000UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   572
  mulpd(xmm5, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   573
  addpd(xmm4, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   574
  mulpd(xmm3, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   575
  pshufd(xmm2, xmm0, 228);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   576
  addsd(xmm0, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   577
  mulsd(xmm4, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   578
  subsd(xmm2, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   579
  mulsd(xmm6, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   580
  addsd(xmm1, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   581
  pshufd(xmm2, xmm0, 238);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   582
  mulsd(xmm5, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   583
  addsd(xmm7, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   584
  addsd(xmm1, xmm6);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   585
  addpd(xmm4, xmm3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   586
  addsd(xmm1, xmm7);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   587
  mulpd(xmm4, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   588
  addsd(xmm1, xmm4);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   589
  pshufd(xmm5, xmm4, 238);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   590
  addsd(xmm1, xmm5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   591
  addsd(xmm0, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   592
  jmp(L_2TAG_PACKET_2_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   593
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   594
  bind(L_2TAG_PACKET_0_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   595
  movsd(xmm0, Address(rsp, 112));    //0xbcfa1d84UL, 0x6baa7c00UL, 0x3fd28651UL, 0xfd9abec1UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   596
  movdqu(xmm1, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   597
  addl(eax, 16);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   598
  cmpl(eax, 32768);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   599
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_3_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   600
  cmpl(eax, 16);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   601
  jcc(Assembler::below, L_2TAG_PACKET_4_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   602
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   603
  bind(L_2TAG_PACKET_5_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   604
  addsd(xmm0, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   605
  jmp(L_2TAG_PACKET_2_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   606
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   607
  bind(L_2TAG_PACKET_6_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   608
  jcc(Assembler::above, L_2TAG_PACKET_5_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   609
  cmpl(edx, 0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   610
  jcc(Assembler::above, L_2TAG_PACKET_5_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   611
  jmp(L_2TAG_PACKET_7_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   612
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   613
  bind(L_2TAG_PACKET_3_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   614
  movdl(edx, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   615
  psrlq(xmm1, 32);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   616
  movdl(ecx, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   617
  addl(ecx, ecx);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   618
  cmpl(ecx, -2097152);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   619
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_6_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   620
  orl(edx, ecx);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   621
  cmpl(edx, 0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   622
  jcc(Assembler::equal, L_2TAG_PACKET_8_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   623
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   624
  bind(L_2TAG_PACKET_7_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   625
  xorpd(xmm1, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   626
  xorpd(xmm0, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   627
  movl(eax, 32752);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   628
  pinsrw(xmm1, eax, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   629
  movl(edx, 9);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   630
  mulsd(xmm0, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   631
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   632
  bind(L_2TAG_PACKET_9_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   633
  movsd(Address(rsp, 0), xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   634
  movsd(xmm0, Address(rsp, 112));    //0xbcfa1d84UL, 0x6baa7c00UL, 0x3fd28651UL, 0xfd9abec1UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   635
  fld_d(Address(rsp, 0));
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   636
  jmp(L_2TAG_PACKET_10_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   637
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   638
  bind(L_2TAG_PACKET_8_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   639
  xorpd(xmm1, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   640
  xorpd(xmm0, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   641
  movl(eax, 49136);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   642
  pinsrw(xmm0, eax, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   643
  divsd(xmm0, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   644
  movl(edx, 8);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   645
  jmp(L_2TAG_PACKET_9_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   646
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   647
  bind(L_2TAG_PACKET_4_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   648
  movdl(edx, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   649
  psrlq(xmm1, 32);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   650
  movdl(ecx, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   651
  orl(edx, ecx);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   652
  cmpl(edx, 0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   653
  jcc(Assembler::equal, L_2TAG_PACKET_8_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   654
  xorpd(xmm1, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   655
  movl(eax, 18416);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   656
  pinsrw(xmm1, eax, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   657
  mulsd(xmm0, xmm1);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   658
  xorpd(xmm2, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   659
  movl(eax, 16368);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   660
  pinsrw(xmm2, eax, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   661
  movdqu(xmm1, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   662
  pextrw(eax, xmm0, 3);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   663
  por(xmm0, xmm2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   664
  movl(ecx, 18416);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   665
  psllq(xmm0, 5);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   666
  movsd(xmm2, Address(tmp, 2144));    //0xbff27af2UL, 0xf8000000UL, 0xffffffffUL, 0x00000000UL
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   667
  psrlq(xmm0, 34);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   668
  rcpss(xmm0, xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   669
  psllq(xmm1, 12);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   670
  pshufd(xmm6, xmm5, 78);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   671
  psrlq(xmm1, 12);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   672
  jmp(L_2TAG_PACKET_1_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   673
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   674
  bind(L_2TAG_PACKET_2_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   675
  movsd(Address(rsp, 24), xmm0);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   676
  fld_d(Address(rsp, 24));
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   677
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   678
  bind(L_2TAG_PACKET_10_0_2);
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   679
  movl(tmp, Address(rsp, 40));
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   680
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   681
}
1dc6c6f21231 8152907: Update for x86 tan and log10 in the math lib
vdeshpande
parents:
diff changeset
   682
#endif