hotspot/src/cpu/x86/vm/macroAssembler_libm_x86_64.cpp
author vdeshpande
Fri, 08 Jan 2016 21:06:50 -0800
changeset 35540 e001ad24dcdb
permissions -rw-r--r--
8143353: update for x86 sin and cos in the math lib Summary: Optimize Math.sin() and cos() for 64 and 32 bit X86 architecture using Intel LIBM implementation. Reviewed-by: kvn
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
35540
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
     1
/*
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
     2
 * Copyright (c) 2015, Intel Corporation.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
     3
 * Intel Math Library (LIBM) Source Code
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
     4
 *
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
     5
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
     6
 *
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
     7
 * This code is free software; you can redistribute it and/or modify it
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
     8
 * under the terms of the GNU General Public License version 2 only, as
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
     9
 * published by the Free Software Foundation.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    10
 *
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    15
 * accompanied this code).
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    16
 *
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    20
 *
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    23
 * questions.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    24
 *
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    25
 */
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    26
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    27
#include "precompiled.hpp"
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    28
#include "asm/assembler.hpp"
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    29
#include "asm/assembler.inline.hpp"
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    30
#include "macroAssembler_x86.hpp"
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    31
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    32
#ifdef _MSC_VER
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    33
#define ALIGNED_(x) __declspec(align(x))
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    34
#else
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    35
#define ALIGNED_(x) __attribute__ ((aligned(x)))
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    36
#endif
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    37
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    38
// The 64 bit code is at most SSE2 compliant
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    39
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    40
/******************************************************************************/
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    41
//                     ALGORITHM DESCRIPTION - EXP()
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    42
//                     ---------------------
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    43
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    44
// Description:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    45
//  Let K = 64 (table size).
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    46
//        x    x/log(2)     n
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    47
//       e  = 2          = 2 * T[j] * (1 + P(y))
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    48
//  where
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    49
//       x = m*log(2)/K + y,    y in [-log(2)/K..log(2)/K]
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    50
//       m = n*K + j,           m,n,j - signed integer, j in [-K/2..K/2]
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    51
//                  j/K
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    52
//       values of 2   are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    53
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    54
//       P(y) is a minimax polynomial approximation of exp(x)-1
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    55
//       on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    56
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    57
//  To avoid problems with arithmetic overflow and underflow,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    58
//            n                        n1  n2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    59
//  value of 2  is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    60
//  where BIAS is a value of exponent bias.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    61
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    62
// Special cases:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    63
//  exp(NaN) = NaN
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    64
//  exp(+INF) = +INF
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    65
//  exp(-INF) = 0
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    66
//  exp(x) = 1 for subnormals
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    67
//  for finite argument, only exp(0)=1 is exact
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    68
//  For IEEE double
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    69
//    if x >  709.782712893383973096 then exp(x) overflow
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    70
//    if x < -745.133219101941108420 then exp(x) underflow
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    71
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    72
/******************************************************************************/
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    73
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    74
ALIGNED_(16) juint _cv[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    75
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    76
    0x652b82feUL, 0x40571547UL, 0x652b82feUL, 0x40571547UL, 0xfefa0000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    77
    0x3f862e42UL, 0xfefa0000UL, 0x3f862e42UL, 0xbc9e3b3aUL, 0x3d1cf79aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    78
    0xbc9e3b3aUL, 0x3d1cf79aUL, 0xfffffffeUL, 0x3fdfffffUL, 0xfffffffeUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    79
    0x3fdfffffUL, 0xe3289860UL, 0x3f56c15cUL, 0x555b9e25UL, 0x3fa55555UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    80
    0xc090cf0fUL, 0x3f811115UL, 0x55548ba1UL, 0x3fc55555UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    81
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    82
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    83
ALIGNED_(16) juint _shifter[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    84
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    85
    0x00000000UL, 0x43380000UL, 0x00000000UL, 0x43380000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    86
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    87
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    88
ALIGNED_(16) juint _mmask[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    89
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    90
    0xffffffc0UL, 0x00000000UL, 0xffffffc0UL, 0x00000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    91
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    92
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    93
ALIGNED_(16) juint _bias[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    94
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    95
    0x0000ffc0UL, 0x00000000UL, 0x0000ffc0UL, 0x00000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    96
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    97
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    98
ALIGNED_(16) juint _Tbl_addr[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
    99
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   100
    0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x0e03754dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   101
    0x3cad7bbfUL, 0x3e778060UL, 0x00002c9aUL, 0x3567f613UL, 0x3c8cd252UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   102
    0xd3158574UL, 0x000059b0UL, 0x61e6c861UL, 0x3c60f74eUL, 0x18759bc8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   103
    0x00008745UL, 0x5d837b6cUL, 0x3c979aa6UL, 0x6cf9890fUL, 0x0000b558UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   104
    0x702f9cd1UL, 0x3c3ebe3dUL, 0x32d3d1a2UL, 0x0000e3ecUL, 0x1e63bcd8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   105
    0x3ca3516eUL, 0xd0125b50UL, 0x00011301UL, 0x26f0387bUL, 0x3ca4c554UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   106
    0xaea92ddfUL, 0x0001429aUL, 0x62523fb6UL, 0x3ca95153UL, 0x3c7d517aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   107
    0x000172b8UL, 0x3f1353bfUL, 0x3c8b898cUL, 0xeb6fcb75UL, 0x0001a35bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   108
    0x3e3a2f5fUL, 0x3c9aecf7UL, 0x3168b9aaUL, 0x0001d487UL, 0x44a6c38dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   109
    0x3c8a6f41UL, 0x88628cd6UL, 0x0002063bUL, 0xe3a8a894UL, 0x3c968efdUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   110
    0x6e756238UL, 0x0002387aUL, 0x981fe7f2UL, 0x3c80472bUL, 0x65e27cddUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   111
    0x00026b45UL, 0x6d09ab31UL, 0x3c82f7e1UL, 0xf51fdee1UL, 0x00029e9dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   112
    0x720c0ab3UL, 0x3c8b3782UL, 0xa6e4030bUL, 0x0002d285UL, 0x4db0abb6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   113
    0x3c834d75UL, 0x0a31b715UL, 0x000306feUL, 0x5dd3f84aUL, 0x3c8fdd39UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   114
    0xb26416ffUL, 0x00033c08UL, 0xcc187d29UL, 0x3ca12f8cUL, 0x373aa9caUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   115
    0x000371a7UL, 0x738b5e8bUL, 0x3ca7d229UL, 0x34e59ff6UL, 0x0003a7dbUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   116
    0xa72a4c6dUL, 0x3c859f48UL, 0x4c123422UL, 0x0003dea6UL, 0x259d9205UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   117
    0x3ca8b846UL, 0x21f72e29UL, 0x0004160aUL, 0x60c2ac12UL, 0x3c4363edUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   118
    0x6061892dUL, 0x00044e08UL, 0xdaa10379UL, 0x3c6ecce1UL, 0xb5c13cd0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   119
    0x000486a2UL, 0xbb7aafb0UL, 0x3c7690ceUL, 0xd5362a27UL, 0x0004bfdaUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   120
    0x9b282a09UL, 0x3ca083ccUL, 0x769d2ca6UL, 0x0004f9b2UL, 0xc1aae707UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   121
    0x3ca509b0UL, 0x569d4f81UL, 0x0005342bUL, 0x18fdd78eUL, 0x3c933505UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   122
    0x36b527daUL, 0x00056f47UL, 0xe21c5409UL, 0x3c9063e1UL, 0xdd485429UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   123
    0x0005ab07UL, 0x2b64c035UL, 0x3c9432e6UL, 0x15ad2148UL, 0x0005e76fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   124
    0x99f08c0aUL, 0x3ca01284UL, 0xb03a5584UL, 0x0006247eUL, 0x0073dc06UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   125
    0x3c99f087UL, 0x82552224UL, 0x00066238UL, 0x0da05571UL, 0x3c998d4dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   126
    0x667f3bccUL, 0x0006a09eUL, 0x86ce4786UL, 0x3ca52bb9UL, 0x3c651a2eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   127
    0x0006dfb2UL, 0x206f0dabUL, 0x3ca32092UL, 0xe8ec5f73UL, 0x00071f75UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   128
    0x8e17a7a6UL, 0x3ca06122UL, 0x564267c8UL, 0x00075febUL, 0x461e9f86UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   129
    0x3ca244acUL, 0x73eb0186UL, 0x0007a114UL, 0xabd66c55UL, 0x3c65ebe1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   130
    0x36cf4e62UL, 0x0007e2f3UL, 0xbbff67d0UL, 0x3c96fe9fUL, 0x994cce12UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   131
    0x00082589UL, 0x14c801dfUL, 0x3c951f14UL, 0x9b4492ecUL, 0x000868d9UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   132
    0xc1f0eab4UL, 0x3c8db72fUL, 0x422aa0dbUL, 0x0008ace5UL, 0x59f35f44UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   133
    0x3c7bf683UL, 0x99157736UL, 0x0008f1aeUL, 0x9c06283cUL, 0x3ca360baUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   134
    0xb0cdc5e4UL, 0x00093737UL, 0x20f962aaUL, 0x3c95e8d1UL, 0x9fde4e4fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   135
    0x00097d82UL, 0x2b91ce27UL, 0x3c71affcUL, 0x82a3f090UL, 0x0009c491UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   136
    0x589a2ebdUL, 0x3c9b6d34UL, 0x7b5de564UL, 0x000a0c66UL, 0x9ab89880UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   137
    0x3c95277cUL, 0xb23e255cUL, 0x000a5503UL, 0x6e735ab3UL, 0x3c846984UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   138
    0x5579fdbfUL, 0x000a9e6bUL, 0x92cb3387UL, 0x3c8c1a77UL, 0x995ad3adUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   139
    0x000ae89fUL, 0xdc2d1d96UL, 0x3ca22466UL, 0xb84f15faUL, 0x000b33a2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   140
    0xb19505aeUL, 0x3ca1112eUL, 0xf2fb5e46UL, 0x000b7f76UL, 0x0a5fddcdUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   141
    0x3c74ffd7UL, 0x904bc1d2UL, 0x000bcc1eUL, 0x30af0cb3UL, 0x3c736eaeUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   142
    0xdd85529cUL, 0x000c199bUL, 0xd10959acUL, 0x3c84e08fUL, 0x2e57d14bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   143
    0x000c67f1UL, 0x6c921968UL, 0x3c676b2cUL, 0xdcef9069UL, 0x000cb720UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   144
    0x36df99b3UL, 0x3c937009UL, 0x4a07897bUL, 0x000d072dUL, 0xa63d07a7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   145
    0x3c74a385UL, 0xdcfba487UL, 0x000d5818UL, 0xd5c192acUL, 0x3c8e5a50UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   146
    0x03db3285UL, 0x000da9e6UL, 0x1c4a9792UL, 0x3c98bb73UL, 0x337b9b5eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   147
    0x000dfc97UL, 0x603a88d3UL, 0x3c74b604UL, 0xe78b3ff6UL, 0x000e502eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   148
    0x92094926UL, 0x3c916f27UL, 0xa2a490d9UL, 0x000ea4afUL, 0x41aa2008UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   149
    0x3c8ec3bcUL, 0xee615a27UL, 0x000efa1bUL, 0x31d185eeUL, 0x3c8a64a9UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   150
    0x5b6e4540UL, 0x000f5076UL, 0x4d91cd9dUL, 0x3c77893bUL, 0x819e90d8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   151
    0x000fa7c1UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   152
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   153
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   154
ALIGNED_(16) juint _ALLONES[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   155
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   156
    0xffffffffUL, 0xffffffffUL, 0xffffffffUL, 0xffffffffUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   157
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   158
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   159
ALIGNED_(16) juint _ebias[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   160
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   161
    0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3ff00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   162
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   163
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   164
ALIGNED_(4) juint _XMAX[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   165
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   166
    0xffffffffUL, 0x7fefffffUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   167
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   168
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   169
ALIGNED_(4) juint _XMIN[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   170
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   171
    0x00000000UL, 0x00100000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   172
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   173
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   174
ALIGNED_(4) juint _INF[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   175
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   176
    0x00000000UL, 0x7ff00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   177
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   178
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   179
ALIGNED_(4) juint _ZERO[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   180
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   181
    0x00000000UL, 0x00000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   182
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   183
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   184
ALIGNED_(4) juint _ONE_val[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   185
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   186
    0x00000000UL, 0x3ff00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   187
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   188
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   189
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   190
// Registers:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   191
// input: xmm0
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   192
// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   193
//          rax, rdx, rcx, tmp - r11
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   194
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   195
// Code generated by Intel C compiler for LIBM library
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   196
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   197
void MacroAssembler::fast_exp(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   198
  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;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   199
  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;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   200
  Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   201
  Label L_2TAG_PACKET_12_0_2, B1_3, B1_5, start;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   202
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   203
  assert_different_registers(tmp, eax, ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   204
  jmp(start);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   205
  address cv = (address)_cv;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   206
  address Shifter = (address)_shifter;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   207
  address mmask = (address)_mmask;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   208
  address bias = (address)_bias;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   209
  address Tbl_addr = (address)_Tbl_addr;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   210
  address ALLONES = (address)_ALLONES;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   211
  address ebias = (address)_ebias;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   212
  address XMAX = (address)_XMAX;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   213
  address XMIN = (address)_XMIN;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   214
  address INF = (address)_INF;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   215
  address ZERO = (address)_ZERO;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   216
  address ONE_val = (address)_ONE_val;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   217
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   218
  bind(start);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   219
  subq(rsp, 24);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   220
  movsd(Address(rsp, 8), xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   221
  unpcklpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   222
  movdqu(xmm1, ExternalAddress(cv));       // 0x652b82feUL, 0x40571547UL, 0x652b82feUL, 0x40571547UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   223
  movdqu(xmm6, ExternalAddress(Shifter));  // 0x00000000UL, 0x43380000UL, 0x00000000UL, 0x43380000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   224
  movdqu(xmm2, ExternalAddress(16+cv));    // 0xfefa0000UL, 0x3f862e42UL, 0xfefa0000UL, 0x3f862e42UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   225
  movdqu(xmm3, ExternalAddress(32+cv));    // 0xbc9e3b3aUL, 0x3d1cf79aUL, 0xbc9e3b3aUL, 0x3d1cf79aUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   226
  pextrw(eax, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   227
  andl(eax, 32767);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   228
  movl(edx, 16527);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   229
  subl(edx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   230
  subl(eax, 15504);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   231
  orl(edx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   232
  cmpl(edx, INT_MIN);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   233
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   234
  mulpd(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   235
  addpd(xmm1, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   236
  movapd(xmm7, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   237
  subpd(xmm1, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   238
  mulpd(xmm2, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   239
  movdqu(xmm4, ExternalAddress(64+cv));    // 0xe3289860UL, 0x3f56c15cUL, 0x555b9e25UL, 0x3fa55555UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   240
  mulpd(xmm3, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   241
  movdqu(xmm5, ExternalAddress(80+cv));    // 0xc090cf0fUL, 0x3f811115UL, 0x55548ba1UL, 0x3fc55555UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   242
  subpd(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   243
  movdl(eax, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   244
  movl(ecx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   245
  andl(ecx, 63);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   246
  shll(ecx, 4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   247
  sarl(eax, 6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   248
  movl(edx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   249
  movdqu(xmm6, ExternalAddress(mmask));    // 0xffffffc0UL, 0x00000000UL, 0xffffffc0UL, 0x00000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   250
  pand(xmm7, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   251
  movdqu(xmm6, ExternalAddress(bias));     // 0x0000ffc0UL, 0x00000000UL, 0x0000ffc0UL, 0x00000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   252
  paddq(xmm7, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   253
  psllq(xmm7, 46);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   254
  subpd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   255
  lea(tmp, ExternalAddress(Tbl_addr));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   256
  movdqu(xmm2, Address(ecx,tmp));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   257
  mulpd(xmm4, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   258
  movapd(xmm6, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   259
  movapd(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   260
  mulpd(xmm6, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   261
  mulpd(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   262
  addpd(xmm5, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   263
  mulsd(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   264
  mulpd(xmm6, ExternalAddress(48+cv));     // 0xfffffffeUL, 0x3fdfffffUL, 0xfffffffeUL, 0x3fdfffffUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   265
  addsd(xmm1, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   266
  unpckhpd(xmm2, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   267
  mulpd(xmm0, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   268
  addsd(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   269
  por(xmm2, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   270
  unpckhpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   271
  addsd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   272
  addsd(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   273
  addl(edx, 894);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   274
  cmpl(edx, 1916);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   275
  jcc (Assembler::above, L_2TAG_PACKET_1_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   276
  mulsd(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   277
  addsd(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   278
  jmp (B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   279
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   280
  bind(L_2TAG_PACKET_1_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   281
  xorpd(xmm3, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   282
  movdqu(xmm4, ExternalAddress(ALLONES));  // 0xffffffffUL, 0xffffffffUL, 0xffffffffUL, 0xffffffffUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   283
  movl(edx, -1022);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   284
  subl(edx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   285
  movdl(xmm5, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   286
  psllq(xmm4, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   287
  movl(ecx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   288
  sarl(eax, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   289
  pinsrw(xmm3, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   290
  movdqu(xmm6, ExternalAddress(ebias));    // 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3ff00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   291
  psllq(xmm3, 4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   292
  psubd(xmm2, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   293
  mulsd(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   294
  cmpl(edx, 52);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   295
  jcc(Assembler::greater, L_2TAG_PACKET_2_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   296
  pand(xmm4, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   297
  paddd(xmm3, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   298
  subsd(xmm2, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   299
  addsd(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   300
  cmpl(ecx, 1023);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   301
  jcc(Assembler::greaterEqual, L_2TAG_PACKET_3_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   302
  pextrw(ecx, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   303
  andl(ecx, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   304
  orl(edx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   305
  cmpl(edx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   306
  jcc(Assembler::equal, L_2TAG_PACKET_4_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   307
  movapd(xmm6, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   308
  addsd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   309
  mulsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   310
  pextrw(ecx, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   311
  andl(ecx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   312
  cmpl(ecx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   313
  jcc(Assembler::equal, L_2TAG_PACKET_5_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   314
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   315
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   316
  bind(L_2TAG_PACKET_5_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   317
  mulsd(xmm6, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   318
  mulsd(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   319
  movdqu(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   320
  pxor(xmm6, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   321
  psrad(xmm6, 31);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   322
  pshufd(xmm6, xmm6, 85);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   323
  psllq(xmm0, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   324
  psrlq(xmm0, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   325
  pxor(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   326
  psrlq(xmm6, 63);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   327
  paddq(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   328
  paddq(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   329
  movl(Address(rsp,0), 15);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   330
  jmp(L_2TAG_PACKET_6_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   331
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   332
  bind(L_2TAG_PACKET_4_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   333
  addsd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   334
  mulsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   335
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   336
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   337
  bind(L_2TAG_PACKET_3_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   338
  addsd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   339
  mulsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   340
  pextrw(ecx, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   341
  andl(ecx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   342
  cmpl(ecx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   343
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_7_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   344
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   345
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   346
  bind(L_2TAG_PACKET_2_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   347
  paddd(xmm3, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   348
  addpd(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   349
  mulsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   350
  movl(Address(rsp,0), 15);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   351
  jmp(L_2TAG_PACKET_6_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   352
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   353
  bind(L_2TAG_PACKET_8_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   354
  cmpl(eax, 2146435072);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   355
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_9_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   356
  movl(eax, Address(rsp,12));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   357
  cmpl(eax, INT_MIN);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   358
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_10_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   359
  movsd(xmm0, ExternalAddress(XMAX));      // 0xffffffffUL, 0x7fefffffUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   360
  mulsd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   361
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   362
  bind(L_2TAG_PACKET_7_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   363
  movl(Address(rsp,0), 14);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   364
  jmp(L_2TAG_PACKET_6_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   365
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   366
  bind(L_2TAG_PACKET_10_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   367
  movsd(xmm0, ExternalAddress(XMIN));      // 0x00000000UL, 0x00100000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   368
  mulsd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   369
  movl(Address(rsp,0), 15);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   370
  jmp(L_2TAG_PACKET_6_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   371
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   372
  bind(L_2TAG_PACKET_9_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   373
  movl(edx, Address(rsp,8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   374
  cmpl(eax, 2146435072);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   375
  jcc(Assembler::above, L_2TAG_PACKET_11_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   376
  cmpl(edx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   377
  jcc(Assembler::notEqual, L_2TAG_PACKET_11_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   378
  movl(eax, Address(rsp,12));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   379
  cmpl(eax, 2146435072);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   380
  jcc(Assembler::notEqual, L_2TAG_PACKET_12_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   381
  movsd(xmm0, ExternalAddress(INF));       // 0x00000000UL, 0x7ff00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   382
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   383
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   384
  bind(L_2TAG_PACKET_12_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   385
  movsd(xmm0, ExternalAddress(ZERO));      // 0x00000000UL, 0x00000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   386
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   387
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   388
  bind(L_2TAG_PACKET_11_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   389
  movsd(xmm0, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   390
  addsd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   391
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   392
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   393
  bind(L_2TAG_PACKET_0_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   394
  movl(eax, Address(rsp, 12));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   395
  andl(eax, 2147483647);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   396
  cmpl(eax, 1083179008);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   397
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_8_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   398
  movsd(Address(rsp, 8), xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   399
  addsd(xmm0, ExternalAddress(ONE_val));   // 0x00000000UL, 0x3ff00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   400
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   401
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   402
  bind(L_2TAG_PACKET_6_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   403
  movq(Address(rsp, 16), xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   404
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   405
  bind(B1_3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   406
  movq(xmm0, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   407
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   408
  bind(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   409
  addq(rsp, 24);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   410
}
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   411
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   412
/******************************************************************************/
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   413
//                     ALGORITHM DESCRIPTION - LOG()
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   414
//                     ---------------------
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   415
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   416
//    x=2^k * mx, mx in [1,2)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   417
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   418
//    Get B~1/mx based on the output of rcpss instruction (B0)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   419
//    B = int((B0*2^7+0.5))/2^7
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   420
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   421
//    Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   422
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   423
//    Result:  k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6)  and
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   424
//             p(r) is a degree 7 polynomial
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   425
//             -log(B) read from data table (high, low parts)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   426
//             Result is formed from high and low parts
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   427
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   428
// Special cases:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   429
//  log(NaN) = quiet NaN, and raise invalid exception
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   430
//  log(+INF) = that INF
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   431
//  log(0) = -INF with divide-by-zero exception raised
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   432
//  log(1) = +0
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   433
//  log(x) = NaN with invalid exception raised if x < -0, including -INF
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   434
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   435
/******************************************************************************/
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   436
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   437
ALIGNED_(16) juint _L_tbl[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   438
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   439
  0xfefa3800UL, 0x3fe62e42UL, 0x93c76730UL, 0x3d2ef357UL, 0xaa241800UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   440
  0x3fe5ee82UL, 0x0cda46beUL, 0x3d220238UL, 0x5c364800UL, 0x3fe5af40UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   441
  0xac10c9fbUL, 0x3d2dfa63UL, 0x26bb8c00UL, 0x3fe5707aUL, 0xff3303ddUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   442
  0x3d09980bUL, 0x26867800UL, 0x3fe5322eUL, 0x5d257531UL, 0x3d05ccc4UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   443
  0x835a5000UL, 0x3fe4f45aUL, 0x6d93b8fbUL, 0xbd2e6c51UL, 0x6f970c00UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   444
  0x3fe4b6fdUL, 0xed4c541cUL, 0x3cef7115UL, 0x27e8a400UL, 0x3fe47a15UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   445
  0xf94d60aaUL, 0xbd22cb6aUL, 0xf2f92400UL, 0x3fe43d9fUL, 0x481051f7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   446
  0xbcfd984fUL, 0x2125cc00UL, 0x3fe4019cUL, 0x30f0c74cUL, 0xbd26ce79UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   447
  0x0c36c000UL, 0x3fe3c608UL, 0x7cfe13c2UL, 0xbd02b736UL, 0x17197800UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   448
  0x3fe38ae2UL, 0xbb5569a4UL, 0xbd218b7aUL, 0xad9d8c00UL, 0x3fe35028UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   449
  0x9527e6acUL, 0x3d10b83fUL, 0x44340800UL, 0x3fe315daUL, 0xc5a0ed9cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   450
  0xbd274e93UL, 0x57b0e000UL, 0x3fe2dbf5UL, 0x07b9dc11UL, 0xbd17a6e5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   451
  0x6d0ec000UL, 0x3fe2a278UL, 0xe797882dUL, 0x3d206d2bUL, 0x1134dc00UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   452
  0x3fe26962UL, 0x05226250UL, 0xbd0b61f1UL, 0xd8bebc00UL, 0x3fe230b0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   453
  0x6e48667bUL, 0x3d12fc06UL, 0x5fc61800UL, 0x3fe1f863UL, 0xc9fe81d3UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   454
  0xbd2a7242UL, 0x49ae6000UL, 0x3fe1c078UL, 0xed70e667UL, 0x3cccacdeUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   455
  0x40f23c00UL, 0x3fe188eeUL, 0xf8ab4650UL, 0x3d14cc4eUL, 0xf6f29800UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   456
  0x3fe151c3UL, 0xa293ae49UL, 0xbd2edd97UL, 0x23c75c00UL, 0x3fe11af8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   457
  0xbb9ddcb2UL, 0xbd258647UL, 0x8611cc00UL, 0x3fe0e489UL, 0x07801742UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   458
  0x3d1c2998UL, 0xe2d05400UL, 0x3fe0ae76UL, 0x887e7e27UL, 0x3d1f486bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   459
  0x0533c400UL, 0x3fe078bfUL, 0x41edf5fdUL, 0x3d268122UL, 0xbe760400UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   460
  0x3fe04360UL, 0xe79539e0UL, 0xbd04c45fUL, 0xe5b20800UL, 0x3fe00e5aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   461
  0xb1727b1cUL, 0xbd053ba3UL, 0xaf7a4800UL, 0x3fdfb358UL, 0x3c164935UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   462
  0x3d0085faUL, 0xee031800UL, 0x3fdf4aa7UL, 0x6f014a8bUL, 0x3d12cde5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   463
  0x56b41000UL, 0x3fdee2a1UL, 0x5a470251UL, 0x3d2f27f4UL, 0xc3ddb000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   464
  0x3fde7b42UL, 0x5372bd08UL, 0xbd246550UL, 0x1a272800UL, 0x3fde148aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   465
  0x07322938UL, 0xbd1326b2UL, 0x484c9800UL, 0x3fddae75UL, 0x60dc616aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   466
  0xbd1ea42dUL, 0x46def800UL, 0x3fdd4902UL, 0xe9a767a8UL, 0x3d235bafUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   467
  0x18064800UL, 0x3fdce42fUL, 0x3ec7a6b0UL, 0xbd0797c3UL, 0xc7455800UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   468
  0x3fdc7ff9UL, 0xc15249aeUL, 0xbd29b6ddUL, 0x693fa000UL, 0x3fdc1c60UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   469
  0x7fe8e180UL, 0x3d2cec80UL, 0x1b80e000UL, 0x3fdbb961UL, 0xf40a666dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   470
  0x3d27d85bUL, 0x04462800UL, 0x3fdb56faUL, 0x2d841995UL, 0x3d109525UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   471
  0x5248d000UL, 0x3fdaf529UL, 0x52774458UL, 0xbd217cc5UL, 0x3c8ad800UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   472
  0x3fda93edUL, 0xbea77a5dUL, 0x3d1e36f2UL, 0x0224f800UL, 0x3fda3344UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   473
  0x7f9d79f5UL, 0x3d23c645UL, 0xea15f000UL, 0x3fd9d32bUL, 0x10d0c0b0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   474
  0xbd26279eUL, 0x43135800UL, 0x3fd973a3UL, 0xa502d9f0UL, 0xbd152313UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   475
  0x635bf800UL, 0x3fd914a8UL, 0x2ee6307dUL, 0xbd1766b5UL, 0xa88b3000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   476
  0x3fd8b639UL, 0xe5e70470UL, 0xbd205ae1UL, 0x776dc800UL, 0x3fd85855UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   477
  0x3333778aUL, 0x3d2fd56fUL, 0x3bd81800UL, 0x3fd7fafaUL, 0xc812566aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   478
  0xbd272090UL, 0x687cf800UL, 0x3fd79e26UL, 0x2efd1778UL, 0x3d29ec7dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   479
  0x76c67800UL, 0x3fd741d8UL, 0x49dc60b3UL, 0x3d2d8b09UL, 0xe6af1800UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   480
  0x3fd6e60eUL, 0x7c222d87UL, 0x3d172165UL, 0x3e9c6800UL, 0x3fd68ac8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   481
  0x2756eba0UL, 0x3d20a0d3UL, 0x0b3ab000UL, 0x3fd63003UL, 0xe731ae00UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   482
  0xbd2db623UL, 0xdf596000UL, 0x3fd5d5bdUL, 0x08a465dcUL, 0xbd0a0b2aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   483
  0x53c8d000UL, 0x3fd57bf7UL, 0xee5d40efUL, 0x3d1fadedUL, 0x0738a000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   484
  0x3fd522aeUL, 0x8164c759UL, 0x3d2ebe70UL, 0x9e173000UL, 0x3fd4c9e0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   485
  0x1b0ad8a4UL, 0xbd2e2089UL, 0xc271c800UL, 0x3fd4718dUL, 0x0967d675UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   486
  0xbd2f27ceUL, 0x23d5e800UL, 0x3fd419b4UL, 0xec90e09dUL, 0x3d08e436UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   487
  0x77333000UL, 0x3fd3c252UL, 0xb606bd5cUL, 0x3d183b54UL, 0x76be1000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   488
  0x3fd36b67UL, 0xb0f177c8UL, 0x3d116ecdUL, 0xe1d36000UL, 0x3fd314f1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   489
  0xd3213cb8UL, 0xbd28e27aUL, 0x7cdc9000UL, 0x3fd2bef0UL, 0x4a5004f4UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   490
  0x3d2a9cfaUL, 0x1134d800UL, 0x3fd26962UL, 0xdf5bb3b6UL, 0x3d2c93c1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   491
  0x6d0eb800UL, 0x3fd21445UL, 0xba46baeaUL, 0x3d0a87deUL, 0x635a6800UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   492
  0x3fd1bf99UL, 0x5147bdb7UL, 0x3d2ca6edUL, 0xcbacf800UL, 0x3fd16b5cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   493
  0xf7a51681UL, 0x3d2b9acdUL, 0x8227e800UL, 0x3fd1178eUL, 0x63a5f01cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   494
  0xbd2c210eUL, 0x67616000UL, 0x3fd0c42dUL, 0x163ceae9UL, 0x3d27188bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   495
  0x604d5800UL, 0x3fd07138UL, 0x16ed4e91UL, 0x3cf89cdbUL, 0x5626c800UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   496
  0x3fd01eaeUL, 0x1485e94aUL, 0xbd16f08cUL, 0x6cb3b000UL, 0x3fcf991cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   497
  0xca0cdf30UL, 0x3d1bcbecUL, 0xe4dd0000UL, 0x3fcef5adUL, 0x65bb8e11UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   498
  0xbcca2115UL, 0xffe71000UL, 0x3fce530eUL, 0x6041f430UL, 0x3cc21227UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   499
  0xb0d49000UL, 0x3fcdb13dUL, 0xf715b035UL, 0xbd2aff2aUL, 0xf2656000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   500
  0x3fcd1037UL, 0x75b6f6e4UL, 0xbd084a7eUL, 0xc6f01000UL, 0x3fcc6ffbUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   501
  0xc5962bd2UL, 0xbcf1ec72UL, 0x383be000UL, 0x3fcbd087UL, 0x595412b6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   502
  0xbd2d4bc4UL, 0x575bd000UL, 0x3fcb31d8UL, 0x4eace1aaUL, 0xbd0c358dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   503
  0x3c8ae000UL, 0x3fca93edUL, 0x50562169UL, 0xbd287243UL, 0x07089000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   504
  0x3fc9f6c4UL, 0x6865817aUL, 0x3d29904dUL, 0xdcf70000UL, 0x3fc95a5aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   505
  0x58a0ff6fUL, 0x3d07f228UL, 0xeb390000UL, 0x3fc8beafUL, 0xaae92cd1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   506
  0xbd073d54UL, 0x6551a000UL, 0x3fc823c1UL, 0x9a631e83UL, 0x3d1e0ddbUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   507
  0x85445000UL, 0x3fc7898dUL, 0x70914305UL, 0xbd1c6610UL, 0x8b757000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   508
  0x3fc6f012UL, 0xe59c21e1UL, 0xbd25118dUL, 0xbe8c1000UL, 0x3fc6574eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   509
  0x2c3c2e78UL, 0x3d19cf8bUL, 0x6b544000UL, 0x3fc5bf40UL, 0xeb68981cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   510
  0xbd127023UL, 0xe4a1b000UL, 0x3fc527e5UL, 0xe5697dc7UL, 0x3d2633e8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   511
  0x8333b000UL, 0x3fc4913dUL, 0x54fdb678UL, 0x3d258379UL, 0xa5993000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   512
  0x3fc3fb45UL, 0x7e6a354dUL, 0xbd2cd1d8UL, 0xb0159000UL, 0x3fc365fcUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   513
  0x234b7289UL, 0x3cc62fa8UL, 0x0c868000UL, 0x3fc2d161UL, 0xcb81b4a1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   514
  0x3d039d6cUL, 0x2a49c000UL, 0x3fc23d71UL, 0x8fd3df5cUL, 0x3d100d23UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   515
  0x7e23f000UL, 0x3fc1aa2bUL, 0x44389934UL, 0x3d2ca78eUL, 0x8227e000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   516
  0x3fc1178eUL, 0xce2d07f2UL, 0x3d21ef78UL, 0xb59e4000UL, 0x3fc08598UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   517
  0x7009902cUL, 0xbd27e5ddUL, 0x39dbe000UL, 0x3fbfe891UL, 0x4fa10afdUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   518
  0xbd2534d6UL, 0x830a2000UL, 0x3fbec739UL, 0xafe645e0UL, 0xbd2dc068UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   519
  0x63844000UL, 0x3fbda727UL, 0x1fa71733UL, 0x3d1a8940UL, 0x01bc4000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   520
  0x3fbc8858UL, 0xc65aacd3UL, 0x3d2646d1UL, 0x8dad6000UL, 0x3fbb6ac8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   521
  0x2bf768e5UL, 0xbd139080UL, 0x40b1c000UL, 0x3fba4e76UL, 0xb94407c8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   522
  0xbd0e42b6UL, 0x5d594000UL, 0x3fb9335eUL, 0x3abd47daUL, 0x3d23115cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   523
  0x2f40e000UL, 0x3fb8197eUL, 0xf96ffdf7UL, 0x3d0f80dcUL, 0x0aeac000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   524
  0x3fb700d3UL, 0xa99ded32UL, 0x3cec1e8dUL, 0x4d97a000UL, 0x3fb5e95aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   525
  0x3c5d1d1eUL, 0xbd2c6906UL, 0x5d208000UL, 0x3fb4d311UL, 0x82f4e1efUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   526
  0xbcf53a25UL, 0xa7d1e000UL, 0x3fb3bdf5UL, 0xa5db4ed7UL, 0x3d2cc85eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   527
  0xa4472000UL, 0x3fb2aa04UL, 0xae9c697dUL, 0xbd20b6e8UL, 0xd1466000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   528
  0x3fb1973bUL, 0x560d9e9bUL, 0xbd25325dUL, 0xb59e4000UL, 0x3fb08598UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   529
  0x7009902cUL, 0xbd17e5ddUL, 0xc006c000UL, 0x3faeea31UL, 0x4fc93b7bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   530
  0xbd0e113eUL, 0xcdddc000UL, 0x3faccb73UL, 0x47d82807UL, 0xbd1a68f2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   531
  0xd0fb0000UL, 0x3faaaef2UL, 0x353bb42eUL, 0x3d20fc1aUL, 0x149fc000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   532
  0x3fa894aaUL, 0xd05a267dUL, 0xbd197995UL, 0xf2d4c000UL, 0x3fa67c94UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   533
  0xec19afa2UL, 0xbd029efbUL, 0xd42e0000UL, 0x3fa466aeUL, 0x75bdfd28UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   534
  0xbd2c1673UL, 0x2f8d0000UL, 0x3fa252f3UL, 0xe021b67bUL, 0x3d283e9aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   535
  0x89e74000UL, 0x3fa0415dUL, 0x5cf1d753UL, 0x3d0111c0UL, 0xec148000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   536
  0x3f9c63d2UL, 0x3f9eb2f3UL, 0x3d2578c6UL, 0x28c90000UL, 0x3f984925UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   537
  0x325a0c34UL, 0xbd2aa0baUL, 0x25980000UL, 0x3f9432a9UL, 0x928637feUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   538
  0x3d098139UL, 0x58938000UL, 0x3f902056UL, 0x06e2f7d2UL, 0xbd23dc5bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   539
  0xa3890000UL, 0x3f882448UL, 0xda74f640UL, 0xbd275577UL, 0x75890000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   540
  0x3f801015UL, 0x999d2be8UL, 0xbd10c76bUL, 0x59580000UL, 0x3f700805UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   541
  0xcb31c67bUL, 0x3d2166afUL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   542
  0x80000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   543
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   544
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   545
ALIGNED_(16) juint _log2[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   546
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   547
  0xfefa3800UL, 0x3fa62e42UL, 0x93c76730UL, 0x3ceef357UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   548
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   549
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   550
ALIGNED_(16) juint _coeff[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   551
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   552
  0x92492492UL, 0x3fc24924UL, 0x00000000UL, 0xbfd00000UL, 0x3d6fb175UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   553
  0xbfc5555eUL, 0x55555555UL, 0x3fd55555UL, 0x9999999aUL, 0x3fc99999UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   554
  0x00000000UL, 0xbfe00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   555
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   556
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   557
//registers,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   558
// input: xmm0
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   559
// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   560
//          rax, rdx, rcx, r8, r11
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   561
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   562
void MacroAssembler::fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp1, Register tmp2) {
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   563
  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;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   564
  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;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   565
  Label L_2TAG_PACKET_8_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   566
  Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, B1_3, B1_5, start;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   567
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   568
  assert_different_registers(tmp1, tmp2, eax, ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   569
  jmp(start);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   570
  address L_tbl = (address)_L_tbl;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   571
  address log2 = (address)_log2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   572
  address coeff = (address)_coeff;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   573
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   574
  bind(start);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   575
  subq(rsp, 24);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   576
  movsd(Address(rsp, 0), xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   577
  mov64(rax, 0x3ff0000000000000);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   578
  movdq(xmm2, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   579
  mov64(rdx, 0x77f0000000000000);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   580
  movdq(xmm3, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   581
  movl(ecx, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   582
  movdl(xmm4, rcx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   583
  mov64(tmp1, 0xffffe00000000000);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   584
  movdq(xmm5, tmp1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   585
  movdqu(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   586
  pextrw(eax, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   587
  por(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   588
  movl(ecx, 16352);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   589
  psrlq(xmm0, 27);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   590
  lea(tmp2, ExternalAddress(L_tbl));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   591
  psrld(xmm0, 2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   592
  rcpps(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   593
  psllq(xmm1, 12);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   594
  pshufd(xmm6, xmm5, 228);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   595
  psrlq(xmm1, 12);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   596
  subl(eax, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   597
  cmpl(eax, 32736);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   598
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   599
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   600
  bind(L_2TAG_PACKET_1_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   601
  paddd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   602
  por(xmm1, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   603
  movdl(edx, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   604
  psllq(xmm0, 29);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   605
  pand(xmm5, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   606
  pand(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   607
  subsd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   608
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   609
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   610
  subl(eax, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   611
  cvtsi2sdl(xmm7, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   612
  mulsd(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   613
  movq(xmm6, ExternalAddress(log2));       // 0xfefa3800UL, 0x3fa62e42UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   614
  movdqu(xmm3, ExternalAddress(coeff));    // 0x92492492UL, 0x3fc24924UL, 0x00000000UL, 0xbfd00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   615
  subsd(xmm5, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   616
  andl(edx, 16711680);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   617
  shrl(edx, 12);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   618
  movdqu(xmm0, Address(tmp2, edx));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   619
  movdqu(xmm4, ExternalAddress(16 + coeff)); // 0x3d6fb175UL, 0xbfc5555eUL, 0x55555555UL, 0x3fd55555UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   620
  addsd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   621
  movdqu(xmm2, ExternalAddress(32 + coeff)); // 0x9999999aUL, 0x3fc99999UL, 0x00000000UL, 0xbfe00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   622
  mulsd(xmm6, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   623
  if (VM_Version::supports_sse3()) {
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   624
    movddup(xmm5, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   625
  } else {
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   626
    movdqu(xmm5, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   627
    movlhps(xmm5, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   628
  }
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   629
  mulsd(xmm7, ExternalAddress(8 + log2));    // 0x93c76730UL, 0x3ceef357UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   630
  mulsd(xmm3, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   631
  addsd(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   632
  mulpd(xmm4, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   633
  mulpd(xmm5, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   634
  if (VM_Version::supports_sse3()) {
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   635
    movddup(xmm6, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   636
  } else {
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   637
    movdqu(xmm6, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   638
    movlhps(xmm6, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   639
  }
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   640
  addsd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   641
  addpd(xmm4, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   642
  mulpd(xmm3, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   643
  subsd(xmm6, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   644
  mulsd(xmm4, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   645
  pshufd(xmm2, xmm0, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   646
  addsd(xmm1, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   647
  mulsd(xmm5, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   648
  addsd(xmm7, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   649
  addpd(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   650
  addsd(xmm1, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   651
  mulpd(xmm4, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   652
  addsd(xmm1, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   653
  pshufd(xmm5, xmm4, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   654
  addsd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   655
  addsd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   656
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   657
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   658
  bind(L_2TAG_PACKET_0_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   659
  movq(xmm0, Address(rsp, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   660
  movq(xmm1, Address(rsp, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   661
  addl(eax, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   662
  cmpl(eax, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   663
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_2_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   664
  cmpl(eax, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   665
  jcc(Assembler::below, L_2TAG_PACKET_3_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   666
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   667
  bind(L_2TAG_PACKET_4_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   668
  addsd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   669
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   670
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   671
  bind(L_2TAG_PACKET_5_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   672
  jcc(Assembler::above, L_2TAG_PACKET_4_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   673
  cmpl(edx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   674
  jcc(Assembler::above, L_2TAG_PACKET_4_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   675
  jmp(L_2TAG_PACKET_6_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   676
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   677
  bind(L_2TAG_PACKET_3_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   678
  xorpd(xmm1, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   679
  addsd(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   680
  movdl(edx, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   681
  psrlq(xmm1, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   682
  movdl(ecx, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   683
  orl(edx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   684
  cmpl(edx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   685
  jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   686
  xorpd(xmm1, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   687
  movl(eax, 18416);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   688
  pinsrw(xmm1, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   689
  mulsd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   690
  movdqu(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   691
  pextrw(eax, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   692
  por(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   693
  psrlq(xmm0, 27);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   694
  movl(ecx, 18416);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   695
  psrld(xmm0, 2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   696
  rcpps(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   697
  psllq(xmm1, 12);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   698
  pshufd(xmm6, xmm5, 228);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   699
  psrlq(xmm1, 12);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   700
  jmp(L_2TAG_PACKET_1_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   701
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   702
  bind(L_2TAG_PACKET_2_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   703
  movdl(edx, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   704
  psrlq(xmm1, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   705
  movdl(ecx, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   706
  addl(ecx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   707
  cmpl(ecx, -2097152);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   708
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_5_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   709
  orl(edx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   710
  cmpl(edx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   711
  jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   712
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   713
  bind(L_2TAG_PACKET_6_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   714
  xorpd(xmm1, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   715
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   716
  movl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   717
  pinsrw(xmm1, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   718
  mulsd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   719
  movl(Address(rsp, 16), 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   720
  jmp(L_2TAG_PACKET_8_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   721
  bind(L_2TAG_PACKET_7_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   722
  xorpd(xmm1, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   723
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   724
  movl(eax, 49136);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   725
  pinsrw(xmm0, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   726
  divsd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   727
  movl(Address(rsp, 16), 2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   728
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   729
  bind(L_2TAG_PACKET_8_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   730
  movq(Address(rsp, 8), xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   731
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   732
  bind(B1_3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   733
  movq(xmm0, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   734
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   735
  bind(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   736
  addq(rsp, 24);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   737
}
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   738
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   739
/******************************************************************************/
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   740
//                     ALGORITHM DESCRIPTION  - POW()
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   741
//                     ---------------------
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   742
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   743
//    Let x=2^k * mx, mx in [1,2)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   744
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   745
//    log2(x) calculation:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   746
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   747
//    Get B~1/mx based on the output of rcpps instruction (B0)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   748
//    B = int((B0*LH*2^9+0.5))/2^9
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   749
//    LH is a short approximation for log2(e)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   750
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   751
//    Reduced argument, scaled by LH:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   752
//                r=B*mx-LH (computed accurately in high and low parts)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   753
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   754
//    log2(x) result:  k - log2(B) + p(r)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   755
//             p(r) is a degree 8 polynomial
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   756
//             -log2(B) read from data table (high, low parts)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   757
//             log2(x) is formed from high and low parts
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   758
//    For |x| in [1-1/32, 1+1/16), a slower but more accurate computation
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   759
//    based om the same table design is performed.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   760
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   761
//   Main path is taken if | floor(log2(|log2(|x|)|) + floor(log2|y|) | < 8,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   762
//   to filter out all potential OF/UF cases.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   763
//   exp2(y*log2(x)) is computed using an 8-bit index table and a degree 5
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   764
//   polynomial
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   765
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   766
// Special cases:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   767
//  pow(-0,y) = -INF and raises the divide-by-zero exception for y an odd
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   768
//  integer < 0.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   769
//  pow(-0,y) = +INF and raises the divide-by-zero exception for y < 0 and
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   770
//  not an odd integer.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   771
//  pow(-0,y) = -0 for y an odd integer > 0.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   772
//  pow(-0,y) = +0 for y > 0 and not an odd integer.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   773
//  pow(-1,-INF) = NaN.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   774
//  pow(+1,y) = NaN for any y, even a NaN.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   775
//  pow(x,-0) = 1 for any x, even a NaN.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   776
//  pow(x,y) = a NaN and raises the invalid exception for finite x < 0 and
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   777
//  finite non-integer y.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   778
//  pow(x,-INF) = +INF for |x|<1.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   779
//  pow(x,-INF) = +0 for |x|>1.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   780
//  pow(x,+INF) = +0 for |x|<1.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   781
//  pow(x,+INF) = +INF for |x|>1.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   782
//  pow(-INF,y) = -0 for y an odd integer < 0.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   783
//  pow(-INF,y) = +0 for y < 0 and not an odd integer.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   784
//  pow(-INF,y) = -INF for y an odd integer > 0.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   785
//  pow(-INF,y) = +INF for y > 0 and not an odd integer.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   786
//  pow(+INF,y) = +0 for y <0.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   787
//  pow(+INF,y) = +INF for y >0.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   788
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   789
/******************************************************************************/
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   790
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   791
ALIGNED_(16) juint _HIGHSIGMASK[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   792
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   793
  0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   794
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   795
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   796
ALIGNED_(16) juint _LOG2_E[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   797
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   798
  0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   799
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   800
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   801
ALIGNED_(16) juint _HIGHMASK_Y[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   802
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   803
  0x00000000UL, 0xfffffff8UL, 0x00000000UL, 0xffffffffUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   804
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   805
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   806
ALIGNED_(16) juint _T_exp[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   807
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   808
  0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3b700000UL, 0xfa5abcbfUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   809
  0x3ff00b1aUL, 0xa7609f71UL, 0xbc84f6b2UL, 0xa9fb3335UL, 0x3ff0163dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   810
  0x9ab8cdb7UL, 0x3c9b6129UL, 0x143b0281UL, 0x3ff02168UL, 0x0fc54eb6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   811
  0xbc82bf31UL, 0x3e778061UL, 0x3ff02c9aUL, 0x535b085dUL, 0xbc719083UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   812
  0x2e11bbccUL, 0x3ff037d4UL, 0xeeade11aUL, 0x3c656811UL, 0xe86e7f85UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   813
  0x3ff04315UL, 0x1977c96eUL, 0xbc90a31cUL, 0x72f654b1UL, 0x3ff04e5fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   814
  0x3aa0d08cUL, 0x3c84c379UL, 0xd3158574UL, 0x3ff059b0UL, 0xa475b465UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   815
  0x3c8d73e2UL, 0x0e3c1f89UL, 0x3ff0650aUL, 0x5799c397UL, 0xbc95cb7bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   816
  0x29ddf6deUL, 0x3ff0706bUL, 0xe2b13c27UL, 0xbc8c91dfUL, 0x2b72a836UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   817
  0x3ff07bd4UL, 0x54458700UL, 0x3c832334UL, 0x18759bc8UL, 0x3ff08745UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   818
  0x4bb284ffUL, 0x3c6186beUL, 0xf66607e0UL, 0x3ff092bdUL, 0x800a3fd1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   819
  0xbc968063UL, 0xcac6f383UL, 0x3ff09e3eUL, 0x18316136UL, 0x3c914878UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   820
  0x9b1f3919UL, 0x3ff0a9c7UL, 0x873d1d38UL, 0x3c85d16cUL, 0x6cf9890fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   821
  0x3ff0b558UL, 0x4adc610bUL, 0x3c98a62eUL, 0x45e46c85UL, 0x3ff0c0f1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   822
  0x06d21cefUL, 0x3c94f989UL, 0x2b7247f7UL, 0x3ff0cc92UL, 0x16e24f71UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   823
  0x3c901edcUL, 0x23395decUL, 0x3ff0d83bUL, 0xe43f316aUL, 0xbc9bc14dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   824
  0x32d3d1a2UL, 0x3ff0e3ecUL, 0x27c57b52UL, 0x3c403a17UL, 0x5fdfa9c5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   825
  0x3ff0efa5UL, 0xbc54021bUL, 0xbc949db9UL, 0xaffed31bUL, 0x3ff0fb66UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   826
  0xc44ebd7bUL, 0xbc6b9bedUL, 0x28d7233eUL, 0x3ff10730UL, 0x1692fdd5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   827
  0x3c8d46ebUL, 0xd0125b51UL, 0x3ff11301UL, 0x39449b3aUL, 0xbc96c510UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   828
  0xab5e2ab6UL, 0x3ff11edbUL, 0xf703fb72UL, 0xbc9ca454UL, 0xc06c31ccUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   829
  0x3ff12abdUL, 0xb36ca5c7UL, 0xbc51b514UL, 0x14f204abUL, 0x3ff136a8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   830
  0xba48dcf0UL, 0xbc67108fUL, 0xaea92de0UL, 0x3ff1429aUL, 0x9af1369eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   831
  0xbc932fbfUL, 0x934f312eUL, 0x3ff14e95UL, 0x39bf44abUL, 0xbc8b91e8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   832
  0xc8a58e51UL, 0x3ff15a98UL, 0xb9eeab0aUL, 0x3c82406aUL, 0x5471c3c2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   833
  0x3ff166a4UL, 0x82ea1a32UL, 0x3c58f23bUL, 0x3c7d517bUL, 0x3ff172b8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   834
  0xb9d78a76UL, 0xbc819041UL, 0x8695bbc0UL, 0x3ff17ed4UL, 0xe2ac5a64UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   835
  0x3c709e3fUL, 0x388c8deaUL, 0x3ff18af9UL, 0xd1970f6cUL, 0xbc911023UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   836
  0x58375d2fUL, 0x3ff19726UL, 0x85f17e08UL, 0x3c94aaddUL, 0xeb6fcb75UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   837
  0x3ff1a35bUL, 0x7b4968e4UL, 0x3c8e5b4cUL, 0xf8138a1cUL, 0x3ff1af99UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   838
  0xa4b69280UL, 0x3c97bf85UL, 0x84045cd4UL, 0x3ff1bbe0UL, 0x352ef607UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   839
  0xbc995386UL, 0x95281c6bUL, 0x3ff1c82fUL, 0x8010f8c9UL, 0x3c900977UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   840
  0x3168b9aaUL, 0x3ff1d487UL, 0x00a2643cUL, 0x3c9e016eUL, 0x5eb44027UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   841
  0x3ff1e0e7UL, 0x088cb6deUL, 0xbc96fdd8UL, 0x22fcd91dUL, 0x3ff1ed50UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   842
  0x027bb78cUL, 0xbc91df98UL, 0x8438ce4dUL, 0x3ff1f9c1UL, 0xa097af5cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   843
  0xbc9bf524UL, 0x88628cd6UL, 0x3ff2063bUL, 0x814a8495UL, 0x3c8dc775UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   844
  0x3578a819UL, 0x3ff212beUL, 0x2cfcaac9UL, 0x3c93592dUL, 0x917ddc96UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   845
  0x3ff21f49UL, 0x9494a5eeUL, 0x3c82a97eUL, 0xa27912d1UL, 0x3ff22bddUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   846
  0x5577d69fUL, 0x3c8d34fbUL, 0x6e756238UL, 0x3ff2387aUL, 0xb6c70573UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   847
  0x3c99b07eUL, 0xfb82140aUL, 0x3ff2451fUL, 0x911ca996UL, 0x3c8acfccUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   848
  0x4fb2a63fUL, 0x3ff251ceUL, 0xbef4f4a4UL, 0x3c8ac155UL, 0x711ece75UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   849
  0x3ff25e85UL, 0x4ac31b2cUL, 0x3c93e1a2UL, 0x65e27cddUL, 0x3ff26b45UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   850
  0x9940e9d9UL, 0x3c82bd33UL, 0x341ddf29UL, 0x3ff2780eUL, 0x05f9e76cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   851
  0x3c9e067cUL, 0xe1f56381UL, 0x3ff284dfUL, 0x8c3f0d7eUL, 0xbc9a4c3aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   852
  0x7591bb70UL, 0x3ff291baUL, 0x28401cbdUL, 0xbc82cc72UL, 0xf51fdee1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   853
  0x3ff29e9dUL, 0xafad1255UL, 0x3c8612e8UL, 0x66d10f13UL, 0x3ff2ab8aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   854
  0x191690a7UL, 0xbc995743UL, 0xd0dad990UL, 0x3ff2b87fUL, 0xd6381aa4UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   855
  0xbc410adcUL, 0x39771b2fUL, 0x3ff2c57eUL, 0xa6eb5124UL, 0xbc950145UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   856
  0xa6e4030bUL, 0x3ff2d285UL, 0x54db41d5UL, 0x3c900247UL, 0x1f641589UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   857
  0x3ff2df96UL, 0xfbbce198UL, 0x3c9d16cfUL, 0xa93e2f56UL, 0x3ff2ecafUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   858
  0x45d52383UL, 0x3c71ca0fUL, 0x4abd886bUL, 0x3ff2f9d2UL, 0x532bda93UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   859
  0xbc653c55UL, 0x0a31b715UL, 0x3ff306feUL, 0xd23182e4UL, 0x3c86f46aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   860
  0xedeeb2fdUL, 0x3ff31432UL, 0xf3f3fcd1UL, 0x3c8959a3UL, 0xfc4cd831UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   861
  0x3ff32170UL, 0x8e18047cUL, 0x3c8a9ce7UL, 0x3ba8ea32UL, 0x3ff32eb8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   862
  0x3cb4f318UL, 0xbc9c45e8UL, 0xb26416ffUL, 0x3ff33c08UL, 0x843659a6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   863
  0x3c932721UL, 0x66e3fa2dUL, 0x3ff34962UL, 0x930881a4UL, 0xbc835a75UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   864
  0x5f929ff1UL, 0x3ff356c5UL, 0x5c4e4628UL, 0xbc8b5ceeUL, 0xa2de883bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   865
  0x3ff36431UL, 0xa06cb85eUL, 0xbc8c3144UL, 0x373aa9cbUL, 0x3ff371a7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   866
  0xbf42eae2UL, 0xbc963aeaUL, 0x231e754aUL, 0x3ff37f26UL, 0x9eceb23cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   867
  0xbc99f5caUL, 0x6d05d866UL, 0x3ff38caeUL, 0x3c9904bdUL, 0xbc9e958dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   868
  0x1b7140efUL, 0x3ff39a40UL, 0xfc8e2934UL, 0xbc99a9a5UL, 0x34e59ff7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   869
  0x3ff3a7dbUL, 0xd661f5e3UL, 0xbc75e436UL, 0xbfec6cf4UL, 0x3ff3b57fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   870
  0xe26fff18UL, 0x3c954c66UL, 0xc313a8e5UL, 0x3ff3c32dUL, 0x375d29c3UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   871
  0xbc9efff8UL, 0x44ede173UL, 0x3ff3d0e5UL, 0x8c284c71UL, 0x3c7fe8d0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   872
  0x4c123422UL, 0x3ff3dea6UL, 0x11f09ebcUL, 0x3c8ada09UL, 0xdf1c5175UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   873
  0x3ff3ec70UL, 0x7b8c9bcaUL, 0xbc8af663UL, 0x04ac801cUL, 0x3ff3fa45UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   874
  0xf956f9f3UL, 0xbc97d023UL, 0xc367a024UL, 0x3ff40822UL, 0xb6f4d048UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   875
  0x3c8bddf8UL, 0x21f72e2aUL, 0x3ff4160aUL, 0x1c309278UL, 0xbc5ef369UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   876
  0x2709468aUL, 0x3ff423fbUL, 0xc0b314ddUL, 0xbc98462dUL, 0xd950a897UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   877
  0x3ff431f5UL, 0xe35f7999UL, 0xbc81c7ddUL, 0x3f84b9d4UL, 0x3ff43ffaUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   878
  0x9704c003UL, 0x3c8880beUL, 0x6061892dUL, 0x3ff44e08UL, 0x04ef80d0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   879
  0x3c489b7aUL, 0x42a7d232UL, 0x3ff45c20UL, 0x82fb1f8eUL, 0xbc686419UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   880
  0xed1d0057UL, 0x3ff46a41UL, 0xd1648a76UL, 0x3c9c944bUL, 0x668b3237UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   881
  0x3ff4786dUL, 0xed445733UL, 0xbc9c20f0UL, 0xb5c13cd0UL, 0x3ff486a2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   882
  0xb69062f0UL, 0x3c73c1a3UL, 0xe192aed2UL, 0x3ff494e1UL, 0x5e499ea0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   883
  0xbc83b289UL, 0xf0d7d3deUL, 0x3ff4a32aUL, 0xf3d1be56UL, 0x3c99cb62UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   884
  0xea6db7d7UL, 0x3ff4b17dUL, 0x7f2897f0UL, 0xbc8125b8UL, 0xd5362a27UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   885
  0x3ff4bfdaUL, 0xafec42e2UL, 0x3c7d4397UL, 0xb817c114UL, 0x3ff4ce41UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   886
  0x690abd5dUL, 0x3c905e29UL, 0x99fddd0dUL, 0x3ff4dcb2UL, 0xbc6a7833UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   887
  0x3c98ecdbUL, 0x81d8abffUL, 0x3ff4eb2dUL, 0x2e5d7a52UL, 0xbc95257dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   888
  0x769d2ca7UL, 0x3ff4f9b2UL, 0xd25957e3UL, 0xbc94b309UL, 0x7f4531eeUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   889
  0x3ff50841UL, 0x49b7465fUL, 0x3c7a249bUL, 0xa2cf6642UL, 0x3ff516daUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   890
  0x69bd93efUL, 0xbc8f7685UL, 0xe83f4eefUL, 0x3ff5257dUL, 0x43efef71UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   891
  0xbc7c998dUL, 0x569d4f82UL, 0x3ff5342bUL, 0x1db13cadUL, 0xbc807abeUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   892
  0xf4f6ad27UL, 0x3ff542e2UL, 0x192d5f7eUL, 0x3c87926dUL, 0xca5d920fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   893
  0x3ff551a4UL, 0xefede59bUL, 0xbc8d689cUL, 0xdde910d2UL, 0x3ff56070UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   894
  0x168eebf0UL, 0xbc90fb6eUL, 0x36b527daUL, 0x3ff56f47UL, 0x011d93adUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   895
  0x3c99bb2cUL, 0xdbe2c4cfUL, 0x3ff57e27UL, 0x8a57b9c4UL, 0xbc90b98cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   896
  0xd497c7fdUL, 0x3ff58d12UL, 0x5b9a1de8UL, 0x3c8295e1UL, 0x27ff07ccUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   897
  0x3ff59c08UL, 0xe467e60fUL, 0xbc97e2ceUL, 0xdd485429UL, 0x3ff5ab07UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   898
  0x054647adUL, 0x3c96324cUL, 0xfba87a03UL, 0x3ff5ba11UL, 0x4c233e1aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   899
  0xbc9b77a1UL, 0x8a5946b7UL, 0x3ff5c926UL, 0x816986a2UL, 0x3c3c4b1bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   900
  0x90998b93UL, 0x3ff5d845UL, 0xa8b45643UL, 0xbc9cd6a7UL, 0x15ad2148UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   901
  0x3ff5e76fUL, 0x3080e65eUL, 0x3c9ba6f9UL, 0x20dceb71UL, 0x3ff5f6a3UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   902
  0xe3cdcf92UL, 0xbc89eaddUL, 0xb976dc09UL, 0x3ff605e1UL, 0x9b56de47UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   903
  0xbc93e242UL, 0xe6cdf6f4UL, 0x3ff6152aUL, 0x4ab84c27UL, 0x3c9e4b3eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   904
  0xb03a5585UL, 0x3ff6247eUL, 0x7e40b497UL, 0xbc9383c1UL, 0x1d1929fdUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   905
  0x3ff633ddUL, 0xbeb964e5UL, 0x3c984710UL, 0x34ccc320UL, 0x3ff64346UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   906
  0x759d8933UL, 0xbc8c483cUL, 0xfebc8fb7UL, 0x3ff652b9UL, 0xc9a73e09UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   907
  0xbc9ae3d5UL, 0x82552225UL, 0x3ff66238UL, 0x87591c34UL, 0xbc9bb609UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   908
  0xc70833f6UL, 0x3ff671c1UL, 0x586c6134UL, 0xbc8e8732UL, 0xd44ca973UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   909
  0x3ff68155UL, 0x44f73e65UL, 0x3c6038aeUL, 0xb19e9538UL, 0x3ff690f4UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   910
  0x9aeb445dUL, 0x3c8804bdUL, 0x667f3bcdUL, 0x3ff6a09eUL, 0x13b26456UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   911
  0xbc9bdd34UL, 0xfa75173eUL, 0x3ff6b052UL, 0x2c9a9d0eUL, 0x3c7a38f5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   912
  0x750bdabfUL, 0x3ff6c012UL, 0x67ff0b0dUL, 0xbc728956UL, 0xddd47645UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   913
  0x3ff6cfdcUL, 0xb6f17309UL, 0x3c9c7aa9UL, 0x3c651a2fUL, 0x3ff6dfb2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   914
  0x683c88abUL, 0xbc6bbe3aUL, 0x98593ae5UL, 0x3ff6ef92UL, 0x9e1ac8b2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   915
  0xbc90b974UL, 0xf9519484UL, 0x3ff6ff7dUL, 0x25860ef6UL, 0xbc883c0fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   916
  0x66f42e87UL, 0x3ff70f74UL, 0xd45aa65fUL, 0x3c59d644UL, 0xe8ec5f74UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   917
  0x3ff71f75UL, 0x86887a99UL, 0xbc816e47UL, 0x86ead08aUL, 0x3ff72f82UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   918
  0x2cd62c72UL, 0xbc920aa0UL, 0x48a58174UL, 0x3ff73f9aUL, 0x6c65d53cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   919
  0xbc90a8d9UL, 0x35d7cbfdUL, 0x3ff74fbdUL, 0x618a6e1cUL, 0x3c9047fdUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   920
  0x564267c9UL, 0x3ff75febUL, 0x57316dd3UL, 0xbc902459UL, 0xb1ab6e09UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   921
  0x3ff77024UL, 0x169147f8UL, 0x3c9b7877UL, 0x4fde5d3fUL, 0x3ff78069UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   922
  0x0a02162dUL, 0x3c9866b8UL, 0x38ac1cf6UL, 0x3ff790b9UL, 0x62aadd3eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   923
  0x3c9349a8UL, 0x73eb0187UL, 0x3ff7a114UL, 0xee04992fUL, 0xbc841577UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   924
  0x0976cfdbUL, 0x3ff7b17bUL, 0x8468dc88UL, 0xbc9bebb5UL, 0x0130c132UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   925
  0x3ff7c1edUL, 0xd1164dd6UL, 0x3c9f124cUL, 0x62ff86f0UL, 0x3ff7d26aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   926
  0xfb72b8b4UL, 0x3c91bddbUL, 0x36cf4e62UL, 0x3ff7e2f3UL, 0xba15797eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   927
  0x3c705d02UL, 0x8491c491UL, 0x3ff7f387UL, 0xcf9311aeUL, 0xbc807f11UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   928
  0x543e1a12UL, 0x3ff80427UL, 0x626d972bUL, 0xbc927c86UL, 0xadd106d9UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   929
  0x3ff814d2UL, 0x0d151d4dUL, 0x3c946437UL, 0x994cce13UL, 0x3ff82589UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   930
  0xd41532d8UL, 0xbc9d4c1dUL, 0x1eb941f7UL, 0x3ff8364cUL, 0x31df2bd5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   931
  0x3c999b9aUL, 0x4623c7adUL, 0x3ff8471aUL, 0xa341cdfbUL, 0xbc88d684UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   932
  0x179f5b21UL, 0x3ff857f4UL, 0xf8b216d0UL, 0xbc5ba748UL, 0x9b4492edUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   933
  0x3ff868d9UL, 0x9bd4f6baUL, 0xbc9fc6f8UL, 0xd931a436UL, 0x3ff879caUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   934
  0xd2db47bdUL, 0x3c85d2d7UL, 0xd98a6699UL, 0x3ff88ac7UL, 0xf37cb53aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   935
  0x3c9994c2UL, 0xa478580fUL, 0x3ff89bd0UL, 0x4475202aUL, 0x3c9d5395UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   936
  0x422aa0dbUL, 0x3ff8ace5UL, 0x56864b27UL, 0x3c96e9f1UL, 0xbad61778UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   937
  0x3ff8be05UL, 0xfc43446eUL, 0x3c9ecb5eUL, 0x16b5448cUL, 0x3ff8cf32UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   938
  0x32e9e3aaUL, 0xbc70d55eUL, 0x5e0866d9UL, 0x3ff8e06aUL, 0x6fc9b2e6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   939
  0xbc97114aUL, 0x99157736UL, 0x3ff8f1aeUL, 0xa2e3976cUL, 0x3c85cc13UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   940
  0xd0282c8aUL, 0x3ff902feUL, 0x85fe3fd2UL, 0x3c9592caUL, 0x0b91ffc6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   941
  0x3ff9145bUL, 0x2e582524UL, 0xbc9dd679UL, 0x53aa2fe2UL, 0x3ff925c3UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   942
  0xa639db7fUL, 0xbc83455fUL, 0xb0cdc5e5UL, 0x3ff93737UL, 0x81b57ebcUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   943
  0xbc675fc7UL, 0x2b5f98e5UL, 0x3ff948b8UL, 0x797d2d99UL, 0xbc8dc3d6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   944
  0xcbc8520fUL, 0x3ff95a44UL, 0x96a5f039UL, 0xbc764b7cUL, 0x9a7670b3UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   945
  0x3ff96bddUL, 0x7f19c896UL, 0xbc5ba596UL, 0x9fde4e50UL, 0x3ff97d82UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   946
  0x7c1b85d1UL, 0xbc9d185bUL, 0xe47a22a2UL, 0x3ff98f33UL, 0xa24c78ecUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   947
  0x3c7cabdaUL, 0x70ca07baUL, 0x3ff9a0f1UL, 0x91cee632UL, 0xbc9173bdUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   948
  0x4d53fe0dUL, 0x3ff9b2bbUL, 0x4df6d518UL, 0xbc9dd84eUL, 0x82a3f090UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   949
  0x3ff9c491UL, 0xb071f2beUL, 0x3c7c7c46UL, 0x194bb8d5UL, 0x3ff9d674UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   950
  0xa3dd8233UL, 0xbc9516beUL, 0x19e32323UL, 0x3ff9e863UL, 0x78e64c6eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   951
  0x3c7824caUL, 0x8d07f29eUL, 0x3ff9fa5eUL, 0xaaf1faceUL, 0xbc84a9ceUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   952
  0x7b5de565UL, 0x3ffa0c66UL, 0x5d1cd533UL, 0xbc935949UL, 0xed8eb8bbUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   953
  0x3ffa1e7aUL, 0xee8be70eUL, 0x3c9c6618UL, 0xec4a2d33UL, 0x3ffa309bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   954
  0x7ddc36abUL, 0x3c96305cUL, 0x80460ad8UL, 0x3ffa42c9UL, 0x589fb120UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   955
  0xbc9aa780UL, 0xb23e255dUL, 0x3ffa5503UL, 0xdb8d41e1UL, 0xbc9d2f6eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   956
  0x8af46052UL, 0x3ffa674aUL, 0x30670366UL, 0x3c650f56UL, 0x1330b358UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   957
  0x3ffa799eUL, 0xcac563c7UL, 0x3c9bcb7eUL, 0x53c12e59UL, 0x3ffa8bfeUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   958
  0xb2ba15a9UL, 0xbc94f867UL, 0x5579fdbfUL, 0x3ffa9e6bUL, 0x0ef7fd31UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   959
  0x3c90fac9UL, 0x21356ebaUL, 0x3ffab0e5UL, 0xdae94545UL, 0x3c889c31UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   960
  0xbfd3f37aUL, 0x3ffac36bUL, 0xcae76cd0UL, 0xbc8f9234UL, 0x3a3c2774UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   961
  0x3ffad5ffUL, 0xb6b1b8e5UL, 0x3c97ef3bUL, 0x995ad3adUL, 0x3ffae89fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   962
  0x345dcc81UL, 0x3c97a1cdUL, 0xe622f2ffUL, 0x3ffafb4cUL, 0x0f315ecdUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   963
  0xbc94b2fcUL, 0x298db666UL, 0x3ffb0e07UL, 0x4c80e425UL, 0xbc9bdef5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   964
  0x6c9a8952UL, 0x3ffb20ceUL, 0x4a0756ccUL, 0x3c94dd02UL, 0xb84f15fbUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   965
  0x3ffb33a2UL, 0x3084d708UL, 0xbc62805eUL, 0x15b749b1UL, 0x3ffb4684UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   966
  0xe9df7c90UL, 0xbc7f763dUL, 0x8de5593aUL, 0x3ffb5972UL, 0xbbba6de3UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   967
  0xbc9c71dfUL, 0x29f1c52aUL, 0x3ffb6c6eUL, 0x52883f6eUL, 0x3c92a8f3UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   968
  0xf2fb5e47UL, 0x3ffb7f76UL, 0x7e54ac3bUL, 0xbc75584fUL, 0xf22749e4UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   969
  0x3ffb928cUL, 0x54cb65c6UL, 0xbc9b7216UL, 0x30a1064aUL, 0x3ffba5b0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   970
  0x0e54292eUL, 0xbc9efcd3UL, 0xb79a6f1fUL, 0x3ffbb8e0UL, 0xc9696205UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   971
  0xbc3f52d1UL, 0x904bc1d2UL, 0x3ffbcc1eUL, 0x7a2d9e84UL, 0x3c823dd0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   972
  0xc3f3a207UL, 0x3ffbdf69UL, 0x60ea5b53UL, 0xbc3c2623UL, 0x5bd71e09UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   973
  0x3ffbf2c2UL, 0x3f6b9c73UL, 0xbc9efdcaUL, 0x6141b33dUL, 0x3ffc0628UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   974
  0xa1fbca34UL, 0xbc8d8a5aUL, 0xdd85529cUL, 0x3ffc199bUL, 0x895048ddUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   975
  0x3c811065UL, 0xd9fa652cUL, 0x3ffc2d1cUL, 0x17c8a5d7UL, 0xbc96e516UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   976
  0x5fffd07aUL, 0x3ffc40abUL, 0xe083c60aUL, 0x3c9b4537UL, 0x78fafb22UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   977
  0x3ffc5447UL, 0x2493b5afUL, 0x3c912f07UL, 0x2e57d14bUL, 0x3ffc67f1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   978
  0xff483cadUL, 0x3c92884dUL, 0x8988c933UL, 0x3ffc7ba8UL, 0xbe255559UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   979
  0xbc8e76bbUL, 0x9406e7b5UL, 0x3ffc8f6dUL, 0x48805c44UL, 0x3c71acbcUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   980
  0x5751c4dbUL, 0x3ffca340UL, 0xd10d08f5UL, 0xbc87f2beUL, 0xdcef9069UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   981
  0x3ffcb720UL, 0xd1e949dbUL, 0x3c7503cbUL, 0x2e6d1675UL, 0x3ffccb0fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   982
  0x86009092UL, 0xbc7d220fUL, 0x555dc3faUL, 0x3ffcdf0bUL, 0x53829d72UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   983
  0xbc8dd83bUL, 0x5b5bab74UL, 0x3ffcf315UL, 0xb86dff57UL, 0xbc9a08e9UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   984
  0x4a07897cUL, 0x3ffd072dUL, 0x43797a9cUL, 0xbc9cbc37UL, 0x2b08c968UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   985
  0x3ffd1b53UL, 0x219a36eeUL, 0x3c955636UL, 0x080d89f2UL, 0x3ffd2f87UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   986
  0x719d8578UL, 0xbc9d487bUL, 0xeacaa1d6UL, 0x3ffd43c8UL, 0xbf5a1614UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   987
  0x3c93db53UL, 0xdcfba487UL, 0x3ffd5818UL, 0xd75b3707UL, 0x3c82ed02UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   988
  0xe862e6d3UL, 0x3ffd6c76UL, 0x4a8165a0UL, 0x3c5fe87aUL, 0x16c98398UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   989
  0x3ffd80e3UL, 0x8beddfe8UL, 0xbc911ec1UL, 0x71ff6075UL, 0x3ffd955dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   990
  0xbb9af6beUL, 0x3c9a052dUL, 0x03db3285UL, 0x3ffda9e6UL, 0x696db532UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   991
  0x3c9c2300UL, 0xd63a8315UL, 0x3ffdbe7cUL, 0x926b8be4UL, 0xbc9b76f1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   992
  0xf301b460UL, 0x3ffdd321UL, 0x78f018c3UL, 0x3c92da57UL, 0x641c0658UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   993
  0x3ffde7d5UL, 0x8e79ba8fUL, 0xbc9ca552UL, 0x337b9b5fUL, 0x3ffdfc97UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   994
  0x4f184b5cUL, 0xbc91a5cdUL, 0x6b197d17UL, 0x3ffe1167UL, 0xbd5c7f44UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   995
  0xbc72b529UL, 0x14f5a129UL, 0x3ffe2646UL, 0x817a1496UL, 0xbc97b627UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   996
  0x3b16ee12UL, 0x3ffe3b33UL, 0x31fdc68bUL, 0xbc99f4a4UL, 0xe78b3ff6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   997
  0x3ffe502eUL, 0x80a9cc8fUL, 0x3c839e89UL, 0x24676d76UL, 0x3ffe6539UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   998
  0x7522b735UL, 0xbc863ff8UL, 0xfbc74c83UL, 0x3ffe7a51UL, 0xca0c8de2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
   999
  0x3c92d522UL, 0x77cdb740UL, 0x3ffe8f79UL, 0x80b054b1UL, 0xbc910894UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1000
  0xa2a490daUL, 0x3ffea4afUL, 0x179c2893UL, 0xbc9e9c23UL, 0x867cca6eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1001
  0x3ffeb9f4UL, 0x2293e4f2UL, 0x3c94832fUL, 0x2d8e67f1UL, 0x3ffecf48UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1002
  0xb411ad8cUL, 0xbc9c93f3UL, 0xa2188510UL, 0x3ffee4aaUL, 0xa487568dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1003
  0x3c91c68dUL, 0xee615a27UL, 0x3ffefa1bUL, 0x86a4b6b0UL, 0x3c9dc7f4UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1004
  0x1cb6412aUL, 0x3fff0f9cUL, 0x65181d45UL, 0xbc932200UL, 0x376bba97UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1005
  0x3fff252bUL, 0xbf0d8e43UL, 0x3c93a1a5UL, 0x48dd7274UL, 0x3fff3ac9UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1006
  0x3ed837deUL, 0xbc795a5aUL, 0x5b6e4540UL, 0x3fff5076UL, 0x2dd8a18bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1007
  0x3c99d3e1UL, 0x798844f8UL, 0x3fff6632UL, 0x3539343eUL, 0x3c9fa37bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1008
  0xad9cbe14UL, 0x3fff7bfdUL, 0xd006350aUL, 0xbc9dbb12UL, 0x02243c89UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1009
  0x3fff91d8UL, 0xa779f689UL, 0xbc612ea8UL, 0x819e90d8UL, 0x3fffa7c1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1010
  0xf3a5931eUL, 0x3c874853UL, 0x3692d514UL, 0x3fffbdbaUL, 0x15098eb6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1011
  0xbc796773UL, 0x2b8f71f1UL, 0x3fffd3c2UL, 0x966579e7UL, 0x3c62eb74UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1012
  0x6b2a23d9UL, 0x3fffe9d9UL, 0x7442fde3UL, 0x3c74a603UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1013
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1014
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1015
ALIGNED_(16) juint _e_coeff[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1016
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1017
  0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL, 0x6fba4e77UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1018
  0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL, 0xfefa39efUL, 0x3fe62e42UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1019
  0x00000000UL, 0x00000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1020
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1021
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1022
ALIGNED_(16) juint _coeff_h[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1023
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1024
  0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1025
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1026
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1027
ALIGNED_(16) juint _HIGHMASK_LOG_X[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1028
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1029
  0xf8000000UL, 0xffffffffUL, 0x00000000UL, 0xfffff800UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1030
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1031
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1032
ALIGNED_(8) juint _HALFMASK[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1033
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1034
  0xf8000000UL, 0xffffffffUL, 0xf8000000UL, 0xffffffffUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1035
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1036
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1037
ALIGNED_(16) juint _coeff_pow[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1038
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1039
  0x6dc96112UL, 0xbf836578UL, 0xee241472UL, 0xbf9b0301UL, 0x9f95985aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1040
  0xbfb528dbUL, 0xb3841d2aUL, 0xbfd619b6UL, 0x518775e3UL, 0x3f9004f2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1041
  0xac8349bbUL, 0x3fa76c9bUL, 0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1042
  0xbf5dabe1UL, 0x9f95985aUL, 0xbfb528dbUL, 0xf8b5787dUL, 0x3ef2531eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1043
  0x486ececbUL, 0x3fc4635eUL, 0x412055ccUL, 0xbdd61bb2UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1044
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1045
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1046
ALIGNED_(16) juint _L_tbl_pow[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1047
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1048
  0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x00000000UL, 0x20000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1049
  0x3feff00aUL, 0x96621f95UL, 0x3e5b1856UL, 0xe0000000UL, 0x3fefe019UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1050
  0xe5916f9eUL, 0xbe325278UL, 0x00000000UL, 0x3fefd02fUL, 0x859a1062UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1051
  0x3e595fb7UL, 0xc0000000UL, 0x3fefc049UL, 0xb245f18fUL, 0xbe529c38UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1052
  0xe0000000UL, 0x3fefb069UL, 0xad2880a7UL, 0xbe501230UL, 0x60000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1053
  0x3fefa08fUL, 0xc8e72420UL, 0x3e597bd1UL, 0x80000000UL, 0x3fef90baUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1054
  0xc30c4500UL, 0xbe5d6c75UL, 0xe0000000UL, 0x3fef80eaUL, 0x02c63f43UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1055
  0x3e2e1318UL, 0xc0000000UL, 0x3fef7120UL, 0xb3d4ccccUL, 0xbe44c52aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1056
  0x00000000UL, 0x3fef615cUL, 0xdbd91397UL, 0xbe4e7d6cUL, 0xa0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1057
  0x3fef519cUL, 0x65c5cd68UL, 0xbe522dc8UL, 0xa0000000UL, 0x3fef41e2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1058
  0x46d1306cUL, 0xbe5a840eUL, 0xe0000000UL, 0x3fef322dUL, 0xd2980e94UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1059
  0x3e5071afUL, 0xa0000000UL, 0x3fef227eUL, 0x773abadeUL, 0xbe5891e5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1060
  0xa0000000UL, 0x3fef12d4UL, 0xdc6bf46bUL, 0xbe5cccbeUL, 0xe0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1061
  0x3fef032fUL, 0xbc7247faUL, 0xbe2bab83UL, 0x80000000UL, 0x3feef390UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1062
  0xbcaa1e46UL, 0xbe53bb3bUL, 0x60000000UL, 0x3feee3f6UL, 0x5f6c682dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1063
  0xbe54c619UL, 0x80000000UL, 0x3feed461UL, 0x5141e368UL, 0xbe4b6d86UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1064
  0xe0000000UL, 0x3feec4d1UL, 0xec678f76UL, 0xbe369af6UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1065
  0x3feeb547UL, 0x41301f55UL, 0xbe2d4312UL, 0x60000000UL, 0x3feea5c2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1066
  0x676da6bdUL, 0xbe4d8dd0UL, 0x60000000UL, 0x3fee9642UL, 0x57a891c4UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1067
  0x3e51f991UL, 0xa0000000UL, 0x3fee86c7UL, 0xe4eb491eUL, 0x3e579bf9UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1068
  0x20000000UL, 0x3fee7752UL, 0xfddc4a2cUL, 0xbe3356e6UL, 0xc0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1069
  0x3fee67e1UL, 0xd75b5bf1UL, 0xbe449531UL, 0x80000000UL, 0x3fee5876UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1070
  0xbd423b8eUL, 0x3df54fe4UL, 0x60000000UL, 0x3fee4910UL, 0x330e51b9UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1071
  0x3e54289cUL, 0x80000000UL, 0x3fee39afUL, 0x8651a95fUL, 0xbe55aad6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1072
  0xa0000000UL, 0x3fee2a53UL, 0x5e98c708UL, 0xbe2fc4a9UL, 0xe0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1073
  0x3fee1afcUL, 0x0989328dUL, 0x3e23958cUL, 0x40000000UL, 0x3fee0babUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1074
  0xee642abdUL, 0xbe425dd8UL, 0xa0000000UL, 0x3fedfc5eUL, 0xc394d236UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1075
  0x3e526362UL, 0x20000000UL, 0x3feded17UL, 0xe104aa8eUL, 0x3e4ce247UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1076
  0xc0000000UL, 0x3fedddd4UL, 0x265a9be4UL, 0xbe5bb77aUL, 0x40000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1077
  0x3fedce97UL, 0x0ecac52fUL, 0x3e4a7cb1UL, 0xe0000000UL, 0x3fedbf5eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1078
  0x124cb3b8UL, 0x3e257024UL, 0x80000000UL, 0x3fedb02bUL, 0xe6d4febeUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1079
  0xbe2033eeUL, 0x20000000UL, 0x3feda0fdUL, 0x39cca00eUL, 0xbe3ddabcUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1080
  0xc0000000UL, 0x3fed91d3UL, 0xef8a552aUL, 0xbe543390UL, 0x40000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1081
  0x3fed82afUL, 0xb8e85204UL, 0x3e513850UL, 0xe0000000UL, 0x3fed738fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1082
  0x3d59fe08UL, 0xbe5db728UL, 0x40000000UL, 0x3fed6475UL, 0x3aa7ead1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1083
  0x3e58804bUL, 0xc0000000UL, 0x3fed555fUL, 0xf8a35ba9UL, 0xbe5298b0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1084
  0x00000000UL, 0x3fed464fUL, 0x9a88dd15UL, 0x3e5a8cdbUL, 0x40000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1085
  0x3fed3743UL, 0xb0b0a190UL, 0x3e598635UL, 0x80000000UL, 0x3fed283cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1086
  0xe2113295UL, 0xbe5c1119UL, 0x80000000UL, 0x3fed193aUL, 0xafbf1728UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1087
  0xbe492e9cUL, 0x60000000UL, 0x3fed0a3dUL, 0xe4a4ccf3UL, 0x3e19b90eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1088
  0x20000000UL, 0x3fecfb45UL, 0xba3cbeb8UL, 0x3e406b50UL, 0xc0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1089
  0x3fecec51UL, 0x110f7dddUL, 0x3e0d6806UL, 0x40000000UL, 0x3fecdd63UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1090
  0x7dd7d508UL, 0xbe5a8943UL, 0x80000000UL, 0x3fecce79UL, 0x9b60f271UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1091
  0xbe50676aUL, 0x80000000UL, 0x3fecbf94UL, 0x0b9ad660UL, 0x3e59174fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1092
  0x60000000UL, 0x3fecb0b4UL, 0x00823d9cUL, 0x3e5bbf72UL, 0x20000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1093
  0x3feca1d9UL, 0x38a6ec89UL, 0xbe4d38f9UL, 0x80000000UL, 0x3fec9302UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1094
  0x3a0b7d8eUL, 0x3e53dbfdUL, 0xc0000000UL, 0x3fec8430UL, 0xc6826b34UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1095
  0xbe27c5c9UL, 0xc0000000UL, 0x3fec7563UL, 0x0c706381UL, 0xbe593653UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1096
  0x60000000UL, 0x3fec669bUL, 0x7df34ec7UL, 0x3e461ab5UL, 0xe0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1097
  0x3fec57d7UL, 0x40e5e7e8UL, 0xbe5c3daeUL, 0x00000000UL, 0x3fec4919UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1098
  0x5602770fUL, 0xbe55219dUL, 0xc0000000UL, 0x3fec3a5eUL, 0xec7911ebUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1099
  0x3e5a5d25UL, 0x60000000UL, 0x3fec2ba9UL, 0xb39ea225UL, 0xbe53c00bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1100
  0x80000000UL, 0x3fec1cf8UL, 0x967a212eUL, 0x3e5a8ddfUL, 0x60000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1101
  0x3fec0e4cUL, 0x580798bdUL, 0x3e5f53abUL, 0x00000000UL, 0x3febffa5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1102
  0xb8282df6UL, 0xbe46b874UL, 0x20000000UL, 0x3febf102UL, 0xe33a6729UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1103
  0x3e54963fUL, 0x00000000UL, 0x3febe264UL, 0x3b53e88aUL, 0xbe3adce1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1104
  0x60000000UL, 0x3febd3caUL, 0xc2585084UL, 0x3e5cde9fUL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1105
  0x3febc535UL, 0xa335c5eeUL, 0xbe39fd9cUL, 0x20000000UL, 0x3febb6a5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1106
  0x7325b04dUL, 0x3e42ba15UL, 0x60000000UL, 0x3feba819UL, 0x1564540fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1107
  0x3e3a9f35UL, 0x40000000UL, 0x3feb9992UL, 0x83fff592UL, 0xbe5465ceUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1108
  0xa0000000UL, 0x3feb8b0fUL, 0xb9da63d3UL, 0xbe4b1a0aUL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1109
  0x3feb7c91UL, 0x6d6f1ea4UL, 0x3e557657UL, 0x00000000UL, 0x3feb6e18UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1110
  0x5e80a1bfUL, 0x3e4ddbb6UL, 0x00000000UL, 0x3feb5fa3UL, 0x1c9eacb5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1111
  0x3e592877UL, 0xa0000000UL, 0x3feb5132UL, 0x6d40beb3UL, 0xbe51858cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1112
  0xa0000000UL, 0x3feb42c6UL, 0xd740c67bUL, 0x3e427ad2UL, 0x40000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1113
  0x3feb345fUL, 0xa3e0cceeUL, 0xbe5c2fc4UL, 0x40000000UL, 0x3feb25fcUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1114
  0x8e752b50UL, 0xbe3da3c2UL, 0xc0000000UL, 0x3feb179dUL, 0xa892e7deUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1115
  0x3e1fb481UL, 0xc0000000UL, 0x3feb0943UL, 0x21ed71e9UL, 0xbe365206UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1116
  0x20000000UL, 0x3feafaeeUL, 0x0e1380a3UL, 0x3e5c5b7bUL, 0x20000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1117
  0x3feaec9dUL, 0x3c3d640eUL, 0xbe5dbbd0UL, 0x60000000UL, 0x3feade50UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1118
  0x8f97a715UL, 0x3e3a8ec5UL, 0x20000000UL, 0x3fead008UL, 0x23ab2839UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1119
  0x3e2fe98aUL, 0x40000000UL, 0x3feac1c4UL, 0xf4bbd50fUL, 0x3e54d8f6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1120
  0xe0000000UL, 0x3feab384UL, 0x14757c4dUL, 0xbe48774cUL, 0xc0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1121
  0x3feaa549UL, 0x7c7b0eeaUL, 0x3e5b51bbUL, 0x20000000UL, 0x3fea9713UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1122
  0xf56f7013UL, 0x3e386200UL, 0xe0000000UL, 0x3fea88e0UL, 0xbe428ebeUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1123
  0xbe514af5UL, 0xe0000000UL, 0x3fea7ab2UL, 0x8d0e4496UL, 0x3e4f9165UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1124
  0x60000000UL, 0x3fea6c89UL, 0xdbacc5d5UL, 0xbe5c063bUL, 0x20000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1125
  0x3fea5e64UL, 0x3f19d970UL, 0xbe5a0c8cUL, 0x20000000UL, 0x3fea5043UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1126
  0x09ea3e6bUL, 0x3e5065dcUL, 0x80000000UL, 0x3fea4226UL, 0x78df246cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1127
  0x3e5e05f6UL, 0x40000000UL, 0x3fea340eUL, 0x4057d4a0UL, 0x3e431b2bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1128
  0x40000000UL, 0x3fea25faUL, 0x82867bb5UL, 0x3e4b76beUL, 0xa0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1129
  0x3fea17eaUL, 0x9436f40aUL, 0xbe5aad39UL, 0x20000000UL, 0x3fea09dfUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1130
  0x4b5253b3UL, 0x3e46380bUL, 0x00000000UL, 0x3fe9fbd8UL, 0x8fc52466UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1131
  0xbe386f9bUL, 0x20000000UL, 0x3fe9edd5UL, 0x22d3f344UL, 0xbe538347UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1132
  0x60000000UL, 0x3fe9dfd6UL, 0x1ac33522UL, 0x3e5dbc53UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1133
  0x3fe9d1dcUL, 0xeabdff1dUL, 0x3e40fc0cUL, 0xe0000000UL, 0x3fe9c3e5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1134
  0xafd30e73UL, 0xbe585e63UL, 0xe0000000UL, 0x3fe9b5f3UL, 0xa52f226aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1135
  0xbe43e8f9UL, 0x20000000UL, 0x3fe9a806UL, 0xecb8698dUL, 0xbe515b36UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1136
  0x80000000UL, 0x3fe99a1cUL, 0xf2b4e89dUL, 0x3e48b62bUL, 0x20000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1137
  0x3fe98c37UL, 0x7c9a88fbUL, 0x3e44414cUL, 0x00000000UL, 0x3fe97e56UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1138
  0xda015741UL, 0xbe5d13baUL, 0xe0000000UL, 0x3fe97078UL, 0x5fdace06UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1139
  0x3e51b947UL, 0x00000000UL, 0x3fe962a0UL, 0x956ca094UL, 0x3e518785UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1140
  0x40000000UL, 0x3fe954cbUL, 0x01164c1dUL, 0x3e5d5b57UL, 0xc0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1141
  0x3fe946faUL, 0xe63b3767UL, 0xbe4f84e7UL, 0x40000000UL, 0x3fe9392eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1142
  0xe57cc2a9UL, 0x3e34eda3UL, 0xe0000000UL, 0x3fe92b65UL, 0x8c75b544UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1143
  0x3e5766a0UL, 0xc0000000UL, 0x3fe91da1UL, 0x37d1d087UL, 0xbe5e2ab1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1144
  0x80000000UL, 0x3fe90fe1UL, 0xa953dc20UL, 0x3e5fa1f3UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1145
  0x3fe90225UL, 0xdbd3f369UL, 0x3e47d6dbUL, 0xa0000000UL, 0x3fe8f46dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1146
  0x1c9be989UL, 0xbe5e2b0aUL, 0xa0000000UL, 0x3fe8e6b9UL, 0x3c93d76aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1147
  0x3e5c8618UL, 0xe0000000UL, 0x3fe8d909UL, 0x2182fc9aUL, 0xbe41aa9eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1148
  0x20000000UL, 0x3fe8cb5eUL, 0xe6b3539dUL, 0xbe530d19UL, 0x60000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1149
  0x3fe8bdb6UL, 0x49e58cc3UL, 0xbe3bb374UL, 0xa0000000UL, 0x3fe8b012UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1150
  0xa7cfeb8fUL, 0x3e56c412UL, 0x00000000UL, 0x3fe8a273UL, 0x8d52bc19UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1151
  0x3e1429b8UL, 0x60000000UL, 0x3fe894d7UL, 0x4dc32c6cUL, 0xbe48604cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1152
  0xc0000000UL, 0x3fe8873fUL, 0x0c868e56UL, 0xbe564ee5UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1153
  0x3fe879acUL, 0x56aee828UL, 0x3e5e2fd8UL, 0x60000000UL, 0x3fe86c1cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1154
  0x7ceab8ecUL, 0x3e493365UL, 0xc0000000UL, 0x3fe85e90UL, 0x78d4dadcUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1155
  0xbe4f7f25UL, 0x00000000UL, 0x3fe85109UL, 0x0ccd8280UL, 0x3e31e7a2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1156
  0x40000000UL, 0x3fe84385UL, 0x34ba4e15UL, 0x3e328077UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1157
  0x3fe83605UL, 0xa670975aUL, 0xbe53eee5UL, 0xa0000000UL, 0x3fe82889UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1158
  0xf61b77b2UL, 0xbe43a20aUL, 0xa0000000UL, 0x3fe81b11UL, 0x13e6643bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1159
  0x3e5e5fe5UL, 0xc0000000UL, 0x3fe80d9dUL, 0x82cc94e8UL, 0xbe5ff1f9UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1160
  0xa0000000UL, 0x3fe8002dUL, 0x8a0c9c5dUL, 0xbe42b0e7UL, 0x60000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1161
  0x3fe7f2c1UL, 0x22a16f01UL, 0x3e5d9ea0UL, 0x20000000UL, 0x3fe7e559UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1162
  0xc38cd451UL, 0x3e506963UL, 0xc0000000UL, 0x3fe7d7f4UL, 0x9902bc71UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1163
  0x3e4503d7UL, 0x40000000UL, 0x3fe7ca94UL, 0xdef2a3c0UL, 0x3e3d98edUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1164
  0xa0000000UL, 0x3fe7bd37UL, 0xed49abb0UL, 0x3e24c1ffUL, 0xe0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1165
  0x3fe7afdeUL, 0xe3b0be70UL, 0xbe40c467UL, 0x00000000UL, 0x3fe7a28aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1166
  0xaf9f193cUL, 0xbe5dff6cUL, 0xe0000000UL, 0x3fe79538UL, 0xb74cf6b6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1167
  0xbe258ed0UL, 0xa0000000UL, 0x3fe787ebUL, 0x1d9127c7UL, 0x3e345fb0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1168
  0x40000000UL, 0x3fe77aa2UL, 0x1028c21dUL, 0xbe4619bdUL, 0xa0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1169
  0x3fe76d5cUL, 0x7cb0b5e4UL, 0x3e40f1a2UL, 0xe0000000UL, 0x3fe7601aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1170
  0x2b1bc4adUL, 0xbe32e8bbUL, 0xe0000000UL, 0x3fe752dcUL, 0x6839f64eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1171
  0x3e41f57bUL, 0xc0000000UL, 0x3fe745a2UL, 0xc4121f7eUL, 0xbe52c40aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1172
  0x60000000UL, 0x3fe7386cUL, 0xd6852d72UL, 0xbe5c4e6bUL, 0xc0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1173
  0x3fe72b39UL, 0x91d690f7UL, 0xbe57f88fUL, 0xe0000000UL, 0x3fe71e0aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1174
  0x627a2159UL, 0xbe4425d5UL, 0xc0000000UL, 0x3fe710dfUL, 0x50a54033UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1175
  0x3e422b7eUL, 0x60000000UL, 0x3fe703b8UL, 0x3b0b5f91UL, 0x3e5d3857UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1176
  0xe0000000UL, 0x3fe6f694UL, 0x84d628a2UL, 0xbe51f090UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1177
  0x3fe6e975UL, 0x306d8894UL, 0xbe414d83UL, 0xe0000000UL, 0x3fe6dc58UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1178
  0x30bf24aaUL, 0xbe4650caUL, 0x80000000UL, 0x3fe6cf40UL, 0xd4628d69UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1179
  0xbe5db007UL, 0xc0000000UL, 0x3fe6c22bUL, 0xa2aae57bUL, 0xbe31d279UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1180
  0xc0000000UL, 0x3fe6b51aUL, 0x860edf7eUL, 0xbe2d4c4aUL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1181
  0x3fe6a80dUL, 0xf3559341UL, 0xbe5f7e98UL, 0xe0000000UL, 0x3fe69b03UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1182
  0xa885899eUL, 0xbe5c2011UL, 0xe0000000UL, 0x3fe68dfdUL, 0x2bdc6d37UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1183
  0x3e224a82UL, 0xa0000000UL, 0x3fe680fbUL, 0xc12ad1b9UL, 0xbe40cf56UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1184
  0x00000000UL, 0x3fe673fdUL, 0x1bcdf659UL, 0xbdf52f2dUL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1185
  0x3fe66702UL, 0x5df10408UL, 0x3e5663e0UL, 0xc0000000UL, 0x3fe65a0aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1186
  0xa4070568UL, 0xbe40b12fUL, 0x00000000UL, 0x3fe64d17UL, 0x71c54c47UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1187
  0x3e5f5e8bUL, 0x00000000UL, 0x3fe64027UL, 0xbd4b7e83UL, 0x3e42ead6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1188
  0xa0000000UL, 0x3fe6333aUL, 0x61598bd2UL, 0xbe4c48d4UL, 0xc0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1189
  0x3fe62651UL, 0x6f538d61UL, 0x3e548401UL, 0xa0000000UL, 0x3fe6196cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1190
  0x14344120UL, 0xbe529af6UL, 0x00000000UL, 0x3fe60c8bUL, 0x5982c587UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1191
  0xbe3e1e4fUL, 0x00000000UL, 0x3fe5ffadUL, 0xfe51d4eaUL, 0xbe4c897aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1192
  0x80000000UL, 0x3fe5f2d2UL, 0xfd46ebe1UL, 0x3e552e00UL, 0xa0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1193
  0x3fe5e5fbUL, 0xa4695699UL, 0x3e5ed471UL, 0x60000000UL, 0x3fe5d928UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1194
  0x80d118aeUL, 0x3e456b61UL, 0xa0000000UL, 0x3fe5cc58UL, 0x304c330bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1195
  0x3e54dc29UL, 0x80000000UL, 0x3fe5bf8cUL, 0x0af2dedfUL, 0xbe3aa9bdUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1196
  0xe0000000UL, 0x3fe5b2c3UL, 0x15fc9258UL, 0xbe479a37UL, 0xc0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1197
  0x3fe5a5feUL, 0x9292c7eaUL, 0x3e188650UL, 0x20000000UL, 0x3fe5993dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1198
  0x33b4d380UL, 0x3e5d6d93UL, 0x20000000UL, 0x3fe58c7fUL, 0x02fd16c7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1199
  0x3e2fe961UL, 0xa0000000UL, 0x3fe57fc4UL, 0x4a05edb6UL, 0xbe4d55b4UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1200
  0xa0000000UL, 0x3fe5730dUL, 0x3d443abbUL, 0xbe5e6954UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1201
  0x3fe5665aUL, 0x024acfeaUL, 0x3e50e61bUL, 0x00000000UL, 0x3fe559aaUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1202
  0xcc9edd09UL, 0xbe325403UL, 0x60000000UL, 0x3fe54cfdUL, 0x1fe26950UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1203
  0x3e5d500eUL, 0x60000000UL, 0x3fe54054UL, 0x6c5ae164UL, 0xbe4a79b4UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1204
  0xc0000000UL, 0x3fe533aeUL, 0x154b0287UL, 0xbe401571UL, 0xa0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1205
  0x3fe5270cUL, 0x0673f401UL, 0xbe56e56bUL, 0xe0000000UL, 0x3fe51a6dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1206
  0x751b639cUL, 0x3e235269UL, 0xa0000000UL, 0x3fe50dd2UL, 0x7c7b2bedUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1207
  0x3ddec887UL, 0xc0000000UL, 0x3fe5013aUL, 0xafab4e17UL, 0x3e5e7575UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1208
  0x60000000UL, 0x3fe4f4a6UL, 0x2e308668UL, 0x3e59aed6UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1209
  0x3fe4e815UL, 0xf33e2a76UL, 0xbe51f184UL, 0xe0000000UL, 0x3fe4db87UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1210
  0x839f3e3eUL, 0x3e57db01UL, 0xc0000000UL, 0x3fe4cefdUL, 0xa9eda7bbUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1211
  0x3e535e0fUL, 0x00000000UL, 0x3fe4c277UL, 0x2a8f66a5UL, 0x3e5ce451UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1212
  0xc0000000UL, 0x3fe4b5f3UL, 0x05192456UL, 0xbe4e8518UL, 0xc0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1213
  0x3fe4a973UL, 0x4aa7cd1dUL, 0x3e46784aUL, 0x40000000UL, 0x3fe49cf7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1214
  0x8e23025eUL, 0xbe5749f2UL, 0x00000000UL, 0x3fe4907eUL, 0x18d30215UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1215
  0x3e360f39UL, 0x20000000UL, 0x3fe48408UL, 0x63dcf2f3UL, 0x3e5e00feUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1216
  0xc0000000UL, 0x3fe47795UL, 0x46182d09UL, 0xbe5173d9UL, 0xa0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1217
  0x3fe46b26UL, 0x8f0e62aaUL, 0xbe48f281UL, 0xe0000000UL, 0x3fe45ebaUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1218
  0x5775c40cUL, 0xbe56aad4UL, 0x60000000UL, 0x3fe45252UL, 0x0fe25f69UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1219
  0x3e48bd71UL, 0x40000000UL, 0x3fe445edUL, 0xe9989ec5UL, 0x3e590d97UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1220
  0x80000000UL, 0x3fe4398bUL, 0xb3d9ffe3UL, 0x3e479dbcUL, 0x20000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1221
  0x3fe42d2dUL, 0x388e4d2eUL, 0xbe5eed80UL, 0xe0000000UL, 0x3fe420d1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1222
  0x6f797c18UL, 0x3e554b4cUL, 0x20000000UL, 0x3fe4147aUL, 0x31048bb4UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1223
  0xbe5b1112UL, 0x80000000UL, 0x3fe40825UL, 0x2efba4f9UL, 0x3e48ebc7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1224
  0x40000000UL, 0x3fe3fbd4UL, 0x50201119UL, 0x3e40b701UL, 0x40000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1225
  0x3fe3ef86UL, 0x0a4db32cUL, 0x3e551de8UL, 0xa0000000UL, 0x3fe3e33bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1226
  0x0c9c148bUL, 0xbe50c1f6UL, 0x20000000UL, 0x3fe3d6f4UL, 0xc9129447UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1227
  0x3e533fa0UL, 0x00000000UL, 0x3fe3cab0UL, 0xaae5b5a0UL, 0xbe22b68eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1228
  0x20000000UL, 0x3fe3be6fUL, 0x02305e8aUL, 0xbe54fc08UL, 0x60000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1229
  0x3fe3b231UL, 0x7f908258UL, 0x3e57dc05UL, 0x00000000UL, 0x3fe3a5f7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1230
  0x1a09af78UL, 0x3e08038bUL, 0xe0000000UL, 0x3fe399bfUL, 0x490643c1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1231
  0xbe5dbe42UL, 0xe0000000UL, 0x3fe38d8bUL, 0x5e8ad724UL, 0xbe3c2b72UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1232
  0x20000000UL, 0x3fe3815bUL, 0xc67196b6UL, 0x3e1713cfUL, 0xa0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1233
  0x3fe3752dUL, 0x6182e429UL, 0xbe3ec14cUL, 0x40000000UL, 0x3fe36903UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1234
  0xab6eb1aeUL, 0x3e5a2cc5UL, 0x40000000UL, 0x3fe35cdcUL, 0xfe5dc064UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1235
  0xbe5c5878UL, 0x40000000UL, 0x3fe350b8UL, 0x0ba6b9e4UL, 0x3e51619bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1236
  0x80000000UL, 0x3fe34497UL, 0x857761aaUL, 0x3e5fff53UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1237
  0x3fe3387aUL, 0xf872d68cUL, 0x3e484f4dUL, 0xa0000000UL, 0x3fe32c5fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1238
  0x087e97c2UL, 0x3e52842eUL, 0x80000000UL, 0x3fe32048UL, 0x73d6d0c0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1239
  0xbe503edfUL, 0x80000000UL, 0x3fe31434UL, 0x0c1456a1UL, 0xbe5f72adUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1240
  0xa0000000UL, 0x3fe30823UL, 0x83a1a4d5UL, 0xbe5e65ccUL, 0xe0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1241
  0x3fe2fc15UL, 0x855a7390UL, 0xbe506438UL, 0x40000000UL, 0x3fe2f00bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1242
  0xa2898287UL, 0x3e3d22a2UL, 0xe0000000UL, 0x3fe2e403UL, 0x8b56f66fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1243
  0xbe5aa5fdUL, 0x80000000UL, 0x3fe2d7ffUL, 0x52db119aUL, 0x3e3a2e3dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1244
  0x60000000UL, 0x3fe2cbfeUL, 0xe2ddd4c0UL, 0xbe586469UL, 0x40000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1245
  0x3fe2c000UL, 0x6b01bf10UL, 0x3e352b9dUL, 0x40000000UL, 0x3fe2b405UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1246
  0xb07a1cdfUL, 0x3e5c5cdaUL, 0x80000000UL, 0x3fe2a80dUL, 0xc7b5f868UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1247
  0xbe5668b3UL, 0xc0000000UL, 0x3fe29c18UL, 0x185edf62UL, 0xbe563d66UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1248
  0x00000000UL, 0x3fe29027UL, 0xf729e1ccUL, 0x3e59a9a0UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1249
  0x3fe28438UL, 0x6433c727UL, 0xbe43cc89UL, 0x00000000UL, 0x3fe2784dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1250
  0x41782631UL, 0xbe30750cUL, 0xa0000000UL, 0x3fe26c64UL, 0x914911b7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1251
  0xbe58290eUL, 0x40000000UL, 0x3fe2607fUL, 0x3dcc73e1UL, 0xbe4269cdUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1252
  0x00000000UL, 0x3fe2549dUL, 0x2751bf70UL, 0xbe5a6998UL, 0xc0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1253
  0x3fe248bdUL, 0x4248b9fbUL, 0xbe4ddb00UL, 0x80000000UL, 0x3fe23ce1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1254
  0xf35cf82fUL, 0x3e561b71UL, 0x60000000UL, 0x3fe23108UL, 0x8e481a2dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1255
  0x3e518fb9UL, 0x60000000UL, 0x3fe22532UL, 0x5ab96edcUL, 0xbe5fafc5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1256
  0x40000000UL, 0x3fe2195fUL, 0x80943911UL, 0xbe07f819UL, 0x40000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1257
  0x3fe20d8fUL, 0x386f2d6cUL, 0xbe54ba8bUL, 0x40000000UL, 0x3fe201c2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1258
  0xf29664acUL, 0xbe5eb815UL, 0x20000000UL, 0x3fe1f5f8UL, 0x64f03390UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1259
  0x3e5e320cUL, 0x20000000UL, 0x3fe1ea31UL, 0x747ff696UL, 0x3e5ef0a5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1260
  0x40000000UL, 0x3fe1de6dUL, 0x3e9ceb51UL, 0xbe5f8d27UL, 0x20000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1261
  0x3fe1d2acUL, 0x4ae0b55eUL, 0x3e5faa21UL, 0x20000000UL, 0x3fe1c6eeUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1262
  0x28569a5eUL, 0x3e598a4fUL, 0x20000000UL, 0x3fe1bb33UL, 0x54b33e07UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1263
  0x3e46130aUL, 0x20000000UL, 0x3fe1af7bUL, 0x024f1078UL, 0xbe4dbf93UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1264
  0x00000000UL, 0x3fe1a3c6UL, 0xb0783bfaUL, 0x3e419248UL, 0xe0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1265
  0x3fe19813UL, 0x2f02b836UL, 0x3e4e02b7UL, 0xc0000000UL, 0x3fe18c64UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1266
  0x28dec9d4UL, 0x3e09064fUL, 0x80000000UL, 0x3fe180b8UL, 0x45cbf406UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1267
  0x3e5b1f46UL, 0x40000000UL, 0x3fe1750fUL, 0x03d9964cUL, 0x3e5b0a79UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1268
  0x00000000UL, 0x3fe16969UL, 0x8b5b882bUL, 0xbe238086UL, 0xa0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1269
  0x3fe15dc5UL, 0x73bad6f8UL, 0xbdf1fca4UL, 0x20000000UL, 0x3fe15225UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1270
  0x5385769cUL, 0x3e5e8d76UL, 0xa0000000UL, 0x3fe14687UL, 0x1676dc6bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1271
  0x3e571d08UL, 0x20000000UL, 0x3fe13aedUL, 0xa8c41c7fUL, 0xbe598a25UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1272
  0x60000000UL, 0x3fe12f55UL, 0xc4e1aaf0UL, 0x3e435277UL, 0xa0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1273
  0x3fe123c0UL, 0x403638e1UL, 0xbe21aa7cUL, 0xc0000000UL, 0x3fe1182eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1274
  0x557a092bUL, 0xbdd0116bUL, 0xc0000000UL, 0x3fe10c9fUL, 0x7d779f66UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1275
  0x3e4a61baUL, 0xc0000000UL, 0x3fe10113UL, 0x2b09c645UL, 0xbe5d586eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1276
  0x20000000UL, 0x3fe0ea04UL, 0xea2cad46UL, 0x3e5aa97cUL, 0x20000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1277
  0x3fe0d300UL, 0x23190e54UL, 0x3e50f1a7UL, 0xa0000000UL, 0x3fe0bc07UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1278
  0x1379a5a6UL, 0xbe51619dUL, 0x60000000UL, 0x3fe0a51aUL, 0x926a3d4aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1279
  0x3e5cf019UL, 0xa0000000UL, 0x3fe08e38UL, 0xa8c24358UL, 0x3e35241eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1280
  0x20000000UL, 0x3fe07762UL, 0x24317e7aUL, 0x3e512cfaUL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1281
  0x3fe06097UL, 0xfd9cf274UL, 0xbe55bef3UL, 0x00000000UL, 0x3fe049d7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1282
  0x3689b49dUL, 0xbe36d26dUL, 0x40000000UL, 0x3fe03322UL, 0xf72ef6c4UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1283
  0xbe54cd08UL, 0xa0000000UL, 0x3fe01c78UL, 0x23702d2dUL, 0xbe5900bfUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1284
  0x00000000UL, 0x3fe005daUL, 0x3f59c14cUL, 0x3e57d80bUL, 0x40000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1285
  0x3fdfde8dUL, 0xad67766dUL, 0xbe57fad4UL, 0x40000000UL, 0x3fdfb17cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1286
  0x644f4ae7UL, 0x3e1ee43bUL, 0x40000000UL, 0x3fdf8481UL, 0x903234d2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1287
  0x3e501a86UL, 0x40000000UL, 0x3fdf579cUL, 0xafe9e509UL, 0xbe267c3eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1288
  0x00000000UL, 0x3fdf2acdUL, 0xb7dfda0bUL, 0xbe48149bUL, 0x40000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1289
  0x3fdefe13UL, 0x3b94305eUL, 0x3e5f4ea7UL, 0x80000000UL, 0x3fded16fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1290
  0x5d95da61UL, 0xbe55c198UL, 0x00000000UL, 0x3fdea4e1UL, 0x406960c9UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1291
  0xbdd99a19UL, 0x00000000UL, 0x3fde7868UL, 0xd22f3539UL, 0x3e470c78UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1292
  0x80000000UL, 0x3fde4c04UL, 0x83eec535UL, 0xbe3e1232UL, 0x40000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1293
  0x3fde1fb6UL, 0x3dfbffcbUL, 0xbe4b7d71UL, 0x40000000UL, 0x3fddf37dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1294
  0x7e1be4e0UL, 0xbe5b8f8fUL, 0x40000000UL, 0x3fddc759UL, 0x46dae887UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1295
  0xbe350458UL, 0x80000000UL, 0x3fdd9b4aUL, 0xed6ecc49UL, 0xbe5f0045UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1296
  0x80000000UL, 0x3fdd6f50UL, 0x2e9e883cUL, 0x3e2915daUL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1297
  0x3fdd436bUL, 0xf0bccb32UL, 0x3e4a68c9UL, 0x80000000UL, 0x3fdd179bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1298
  0x9bbfc779UL, 0xbe54a26aUL, 0x00000000UL, 0x3fdcebe0UL, 0x7cea33abUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1299
  0x3e43c6b7UL, 0x40000000UL, 0x3fdcc039UL, 0xe740fd06UL, 0x3e5526c2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1300
  0x40000000UL, 0x3fdc94a7UL, 0x9eadeb1aUL, 0xbe396d8dUL, 0xc0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1301
  0x3fdc6929UL, 0xf0a8f95aUL, 0xbe5c0ab2UL, 0x80000000UL, 0x3fdc3dc0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1302
  0x6ee2693bUL, 0x3e0992e6UL, 0xc0000000UL, 0x3fdc126bUL, 0x5ac6b581UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1303
  0xbe2834b6UL, 0x40000000UL, 0x3fdbe72bUL, 0x8cc226ffUL, 0x3e3596a6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1304
  0x00000000UL, 0x3fdbbbffUL, 0xf92a74bbUL, 0x3e3c5813UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1305
  0x3fdb90e7UL, 0x479664c0UL, 0xbe50d644UL, 0x00000000UL, 0x3fdb65e3UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1306
  0x5004975bUL, 0xbe55258fUL, 0x00000000UL, 0x3fdb3af3UL, 0xe4b23194UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1307
  0xbe588407UL, 0xc0000000UL, 0x3fdb1016UL, 0xe65d4d0aUL, 0x3e527c26UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1308
  0x80000000UL, 0x3fdae54eUL, 0x814fddd6UL, 0x3e5962a2UL, 0x40000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1309
  0x3fdaba9aUL, 0xe19d0913UL, 0xbe562f4eUL, 0x80000000UL, 0x3fda8ff9UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1310
  0x43cfd006UL, 0xbe4cfdebUL, 0x40000000UL, 0x3fda656cUL, 0x686f0a4eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1311
  0x3e5e47a8UL, 0xc0000000UL, 0x3fda3af2UL, 0x7200d410UL, 0x3e5e1199UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1312
  0xc0000000UL, 0x3fda108cUL, 0xabd2266eUL, 0x3e5ee4d1UL, 0x40000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1313
  0x3fd9e63aUL, 0x396f8f2cUL, 0x3e4dbffbUL, 0x00000000UL, 0x3fd9bbfbUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1314
  0xe32b25ddUL, 0x3e5c3a54UL, 0x40000000UL, 0x3fd991cfUL, 0x431e4035UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1315
  0xbe457925UL, 0x80000000UL, 0x3fd967b6UL, 0x7bed3dd3UL, 0x3e40c61dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1316
  0x00000000UL, 0x3fd93db1UL, 0xd7449365UL, 0x3e306419UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1317
  0x3fd913beUL, 0x1746e791UL, 0x3e56fcfcUL, 0x40000000UL, 0x3fd8e9dfUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1318
  0xf3a9028bUL, 0xbe5041b9UL, 0xc0000000UL, 0x3fd8c012UL, 0x56840c50UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1319
  0xbe26e20aUL, 0x40000000UL, 0x3fd89659UL, 0x19763102UL, 0xbe51f466UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1320
  0x80000000UL, 0x3fd86cb2UL, 0x7032de7cUL, 0xbe4d298aUL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1321
  0x3fd8431eUL, 0xdeb39fabUL, 0xbe4361ebUL, 0x40000000UL, 0x3fd8199dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1322
  0x5d01cbe0UL, 0xbe5425b3UL, 0x80000000UL, 0x3fd7f02eUL, 0x3ce99aa9UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1323
  0x3e146fa8UL, 0x80000000UL, 0x3fd7c6d2UL, 0xd1a262b9UL, 0xbe5a1a69UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1324
  0xc0000000UL, 0x3fd79d88UL, 0x8606c236UL, 0x3e423a08UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1325
  0x3fd77451UL, 0x8fd1e1b7UL, 0x3e5a6a63UL, 0xc0000000UL, 0x3fd74b2cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1326
  0xe491456aUL, 0x3e42c1caUL, 0x40000000UL, 0x3fd7221aUL, 0x4499a6d7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1327
  0x3e36a69aUL, 0x00000000UL, 0x3fd6f91aUL, 0x5237df94UL, 0xbe0f8f02UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1328
  0x00000000UL, 0x3fd6d02cUL, 0xb6482c6eUL, 0xbe5abcf7UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1329
  0x3fd6a750UL, 0x1919fd61UL, 0xbe57ade2UL, 0x00000000UL, 0x3fd67e86UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1330
  0xaa7a994dUL, 0xbe3f3fbdUL, 0x00000000UL, 0x3fd655ceUL, 0x67db014cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1331
  0x3e33c550UL, 0x00000000UL, 0x3fd62d28UL, 0xa82856b7UL, 0xbe1409d1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1332
  0xc0000000UL, 0x3fd60493UL, 0x1e6a300dUL, 0x3e55d899UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1333
  0x3fd5dc11UL, 0x1222bd5cUL, 0xbe35bfc0UL, 0xc0000000UL, 0x3fd5b3a0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1334
  0x6e8dc2d3UL, 0x3e5d4d79UL, 0x00000000UL, 0x3fd58b42UL, 0xe0e4ace6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1335
  0xbe517303UL, 0x80000000UL, 0x3fd562f4UL, 0xb306e0a8UL, 0x3e5edf0fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1336
  0xc0000000UL, 0x3fd53ab8UL, 0x6574bc54UL, 0x3e5ee859UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1337
  0x3fd5128eUL, 0xea902207UL, 0x3e5f6188UL, 0xc0000000UL, 0x3fd4ea75UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1338
  0x9f911d79UL, 0x3e511735UL, 0x80000000UL, 0x3fd4c26eUL, 0xf9c77397UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1339
  0xbe5b1643UL, 0x40000000UL, 0x3fd49a78UL, 0x15fc9258UL, 0x3e479a37UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1340
  0x80000000UL, 0x3fd47293UL, 0xd5a04dd9UL, 0xbe426e56UL, 0xc0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1341
  0x3fd44abfUL, 0xe04042f5UL, 0x3e56f7c6UL, 0x40000000UL, 0x3fd422fdUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1342
  0x1d8bf2c8UL, 0x3e5d8810UL, 0x00000000UL, 0x3fd3fb4cUL, 0x88a8ddeeUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1343
  0xbe311454UL, 0xc0000000UL, 0x3fd3d3abUL, 0x3e3b5e47UL, 0xbe5d1b72UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1344
  0x40000000UL, 0x3fd3ac1cUL, 0xc2ab5d59UL, 0x3e31b02bUL, 0xc0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1345
  0x3fd3849dUL, 0xd4e34b9eUL, 0x3e51cb2fUL, 0x40000000UL, 0x3fd35d30UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1346
  0x177204fbUL, 0xbe2b8cd7UL, 0x80000000UL, 0x3fd335d3UL, 0xfcd38c82UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1347
  0xbe4356e1UL, 0x80000000UL, 0x3fd30e87UL, 0x64f54accUL, 0xbe4e6224UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1348
  0x00000000UL, 0x3fd2e74cUL, 0xaa7975d9UL, 0x3e5dc0feUL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1349
  0x3fd2c021UL, 0x516dab3fUL, 0xbe50ffa3UL, 0x40000000UL, 0x3fd29907UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1350
  0x2bfb7313UL, 0x3e5674a2UL, 0xc0000000UL, 0x3fd271fdUL, 0x0549fc99UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1351
  0x3e385d29UL, 0xc0000000UL, 0x3fd24b04UL, 0x55b63073UL, 0xbe500c6dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1352
  0x00000000UL, 0x3fd2241cUL, 0x3f91953aUL, 0x3e389977UL, 0xc0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1353
  0x3fd1fd43UL, 0xa1543f71UL, 0xbe3487abUL, 0xc0000000UL, 0x3fd1d67bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1354
  0x4ec8867cUL, 0x3df6a2dcUL, 0x00000000UL, 0x3fd1afc4UL, 0x4328e3bbUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1355
  0x3e41d9c0UL, 0x80000000UL, 0x3fd1891cUL, 0x2e1cda84UL, 0x3e3bdd87UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1356
  0x40000000UL, 0x3fd16285UL, 0x4b5331aeUL, 0xbe53128eUL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1357
  0x3fd13bfeUL, 0xb9aec164UL, 0xbe52ac98UL, 0xc0000000UL, 0x3fd11586UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1358
  0xd91e1316UL, 0xbe350630UL, 0x80000000UL, 0x3fd0ef1fUL, 0x7cacc12cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1359
  0x3e3f5219UL, 0x40000000UL, 0x3fd0c8c8UL, 0xbce277b7UL, 0x3e3d30c0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1360
  0x00000000UL, 0x3fd0a281UL, 0x2a63447dUL, 0xbe541377UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1361
  0x3fd07c49UL, 0xfac483b5UL, 0xbe5772ecUL, 0xc0000000UL, 0x3fd05621UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1362
  0x36b8a570UL, 0xbe4fd4bdUL, 0xc0000000UL, 0x3fd03009UL, 0xbae505f7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1363
  0xbe450388UL, 0x80000000UL, 0x3fd00a01UL, 0x3e35aeadUL, 0xbe5430fcUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1364
  0x80000000UL, 0x3fcfc811UL, 0x707475acUL, 0x3e38806eUL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1365
  0x3fcf7c3fUL, 0xc91817fcUL, 0xbe40cceaUL, 0x80000000UL, 0x3fcf308cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1366
  0xae05d5e9UL, 0xbe4919b8UL, 0x80000000UL, 0x3fcee4f8UL, 0xae6cc9e6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1367
  0xbe530b94UL, 0x00000000UL, 0x3fce9983UL, 0x1efe3e8eUL, 0x3e57747eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1368
  0x00000000UL, 0x3fce4e2dUL, 0xda78d9bfUL, 0xbe59a608UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1369
  0x3fce02f5UL, 0x8abe2c2eUL, 0x3e4a35adUL, 0x00000000UL, 0x3fcdb7dcUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1370
  0x1495450dUL, 0xbe0872ccUL, 0x80000000UL, 0x3fcd6ce1UL, 0x86ee0ba0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1371
  0xbe4f59a0UL, 0x00000000UL, 0x3fcd2205UL, 0xe81ca888UL, 0x3e5402c3UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1372
  0x00000000UL, 0x3fccd747UL, 0x3b4424b9UL, 0x3e5dfdc3UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1373
  0x3fcc8ca7UL, 0xd305b56cUL, 0x3e202da6UL, 0x00000000UL, 0x3fcc4226UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1374
  0x399a6910UL, 0xbe482a1cUL, 0x80000000UL, 0x3fcbf7c2UL, 0x747f7938UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1375
  0xbe587372UL, 0x80000000UL, 0x3fcbad7cUL, 0x6fc246a0UL, 0x3e50d83dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1376
  0x00000000UL, 0x3fcb6355UL, 0xee9e9be5UL, 0xbe5c35bdUL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1377
  0x3fcb194aUL, 0x8416c0bcUL, 0x3e546d4fUL, 0x00000000UL, 0x3fcacf5eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1378
  0x49f7f08fUL, 0x3e56da76UL, 0x00000000UL, 0x3fca858fUL, 0x5dc30de2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1379
  0x3e5f390cUL, 0x00000000UL, 0x3fca3bdeUL, 0x950583b6UL, 0xbe5e4169UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1380
  0x80000000UL, 0x3fc9f249UL, 0x33631553UL, 0x3e52aeb1UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1381
  0x3fc9a8d3UL, 0xde8795a6UL, 0xbe59a504UL, 0x00000000UL, 0x3fc95f79UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1382
  0x076bf41eUL, 0x3e5122feUL, 0x80000000UL, 0x3fc9163cUL, 0x2914c8e7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1383
  0x3e3dd064UL, 0x00000000UL, 0x3fc8cd1dUL, 0x3a30eca3UL, 0xbe21b4aaUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1384
  0x80000000UL, 0x3fc8841aUL, 0xb2a96650UL, 0xbe575444UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1385
  0x3fc83b34UL, 0x2376c0cbUL, 0xbe2a74c7UL, 0x80000000UL, 0x3fc7f26bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1386
  0xd8a0b653UL, 0xbe5181b6UL, 0x00000000UL, 0x3fc7a9bfUL, 0x32257882UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1387
  0xbe4a78b4UL, 0x00000000UL, 0x3fc7612fUL, 0x1eee8bd9UL, 0xbe1bfe9dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1388
  0x80000000UL, 0x3fc718bbUL, 0x0c603cc4UL, 0x3e36fdc9UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1389
  0x3fc6d064UL, 0x3728b8cfUL, 0xbe1e542eUL, 0x80000000UL, 0x3fc68829UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1390
  0xc79a4067UL, 0x3e5c380fUL, 0x00000000UL, 0x3fc6400bUL, 0xf69eac69UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1391
  0x3e550a84UL, 0x80000000UL, 0x3fc5f808UL, 0xb7a780a4UL, 0x3e5d9224UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1392
  0x80000000UL, 0x3fc5b022UL, 0xad9dfb1eUL, 0xbe55242fUL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1393
  0x3fc56858UL, 0x659b18beUL, 0xbe4bfda3UL, 0x80000000UL, 0x3fc520a9UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1394
  0x66ee3631UL, 0xbe57d769UL, 0x80000000UL, 0x3fc4d916UL, 0x1ec62819UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1395
  0x3e2427f7UL, 0x80000000UL, 0x3fc4919fUL, 0xdec25369UL, 0xbe435431UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1396
  0x00000000UL, 0x3fc44a44UL, 0xa8acfc4bUL, 0xbe3c62e8UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1397
  0x3fc40304UL, 0xcf1d3eabUL, 0xbdfba29fUL, 0x80000000UL, 0x3fc3bbdfUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1398
  0x79aba3eaUL, 0xbdf1b7c8UL, 0x80000000UL, 0x3fc374d6UL, 0xb8d186daUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1399
  0xbe5130cfUL, 0x80000000UL, 0x3fc32de8UL, 0x9d74f152UL, 0x3e2285b6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1400
  0x00000000UL, 0x3fc2e716UL, 0x50ae7ca9UL, 0xbe503920UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1401
  0x3fc2a05eUL, 0x6caed92eUL, 0xbe533924UL, 0x00000000UL, 0x3fc259c2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1402
  0x9cb5034eUL, 0xbe510e31UL, 0x80000000UL, 0x3fc21340UL, 0x12c4d378UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1403
  0xbe540b43UL, 0x80000000UL, 0x3fc1ccd9UL, 0xcc418706UL, 0x3e59887aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1404
  0x00000000UL, 0x3fc1868eUL, 0x921f4106UL, 0xbe528e67UL, 0x80000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1405
  0x3fc1405cUL, 0x3969441eUL, 0x3e5d8051UL, 0x00000000UL, 0x3fc0fa46UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1406
  0xd941ef5bUL, 0x3e5f9079UL, 0x80000000UL, 0x3fc0b44aUL, 0x5a3e81b2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1407
  0xbe567691UL, 0x00000000UL, 0x3fc06e69UL, 0x9d66afe7UL, 0xbe4d43fbUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1408
  0x00000000UL, 0x3fc028a2UL, 0x0a92a162UL, 0xbe52f394UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1409
  0x3fbfc5eaUL, 0x209897e5UL, 0x3e529e37UL, 0x00000000UL, 0x3fbf3ac5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1410
  0x8458bd7bUL, 0x3e582831UL, 0x00000000UL, 0x3fbeafd5UL, 0xb8d8b4b8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1411
  0xbe486b4aUL, 0x00000000UL, 0x3fbe2518UL, 0xe0a3b7b6UL, 0x3e5bafd2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1412
  0x00000000UL, 0x3fbd9a90UL, 0x2bf2710eUL, 0x3e383b2bUL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1413
  0x3fbd103cUL, 0x73eb6ab7UL, 0xbe56d78dUL, 0x00000000UL, 0x3fbc861bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1414
  0x32ceaff5UL, 0xbe32dc5aUL, 0x00000000UL, 0x3fbbfc2eUL, 0xbee04cb7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1415
  0xbe4a71a4UL, 0x00000000UL, 0x3fbb7274UL, 0x35ae9577UL, 0x3e38142fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1416
  0x00000000UL, 0x3fbae8eeUL, 0xcbaddab4UL, 0xbe5490f0UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1417
  0x3fba5f9aUL, 0x95ce1114UL, 0x3e597c71UL, 0x00000000UL, 0x3fb9d67aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1418
  0x6d7c0f78UL, 0x3e3abc2dUL, 0x00000000UL, 0x3fb94d8dUL, 0x2841a782UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1419
  0xbe566cbcUL, 0x00000000UL, 0x3fb8c4d2UL, 0x6ed429c6UL, 0xbe3cfff9UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1420
  0x00000000UL, 0x3fb83c4aUL, 0xe4a49fbbUL, 0xbe552964UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1421
  0x3fb7b3f4UL, 0x2193d81eUL, 0xbe42fa72UL, 0x00000000UL, 0x3fb72bd0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1422
  0xdd70c122UL, 0x3e527a8cUL, 0x00000000UL, 0x3fb6a3dfUL, 0x03108a54UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1423
  0xbe450393UL, 0x00000000UL, 0x3fb61c1fUL, 0x30ff7954UL, 0x3e565840UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1424
  0x00000000UL, 0x3fb59492UL, 0xdedd460cUL, 0xbe5422b5UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1425
  0x3fb50d36UL, 0x950f9f45UL, 0xbe5313f6UL, 0x00000000UL, 0x3fb4860bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1426
  0x582cdcb1UL, 0x3e506d39UL, 0x00000000UL, 0x3fb3ff12UL, 0x7216d3a6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1427
  0x3e4aa719UL, 0x00000000UL, 0x3fb3784aUL, 0x57a423fdUL, 0x3e5a9b9fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1428
  0x00000000UL, 0x3fb2f1b4UL, 0x7a138b41UL, 0xbe50b418UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1429
  0x3fb26b4eUL, 0x2fbfd7eaUL, 0x3e23a53eUL, 0x00000000UL, 0x3fb1e519UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1430
  0x18913ccbUL, 0x3e465fc1UL, 0x00000000UL, 0x3fb15f15UL, 0x7ea24e21UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1431
  0x3e042843UL, 0x00000000UL, 0x3fb0d941UL, 0x7c6d9c77UL, 0x3e59f61eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1432
  0x00000000UL, 0x3fb0539eUL, 0x114efd44UL, 0x3e4ccab7UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1433
  0x3faf9c56UL, 0x1777f657UL, 0x3e552f65UL, 0x00000000UL, 0x3fae91d2UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1434
  0xc317b86aUL, 0xbe5a61e0UL, 0x00000000UL, 0x3fad87acUL, 0xb7664efbUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1435
  0xbe41f64eUL, 0x00000000UL, 0x3fac7de6UL, 0x5d3d03a9UL, 0x3e0807a0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1436
  0x00000000UL, 0x3fab7480UL, 0x743c38ebUL, 0xbe3726e1UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1437
  0x3faa6b78UL, 0x06a253f1UL, 0x3e5ad636UL, 0x00000000UL, 0x3fa962d0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1438
  0xa35f541bUL, 0x3e5a187aUL, 0x00000000UL, 0x3fa85a88UL, 0x4b86e446UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1439
  0xbe508150UL, 0x00000000UL, 0x3fa7529cUL, 0x2589cacfUL, 0x3e52938aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1440
  0x00000000UL, 0x3fa64b10UL, 0xaf6b11f2UL, 0xbe3454cdUL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1441
  0x3fa543e2UL, 0x97506fefUL, 0xbe5fdec5UL, 0x00000000UL, 0x3fa43d10UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1442
  0xe75f7dd9UL, 0xbe388dd3UL, 0x00000000UL, 0x3fa3369cUL, 0xa4139632UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1443
  0xbdea5177UL, 0x00000000UL, 0x3fa23086UL, 0x352d6f1eUL, 0xbe565ad6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1444
  0x00000000UL, 0x3fa12accUL, 0x77449eb7UL, 0xbe50d5c7UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1445
  0x3fa0256eUL, 0x7478da78UL, 0x3e404724UL, 0x00000000UL, 0x3f9e40dcUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1446
  0xf59cef7fUL, 0xbe539d0aUL, 0x00000000UL, 0x3f9c3790UL, 0x1511d43cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1447
  0x3e53c2c8UL, 0x00000000UL, 0x3f9a2f00UL, 0x9b8bff3cUL, 0xbe43b3e1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1448
  0x00000000UL, 0x3f982724UL, 0xad1e22a5UL, 0x3e46f0bdUL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1449
  0x3f962000UL, 0x130d9356UL, 0x3e475ba0UL, 0x00000000UL, 0x3f941994UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1450
  0x8f86f883UL, 0xbe513d0bUL, 0x00000000UL, 0x3f9213dcUL, 0x914d0dc8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1451
  0xbe534335UL, 0x00000000UL, 0x3f900ed8UL, 0x2d73e5e7UL, 0xbe22ba75UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1452
  0x00000000UL, 0x3f8c1510UL, 0xc5b7d70eUL, 0x3e599c5dUL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1453
  0x3f880de0UL, 0x8a27857eUL, 0xbe3d28c8UL, 0x00000000UL, 0x3f840810UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1454
  0xda767328UL, 0x3e531b3dUL, 0x00000000UL, 0x3f8003b0UL, 0x77bacaf3UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1455
  0xbe5f04e3UL, 0x00000000UL, 0x3f780150UL, 0xdf4b0720UL, 0x3e5a8bffUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1456
  0x00000000UL, 0x3f6ffc40UL, 0x34c48e71UL, 0xbe3fcd99UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1457
  0x3f5ff6c0UL, 0x1ad218afUL, 0xbe4c78a7UL, 0x00000000UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1458
  0x00000000UL, 0x80000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1459
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1460
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1461
ALIGNED_(8) juint _log2_pow[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1462
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1463
  0xfefa39efUL, 0x3fe62e42UL, 0xfefa39efUL, 0xbfe62e42UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1464
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1465
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1466
//registers,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1467
// input: xmm0, xmm1
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1468
// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1469
//          rax, rdx, rcx, r8, r11
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1470
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1471
// Code generated by Intel C compiler for LIBM library
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1472
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1473
void MacroAssembler::fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp1, Register tmp2, Register tmp3, Register tmp4) {
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1474
  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;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1475
  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;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1476
  Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1477
  Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, L_2TAG_PACKET_14_0_2, L_2TAG_PACKET_15_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1478
  Label L_2TAG_PACKET_16_0_2, L_2TAG_PACKET_17_0_2, L_2TAG_PACKET_18_0_2, L_2TAG_PACKET_19_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1479
  Label L_2TAG_PACKET_20_0_2, L_2TAG_PACKET_21_0_2, L_2TAG_PACKET_22_0_2, L_2TAG_PACKET_23_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1480
  Label L_2TAG_PACKET_24_0_2, L_2TAG_PACKET_25_0_2, L_2TAG_PACKET_26_0_2, L_2TAG_PACKET_27_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1481
  Label L_2TAG_PACKET_28_0_2, L_2TAG_PACKET_29_0_2, L_2TAG_PACKET_30_0_2, L_2TAG_PACKET_31_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1482
  Label L_2TAG_PACKET_32_0_2, L_2TAG_PACKET_33_0_2, L_2TAG_PACKET_34_0_2, L_2TAG_PACKET_35_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1483
  Label L_2TAG_PACKET_36_0_2, L_2TAG_PACKET_37_0_2, L_2TAG_PACKET_38_0_2, L_2TAG_PACKET_39_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1484
  Label L_2TAG_PACKET_40_0_2, L_2TAG_PACKET_41_0_2, L_2TAG_PACKET_42_0_2, L_2TAG_PACKET_43_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1485
  Label L_2TAG_PACKET_44_0_2, L_2TAG_PACKET_45_0_2, L_2TAG_PACKET_46_0_2, L_2TAG_PACKET_47_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1486
  Label L_2TAG_PACKET_48_0_2, L_2TAG_PACKET_49_0_2, L_2TAG_PACKET_50_0_2, L_2TAG_PACKET_51_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1487
  Label L_2TAG_PACKET_52_0_2, L_2TAG_PACKET_53_0_2, L_2TAG_PACKET_54_0_2, L_2TAG_PACKET_55_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1488
  Label L_2TAG_PACKET_56_0_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1489
  Label B1_2, B1_3, B1_5, start;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1490
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1491
  assert_different_registers(tmp1, tmp2, eax, ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1492
  jmp(start);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1493
  address HIGHSIGMASK = (address)_HIGHSIGMASK;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1494
  address LOG2_E = (address)_LOG2_E;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1495
  address coeff = (address)_coeff_pow;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1496
  address L_tbl = (address)_L_tbl_pow;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1497
  address HIGHMASK_Y = (address)_HIGHMASK_Y;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1498
  address T_exp = (address)_T_exp;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1499
  address e_coeff = (address)_e_coeff;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1500
  address coeff_h = (address)_coeff_h;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1501
  address HIGHMASK_LOG_X = (address)_HIGHMASK_LOG_X;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1502
  address HALFMASK = (address)_HALFMASK;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1503
  address log2 = (address)_log2_pow;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1504
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1505
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1506
  bind(start);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1507
  subq(rsp, 40);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1508
  movsd(Address(rsp, 8), xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1509
  movsd(Address(rsp, 16), xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1510
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1511
  bind(B1_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1512
  pextrw(eax, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1513
  xorpd(xmm2, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1514
  mov64(tmp2, 0x3ff0000000000000);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1515
  movdq(xmm2, tmp2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1516
  movl(tmp1, 1069088768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1517
  movdq(xmm7, tmp1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1518
  xorpd(xmm1, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1519
  mov64(tmp3, 0x77f0000000000000);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1520
  movdq(xmm1, tmp3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1521
  movdqu(xmm3, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1522
  movl(edx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1523
  andl(edx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1524
  subl(edx, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1525
  movl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1526
  sarl(edx, 31);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1527
  addl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1528
  xorl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1529
  por(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1530
  movdqu(xmm6, ExternalAddress(HIGHSIGMASK));    //0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1531
  psrlq(xmm0, 27);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1532
  movq(xmm2, ExternalAddress(LOG2_E));    //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1533
  psrld(xmm0, 2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1534
  addl(ecx, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1535
  bsrl(ecx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1536
  rcpps(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1537
  psllq(xmm3, 12);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1538
  movl(tmp4, 8192);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1539
  movdq(xmm4, tmp4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1540
  psrlq(xmm3, 12);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1541
  subl(eax, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1542
  cmpl(eax, 32736);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1543
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1544
  movl(tmp1, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1545
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1546
  bind(L_2TAG_PACKET_1_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1547
  mulss(xmm0, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1548
  movl(edx, -1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1549
  subl(ecx, 4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1550
  shll(edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1551
  shlq(edx, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1552
  movdq(xmm5, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1553
  por(xmm3, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1554
  subl(eax, 16351);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1555
  cmpl(eax, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1556
  jcc(Assembler::belowEqual, L_2TAG_PACKET_2_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1557
  paddd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1558
  pand(xmm5, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1559
  movdl(edx, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1560
  psllq(xmm0, 29);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1561
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1562
  bind(L_2TAG_PACKET_3_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1563
  subsd(xmm3, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1564
  pand(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1565
  subl(eax, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1566
  sarl(eax, 4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1567
  cvtsi2sdl(xmm7, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1568
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1569
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1570
  bind(L_2TAG_PACKET_4_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1571
  mulsd(xmm3, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1572
  movdqu(xmm1, ExternalAddress(coeff));    //0x6dc96112UL, 0xbf836578UL, 0xee241472UL, 0xbf9b0301UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1573
  lea(tmp4, ExternalAddress(L_tbl));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1574
  subsd(xmm5, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1575
  movdqu(xmm4, ExternalAddress(16 + coeff));    //0x9f95985aUL, 0xbfb528dbUL, 0xb3841d2aUL, 0xbfd619b6UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1576
  movl(ecx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1577
  sarl(eax, 31);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1578
  addl(ecx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1579
  xorl(eax, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1580
  addl(eax, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1581
  bsrl(eax, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1582
  unpcklpd(xmm5, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1583
  movdqu(xmm6, ExternalAddress(32 + coeff));    //0x518775e3UL, 0x3f9004f2UL, 0xac8349bbUL, 0x3fa76c9bUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1584
  addsd(xmm3, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1585
  andl(edx, 16760832);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1586
  shrl(edx, 10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1587
  addpd(xmm5, Address(tmp4, edx, Address::times_1, -3648));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1588
  movdqu(xmm0, ExternalAddress(48 + coeff));    //0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL, 0xbf5dabe1UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1589
  pshufd(xmm2, xmm3, 68);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1590
  mulsd(xmm3, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1591
  mulpd(xmm1, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1592
  mulpd(xmm4, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1593
  addsd(xmm5, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1594
  mulsd(xmm2, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1595
  addpd(xmm6, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1596
  mulsd(xmm3, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1597
  addpd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1598
  movq(xmm1, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1599
  movw(ecx, Address(rsp, 22));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1600
  pshufd(xmm7, xmm5, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1601
  movq(xmm4, ExternalAddress(HIGHMASK_Y));    //0x00000000UL, 0xfffffff8UL, 0x00000000UL, 0xffffffffUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1602
  mulpd(xmm6, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1603
  pshufd(xmm3, xmm3, 68);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1604
  mulpd(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1605
  shll(eax, 4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1606
  subl(eax, 15872);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1607
  andl(ecx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1608
  addl(eax, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1609
  mulpd(xmm3, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1610
  cmpl(eax, 624);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1611
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_5_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1612
  xorpd(xmm6, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1613
  movl(edx, 17080);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1614
  pinsrw(xmm6, edx, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1615
  movdqu(xmm2, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1616
  pand(xmm4, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1617
  subsd(xmm1, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1618
  mulsd(xmm4, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1619
  addsd(xmm0, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1620
  mulsd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1621
  movdqu(xmm7, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1622
  addsd(xmm6, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1623
  lea(tmp4, ExternalAddress(T_exp));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1624
  addpd(xmm3, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1625
  movdl(edx, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1626
  subsd(xmm6, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1627
  pshufd(xmm0, xmm3, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1628
  subsd(xmm4, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1629
  addsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1630
  movl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1631
  andl(edx, 255);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1632
  addl(edx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1633
  movdqu(xmm5, Address(tmp4, edx, Address::times_8, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1634
  addsd(xmm4, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1635
  mulsd(xmm2, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1636
  movdqu(xmm7, ExternalAddress(e_coeff));    //0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1637
  movdqu(xmm3, ExternalAddress(16 + e_coeff));    //0x6fba4e77UL, 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1638
  shll(ecx, 12);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1639
  xorl(ecx, tmp1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1640
  andl(rcx, -1048576);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1641
  movdq(xmm6, rcx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1642
  addsd(xmm2, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1643
  mov64(tmp2, 0x3fe62e42fefa39ef);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1644
  movdq(xmm1, tmp2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1645
  pshufd(xmm0, xmm2, 68);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1646
  pshufd(xmm4, xmm2, 68);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1647
  mulsd(xmm1, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1648
  pshufd(xmm6, xmm6, 17);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1649
  mulpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1650
  mulpd(xmm7, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1651
  paddd(xmm5, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1652
  mulsd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1653
  pshufd(xmm6, xmm5, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1654
  mulsd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1655
  addpd(xmm3, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1656
  addsd(xmm1, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1657
  mulpd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1658
  pshufd(xmm3, xmm0, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1659
  mulsd(xmm0, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1660
  mulsd(xmm3, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1661
  addsd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1662
  addsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1663
  addsd(xmm0, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1664
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1665
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1666
  bind(L_2TAG_PACKET_0_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1667
  addl(eax, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1668
  movl(edx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1669
  andl(edx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1670
  cmpl(edx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1671
  jcc(Assembler::equal, L_2TAG_PACKET_6_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1672
  testl(eax, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1673
  jcc(Assembler::notEqual, L_2TAG_PACKET_7_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1674
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1675
  bind(L_2TAG_PACKET_8_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1676
  movq(xmm0, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1677
  movq(xmm3, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1678
  movdl(edx, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1679
  psrlq(xmm3, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1680
  movdl(ecx, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1681
  orl(edx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1682
  cmpl(edx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1683
  jcc(Assembler::equal, L_2TAG_PACKET_9_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1684
  xorpd(xmm3, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1685
  movl(eax, 18416);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1686
  pinsrw(xmm3, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1687
  mulsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1688
  xorpd(xmm2, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1689
  movl(eax, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1690
  pinsrw(xmm2, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1691
  movdqu(xmm3, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1692
  pextrw(eax, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1693
  por(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1694
  movl(ecx, 18416);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1695
  psrlq(xmm0, 27);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1696
  movq(xmm2, ExternalAddress(LOG2_E));    //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1697
  psrld(xmm0, 2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1698
  rcpps(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1699
  psllq(xmm3, 12);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1700
  movdqu(xmm6, ExternalAddress(HIGHSIGMASK));    //0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1701
  psrlq(xmm3, 12);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1702
  mulss(xmm0, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1703
  movl(edx, -1024);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1704
  movdl(xmm5, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1705
  por(xmm3, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1706
  paddd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1707
  psllq(xmm5, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1708
  movdl(edx, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1709
  psllq(xmm0, 29);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1710
  pand(xmm5, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1711
  movl(tmp1, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1712
  pand(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1713
  subsd(xmm3, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1714
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1715
  subl(eax, 18416);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1716
  sarl(eax, 4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1717
  cvtsi2sdl(xmm7, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1718
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1719
  jmp(L_2TAG_PACKET_4_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1720
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1721
  bind(L_2TAG_PACKET_10_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1722
  movq(xmm0, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1723
  movq(xmm3, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1724
  movdl(edx, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1725
  psrlq(xmm3, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1726
  movdl(ecx, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1727
  orl(edx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1728
  cmpl(edx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1729
  jcc(Assembler::equal, L_2TAG_PACKET_9_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1730
  xorpd(xmm3, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1731
  movl(eax, 18416);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1732
  pinsrw(xmm3, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1733
  mulsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1734
  xorpd(xmm2, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1735
  movl(eax, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1736
  pinsrw(xmm2, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1737
  movdqu(xmm3, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1738
  pextrw(eax, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1739
  por(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1740
  movl(ecx, 18416);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1741
  psrlq(xmm0, 27);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1742
  movq(xmm2, ExternalAddress(LOG2_E));    //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1743
  psrld(xmm0, 2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1744
  rcpps(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1745
  psllq(xmm3, 12);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1746
  movdqu(xmm6, ExternalAddress(HIGHSIGMASK));    //0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1747
  psrlq(xmm3, 12);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1748
  mulss(xmm0, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1749
  movl(edx, -1024);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1750
  movdl(xmm5, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1751
  por(xmm3, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1752
  paddd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1753
  psllq(xmm5, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1754
  movdl(edx, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1755
  psllq(xmm0, 29);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1756
  pand(xmm5, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1757
  movl(tmp1, INT_MIN);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1758
  pand(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1759
  subsd(xmm3, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1760
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1761
  subl(eax, 18416);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1762
  sarl(eax, 4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1763
  cvtsi2sdl(xmm7, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1764
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1765
  jmp(L_2TAG_PACKET_4_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1766
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1767
  bind(L_2TAG_PACKET_5_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1768
  cmpl(eax, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1769
  jcc(Assembler::less, L_2TAG_PACKET_11_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1770
  cmpl(eax, 752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1771
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_12_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1772
  addsd(xmm0, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1773
  movq(xmm2, ExternalAddress(HALFMASK));    //0xf8000000UL, 0xffffffffUL, 0xf8000000UL, 0xffffffffUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1774
  addpd(xmm3, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1775
  xorpd(xmm6, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1776
  movl(eax, 17080);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1777
  pinsrw(xmm6, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1778
  pshufd(xmm0, xmm3, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1779
  addsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1780
  movdqu(xmm3, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1781
  addsd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1782
  movdqu(xmm4, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1783
  subsd(xmm3, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1784
  movdqu(xmm7, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1785
  pand(xmm5, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1786
  movdqu(xmm2, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1787
  pand(xmm4, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1788
  subsd(xmm7, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1789
  addsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1790
  subsd(xmm1, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1791
  mulsd(xmm4, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1792
  addsd(xmm0, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1793
  mulsd(xmm2, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1794
  movdqu(xmm7, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1795
  mulsd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1796
  addsd(xmm6, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1797
  movdl(eax, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1798
  subsd(xmm6, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1799
  lea(tmp4, ExternalAddress(T_exp));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1800
  addsd(xmm2, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1801
  movdqu(xmm7, ExternalAddress(e_coeff));    //0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1802
  movdqu(xmm3, ExternalAddress(16 + e_coeff));    //0x6fba4e77UL, 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1803
  subsd(xmm4, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1804
  pextrw(edx, xmm6, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1805
  movl(ecx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1806
  andl(eax, 255);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1807
  addl(eax, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1808
  movdqu(xmm5, Address(tmp4, rax, Address::times_8, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1809
  addsd(xmm2, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1810
  sarl(ecx, 8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1811
  movl(eax, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1812
  sarl(ecx, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1813
  subl(eax, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1814
  shll(ecx, 20);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1815
  xorl(ecx, tmp1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1816
  movdl(xmm6, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1817
  movq(xmm1, ExternalAddress(32 + e_coeff));    //0xfefa39efUL, 0x3fe62e42UL, 0x00000000UL, 0x00000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1818
  andl(edx, 32767);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1819
  cmpl(edx, 16529);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1820
  jcc(Assembler::above, L_2TAG_PACKET_12_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1821
  pshufd(xmm0, xmm2, 68);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1822
  pshufd(xmm4, xmm2, 68);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1823
  mulpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1824
  mulpd(xmm7, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1825
  pshufd(xmm6, xmm6, 17);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1826
  mulsd(xmm1, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1827
  mulsd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1828
  paddd(xmm5, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1829
  addpd(xmm3, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1830
  mulsd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1831
  pshufd(xmm6, xmm5, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1832
  mulpd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1833
  addsd(xmm1, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1834
  pshufd(xmm3, xmm0, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1835
  mulsd(xmm0, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1836
  mulsd(xmm3, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1837
  shll(eax, 4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1838
  xorpd(xmm4, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1839
  addl(eax, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1840
  pinsrw(xmm4, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1841
  addsd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1842
  addsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1843
  movdqu(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1844
  addsd(xmm0, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1845
  mulsd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1846
  pextrw(eax, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1847
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1848
  jcc(Assembler::equal, L_2TAG_PACKET_13_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1849
  cmpl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1850
  jcc(Assembler::equal, L_2TAG_PACKET_14_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1851
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1852
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1853
  bind(L_2TAG_PACKET_6_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1854
  movq(xmm1, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1855
  movq(xmm0, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1856
  movdqu(xmm2, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1857
  movdl(eax, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1858
  psrlq(xmm2, 20);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1859
  movdl(edx, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1860
  orl(eax, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1861
  jcc(Assembler::equal, L_2TAG_PACKET_15_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1862
  movdl(eax, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1863
  psrlq(xmm1, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1864
  movdl(edx, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1865
  movl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1866
  addl(edx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1867
  orl(eax, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1868
  jcc(Assembler::equal, L_2TAG_PACKET_16_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1869
  addsd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1870
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1871
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1872
  bind(L_2TAG_PACKET_16_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1873
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1874
  movl(eax, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1875
  pinsrw(xmm0, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1876
  movl(Address(rsp, 0), 29);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1877
  jmp(L_2TAG_PACKET_17_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1878
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1879
  bind(L_2TAG_PACKET_18_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1880
  movq(xmm0, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1881
  addpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1882
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1883
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1884
  bind(L_2TAG_PACKET_15_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1885
  movdl(eax, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1886
  movdqu(xmm2, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1887
  psrlq(xmm1, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1888
  movdl(edx, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1889
  movl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1890
  addl(edx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1891
  orl(eax, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1892
  jcc(Assembler::equal, L_2TAG_PACKET_19_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1893
  pextrw(eax, xmm2, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1894
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1895
  cmpl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1896
  jcc(Assembler::notEqual, L_2TAG_PACKET_20_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1897
  movdl(eax, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1898
  psrlq(xmm2, 20);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1899
  movdl(edx, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1900
  orl(eax, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1901
  jcc(Assembler::notEqual, L_2TAG_PACKET_18_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1902
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1903
  bind(L_2TAG_PACKET_20_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1904
  pextrw(eax, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1905
  testl(eax, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1906
  jcc(Assembler::notEqual, L_2TAG_PACKET_21_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1907
  testl(ecx, INT_MIN);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1908
  jcc(Assembler::notEqual, L_2TAG_PACKET_22_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1909
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1910
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1911
  bind(L_2TAG_PACKET_23_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1912
  movq(xmm1, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1913
  movdl(eax, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1914
  testl(eax, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1915
  jcc(Assembler::notEqual, L_2TAG_PACKET_24_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1916
  testl(eax, 2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1917
  jcc(Assembler::notEqual, L_2TAG_PACKET_25_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1918
  jmp(L_2TAG_PACKET_24_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1919
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1920
  bind(L_2TAG_PACKET_21_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1921
  shrl(ecx, 20);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1922
  andl(ecx, 2047);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1923
  cmpl(ecx, 1075);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1924
  jcc(Assembler::above, L_2TAG_PACKET_24_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1925
  jcc(Assembler::equal, L_2TAG_PACKET_26_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1926
  cmpl(ecx, 1074);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1927
  jcc(Assembler::above, L_2TAG_PACKET_23_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1928
  cmpl(ecx, 1023);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1929
  jcc(Assembler::below, L_2TAG_PACKET_24_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1930
  movq(xmm1, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1931
  movl(eax, 17208);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1932
  xorpd(xmm3, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1933
  pinsrw(xmm3, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1934
  movdqu(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1935
  addsd(xmm3, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1936
  subsd(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1937
  addsd(xmm1, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1938
  pextrw(eax, xmm1, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1939
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1940
  jcc(Assembler::notEqual, L_2TAG_PACKET_24_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1941
  movdl(eax, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1942
  andl(eax, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1943
  jcc(Assembler::equal, L_2TAG_PACKET_24_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1944
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1945
  bind(L_2TAG_PACKET_25_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1946
  movq(xmm1, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1947
  pextrw(eax, xmm1, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1948
  andl(eax, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1949
  jcc(Assembler::notEqual, L_2TAG_PACKET_27_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1950
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1951
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1952
  bind(L_2TAG_PACKET_27_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1953
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1954
  movl(eax, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1955
  pinsrw(xmm0, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1956
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1957
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1958
  bind(L_2TAG_PACKET_24_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1959
  movq(xmm1, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1960
  pextrw(eax, xmm1, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1961
  andl(eax, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1962
  jcc(Assembler::notEqual, L_2TAG_PACKET_22_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1963
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1964
  movl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1965
  pinsrw(xmm0, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1966
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1967
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1968
  bind(L_2TAG_PACKET_26_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1969
  movq(xmm1, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1970
  movdl(eax, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1971
  andl(eax, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1972
  jcc(Assembler::equal, L_2TAG_PACKET_24_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1973
  jmp(L_2TAG_PACKET_25_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1974
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1975
  bind(L_2TAG_PACKET_28_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1976
  movdl(eax, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1977
  psrlq(xmm1, 20);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1978
  movdl(edx, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1979
  orl(eax, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1980
  jcc(Assembler::equal, L_2TAG_PACKET_29_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1981
  movq(xmm0, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1982
  addsd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1983
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1984
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1985
  bind(L_2TAG_PACKET_29_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1986
  movq(xmm0, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1987
  pextrw(eax, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1988
  cmpl(eax, 49136);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1989
  jcc(Assembler::notEqual, L_2TAG_PACKET_30_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1990
  movdl(ecx, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1991
  psrlq(xmm0, 20);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1992
  movdl(edx, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1993
  orl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1994
  jcc(Assembler::notEqual, L_2TAG_PACKET_30_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1995
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1996
  movl(eax, 32760);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1997
  pinsrw(xmm0, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1998
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  1999
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2000
  bind(L_2TAG_PACKET_30_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2001
  movq(xmm1, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2002
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2003
  subl(eax, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2004
  pextrw(edx, xmm1, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2005
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2006
  xorl(eax, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2007
  andl(eax, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2008
  jcc(Assembler::equal, L_2TAG_PACKET_31_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2009
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2010
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2011
  bind(L_2TAG_PACKET_31_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2012
  movl(ecx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2013
  pinsrw(xmm0, ecx, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2014
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2015
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2016
  bind(L_2TAG_PACKET_32_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2017
  movdl(eax, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2018
  cmpl(edx, 17184);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2019
  jcc(Assembler::above, L_2TAG_PACKET_33_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2020
  testl(eax, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2021
  jcc(Assembler::notEqual, L_2TAG_PACKET_34_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2022
  testl(eax, 2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2023
  jcc(Assembler::equal, L_2TAG_PACKET_35_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2024
  jmp(L_2TAG_PACKET_36_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2025
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2026
  bind(L_2TAG_PACKET_33_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2027
  testl(eax, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2028
  jcc(Assembler::equal, L_2TAG_PACKET_35_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2029
  jmp(L_2TAG_PACKET_36_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2030
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2031
  bind(L_2TAG_PACKET_7_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2032
  movq(xmm2, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2033
  movdl(eax, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2034
  psrlq(xmm2, 31);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2035
  movdl(ecx, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2036
  orl(eax, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2037
  jcc(Assembler::equal, L_2TAG_PACKET_9_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2038
  movq(xmm1, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2039
  pextrw(edx, xmm1, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2040
  movdl(eax, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2041
  movdqu(xmm2, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2042
  psrlq(xmm2, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2043
  movdl(ecx, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2044
  addl(ecx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2045
  orl(ecx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2046
  jcc(Assembler::equal, L_2TAG_PACKET_37_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2047
  andl(edx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2048
  cmpl(edx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2049
  jcc(Assembler::equal, L_2TAG_PACKET_28_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2050
  cmpl(edx, 17200);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2051
  jcc(Assembler::above, L_2TAG_PACKET_35_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2052
  cmpl(edx, 17184);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2053
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_32_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2054
  cmpl(edx, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2055
  jcc(Assembler::below, L_2TAG_PACKET_34_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2056
  movl(eax, 17208);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2057
  xorpd(xmm2, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2058
  pinsrw(xmm2, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2059
  movdqu(xmm4, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2060
  addsd(xmm2, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2061
  subsd(xmm4, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2062
  addsd(xmm1, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2063
  pextrw(eax, xmm1, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2064
  andl(eax, 32767);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2065
  jcc(Assembler::notEqual, L_2TAG_PACKET_34_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2066
  movdl(eax, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2067
  andl(eax, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2068
  jcc(Assembler::equal, L_2TAG_PACKET_35_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2069
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2070
  bind(L_2TAG_PACKET_36_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2071
  xorpd(xmm1, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2072
  movl(edx, 30704);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2073
  pinsrw(xmm1, edx, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2074
  movq(xmm2, ExternalAddress(LOG2_E));    //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2075
  movq(xmm4, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2076
  pextrw(eax, xmm4, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2077
  movl(edx, 8192);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2078
  movdl(xmm4, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2079
  andl(eax, 32767);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2080
  subl(eax, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2081
  jcc(Assembler::less, L_2TAG_PACKET_10_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2082
  movl(edx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2083
  andl(edx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2084
  subl(edx, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2085
  movl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2086
  sarl(edx, 31);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2087
  addl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2088
  xorl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2089
  addl(ecx, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2090
  bsrl(ecx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2091
  movl(tmp1, INT_MIN);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2092
  jmp(L_2TAG_PACKET_1_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2093
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2094
  bind(L_2TAG_PACKET_34_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2095
  xorpd(xmm1, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2096
  movl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2097
  pinsrw(xmm1, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2098
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2099
  mulsd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2100
  movl(Address(rsp, 0), 28);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2101
  jmp(L_2TAG_PACKET_17_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2102
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2103
  bind(L_2TAG_PACKET_35_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2104
  xorpd(xmm1, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2105
  movl(edx, 30704);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2106
  pinsrw(xmm1, edx, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2107
  movq(xmm2, ExternalAddress(LOG2_E));    //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2108
  movq(xmm4, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2109
  pextrw(eax, xmm4, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2110
  movl(edx, 8192);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2111
  movdl(xmm4, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2112
  andl(eax, 32767);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2113
  subl(eax, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2114
  jcc(Assembler::less, L_2TAG_PACKET_8_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2115
  movl(edx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2116
  andl(edx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2117
  subl(edx, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2118
  movl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2119
  sarl(edx, 31);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2120
  addl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2121
  xorl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2122
  addl(ecx, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2123
  bsrl(ecx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2124
  movl(tmp1, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2125
  jmp(L_2TAG_PACKET_1_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2126
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2127
  bind(L_2TAG_PACKET_19_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2128
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2129
  movl(eax, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2130
  pinsrw(xmm0, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2131
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2132
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2133
  bind(L_2TAG_PACKET_22_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2134
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2135
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2136
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2137
  bind(L_2TAG_PACKET_11_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2138
  addl(eax, 384);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2139
  cmpl(eax, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2140
  jcc(Assembler::less, L_2TAG_PACKET_38_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2141
  mulsd(xmm5, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2142
  addsd(xmm0, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2143
  shrl(tmp1, 31);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2144
  addpd(xmm3, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2145
  pshufd(xmm0, xmm3, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2146
  addsd(xmm3, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2147
  lea(tmp4, ExternalAddress(log2));    //0xfefa39efUL, 0x3fe62e42UL, 0xfefa39efUL, 0xbfe62e42UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2148
  movq(xmm4, Address(tmp4, tmp1, Address::times_8, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2149
  mulsd(xmm1, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2150
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2151
  movl(eax, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2152
  shll(tmp1, 15);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2153
  orl(eax, tmp1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2154
  pinsrw(xmm0, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2155
  addsd(xmm5, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2156
  mulsd(xmm5, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2157
  addsd(xmm0, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2158
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2159
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2160
  bind(L_2TAG_PACKET_38_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2161
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2162
  bind(L_2TAG_PACKET_37_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2163
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2164
  movl(eax, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2165
  pinsrw(xmm0, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2166
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2167
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2168
  bind(L_2TAG_PACKET_39_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2169
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2170
  movl(eax, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2171
  pinsrw(xmm0, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2172
  movl(Address(rsp, 0), 26);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2173
  jmp(L_2TAG_PACKET_17_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2174
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2175
  bind(L_2TAG_PACKET_9_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2176
  movq(xmm1, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2177
  movdqu(xmm2, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2178
  pextrw(eax, xmm1, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2179
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2180
  cmpl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2181
  jcc(Assembler::notEqual, L_2TAG_PACKET_40_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2182
  movdl(eax, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2183
  psrlq(xmm2, 20);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2184
  movdl(edx, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2185
  orl(eax, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2186
  jcc(Assembler::notEqual, L_2TAG_PACKET_18_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2187
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2188
  bind(L_2TAG_PACKET_40_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2189
  movdl(eax, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2190
  psrlq(xmm1, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2191
  movdl(edx, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2192
  movl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2193
  addl(edx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2194
  orl(eax, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2195
  jcc(Assembler::equal, L_2TAG_PACKET_39_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2196
  shrl(edx, 21);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2197
  cmpl(edx, 1075);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2198
  jcc(Assembler::above, L_2TAG_PACKET_41_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2199
  jcc(Assembler::equal, L_2TAG_PACKET_42_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2200
  cmpl(edx, 1023);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2201
  jcc(Assembler::below, L_2TAG_PACKET_41_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2202
  movq(xmm1, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2203
  movl(eax, 17208);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2204
  xorpd(xmm3, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2205
  pinsrw(xmm3, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2206
  movdqu(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2207
  addsd(xmm3, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2208
  subsd(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2209
  addsd(xmm1, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2210
  pextrw(eax, xmm1, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2211
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2212
  jcc(Assembler::notEqual, L_2TAG_PACKET_41_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2213
  movdl(eax, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2214
  andl(eax, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2215
  jcc(Assembler::equal, L_2TAG_PACKET_41_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2216
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2217
  bind(L_2TAG_PACKET_43_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2218
  movq(xmm0, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2219
  testl(ecx, INT_MIN);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2220
  jcc(Assembler::notEqual, L_2TAG_PACKET_44_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2221
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2222
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2223
  bind(L_2TAG_PACKET_42_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2224
  movq(xmm1, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2225
  movdl(eax, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2226
  testl(eax, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2227
  jcc(Assembler::notEqual, L_2TAG_PACKET_43_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2228
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2229
  bind(L_2TAG_PACKET_41_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2230
  testl(ecx, INT_MIN);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2231
  jcc(Assembler::equal, L_2TAG_PACKET_22_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2232
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2233
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2234
  bind(L_2TAG_PACKET_44_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2235
  movl(eax, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2236
  xorpd(xmm1, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2237
  pinsrw(xmm1, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2238
  divsd(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2239
  movdqu(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2240
  movl(Address(rsp, 0), 27);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2241
  jmp(L_2TAG_PACKET_17_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2242
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2243
  bind(L_2TAG_PACKET_12_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2244
  movq(xmm2, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2245
  movq(xmm6, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2246
  pextrw(eax, xmm2, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2247
  pextrw(edx, xmm6, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2248
  movl(ecx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2249
  andl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2250
  cmpl(ecx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2251
  jcc(Assembler::equal, L_2TAG_PACKET_45_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2252
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2253
  subl(eax, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2254
  xorl(edx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2255
  testl(edx, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2256
  jcc(Assembler::notEqual, L_2TAG_PACKET_46_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2257
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2258
  bind(L_2TAG_PACKET_47_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2259
  movl(eax, 32736);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2260
  pinsrw(xmm0, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2261
  shrl(tmp1, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2262
  orl(eax, tmp1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2263
  pinsrw(xmm1, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2264
  mulsd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2265
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2266
  bind(L_2TAG_PACKET_14_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2267
  movl(Address(rsp, 0), 24);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2268
  jmp(L_2TAG_PACKET_17_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2269
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2270
  bind(L_2TAG_PACKET_46_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2271
  movl(eax, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2272
  pinsrw(xmm0, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2273
  mulsd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2274
  testl(tmp1, INT_MIN);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2275
  jcc(Assembler::equal, L_2TAG_PACKET_48_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2276
  mov64(tmp2, 0x8000000000000000);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2277
  movdq(xmm2, tmp2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2278
  xorpd(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2279
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2280
  bind(L_2TAG_PACKET_48_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2281
  movl(Address(rsp, 0), 25);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2282
  jmp(L_2TAG_PACKET_17_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2283
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2284
  bind(L_2TAG_PACKET_13_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2285
  pextrw(ecx, xmm5, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2286
  pextrw(edx, xmm4, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2287
  movl(eax, -1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2288
  andl(ecx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2289
  subl(ecx, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2290
  andl(edx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2291
  addl(edx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2292
  movl(ecx, -31);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2293
  sarl(edx, 4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2294
  subl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2295
  jcc(Assembler::lessEqual, L_2TAG_PACKET_49_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2296
  cmpl(ecx, 20);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2297
  jcc(Assembler::above, L_2TAG_PACKET_50_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2298
  shll(eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2299
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2300
  bind(L_2TAG_PACKET_49_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2301
  movdl(xmm0, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2302
  psllq(xmm0, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2303
  pand(xmm0, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2304
  subsd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2305
  addsd(xmm5, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2306
  mulsd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2307
  mulsd(xmm5, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2308
  addsd(xmm0, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2309
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2310
  bind(L_2TAG_PACKET_50_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2311
  jmp(L_2TAG_PACKET_48_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2312
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2313
  bind(L_2TAG_PACKET_2_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2314
  movw(ecx, Address(rsp, 22));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2315
  movl(edx, INT_MIN);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2316
  movdl(xmm1, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2317
  xorpd(xmm7, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2318
  paddd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2319
  movdl(edx, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2320
  psllq(xmm0, 29);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2321
  paddq(xmm1, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2322
  pand(xmm5, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2323
  andl(ecx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2324
  cmpl(ecx, 16560);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2325
  jcc(Assembler::less, L_2TAG_PACKET_3_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2326
  pand(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2327
  subsd(xmm3, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2328
  addl(eax, 16351);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2329
  shrl(eax, 4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2330
  subl(eax, 1022);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2331
  cvtsi2sdl(xmm7, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2332
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2333
  lea(r11, ExternalAddress(L_tbl));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2334
  movq(xmm4, ExternalAddress(coeff_h));    //0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2335
  mulsd(xmm3, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2336
  movq(xmm6, ExternalAddress(coeff_h));    //0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2337
  subsd(xmm5, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2338
  movq(xmm1, ExternalAddress(8 + coeff_h));    //0x00000000UL, 0xbf5dabe1UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2339
  pshufd(xmm2, xmm3, 68);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2340
  unpcklpd(xmm5, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2341
  addsd(xmm3, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2342
  movq(xmm0, ExternalAddress(8 + coeff_h));    //0x00000000UL, 0xbf5dabe1UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2343
  andl(edx, 16760832);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2344
  shrl(edx, 10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2345
  addpd(xmm7, Address(tmp4, edx, Address::times_1, -3648));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2346
  mulsd(xmm4, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2347
  mulsd(xmm0, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2348
  mulsd(xmm6, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2349
  mulsd(xmm1, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2350
  movdqu(xmm2, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2351
  mulsd(xmm4, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2352
  addsd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2353
  movdqu(xmm0, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2354
  addsd(xmm2, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2355
  addsd(xmm7, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2356
  mulsd(xmm6, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2357
  subsd(xmm0, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2358
  movdqu(xmm2, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2359
  addsd(xmm7, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2360
  addsd(xmm0, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2361
  subsd(xmm2, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2362
  addsd(xmm4, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2363
  pshufd(xmm2, xmm5, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2364
  movdqu(xmm5, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2365
  addsd(xmm7, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2366
  addsd(xmm4, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2367
  movdqu(xmm0, ExternalAddress(coeff));    //0x6dc96112UL, 0xbf836578UL, 0xee241472UL, 0xbf9b0301UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2368
  subsd(xmm5, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2369
  addsd(xmm6, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2370
  movdqu(xmm4, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2371
  addsd(xmm5, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2372
  addsd(xmm7, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2373
  movdqu(xmm2, ExternalAddress(64 + coeff));    //0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL, 0xbf5dabe1UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2374
  subsd(xmm4, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2375
  addsd(xmm6, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2376
  addsd(xmm4, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2377
  pshufd(xmm5, xmm7, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2378
  movapd(xmm1, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2379
  addsd(xmm7, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2380
  subsd(xmm1, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2381
  addsd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2382
  movdqu(xmm5, ExternalAddress(80 + coeff));    //0x9f95985aUL, 0xbfb528dbUL, 0xf8b5787dUL, 0x3ef2531eUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2383
  pshufd(xmm3, xmm3, 68);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2384
  addsd(xmm6, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2385
  addsd(xmm6, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2386
  movdqu(xmm1, ExternalAddress(32 + coeff));    //0x9f95985aUL, 0xbfb528dbUL, 0xb3841d2aUL, 0xbfd619b6UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2387
  mulpd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2388
  mulpd(xmm2, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2389
  pshufd(xmm4, xmm3, 68);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2390
  mulpd(xmm3, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2391
  addpd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2392
  addpd(xmm5, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2393
  mulsd(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2394
  movq(xmm2, ExternalAddress(HIGHMASK_LOG_X));    //0xf8000000UL, 0xffffffffUL, 0x00000000UL, 0xfffff800UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2395
  mulpd(xmm3, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2396
  movq(xmm1, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2397
  movw(ecx, Address(rsp, 22));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2398
  mulpd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2399
  pextrw(eax, xmm7, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2400
  mulpd(xmm5, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2401
  mulpd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2402
  movq(xmm4, ExternalAddress(8 + HIGHMASK_Y));    //0x00000000UL, 0xffffffffUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2403
  pand(xmm2, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2404
  addsd(xmm5, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2405
  subsd(xmm7, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2406
  addpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2407
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2408
  subl(eax, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2409
  andl(ecx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2410
  cmpl(ecx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2411
  jcc(Assembler::equal, L_2TAG_PACKET_45_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2412
  addl(ecx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2413
  cmpl(ecx, 16576);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2414
  jcc(Assembler::aboveEqual, L_2TAG_PACKET_51_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2415
  pshufd(xmm0, xmm5, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2416
  pand(xmm4, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2417
  movdqu(xmm3, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2418
  addsd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2419
  subsd(xmm1, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2420
  xorpd(xmm6, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2421
  movl(edx, 17080);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2422
  pinsrw(xmm6, edx, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2423
  addsd(xmm7, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2424
  mulsd(xmm4, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2425
  mulsd(xmm1, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2426
  movdqu(xmm5, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2427
  mulsd(xmm3, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2428
  addsd(xmm6, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2429
  addsd(xmm1, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2430
  movdqu(xmm7, ExternalAddress(e_coeff));    //0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2431
  movdl(edx, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2432
  subsd(xmm6, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2433
  lea(tmp4, ExternalAddress(T_exp));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2434
  movdqu(xmm3, ExternalAddress(16 + e_coeff));    //0x6fba4e77UL, 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2435
  movq(xmm2, ExternalAddress(32 + e_coeff));    //0xfefa39efUL, 0x3fe62e42UL, 0x00000000UL, 0x00000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2436
  subsd(xmm4, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2437
  movl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2438
  andl(edx, 255);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2439
  addl(edx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2440
  movdqu(xmm5, Address(tmp4, edx, Address::times_8, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2441
  addsd(xmm4, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2442
  pextrw(edx, xmm6, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2443
  shrl(ecx, 8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2444
  movl(eax, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2445
  shrl(ecx, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2446
  subl(eax, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2447
  shll(ecx, 20);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2448
  movdl(xmm6, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2449
  pshufd(xmm0, xmm4, 68);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2450
  pshufd(xmm1, xmm4, 68);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2451
  mulpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2452
  mulpd(xmm7, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2453
  pshufd(xmm6, xmm6, 17);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2454
  mulsd(xmm2, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2455
  andl(edx, 32767);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2456
  cmpl(edx, 16529);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2457
  jcc(Assembler::above, L_2TAG_PACKET_12_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2458
  mulsd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2459
  paddd(xmm5, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2460
  addpd(xmm3, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2461
  mulsd(xmm2, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2462
  pshufd(xmm6, xmm5, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2463
  mulpd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2464
  addsd(xmm2, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2465
  pshufd(xmm3, xmm0, 238);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2466
  addl(eax, 1023);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2467
  shll(eax, 20);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2468
  orl(eax, tmp1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2469
  movdl(xmm4, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2470
  mulsd(xmm0, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2471
  mulsd(xmm3, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2472
  addsd(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2473
  psllq(xmm4, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2474
  addsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2475
  movdqu(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2476
  addsd(xmm0, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2477
  mulsd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2478
  pextrw(eax, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2479
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2480
  jcc(Assembler::equal, L_2TAG_PACKET_13_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2481
  cmpl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2482
  jcc(Assembler::equal, L_2TAG_PACKET_14_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2483
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2484
  bind(L_2TAG_PACKET_52_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2485
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2486
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2487
  bind(L_2TAG_PACKET_45_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2488
  movq(xmm0, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2489
  xorpd(xmm2, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2490
  movl(eax, 49136);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2491
  pinsrw(xmm2, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2492
  addsd(xmm2, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2493
  pextrw(eax, xmm2, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2494
  cmpl(eax, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2495
  jcc(Assembler::notEqual, L_2TAG_PACKET_53_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2496
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2497
  movl(eax, 32760);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2498
  pinsrw(xmm0, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2499
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2500
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2501
  bind(L_2TAG_PACKET_53_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2502
  movq(xmm1, Address(rsp, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2503
  movdl(edx, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2504
  movdqu(xmm3, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2505
  psrlq(xmm3, 20);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2506
  movdl(ecx, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2507
  orl(ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2508
  jcc(Assembler::equal, L_2TAG_PACKET_54_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2509
  addsd(xmm1, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2510
  movdqu(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2511
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2512
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2513
  bind(L_2TAG_PACKET_51_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2514
  pextrw(eax, xmm1, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2515
  pextrw(ecx, xmm2, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2516
  xorl(eax, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2517
  testl(eax, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2518
  jcc(Assembler::equal, L_2TAG_PACKET_47_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2519
  jmp(L_2TAG_PACKET_46_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2520
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2521
  bind(L_2TAG_PACKET_54_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2522
  pextrw(eax, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2523
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2524
  pextrw(edx, xmm1, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2525
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2526
  subl(eax, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2527
  xorl(eax, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2528
  testl(eax, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2529
  jcc(Assembler::equal, L_2TAG_PACKET_55_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2530
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2531
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2532
  bind(L_2TAG_PACKET_55_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2533
  movl(edx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2534
  pinsrw(xmm0, edx, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2535
  jmp(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2536
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2537
  bind(L_2TAG_PACKET_17_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2538
  movq(Address(rsp, 24), xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2539
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2540
  bind(B1_3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2541
  movq(xmm0, Address(rsp, 24));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2542
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2543
  bind(L_2TAG_PACKET_56_0_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2544
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2545
  bind(B1_5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2546
  addq(rsp, 40);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2547
}
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2548
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2549
/******************************************************************************/
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2550
//                     ALGORITHM DESCRIPTION - SIN()
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2551
//                     ---------------------
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2552
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2553
//     1. RANGE REDUCTION
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2554
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2555
//     We perform an initial range reduction from X to r with
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2556
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2557
//          X =~= N * pi/32 + r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2558
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2559
//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2560
//     where |N| <= 932560. Beyond this, the range reduction is
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2561
//     insufficiently accurate. For extremely small inputs,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2562
//     denormalization can occur internally, impacting performance.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2563
//     This means that the main path is actually only taken for
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2564
//     2^-252 <= |X| < 90112.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2565
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2566
//     To avoid branches, we perform the range reduction to full
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2567
//     accuracy each time.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2568
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2569
//          X - N * (P_1 + P_2 + P_3)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2570
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2571
//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2572
//     is exact) and P_3 is a 53-bit number. Together, these
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2573
//     approximate pi well enough for all cases in the restricted
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2574
//     range.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2575
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2576
//     The main reduction sequence is:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2577
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2578
//             y = 32/pi * x
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2579
//             N = integer(y)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2580
//     (computed by adding and subtracting off SHIFTER)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2581
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2582
//             m_1 = N * P_1
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2583
//             m_2 = N * P_2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2584
//             r_1 = x - m_1
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2585
//             r = r_1 - m_2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2586
//     (this r can be used for most of the calculation)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2587
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2588
//             c_1 = r_1 - r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2589
//             m_3 = N * P_3
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2590
//             c_2 = c_1 - m_2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2591
//             c = c_2 - m_3
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2592
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2593
//     2. MAIN ALGORITHM
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2594
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2595
//     The algorithm uses a table lookup based on B = M * pi / 32
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2596
//     where M = N mod 64. The stored values are:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2597
//       sigma             closest power of 2 to cos(B)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2598
//       C_hl              53-bit cos(B) - sigma
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2599
//       S_hi + S_lo       2 * 53-bit sin(B)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2600
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2601
//     The computation is organized as follows:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2602
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2603
//          sin(B + r + c) = [sin(B) + sigma * r] +
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2604
//                           r * (cos(B) - sigma) +
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2605
//                           sin(B) * [cos(r + c) - 1] +
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2606
//                           cos(B) * [sin(r + c) - r]
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2607
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2608
//     which is approximately:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2609
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2610
//          [S_hi + sigma * r] +
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2611
//          C_hl * r +
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2612
//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2613
//          (C_hl + sigma) * [(sin(r) - r) + c]
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2614
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2615
//     and this is what is actually computed. We separate this sum
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2616
//     into four parts:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2617
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2618
//          hi + med + pols + corr
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2619
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2620
//     where
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2621
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2622
//          hi       = S_hi + sigma r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2623
//          med      = C_hl * r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2624
//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2625
//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2626
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2627
//     3. POLYNOMIAL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2628
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2629
//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2630
//     (sin(r) - r) can be rearranged freely, since it is quite
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2631
//     small, so we exploit parallelism to the fullest.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2632
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2633
//          psc4       =   SC_4 * r_1
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2634
//          msc4       =   psc4 * r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2635
//          r2         =   r * r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2636
//          msc2       =   SC_2 * r2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2637
//          r4         =   r2 * r2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2638
//          psc3       =   SC_3 + msc4
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2639
//          psc1       =   SC_1 + msc2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2640
//          msc3       =   r4 * psc3
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2641
//          sincospols =   psc1 + msc3
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2642
//          pols       =   sincospols *
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2643
//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2644
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2645
//     4. CORRECTION TERM
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2646
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2647
//     This is where the "c" component of the range reduction is
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2648
//     taken into account; recall that just "r" is used for most of
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2649
//     the calculation.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2650
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2651
//          -c   = m_3 - c_2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2652
//          -d   = S_hi * r - (C_hl + sigma)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2653
//          corr = -c * -d + S_lo
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2654
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2655
//     5. COMPENSATED SUMMATIONS
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2656
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2657
//     The two successive compensated summations add up the high
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2658
//     and medium parts, leaving just the low parts to add up at
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2659
//     the end.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2660
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2661
//          rs        =  sigma * r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2662
//          res_int   =  S_hi + rs
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2663
//          k_0       =  S_hi - res_int
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2664
//          k_2       =  k_0 + rs
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2665
//          med       =  C_hl * r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2666
//          res_hi    =  res_int + med
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2667
//          k_1       =  res_int - res_hi
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2668
//          k_3       =  k_1 + med
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2669
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2670
//     6. FINAL SUMMATION
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2671
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2672
//     We now add up all the small parts:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2673
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2674
//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2675
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2676
//     Now the overall result is just:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2677
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2678
//          res_hi + res_lo
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2679
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2680
//     7. SMALL ARGUMENTS
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2681
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2682
//     If |x| < SNN (SNN meaning the smallest normal number), we
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2683
//     simply perform 0.1111111 cdots 1111 * x. For SNN <= |x|, we
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2684
//     do 2^-55 * (2^55 * x - x).
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2685
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2686
// Special cases:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2687
//  sin(NaN) = quiet NaN, and raise invalid exception
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2688
//  sin(INF) = NaN and raise invalid exception
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2689
//  sin(+/-0) = +/-0
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2690
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2691
/******************************************************************************/
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2692
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2693
ALIGNED_(16) juint _ONEHALF[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2694
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2695
    0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2696
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2697
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2698
ALIGNED_(16) juint _P_2[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2699
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2700
    0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2701
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2702
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2703
ALIGNED_(16) juint _SC_4[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2704
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2705
    0xa556c734UL, 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2706
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2707
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2708
ALIGNED_(16) juint _Ctable[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2709
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2710
    0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2711
    0x00000000UL, 0x00000000UL, 0x3ff00000UL, 0x176d6d31UL, 0xbf73b92eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2712
    0xbc29b42cUL, 0x3fb917a6UL, 0xe0000000UL, 0xbc3e2718UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2713
    0x3ff00000UL, 0x011469fbUL, 0xbf93ad06UL, 0x3c69a60bUL, 0x3fc8f8b8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2714
    0xc0000000UL, 0xbc626d19UL, 0x00000000UL, 0x3ff00000UL, 0x939d225aUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2715
    0xbfa60beaUL, 0x2ed59f06UL, 0x3fd29406UL, 0xa0000000UL, 0xbc75d28dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2716
    0x00000000UL, 0x3ff00000UL, 0x866b95cfUL, 0xbfb37ca1UL, 0xa6aea963UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2717
    0x3fd87de2UL, 0xe0000000UL, 0xbc672cedUL, 0x00000000UL, 0x3ff00000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2718
    0x73fa1279UL, 0xbfbe3a68UL, 0x3806f63bUL, 0x3fde2b5dUL, 0x20000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2719
    0x3c5e0d89UL, 0x00000000UL, 0x3ff00000UL, 0x5bc57974UL, 0xbfc59267UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2720
    0x39ae68c8UL, 0x3fe1c73bUL, 0x20000000UL, 0x3c8b25ddUL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2721
    0x3ff00000UL, 0x53aba2fdUL, 0xbfcd0dfeUL, 0x25091dd6UL, 0x3fe44cf3UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2722
    0x20000000UL, 0x3c68076aUL, 0x00000000UL, 0x3ff00000UL, 0x99fcef32UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2723
    0x3fca8279UL, 0x667f3bcdUL, 0x3fe6a09eUL, 0x20000000UL, 0xbc8bdd34UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2724
    0x00000000UL, 0x3fe00000UL, 0x94247758UL, 0x3fc133ccUL, 0x6b151741UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2725
    0x3fe8bc80UL, 0x20000000UL, 0xbc82c5e1UL, 0x00000000UL, 0x3fe00000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2726
    0x9ae68c87UL, 0x3fac73b3UL, 0x290ea1a3UL, 0x3fea9b66UL, 0xe0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2727
    0x3c39f630UL, 0x00000000UL, 0x3fe00000UL, 0x7f909c4eUL, 0xbf9d4a2cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2728
    0xf180bdb1UL, 0x3fec38b2UL, 0x80000000UL, 0xbc76e0b1UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2729
    0x3fe00000UL, 0x65455a75UL, 0xbfbe0875UL, 0xcf328d46UL, 0x3fed906bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2730
    0x20000000UL, 0x3c7457e6UL, 0x00000000UL, 0x3fe00000UL, 0x76acf82dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2731
    0x3fa4a031UL, 0x56c62ddaUL, 0x3fee9f41UL, 0xe0000000UL, 0x3c8760b1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2732
    0x00000000UL, 0x3fd00000UL, 0x0e5967d5UL, 0xbfac1d1fUL, 0xcff75cb0UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2733
    0x3fef6297UL, 0x20000000UL, 0x3c756217UL, 0x00000000UL, 0x3fd00000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2734
    0x0f592f50UL, 0xbf9ba165UL, 0xa3d12526UL, 0x3fefd88dUL, 0x40000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2735
    0xbc887df6UL, 0x00000000UL, 0x3fc00000UL, 0x00000000UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2736
    0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2737
    0x00000000UL, 0x0f592f50UL, 0x3f9ba165UL, 0xa3d12526UL, 0x3fefd88dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2738
    0x40000000UL, 0xbc887df6UL, 0x00000000UL, 0xbfc00000UL, 0x0e5967d5UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2739
    0x3fac1d1fUL, 0xcff75cb0UL, 0x3fef6297UL, 0x20000000UL, 0x3c756217UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2740
    0x00000000UL, 0xbfd00000UL, 0x76acf82dUL, 0xbfa4a031UL, 0x56c62ddaUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2741
    0x3fee9f41UL, 0xe0000000UL, 0x3c8760b1UL, 0x00000000UL, 0xbfd00000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2742
    0x65455a75UL, 0x3fbe0875UL, 0xcf328d46UL, 0x3fed906bUL, 0x20000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2743
    0x3c7457e6UL, 0x00000000UL, 0xbfe00000UL, 0x7f909c4eUL, 0x3f9d4a2cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2744
    0xf180bdb1UL, 0x3fec38b2UL, 0x80000000UL, 0xbc76e0b1UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2745
    0xbfe00000UL, 0x9ae68c87UL, 0xbfac73b3UL, 0x290ea1a3UL, 0x3fea9b66UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2746
    0xe0000000UL, 0x3c39f630UL, 0x00000000UL, 0xbfe00000UL, 0x94247758UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2747
    0xbfc133ccUL, 0x6b151741UL, 0x3fe8bc80UL, 0x20000000UL, 0xbc82c5e1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2748
    0x00000000UL, 0xbfe00000UL, 0x99fcef32UL, 0xbfca8279UL, 0x667f3bcdUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2749
    0x3fe6a09eUL, 0x20000000UL, 0xbc8bdd34UL, 0x00000000UL, 0xbfe00000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2750
    0x53aba2fdUL, 0x3fcd0dfeUL, 0x25091dd6UL, 0x3fe44cf3UL, 0x20000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2751
    0x3c68076aUL, 0x00000000UL, 0xbff00000UL, 0x5bc57974UL, 0x3fc59267UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2752
    0x39ae68c8UL, 0x3fe1c73bUL, 0x20000000UL, 0x3c8b25ddUL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2753
    0xbff00000UL, 0x73fa1279UL, 0x3fbe3a68UL, 0x3806f63bUL, 0x3fde2b5dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2754
    0x20000000UL, 0x3c5e0d89UL, 0x00000000UL, 0xbff00000UL, 0x866b95cfUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2755
    0x3fb37ca1UL, 0xa6aea963UL, 0x3fd87de2UL, 0xe0000000UL, 0xbc672cedUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2756
    0x00000000UL, 0xbff00000UL, 0x939d225aUL, 0x3fa60beaUL, 0x2ed59f06UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2757
    0x3fd29406UL, 0xa0000000UL, 0xbc75d28dUL, 0x00000000UL, 0xbff00000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2758
    0x011469fbUL, 0x3f93ad06UL, 0x3c69a60bUL, 0x3fc8f8b8UL, 0xc0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2759
    0xbc626d19UL, 0x00000000UL, 0xbff00000UL, 0x176d6d31UL, 0x3f73b92eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2760
    0xbc29b42cUL, 0x3fb917a6UL, 0xe0000000UL, 0xbc3e2718UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2761
    0xbff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2762
    0x00000000UL, 0x00000000UL, 0x00000000UL, 0xbff00000UL, 0x176d6d31UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2763
    0x3f73b92eUL, 0xbc29b42cUL, 0xbfb917a6UL, 0xe0000000UL, 0x3c3e2718UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2764
    0x00000000UL, 0xbff00000UL, 0x011469fbUL, 0x3f93ad06UL, 0x3c69a60bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2765
    0xbfc8f8b8UL, 0xc0000000UL, 0x3c626d19UL, 0x00000000UL, 0xbff00000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2766
    0x939d225aUL, 0x3fa60beaUL, 0x2ed59f06UL, 0xbfd29406UL, 0xa0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2767
    0x3c75d28dUL, 0x00000000UL, 0xbff00000UL, 0x866b95cfUL, 0x3fb37ca1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2768
    0xa6aea963UL, 0xbfd87de2UL, 0xe0000000UL, 0x3c672cedUL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2769
    0xbff00000UL, 0x73fa1279UL, 0x3fbe3a68UL, 0x3806f63bUL, 0xbfde2b5dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2770
    0x20000000UL, 0xbc5e0d89UL, 0x00000000UL, 0xbff00000UL, 0x5bc57974UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2771
    0x3fc59267UL, 0x39ae68c8UL, 0xbfe1c73bUL, 0x20000000UL, 0xbc8b25ddUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2772
    0x00000000UL, 0xbff00000UL, 0x53aba2fdUL, 0x3fcd0dfeUL, 0x25091dd6UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2773
    0xbfe44cf3UL, 0x20000000UL, 0xbc68076aUL, 0x00000000UL, 0xbff00000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2774
    0x99fcef32UL, 0xbfca8279UL, 0x667f3bcdUL, 0xbfe6a09eUL, 0x20000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2775
    0x3c8bdd34UL, 0x00000000UL, 0xbfe00000UL, 0x94247758UL, 0xbfc133ccUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2776
    0x6b151741UL, 0xbfe8bc80UL, 0x20000000UL, 0x3c82c5e1UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2777
    0xbfe00000UL, 0x9ae68c87UL, 0xbfac73b3UL, 0x290ea1a3UL, 0xbfea9b66UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2778
    0xe0000000UL, 0xbc39f630UL, 0x00000000UL, 0xbfe00000UL, 0x7f909c4eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2779
    0x3f9d4a2cUL, 0xf180bdb1UL, 0xbfec38b2UL, 0x80000000UL, 0x3c76e0b1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2780
    0x00000000UL, 0xbfe00000UL, 0x65455a75UL, 0x3fbe0875UL, 0xcf328d46UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2781
    0xbfed906bUL, 0x20000000UL, 0xbc7457e6UL, 0x00000000UL, 0xbfe00000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2782
    0x76acf82dUL, 0xbfa4a031UL, 0x56c62ddaUL, 0xbfee9f41UL, 0xe0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2783
    0xbc8760b1UL, 0x00000000UL, 0xbfd00000UL, 0x0e5967d5UL, 0x3fac1d1fUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2784
    0xcff75cb0UL, 0xbfef6297UL, 0x20000000UL, 0xbc756217UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2785
    0xbfd00000UL, 0x0f592f50UL, 0x3f9ba165UL, 0xa3d12526UL, 0xbfefd88dUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2786
    0x40000000UL, 0x3c887df6UL, 0x00000000UL, 0xbfc00000UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2787
    0x00000000UL, 0x00000000UL, 0xbff00000UL, 0x00000000UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2788
    0x00000000UL, 0x00000000UL, 0x0f592f50UL, 0xbf9ba165UL, 0xa3d12526UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2789
    0xbfefd88dUL, 0x40000000UL, 0x3c887df6UL, 0x00000000UL, 0x3fc00000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2790
    0x0e5967d5UL, 0xbfac1d1fUL, 0xcff75cb0UL, 0xbfef6297UL, 0x20000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2791
    0xbc756217UL, 0x00000000UL, 0x3fd00000UL, 0x76acf82dUL, 0x3fa4a031UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2792
    0x56c62ddaUL, 0xbfee9f41UL, 0xe0000000UL, 0xbc8760b1UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2793
    0x3fd00000UL, 0x65455a75UL, 0xbfbe0875UL, 0xcf328d46UL, 0xbfed906bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2794
    0x20000000UL, 0xbc7457e6UL, 0x00000000UL, 0x3fe00000UL, 0x7f909c4eUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2795
    0xbf9d4a2cUL, 0xf180bdb1UL, 0xbfec38b2UL, 0x80000000UL, 0x3c76e0b1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2796
    0x00000000UL, 0x3fe00000UL, 0x9ae68c87UL, 0x3fac73b3UL, 0x290ea1a3UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2797
    0xbfea9b66UL, 0xe0000000UL, 0xbc39f630UL, 0x00000000UL, 0x3fe00000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2798
    0x94247758UL, 0x3fc133ccUL, 0x6b151741UL, 0xbfe8bc80UL, 0x20000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2799
    0x3c82c5e1UL, 0x00000000UL, 0x3fe00000UL, 0x99fcef32UL, 0x3fca8279UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2800
    0x667f3bcdUL, 0xbfe6a09eUL, 0x20000000UL, 0x3c8bdd34UL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2801
    0x3fe00000UL, 0x53aba2fdUL, 0xbfcd0dfeUL, 0x25091dd6UL, 0xbfe44cf3UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2802
    0x20000000UL, 0xbc68076aUL, 0x00000000UL, 0x3ff00000UL, 0x5bc57974UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2803
    0xbfc59267UL, 0x39ae68c8UL, 0xbfe1c73bUL, 0x20000000UL, 0xbc8b25ddUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2804
    0x00000000UL, 0x3ff00000UL, 0x73fa1279UL, 0xbfbe3a68UL, 0x3806f63bUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2805
    0xbfde2b5dUL, 0x20000000UL, 0xbc5e0d89UL, 0x00000000UL, 0x3ff00000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2806
    0x866b95cfUL, 0xbfb37ca1UL, 0xa6aea963UL, 0xbfd87de2UL, 0xe0000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2807
    0x3c672cedUL, 0x00000000UL, 0x3ff00000UL, 0x939d225aUL, 0xbfa60beaUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2808
    0x2ed59f06UL, 0xbfd29406UL, 0xa0000000UL, 0x3c75d28dUL, 0x00000000UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2809
    0x3ff00000UL, 0x011469fbUL, 0xbf93ad06UL, 0x3c69a60bUL, 0xbfc8f8b8UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2810
    0xc0000000UL, 0x3c626d19UL, 0x00000000UL, 0x3ff00000UL, 0x176d6d31UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2811
    0xbf73b92eUL, 0xbc29b42cUL, 0xbfb917a6UL, 0xe0000000UL, 0x3c3e2718UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2812
    0x00000000UL, 0x3ff00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2813
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2814
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2815
ALIGNED_(16) juint _SC_2[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2816
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2817
    0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2818
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2819
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2820
ALIGNED_(16) juint _SC_3[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2821
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2822
    0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2823
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2824
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2825
ALIGNED_(16) juint _SC_1[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2826
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2827
    0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2828
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2829
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2830
ALIGNED_(16) juint _PI_INV_TABLE[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2831
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2832
    0x00000000UL, 0x00000000UL, 0xa2f9836eUL, 0x4e441529UL, 0xfc2757d1UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2833
    0xf534ddc0UL, 0xdb629599UL, 0x3c439041UL, 0xfe5163abUL, 0xdebbc561UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2834
    0xb7246e3aUL, 0x424dd2e0UL, 0x06492eeaUL, 0x09d1921cUL, 0xfe1deb1cUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2835
    0xb129a73eUL, 0xe88235f5UL, 0x2ebb4484UL, 0xe99c7026UL, 0xb45f7e41UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2836
    0x3991d639UL, 0x835339f4UL, 0x9c845f8bUL, 0xbdf9283bUL, 0x1ff897ffUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2837
    0xde05980fUL, 0xef2f118bUL, 0x5a0a6d1fUL, 0x6d367ecfUL, 0x27cb09b7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2838
    0x4f463f66UL, 0x9e5fea2dUL, 0x7527bac7UL, 0xebe5f17bUL, 0x3d0739f7UL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2839
    0x8a5292eaUL, 0x6bfb5fb1UL, 0x1f8d5d08UL, 0x56033046UL, 0xfc7b6babUL,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2840
    0xf0cfbc21UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2841
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2842
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2843
ALIGNED_(8) juint _PI_4[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2844
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2845
    0x40000000UL, 0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2846
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2847
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2848
ALIGNED_(8) juint _PI32INV[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2849
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2850
    0x6dc9c883UL, 0x40245f30UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2851
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2852
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2853
ALIGNED_(8) juint _SHIFTER[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2854
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2855
    0x00000000UL, 0x43380000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2856
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2857
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2858
ALIGNED_(8) juint _SIGN_MASK[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2859
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2860
    0x00000000UL, 0x80000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2861
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2862
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2863
ALIGNED_(8) juint _P_3[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2864
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2865
    0x2e037073UL, 0x3b63198aUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2866
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2867
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2868
ALIGNED_(8) juint _ALL_ONES[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2869
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2870
    0xffffffffUL, 0x3fefffffUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2871
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2872
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2873
ALIGNED_(8) juint _TWO_POW_55[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2874
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2875
    0x00000000UL, 0x43600000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2876
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2877
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2878
ALIGNED_(8) juint _TWO_POW_M55[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2879
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2880
    0x00000000UL, 0x3c800000ULL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2881
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2882
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2883
ALIGNED_(8) juint _P_1[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2884
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2885
    0x54400000UL, 0x3fb921fbUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2886
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2887
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2888
ALIGNED_(8) juint _NEG_ZERO[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2889
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2890
    0x00000000UL, 0x80000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2891
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2892
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2893
void MacroAssembler::fast_sin(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ebx, Register ecx, Register edx, Register tmp1, Register tmp2, Register tmp3, Register tmp4) {
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2894
  Label L_2TAG_PACKET_0_0_1, L_2TAG_PACKET_1_0_1, L_2TAG_PACKET_2_0_1, L_2TAG_PACKET_3_0_1;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2895
  Label L_2TAG_PACKET_4_0_1, L_2TAG_PACKET_5_0_1, L_2TAG_PACKET_6_0_1, L_2TAG_PACKET_7_0_1;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2896
  Label L_2TAG_PACKET_8_0_1, L_2TAG_PACKET_9_0_1, L_2TAG_PACKET_10_0_1, L_2TAG_PACKET_11_0_1;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2897
  Label L_2TAG_PACKET_13_0_1, L_2TAG_PACKET_14_0_1;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2898
  Label L_2TAG_PACKET_12_0_1, B1_1, B1_2, B1_4, start;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2899
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2900
  assert_different_registers(tmp1, tmp2, tmp3, tmp4, eax, ebx, ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2901
  address ONEHALF = (address)_ONEHALF;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2902
  address P_2 = (address)_P_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2903
  address SC_4 = (address)_SC_4;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2904
  address Ctable = (address)_Ctable;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2905
  address SC_2 = (address)_SC_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2906
  address SC_3 = (address)_SC_3;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2907
  address SC_1 = (address)_SC_1;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2908
  address PI_INV_TABLE = (address)_PI_INV_TABLE;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2909
  address PI_4 = (address)_PI_4;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2910
  address PI32INV = (address)_PI32INV;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2911
  address SHIFTER = (address)_SHIFTER;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2912
  address SIGN_MASK = (address)_SIGN_MASK;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2913
  address P_3 = (address)_P_3;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2914
  address ALL_ONES = (address)_ALL_ONES;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2915
  address TWO_POW_55 = (address)_TWO_POW_55;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2916
  address TWO_POW_M55 = (address)_TWO_POW_M55;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2917
  address P_1 = (address)_P_1;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2918
  address NEG_ZERO = (address)_NEG_ZERO;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2919
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2920
  bind(start);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2921
  push(rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2922
  subq(rsp, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2923
  movsd(Address(rsp, 8), xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2924
  movl(eax, Address(rsp, 12));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2925
  movq(xmm1, ExternalAddress(PI32INV));    //0x6dc9c883UL, 0x40245f30UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2926
  movq(xmm2, ExternalAddress(SHIFTER));    //0x00000000UL, 0x43380000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2927
  andl(eax, 2147418112);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2928
  subl(eax, 808452096);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2929
  cmpl(eax, 281346048);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2930
  jcc(Assembler::above, L_2TAG_PACKET_0_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2931
  mulsd(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2932
  movdqu(xmm5, ExternalAddress(ONEHALF));    //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2933
  movq(xmm4, ExternalAddress(SIGN_MASK));    //0x00000000UL, 0x80000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2934
  pand(xmm4, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2935
  por(xmm5, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2936
  addpd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2937
  cvttsd2sil(edx, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2938
  cvtsi2sdl(xmm1, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2939
  movdqu(xmm6, ExternalAddress(P_2));    //0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2940
  mov64(r8, 0x3fb921fb54400000);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2941
  movdq(xmm3, r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2942
  movdqu(xmm5, ExternalAddress(SC_4));    //0xa556c734UL, 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2943
  pshufd(xmm4, xmm0, 68);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2944
  mulsd(xmm3, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2945
  movddup(xmm1, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2946
  andl(edx, 63);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2947
  shll(edx, 5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2948
  lea(rax, ExternalAddress(Ctable));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2949
  addq(rax, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2950
  mulpd(xmm6, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2951
  mulsd(xmm1, ExternalAddress(P_3));    //0x2e037073UL, 0x3b63198aUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2952
  subsd(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2953
  movq(xmm7, Address(rax, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2954
  subsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2955
  movddup(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2956
  subsd(xmm4, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2957
  pshufd(xmm0, xmm0, 68);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2958
  movdqu(xmm2, Address(rax, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2959
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2960
  subpd(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2961
  mulsd(xmm7, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2962
  subsd(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2963
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2964
  mulpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2965
  subsd(xmm3, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2966
  movdqu(xmm6, ExternalAddress(SC_2));    //0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2967
  subsd(xmm1, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2968
  movq(xmm3, Address(rax, 24));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2969
  addsd(xmm2, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2970
  subsd(xmm7, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2971
  mulsd(xmm2, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2972
  mulpd(xmm6, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2973
  mulsd(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2974
  mulpd(xmm2, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2975
  mulpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2976
  addpd(xmm5, ExternalAddress(SC_3));    //0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2977
  mulsd(xmm4, Address(rax, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2978
  addpd(xmm6, ExternalAddress(SC_1));    //0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2979
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2980
  movdqu(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2981
  addsd(xmm3, Address(rax, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2982
  mulpd(xmm1, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2983
  movdqu(xmm7, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2984
  addsd(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2985
  addpd(xmm6, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2986
  movq(xmm5, Address(rax, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2987
  subsd(xmm5, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2988
  subsd(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2989
  addsd(xmm1, Address(rax, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2990
  mulpd(xmm6, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2991
  addsd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2992
  addsd(xmm3, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2993
  addsd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2994
  addsd(xmm1, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2995
  addsd(xmm1, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2996
  unpckhpd(xmm6, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2997
  movdqu(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2998
  addsd(xmm1, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  2999
  addsd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3000
  jmp(B1_4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3001
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3002
  bind(L_2TAG_PACKET_0_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3003
  jcc(Assembler::greater, L_2TAG_PACKET_1_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3004
  shrl(eax, 20);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3005
  cmpl(eax, 3325);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3006
  jcc(Assembler::notEqual, L_2TAG_PACKET_2_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3007
  mulsd(xmm0, ExternalAddress(ALL_ONES));    //0xffffffffUL, 0x3fefffffUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3008
  jmp(B1_4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3009
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3010
  bind(L_2TAG_PACKET_2_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3011
  movq(xmm3, ExternalAddress(TWO_POW_55));    //0x00000000UL, 0x43600000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3012
  mulsd(xmm3, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3013
  subsd(xmm3, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3014
  mulsd(xmm3, ExternalAddress(TWO_POW_M55));    //0x00000000UL, 0x3c800000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3015
  jmp(B1_4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3016
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3017
  bind(L_2TAG_PACKET_1_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3018
  pextrw(eax, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3019
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3020
  cmpl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3021
  jcc(Assembler::equal, L_2TAG_PACKET_3_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3022
  pextrw(ecx, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3023
  andl(ecx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3024
  subl(ecx, 16224);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3025
  shrl(ecx, 7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3026
  andl(ecx, 65532);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3027
  lea(r11, ExternalAddress(PI_INV_TABLE));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3028
  addq(rcx, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3029
  movdq(rax, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3030
  movl(r10, Address(rcx, 20));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3031
  movl(r8, Address(rcx, 24));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3032
  movl(edx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3033
  shrq(rax, 21);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3034
  orl(eax, INT_MIN);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3035
  shrl(eax, 11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3036
  movl(r9, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3037
  imulq(r10, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3038
  imulq(r9, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3039
  imulq(r8, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3040
  movl(rsi, Address(rcx, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3041
  movl(rdi, Address(rcx, 12));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3042
  movl(r11, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3043
  shrq(r10, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3044
  addq(r9, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3045
  addq(r11, r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3046
  movl(r8, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3047
  shrq(r11, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3048
  addq(r9, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3049
  movl(r10, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3050
  imulq(rsi, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3051
  imulq(r10, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3052
  movl(r11, rdi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3053
  imulq(rdi, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3054
  movl(ebx, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3055
  shrq(rsi, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3056
  addq(r9, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3057
  movl(ebx, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3058
  shrq(r9, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3059
  addq(r10, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3060
  addq(r10, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3061
  shlq(rbx, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3062
  orq(r8, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3063
  imulq(r11, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3064
  movl(r9, Address(rcx, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3065
  movl(rsi, Address(rcx, 4));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3066
  movl(ebx, rdi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3067
  shrq(rdi, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3068
  addq(r10, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3069
  movl(ebx, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3070
  shrq(r10, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3071
  addq(r11, rdi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3072
  addq(r11, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3073
  movq(rdi, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3074
  imulq(r9, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3075
  imulq(rdi, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3076
  movl(r10, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3077
  shrq(r9, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3078
  addq(r11, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3079
  movl(r10, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3080
  shrq(r11, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3081
  addq(rdi, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3082
  addq(rdi, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3083
  movq(r9, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3084
  imulq(rsi, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3085
  imulq(r9, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3086
  shlq(r10, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3087
  orq(r10, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3088
  movl(eax, Address(rcx, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3089
  movl(r11, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3090
  shrq(rsi, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3091
  addq(rdi, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3092
  movl(r11, rdi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3093
  shrq(rdi, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3094
  addq(r9, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3095
  addq(r9, rdi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3096
  imulq(rdx, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3097
  pextrw(ebx, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3098
  lea(rdi, ExternalAddress(PI_INV_TABLE));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3099
  subq(rcx, rdi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3100
  addl(ecx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3101
  addl(ecx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3102
  addl(ecx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3103
  addl(ecx, 19);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3104
  movl(rsi, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3105
  andl(rsi, ebx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3106
  shrl(ebx, 4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3107
  andl(ebx, 2047);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3108
  subl(ebx, 1023);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3109
  subl(ecx, ebx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3110
  addq(r9, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3111
  movl(edx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3112
  addl(edx, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3113
  cmpl(ecx, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3114
  jcc(Assembler::less, L_2TAG_PACKET_4_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3115
  negl(ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3116
  addl(ecx, 29);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3117
  shll(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3118
  movl(rdi, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3119
  andl(r9, 536870911);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3120
  testl(r9, 268435456);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3121
  jcc(Assembler::notEqual, L_2TAG_PACKET_5_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3122
  shrl(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3123
  movl(ebx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3124
  shlq(r9, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3125
  orq(r9, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3126
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3127
  bind(L_2TAG_PACKET_6_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3128
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3129
  bind(L_2TAG_PACKET_7_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3130
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3131
  cmpq(r9, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3132
  jcc(Assembler::equal, L_2TAG_PACKET_8_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3133
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3134
  bind(L_2TAG_PACKET_9_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3135
  bsrq(r11, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3136
  movl(ecx, 29);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3137
  subl(ecx, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3138
  jcc(Assembler::lessEqual, L_2TAG_PACKET_10_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3139
  shlq(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3140
  movq(rax, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3141
  shlq(r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3142
  addl(edx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3143
  negl(ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3144
  addl(ecx, 64);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3145
  shrq(rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3146
  shrq(r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3147
  orq(r9, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3148
  orq(r10, r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3149
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3150
  bind(L_2TAG_PACKET_11_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3151
  cvtsi2sdq(xmm0, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3152
  shrq(r10, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3153
  cvtsi2sdq(xmm3, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3154
  xorpd(xmm4, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3155
  shll(edx, 4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3156
  negl(edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3157
  addl(edx, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3158
  orl(edx, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3159
  xorl(edx, ebx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3160
  pinsrw(xmm4, edx, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3161
  movq(xmm2, ExternalAddress(PI_4));    //0x40000000UL, 0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3162
  movq(xmm6, ExternalAddress(8 + PI_4));    //0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3163
  xorpd(xmm5, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3164
  subl(edx, 1008);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3165
  pinsrw(xmm5, edx, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3166
  mulsd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3167
  shll(rsi, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3168
  sarl(rsi, 31);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3169
  mulsd(xmm3, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3170
  movdqu(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3171
  mulsd(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3172
  shrl(rdi, 29);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3173
  addsd(xmm1, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3174
  mulsd(xmm3, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3175
  addl(rdi, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3176
  xorl(rdi, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3177
  mulsd(xmm6, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3178
  movl(eax, rdi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3179
  addsd(xmm6, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3180
  movdqu(xmm2, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3181
  addsd(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3182
  subsd(xmm2, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3183
  addsd(xmm6, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3184
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3185
  bind(L_2TAG_PACKET_12_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3186
  movq(xmm1, ExternalAddress(PI32INV));    //0x6dc9c883UL, 0x40245f30UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3187
  mulsd(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3188
  movq(xmm5, ExternalAddress(ONEHALF));    //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3189
  movq(xmm4, ExternalAddress(SIGN_MASK));    //0x00000000UL, 0x80000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3190
  pand(xmm4, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3191
  por(xmm5, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3192
  addpd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3193
  cvttsd2sil(edx, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3194
  cvtsi2sdl(xmm1, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3195
  movq(xmm3, ExternalAddress(P_1));    //0x54400000UL, 0x3fb921fbUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3196
  movdqu(xmm2, ExternalAddress(P_2));    //0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3197
  mulsd(xmm3, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3198
  unpcklpd(xmm1, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3199
  shll(eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3200
  addl(edx, 1865216);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3201
  movdqu(xmm4, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3202
  addl(edx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3203
  andl(edx, 63);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3204
  movdqu(xmm5, ExternalAddress(SC_4));    //0x54400000UL, 0x3fb921fbUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3205
  lea(rax, ExternalAddress(Ctable));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3206
  shll(edx, 5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3207
  addq(rax, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3208
  mulpd(xmm2, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3209
  subsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3210
  mulsd(xmm1, ExternalAddress(P_3));    //0x2e037073UL, 0x3b63198aUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3211
  subsd(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3212
  movq(xmm7, Address(rax, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3213
  unpcklpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3214
  movdqu(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3215
  subsd(xmm4, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3216
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3217
  subpd(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3218
  mulsd(xmm7, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3219
  subsd(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3220
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3221
  mulpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3222
  subsd(xmm3, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3223
  movdqu(xmm2, Address(rax, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3224
  subsd(xmm1, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3225
  movq(xmm3, Address(rax, 24));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3226
  addsd(xmm2, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3227
  subsd(xmm7, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3228
  subsd(xmm1, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3229
  movdqu(xmm6, ExternalAddress(SC_2));    //0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3230
  mulsd(xmm2, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3231
  mulpd(xmm6, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3232
  mulsd(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3233
  mulpd(xmm2, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3234
  mulpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3235
  addpd(xmm5, ExternalAddress(SC_3));    //0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3236
  mulsd(xmm4, Address(rax, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3237
  addpd(xmm6, ExternalAddress(SC_1));    //0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3238
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3239
  movdqu(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3240
  addsd(xmm3, Address(rax, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3241
  mulpd(xmm1, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3242
  movdqu(xmm7, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3243
  addsd(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3244
  addpd(xmm6, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3245
  movq(xmm5, Address(rax, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3246
  subsd(xmm5, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3247
  subsd(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3248
  addsd(xmm1, Address(rax, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3249
  mulpd(xmm6, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3250
  addsd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3251
  addsd(xmm3, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3252
  addsd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3253
  addsd(xmm1, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3254
  addsd(xmm1, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3255
  unpckhpd(xmm6, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3256
  movdqu(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3257
  addsd(xmm1, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3258
  addsd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3259
  jmp(B1_4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3260
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3261
  bind(L_2TAG_PACKET_8_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3262
  addl(edx, 64);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3263
  movq(r9, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3264
  movq(r10, r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3265
  movl(r8, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3266
  cmpq(r9, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3267
  jcc(Assembler::notEqual, L_2TAG_PACKET_9_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3268
  addl(edx, 64);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3269
  movq(r9, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3270
  movq(r10, r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3271
  cmpq(r9, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3272
  jcc(Assembler::notEqual, L_2TAG_PACKET_9_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3273
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3274
  xorpd(xmm6, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3275
  jmp(L_2TAG_PACKET_12_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3276
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3277
  bind(L_2TAG_PACKET_10_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3278
  jcc(Assembler::equal, L_2TAG_PACKET_11_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3279
  negl(ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3280
  shrq(r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3281
  movq(rax, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3282
  shrq(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3283
  subl(edx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3284
  negl(ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3285
  addl(ecx, 64);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3286
  shlq(rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3287
  orq(r10, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3288
  jmp(L_2TAG_PACKET_11_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3289
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3290
  bind(L_2TAG_PACKET_4_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3291
  negl(ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3292
  shlq(r9, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3293
  orq(r9, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3294
  shlq(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3295
  movq(rdi, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3296
  testl(r9, INT_MIN);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3297
  jcc(Assembler::notEqual, L_2TAG_PACKET_13_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3298
  shrl(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3299
  movl(ebx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3300
  shrq(rdi, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3301
  jmp(L_2TAG_PACKET_7_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3302
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3303
  bind(L_2TAG_PACKET_5_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3304
  shrl(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3305
  movl(ebx, 536870912);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3306
  shrl(ebx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3307
  shlq(r9, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3308
  orq(r9, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3309
  shlq(rbx, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3310
  addl(rdi, 536870912);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3311
  movl(rcx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3312
  movl(r11, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3313
  subq(rcx, r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3314
  sbbq(r11, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3315
  sbbq(rbx, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3316
  movq(r8, rcx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3317
  movq(r10, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3318
  movq(r9, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3319
  movl(ebx, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3320
  jmp(L_2TAG_PACKET_6_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3321
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3322
  bind(L_2TAG_PACKET_13_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3323
  shrl(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3324
  mov64(rbx, 0x100000000);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3325
  shrq(rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3326
  movl(rcx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3327
  movl(r11, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3328
  subq(rcx, r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3329
  sbbq(r11, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3330
  sbbq(rbx, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3331
  movq(r8, rcx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3332
  movq(r10, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3333
  movq(r9, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3334
  movl(ebx, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3335
  shrq(rdi, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3336
  addl(rdi, 536870912);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3337
  jmp(L_2TAG_PACKET_7_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3338
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3339
  bind(L_2TAG_PACKET_3_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3340
  movq(xmm0, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3341
  mulsd(xmm0, ExternalAddress(NEG_ZERO));    //0x00000000UL, 0x80000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3342
  movq(Address(rsp, 0), xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3343
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3344
  bind(L_2TAG_PACKET_14_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3345
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3346
  bind(B1_4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3347
  addq(rsp, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3348
  pop(rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3349
}
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3350
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3351
/******************************************************************************/
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3352
//                     ALGORITHM DESCRIPTION - COS()
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3353
//                     ---------------------
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3354
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3355
//     1. RANGE REDUCTION
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3356
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3357
//     We perform an initial range reduction from X to r with
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3358
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3359
//          X =~= N * pi/32 + r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3360
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3361
//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3362
//     where |N| <= 932560. Beyond this, the range reduction is
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3363
//     insufficiently accurate. For extremely small inputs,
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3364
//     denormalization can occur internally, impacting performance.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3365
//     This means that the main path is actually only taken for
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3366
//     2^-252 <= |X| < 90112.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3367
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3368
//     To avoid branches, we perform the range reduction to full
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3369
//     accuracy each time.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3370
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3371
//          X - N * (P_1 + P_2 + P_3)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3372
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3373
//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3374
//     is exact) and P_3 is a 53-bit number. Together, these
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3375
//     approximate pi well enough for all cases in the restricted
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3376
//     range.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3377
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3378
//     The main reduction sequence is:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3379
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3380
//             y = 32/pi * x
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3381
//             N = integer(y)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3382
//     (computed by adding and subtracting off SHIFTER)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3383
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3384
//             m_1 = N * P_1
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3385
//             m_2 = N * P_2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3386
//             r_1 = x - m_1
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3387
//             r = r_1 - m_2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3388
//     (this r can be used for most of the calculation)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3389
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3390
//             c_1 = r_1 - r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3391
//             m_3 = N * P_3
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3392
//             c_2 = c_1 - m_2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3393
//             c = c_2 - m_3
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3394
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3395
//     2. MAIN ALGORITHM
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3396
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3397
//     The algorithm uses a table lookup based on B = M * pi / 32
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3398
//     where M = N mod 64. The stored values are:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3399
//       sigma             closest power of 2 to cos(B)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3400
//       C_hl              53-bit cos(B) - sigma
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3401
//       S_hi + S_lo       2 * 53-bit sin(B)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3402
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3403
//     The computation is organized as follows:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3404
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3405
//          sin(B + r + c) = [sin(B) + sigma * r] +
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3406
//                           r * (cos(B) - sigma) +
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3407
//                           sin(B) * [cos(r + c) - 1] +
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3408
//                           cos(B) * [sin(r + c) - r]
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3409
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3410
//     which is approximately:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3411
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3412
//          [S_hi + sigma * r] +
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3413
//          C_hl * r +
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3414
//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3415
//          (C_hl + sigma) * [(sin(r) - r) + c]
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3416
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3417
//     and this is what is actually computed. We separate this sum
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3418
//     into four parts:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3419
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3420
//          hi + med + pols + corr
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3421
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3422
//     where
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3423
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3424
//          hi       = S_hi + sigma r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3425
//          med      = C_hl * r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3426
//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3427
//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3428
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3429
//     3. POLYNOMIAL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3430
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3431
//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3432
//     (sin(r) - r) can be rearranged freely, since it is quite
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3433
//     small, so we exploit parallelism to the fullest.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3434
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3435
//          psc4       =   SC_4 * r_1
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3436
//          msc4       =   psc4 * r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3437
//          r2         =   r * r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3438
//          msc2       =   SC_2 * r2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3439
//          r4         =   r2 * r2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3440
//          psc3       =   SC_3 + msc4
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3441
//          psc1       =   SC_1 + msc2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3442
//          msc3       =   r4 * psc3
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3443
//          sincospols =   psc1 + msc3
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3444
//          pols       =   sincospols *
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3445
//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3446
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3447
//     4. CORRECTION TERM
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3448
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3449
//     This is where the "c" component of the range reduction is
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3450
//     taken into account; recall that just "r" is used for most of
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3451
//     the calculation.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3452
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3453
//          -c   = m_3 - c_2
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3454
//          -d   = S_hi * r - (C_hl + sigma)
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3455
//          corr = -c * -d + S_lo
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3456
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3457
//     5. COMPENSATED SUMMATIONS
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3458
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3459
//     The two successive compensated summations add up the high
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3460
//     and medium parts, leaving just the low parts to add up at
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3461
//     the end.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3462
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3463
//          rs        =  sigma * r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3464
//          res_int   =  S_hi + rs
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3465
//          k_0       =  S_hi - res_int
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3466
//          k_2       =  k_0 + rs
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3467
//          med       =  C_hl * r
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3468
//          res_hi    =  res_int + med
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3469
//          k_1       =  res_int - res_hi
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3470
//          k_3       =  k_1 + med
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3471
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3472
//     6. FINAL SUMMATION
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3473
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3474
//     We now add up all the small parts:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3475
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3476
//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3477
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3478
//     Now the overall result is just:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3479
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3480
//          res_hi + res_lo
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3481
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3482
//     7. SMALL ARGUMENTS
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3483
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3484
//     Inputs with |X| < 2^-252 are treated specially as
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3485
//     1 - |x|.
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3486
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3487
// Special cases:
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3488
//  cos(NaN) = quiet NaN, and raise invalid exception
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3489
//  cos(INF) = NaN and raise invalid exception
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3490
//  cos(0) = 1
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3491
//
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3492
/******************************************************************************/
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3493
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3494
ALIGNED_(8) juint _ONE[] =
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3495
{
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3496
    0x00000000UL, 0x3ff00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3497
};
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3498
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3499
void MacroAssembler::fast_cos(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register r8, Register r9, Register r10, Register r11) {
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3500
  Label L_2TAG_PACKET_0_0_1, L_2TAG_PACKET_1_0_1, L_2TAG_PACKET_2_0_1, L_2TAG_PACKET_3_0_1;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3501
  Label L_2TAG_PACKET_4_0_1, L_2TAG_PACKET_5_0_1, L_2TAG_PACKET_6_0_1, L_2TAG_PACKET_7_0_1;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3502
  Label L_2TAG_PACKET_8_0_1, L_2TAG_PACKET_9_0_1, L_2TAG_PACKET_10_0_1, L_2TAG_PACKET_11_0_1;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3503
  Label L_2TAG_PACKET_12_0_1, L_2TAG_PACKET_13_0_1, B1_2, B1_3, B1_4, B1_5, start;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3504
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3505
  assert_different_registers(r8, r9, r10, r11, eax, ecx, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3506
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3507
  address ONEHALF = (address)_ONEHALF;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3508
  address P_2 = (address)_P_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3509
  address SC_4 = (address)_SC_4;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3510
  address Ctable = (address)_Ctable;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3511
  address SC_2 = (address)_SC_2;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3512
  address SC_3 = (address)_SC_3;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3513
  address SC_1 = (address)_SC_1;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3514
  address PI_INV_TABLE = (address)_PI_INV_TABLE;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3515
  address PI_4 = (address)_PI_4;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3516
  address PI32INV = (address)_PI32INV;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3517
  address SIGN_MASK = (address)_SIGN_MASK;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3518
  address P_1 = (address)_P_1;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3519
  address P_3 = (address)_P_3;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3520
  address ONE = (address)_ONE;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3521
  address NEG_ZERO = (address)_NEG_ZERO;
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3522
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3523
  bind(start);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3524
  push(rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3525
  subq(rsp, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3526
  movsd(Address(rsp, 8), xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3527
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3528
  bind(B1_2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3529
  movl(eax, Address(rsp, 12));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3530
  movq(xmm1, ExternalAddress(PI32INV));    //0x6dc9c883UL, 0x40245f30UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3531
  andl(eax, 2147418112);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3532
  subl(eax, 808452096);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3533
  cmpl(eax, 281346048);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3534
  jcc(Assembler::above, L_2TAG_PACKET_0_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3535
  mulsd(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3536
  movdqu(xmm5, ExternalAddress(ONEHALF));    //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3537
  movq(xmm4, ExternalAddress(SIGN_MASK));    //0x00000000UL, 0x80000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3538
  pand(xmm4, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3539
  por(xmm5, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3540
  addpd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3541
  cvttsd2sil(edx, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3542
  cvtsi2sdl(xmm1, edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3543
  movdqu(xmm2, ExternalAddress(P_2));    //0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3544
  movq(xmm3, ExternalAddress(P_1));    //0x54400000UL, 0x3fb921fbUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3545
  mulsd(xmm3, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3546
  unpcklpd(xmm1, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3547
  addq(rdx, 1865232);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3548
  movdqu(xmm4, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3549
  andq(rdx, 63);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3550
  movdqu(xmm5, ExternalAddress(SC_4));    //0xa556c734UL, 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3551
  lea(rax, ExternalAddress(Ctable));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3552
  shlq(rdx, 5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3553
  addq(rax, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3554
  mulpd(xmm2, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3555
  subsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3556
  mulsd(xmm1, ExternalAddress(P_3));    //0x2e037073UL, 0x3b63198aUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3557
  subsd(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3558
  movq(xmm7, Address(rax, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3559
  unpcklpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3560
  movdqu(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3561
  subsd(xmm4, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3562
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3563
  subpd(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3564
  movdqu(xmm6, ExternalAddress(SC_2));    //0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3565
  mulsd(xmm7, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3566
  subsd(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3567
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3568
  mulpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3569
  subsd(xmm3, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3570
  movdqu(xmm2, Address(rax, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3571
  subsd(xmm1, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3572
  movq(xmm3, Address(rax, 24));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3573
  addsd(xmm2, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3574
  subsd(xmm7, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3575
  mulsd(xmm2, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3576
  mulpd(xmm6, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3577
  mulsd(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3578
  mulpd(xmm2, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3579
  mulpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3580
  addpd(xmm5, ExternalAddress(SC_3));    //0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3581
  mulsd(xmm4, Address(rax, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3582
  addpd(xmm6, ExternalAddress(SC_1));    //0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3583
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3584
  movdqu(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3585
  addsd(xmm3, Address(rax, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3586
  mulpd(xmm1, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3587
  movdqu(xmm7, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3588
  addsd(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3589
  addpd(xmm6, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3590
  movq(xmm5, Address(rax, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3591
  subsd(xmm5, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3592
  subsd(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3593
  addsd(xmm1, Address(rax, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3594
  mulpd(xmm6, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3595
  addsd(xmm0, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3596
  addsd(xmm3, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3597
  addsd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3598
  addsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3599
  addsd(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3600
  unpckhpd(xmm6, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3601
  addsd(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3602
  addsd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3603
  jmp(B1_4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3604
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3605
  bind(L_2TAG_PACKET_0_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3606
  jcc(Assembler::greater, L_2TAG_PACKET_1_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3607
  pextrw(eax, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3608
  andl(eax, 32767);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3609
  pinsrw(xmm0, eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3610
  movq(xmm1, ExternalAddress(ONE));    //0x00000000UL, 0x3ff00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3611
  subsd(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3612
  movdqu(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3613
  jmp(B1_4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3614
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3615
  bind(L_2TAG_PACKET_1_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3616
  pextrw(eax, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3617
  andl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3618
  cmpl(eax, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3619
  jcc(Assembler::equal, L_2TAG_PACKET_2_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3620
  pextrw(ecx, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3621
  andl(ecx, 32752);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3622
  subl(ecx, 16224);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3623
  shrl(ecx, 7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3624
  andl(ecx, 65532);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3625
  lea(r11, ExternalAddress(PI_INV_TABLE));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3626
  addq(rcx, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3627
  movdq(rax, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3628
  movl(r10, Address(rcx, 20));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3629
  movl(r8, Address(rcx, 24));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3630
  movl(edx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3631
  shrq(rax, 21);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3632
  orl(eax, INT_MIN);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3633
  shrl(eax, 11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3634
  movl(r9, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3635
  imulq(r10, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3636
  imulq(r9, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3637
  imulq(r8, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3638
  movl(rsi, Address(rcx, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3639
  movl(rdi, Address(rcx, 12));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3640
  movl(r11, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3641
  shrq(r10, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3642
  addq(r9, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3643
  addq(r11, r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3644
  movl(r8, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3645
  shrq(r11, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3646
  addq(r9, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3647
  movl(r10, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3648
  imulq(rsi, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3649
  imulq(r10, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3650
  movl(r11, rdi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3651
  imulq(rdi, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3652
  movl(rbx, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3653
  shrq(rsi, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3654
  addq(r9, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3655
  movl(rbx, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3656
  shrq(r9, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3657
  addq(r10, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3658
  addq(r10, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3659
  shlq(rbx, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3660
  orq(r8, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3661
  imulq(r11, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3662
  movl(r9, Address(rcx, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3663
  movl(rsi, Address(rcx, 4));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3664
  movl(rbx, rdi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3665
  shrq(rdi, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3666
  addq(r10, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3667
  movl(rbx, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3668
  shrq(r10, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3669
  addq(r11, rdi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3670
  addq(r11, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3671
  movq(rdi, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3672
  imulq(r9, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3673
  imulq(rdi, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3674
  movl(r10, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3675
  shrq(r9, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3676
  addq(r11, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3677
  movl(r10, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3678
  shrq(r11, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3679
  addq(rdi, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3680
  addq(rdi, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3681
  movq(r9, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3682
  imulq(rsi, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3683
  imulq(r9, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3684
  shlq(r10, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3685
  orq(r10, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3686
  movl(eax, Address(rcx, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3687
  movl(r11, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3688
  shrq(rsi, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3689
  addq(rdi, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3690
  movl(r11, rdi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3691
  shrq(rdi, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3692
  addq(r9, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3693
  addq(r9, rdi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3694
  imulq(rdx, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3695
  pextrw(rbx, xmm0, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3696
  lea(rdi, ExternalAddress(PI_INV_TABLE));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3697
  subq(rcx, rdi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3698
  addl(ecx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3699
  addl(ecx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3700
  addl(ecx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3701
  addl(ecx, 19);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3702
  movl(rsi, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3703
  andl(rsi, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3704
  shrl(rbx, 4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3705
  andl(rbx, 2047);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3706
  subl(rbx, 1023);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3707
  subl(ecx, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3708
  addq(r9, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3709
  movl(edx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3710
  addl(edx, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3711
  cmpl(ecx, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3712
  jcc(Assembler::less, L_2TAG_PACKET_3_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3713
  negl(ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3714
  addl(ecx, 29);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3715
  shll(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3716
  movl(rdi, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3717
  andl(r9, 536870911);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3718
  testl(r9, 268435456);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3719
  jcc(Assembler::notEqual, L_2TAG_PACKET_4_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3720
  shrl(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3721
  movl(rbx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3722
  shlq(r9, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3723
  orq(r9, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3724
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3725
  bind(L_2TAG_PACKET_5_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3726
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3727
  bind(L_2TAG_PACKET_6_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3728
  cmpq(r9, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3729
  jcc(Assembler::equal, L_2TAG_PACKET_7_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3730
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3731
  bind(L_2TAG_PACKET_8_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3732
  bsrq(r11, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3733
  movl(ecx, 29);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3734
  subl(ecx, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3735
  jcc(Assembler::lessEqual, L_2TAG_PACKET_9_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3736
  shlq(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3737
  movq(rax, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3738
  shlq(r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3739
  addl(edx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3740
  negl(ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3741
  addl(ecx, 64);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3742
  shrq(rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3743
  shrq(r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3744
  orq(r9, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3745
  orq(r10, r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3746
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3747
  bind(L_2TAG_PACKET_10_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3748
  cvtsi2sdq(xmm0, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3749
  shrq(r10, 1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3750
  cvtsi2sdq(xmm3, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3751
  xorpd(xmm4, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3752
  shll(edx, 4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3753
  negl(edx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3754
  addl(edx, 16368);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3755
  orl(edx, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3756
  xorl(edx, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3757
  pinsrw(xmm4, edx, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3758
  movq(xmm2, ExternalAddress(PI_4));    //0x40000000UL, 0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3759
  movq(xmm6, ExternalAddress(8 + PI_4));    //0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3760
  xorpd(xmm5, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3761
  subl(edx, 1008);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3762
  pinsrw(xmm5, edx, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3763
  mulsd(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3764
  shll(rsi, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3765
  sarl(rsi, 31);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3766
  mulsd(xmm3, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3767
  movdqu(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3768
  mulsd(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3769
  shrl(rdi, 29);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3770
  addsd(xmm1, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3771
  mulsd(xmm3, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3772
  addl(rdi, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3773
  xorl(rdi, rsi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3774
  mulsd(xmm6, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3775
  movl(eax, rdi);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3776
  addsd(xmm6, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3777
  movdqu(xmm2, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3778
  addsd(xmm0, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3779
  subsd(xmm2, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3780
  addsd(xmm6, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3781
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3782
  bind(L_2TAG_PACKET_11_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3783
  movq(xmm1, ExternalAddress(PI32INV));    //0x6dc9c883UL, 0x40245f30UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3784
  mulsd(xmm1, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3785
  movq(xmm5, ExternalAddress(ONEHALF));    //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3786
  movq(xmm4, ExternalAddress(SIGN_MASK));    //0x00000000UL, 0x80000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3787
  pand(xmm4, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3788
  por(xmm5, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3789
  addpd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3790
  cvttsd2siq(rdx, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3791
  cvtsi2sdq(xmm1, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3792
  movq(xmm3, ExternalAddress(P_1));    //0x54400000UL, 0x3fb921fbUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3793
  movdqu(xmm2, ExternalAddress(P_2));    //0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3794
  mulsd(xmm3, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3795
  unpcklpd(xmm1, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3796
  shll(eax, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3797
  addl(edx, 1865232);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3798
  movdqu(xmm4, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3799
  addl(edx, eax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3800
  andl(edx, 63);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3801
  movdqu(xmm5, ExternalAddress(SC_4));    //0xa556c734UL, 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3802
  lea(rax, ExternalAddress(Ctable));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3803
  shll(edx, 5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3804
  addq(rax, rdx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3805
  mulpd(xmm2, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3806
  subsd(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3807
  mulsd(xmm1, ExternalAddress(P_3));    //0x2e037073UL, 0x3b63198aUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3808
  subsd(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3809
  movq(xmm7, Address(rax, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3810
  unpcklpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3811
  movdqu(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3812
  subsd(xmm4, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3813
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3814
  subpd(xmm0, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3815
  mulsd(xmm7, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3816
  subsd(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3817
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3818
  mulpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3819
  subsd(xmm3, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3820
  movdqu(xmm2, Address(rax, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3821
  subsd(xmm1, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3822
  movq(xmm3, Address(rax, 24));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3823
  addsd(xmm2, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3824
  subsd(xmm7, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3825
  subsd(xmm1, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3826
  movdqu(xmm6, ExternalAddress(SC_2));    //0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3827
  mulsd(xmm2, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3828
  mulpd(xmm6, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3829
  mulsd(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3830
  mulpd(xmm2, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3831
  mulpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3832
  addpd(xmm5, ExternalAddress(SC_3));    //0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3833
  mulsd(xmm4, Address(rax, 0));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3834
  addpd(xmm6, ExternalAddress(SC_1));    //0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3835
  mulpd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3836
  movdqu(xmm0, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3837
  addsd(xmm3, Address(rax, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3838
  mulpd(xmm1, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3839
  movdqu(xmm7, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3840
  addsd(xmm4, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3841
  addpd(xmm6, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3842
  movq(xmm5, Address(rax, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3843
  subsd(xmm5, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3844
  subsd(xmm3, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3845
  addsd(xmm1, Address(rax, 16));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3846
  mulpd(xmm6, xmm2);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3847
  addsd(xmm5, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3848
  addsd(xmm3, xmm7);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3849
  addsd(xmm1, xmm5);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3850
  addsd(xmm1, xmm3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3851
  addsd(xmm1, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3852
  unpckhpd(xmm6, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3853
  movdqu(xmm0, xmm4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3854
  addsd(xmm1, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3855
  addsd(xmm0, xmm1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3856
  jmp(B1_4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3857
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3858
  bind(L_2TAG_PACKET_7_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3859
  addl(edx, 64);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3860
  movq(r9, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3861
  movq(r10, r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3862
  movl(r8, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3863
  cmpq(r9, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3864
  jcc(Assembler::notEqual, L_2TAG_PACKET_8_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3865
  addl(edx, 64);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3866
  movq(r9, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3867
  movq(r10, r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3868
  cmpq(r9, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3869
  jcc(Assembler::notEqual, L_2TAG_PACKET_8_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3870
  xorpd(xmm0, xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3871
  xorpd(xmm6, xmm6);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3872
  jmp(L_2TAG_PACKET_11_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3873
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3874
  bind(L_2TAG_PACKET_9_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3875
  jcc(Assembler::equal, L_2TAG_PACKET_10_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3876
  negl(ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3877
  shrq(r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3878
  movq(rax, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3879
  shrq(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3880
  subl(edx, ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3881
  negl(ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3882
  addl(ecx, 64);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3883
  shlq(rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3884
  orq(r10, rax);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3885
  jmp(L_2TAG_PACKET_10_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3886
  bind(L_2TAG_PACKET_3_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3887
  negl(ecx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3888
  shlq(r9, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3889
  orq(r9, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3890
  shlq(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3891
  movq(rdi, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3892
  testl(r9, INT_MIN);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3893
  jcc(Assembler::notEqual, L_2TAG_PACKET_12_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3894
  shrl(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3895
  movl(rbx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3896
  shrq(rdi, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3897
  jmp(L_2TAG_PACKET_6_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3898
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3899
  bind(L_2TAG_PACKET_4_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3900
  shrl(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3901
  movl(rbx, 536870912);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3902
  shrl(rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3903
  shlq(r9, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3904
  orq(r9, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3905
  shlq(rbx, 32);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3906
  addl(rdi, 536870912);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3907
  movl(rcx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3908
  movl(r11, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3909
  subq(rcx, r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3910
  sbbq(r11, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3911
  sbbq(rbx, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3912
  movq(r8, rcx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3913
  movq(r10, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3914
  movq(r9, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3915
  movl(rbx, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3916
  jmp(L_2TAG_PACKET_5_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3917
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3918
  bind(L_2TAG_PACKET_12_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3919
  shrl(r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3920
  mov64(rbx, 0x100000000);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3921
  shrq(rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3922
  movl(rcx, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3923
  movl(r11, 0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3924
  subq(rcx, r8);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3925
  sbbq(r11, r10);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3926
  sbbq(rbx, r9);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3927
  movq(r8, rcx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3928
  movq(r10, r11);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3929
  movq(r9, rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3930
  movl(rbx, 32768);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3931
  shrq(rdi, 3);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3932
  addl(rdi, 536870912);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3933
  jmp(L_2TAG_PACKET_6_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3934
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3935
  bind(L_2TAG_PACKET_2_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3936
  movsd(xmm0, Address(rsp, 8));
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3937
  mulsd(xmm0, ExternalAddress(NEG_ZERO));    //0x00000000UL, 0x80000000UL
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3938
  movq(Address(rsp, 0), xmm0);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3939
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3940
  bind(L_2TAG_PACKET_13_0_1);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3941
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3942
  bind(B1_4);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3943
  addq(rsp, 16);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3944
  pop(rbx);
e001ad24dcdb 8143353: update for x86 sin and cos in the math lib
vdeshpande
parents:
diff changeset
  3945
}