You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2258 lines
66 KiB
2258 lines
66 KiB
; Copyright (C) 1985-2000 Intel Corporation.
|
|
;
|
|
; The information and source code contained herein is the exclusive property
|
|
; of Intel Corporation and may not be disclosed, examined, or reproduced in
|
|
; whole or in part without explicit written authorization from the Company.
|
|
;
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;
|
|
; pow_p4.asm
|
|
;
|
|
; double pow(double,double);
|
|
;
|
|
; Initial version: 01/10/2001
|
|
; Update (bug fixes): 02/26/2001
|
|
; Updated the underflow/overflow path
|
|
; to restore edi, esi in the correct order: 03/07/2001
|
|
;
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;;
|
|
;; x=2^k*1.b1 b2...b6 b7 .. b52 x1=1.b1..b52
|
|
;; f1=(b1 b2 ..b7 +1)/2
|
|
;; x2=x1*rcp_t1[f1]=b'0.b'1 b'2 ... b'52 b'53 (b'53=0 if b'0=1)
|
|
;; f2=(b'7 ..b'14 +1)/2
|
|
;; x3=x2*rcp_t2[f2]=b"0.b"1 b"2 ... b"52 b"53 (b"53=0 if b"0=1)
|
|
;; f3=(b"13 ..b"21+1)/2
|
|
;; R=x3*rcp_t3[f3]
|
|
;; rcp=rcp_t1[f1]*rcp_t2[f2]*rcp_t3[f3] (exact multiplication)
|
|
;; E=exact_mul(rcp*x1)-R
|
|
;; R'=RN(R+E)
|
|
;;
|
|
;; H=RN(RN(k+T1[f1]+T2[f2]+T3[f3]+R)+E) (high part of log2(x) approximation)
|
|
;; Rl+El=exact(k+T1[f1]+T2[f2]+T3[f3]+R+E)-H
|
|
;;
|
|
;; Exponential evaluation started with approximate argument yH*HH (exact
|
|
;; product of the most significant 26 bits of y and H)
|
|
;; Correction added to exponential reduced argument:
|
|
;; yH*HL+yL*HH+yL*HL+y*(D1+D2+D3+(Rl+El)+Pl14),
|
|
;; where Pl14=cl1*R'+...+cl4*R'^4
|
|
;;
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
.686P
|
|
.387
|
|
.XMM
|
|
.MODEL FLAT,C
|
|
|
|
EXTRN C __libm_error_support : NEAR
|
|
|
|
|
|
|
|
CONST SEGMENT PARA PUBLIC USE32 'CONST'
|
|
ALIGN 16
|
|
|
|
rcp_t1 DQ 03ff0000000000000H, 03fefc08000000000H
|
|
DQ 03fef820000000000H, 03fef448000000000H
|
|
DQ 03fef07c000000000H, 03feecc0000000000H
|
|
DQ 03fee914000000000H, 03fee574000000000H
|
|
DQ 03fee1e0000000000H, 03fede5c000000000H
|
|
DQ 03fedae8000000000H, 03fed77c000000000H
|
|
DQ 03fed41c000000000H, 03fed0cc000000000H
|
|
DQ 03fecd84000000000H, 03feca4c000000000H
|
|
DQ 03fec71c000000000H, 03fec3f8000000000H
|
|
DQ 03fec0e0000000000H, 03febdd4000000000H
|
|
DQ 03febad0000000000H, 03feb7d8000000000H
|
|
DQ 03feb4e8000000000H, 03feb204000000000H
|
|
DQ 03feaf28000000000H, 03feac58000000000H
|
|
DQ 03fea990000000000H, 03fea6d0000000000H
|
|
DQ 03fea41c000000000H, 03fea16c000000000H
|
|
DQ 03fe9ec8000000000H, 03fe9c2c000000000H
|
|
DQ 03fe9998000000000H, 03fe9710000000000H
|
|
DQ 03fe948c000000000H, 03fe9210000000000H
|
|
DQ 03fe8f9c000000000H, 03fe8d30000000000H
|
|
DQ 03fe8acc000000000H, 03fe8870000000000H
|
|
DQ 03fe8618000000000H, 03fe83c8000000000H
|
|
DQ 03fe8180000000000H, 03fe7f40000000000H
|
|
DQ 03fe7d04000000000H, 03fe7ad4000000000H
|
|
DQ 03fe78a4000000000H, 03fe767c000000000H
|
|
DQ 03fe745c000000000H, 03fe7244000000000H
|
|
DQ 03fe7030000000000H, 03fe6e20000000000H
|
|
DQ 03fe6c18000000000H, 03fe6a14000000000H
|
|
DQ 03fe6818000000000H, 03fe6620000000000H
|
|
DQ 03fe642c000000000H, 03fe6240000000000H
|
|
DQ 03fe6058000000000H, 03fe5e74000000000H
|
|
DQ 03fe5c98000000000H, 03fe5ac0000000000H
|
|
DQ 03fe58ec000000000H, 03fe5720000000000H
|
|
DQ 03fe5554000000000H, 03fe5390000000000H
|
|
DQ 03fe51d0000000000H, 03fe5014000000000H
|
|
DQ 03fe4e60000000000H, 03fe4cac000000000H
|
|
DQ 03fe4afc000000000H, 03fe4954000000000H
|
|
DQ 03fe47b0000000000H, 03fe460c000000000H
|
|
DQ 03fe4470000000000H, 03fe42d8000000000H
|
|
DQ 03fe4140000000000H, 03fe3fb0000000000H
|
|
DQ 03fe3e24000000000H, 03fe3c98000000000H
|
|
DQ 03fe3b14000000000H, 03fe3990000000000H
|
|
DQ 03fe3814000000000H, 03fe3698000000000H
|
|
DQ 03fe3520000000000H, 03fe33b0000000000H
|
|
DQ 03fe3240000000000H, 03fe30d0000000000H
|
|
DQ 03fe2f68000000000H, 03fe2e04000000000H
|
|
DQ 03fe2ca0000000000H, 03fe2b40000000000H
|
|
DQ 03fe29e4000000000H, 03fe288c000000000H
|
|
DQ 03fe2734000000000H, 03fe25e4000000000H
|
|
DQ 03fe2494000000000H, 03fe2344000000000H
|
|
DQ 03fe21fc000000000H, 03fe20b4000000000H
|
|
DQ 03fe1f70000000000H, 03fe1e30000000000H
|
|
DQ 03fe1cf0000000000H, 03fe1bb4000000000H
|
|
DQ 03fe1a7c000000000H, 03fe1944000000000H
|
|
DQ 03fe1810000000000H, 03fe16e0000000000H
|
|
DQ 03fe15b0000000000H, 03fe1484000000000H
|
|
DQ 03fe135c000000000H, 03fe1234000000000H
|
|
DQ 03fe1110000000000H, 03fe0ff0000000000H
|
|
DQ 03fe0ed0000000000H, 03fe0db4000000000H
|
|
DQ 03fe0c98000000000H, 03fe0b80000000000H
|
|
DQ 03fe0a68000000000H, 03fe0954000000000H
|
|
DQ 03fe0844000000000H, 03fe0734000000000H
|
|
DQ 03fe0624000000000H, 03fe0518000000000H
|
|
DQ 03fe0410000000000H, 03fe0308000000000H
|
|
DQ 03fe0204000000000H, 03fe0100000000000H
|
|
DQ 03fe0000000000000H, 0
|
|
|
|
log2_t1 DQ 0, 0
|
|
DQ 03f86fdf461d20000H, 03d3c9efc46d9f6f7H
|
|
DQ 03f96e625317a0000H, 03d453f0e645614dbH
|
|
DQ 03fa11a6297920000H, 03d4d925cd7d436d6H
|
|
DQ 03fa6bb01a01f0000H, 03d3c995e7439db70H
|
|
DQ 03fac4eb3635c8000H, 03d4a8192bdcad609H
|
|
DQ 03fb0ea8b80338000H, 03d4e1797942f1be5H
|
|
DQ 03fb3a9f062a90000H, 03d3011ef2e155a44H
|
|
DQ 03fb665684ff80000H, 03d3084f28da93fafH
|
|
DQ 03fb919bc335d0000H, 03d246082ed03fe7fH
|
|
DQ 03fbbc6b9d7c04000H, 03d45b7e842652658H
|
|
DQ 03fbe7272e1dc8000H, 03d4a2ea92333a25cH
|
|
DQ 03fc08cd7820ec000H, 03d3543c511b40206H
|
|
DQ 03fc1dc8f3a33c000H, 03d45598cab6d744cH
|
|
DQ 03fc32b7a27af4000H, 03d07aba1fd6522b1H
|
|
DQ 03fc476564c740000H, 03d4dc39f249b8f70H
|
|
DQ 03fc5c04864906000H, 03d28c5d47e5f3668H
|
|
DQ 03fc707a4ef786000H, 03d4f86ea591de6f8H
|
|
DQ 03fc84c59fac38000H, 03d435cd351b14a77H
|
|
DQ 03fc98e556aacc000H, 03d341c88d156ee10H
|
|
DQ 03fcacf30032be000H, 03d2e3733debf9165H
|
|
DQ 03fcc0d3213ae6000H, 03d4b15bcb18be2edH
|
|
DQ 03fcd49f9d6d66000H, 03d30b557c2a12d29H
|
|
DQ 03fce83c98a2d0000H, 03d442af5d10d18f2H
|
|
DQ 03fcfbc44e396e000H, 03d47b3f928665437H
|
|
DQ 03fd078d40936e000H, 03d38f1f608125902H
|
|
DQ 03fd112ce25b29000H, 03d3c851c0f45bae5H
|
|
DQ 03fd1ac0b77e3f000H, 03d3f97100b047ea3H
|
|
DQ 03fd243a590d2b000H, 03d3c9b75e8e9d45dH
|
|
DQ 03fd2db57ad935000H, 03cf934f5238ac23eH
|
|
DQ 03fd37158be940000H, 03d4a16d142e3f4deH
|
|
DQ 03fd40684445fb000H, 03d469ba14bfbfc6dH
|
|
DQ 03fd49ad4a118d000H, 03d45cd377302cca5H
|
|
DQ 03fd52d5be2114000H, 03d3a83640f883e4bH
|
|
DQ 03fd5bfe367828000H, 03d49755c3dea7d5aH
|
|
DQ 03fd6517e94738000H, 03d4e8a28223a67c4H
|
|
DQ 03fd6e22792ef1000H, 03d314f240e7e9039H
|
|
DQ 03fd771d87fd10000H, 03d258aaf31d36edbH
|
|
DQ 03fd8008b6b297000H, 03d1605b88ccad976H
|
|
DQ 03fd88e3a58a56000H, 03d2097ff572e71dfH
|
|
DQ 03fd91bd19e695000H, 03d4dbb3ee4f6c667H
|
|
DQ 03fd9a85babbe1000H, 03d4d889a0a61b2d6H
|
|
DQ 03fda33d25fcb1000H, 03d4f5875d92c8dd6H
|
|
DQ 03fdabe2f8ec96000H, 03d3c773190e2cc83H
|
|
DQ 03fdb4865273ed000H, 03d4ab54a099e1f60H
|
|
DQ 03fdbd07e0e781000H, 03d268ac21c0dcf20H
|
|
DQ 03fdc5960ba6e1000H, 03d43b4bd96cb81feH
|
|
DQ 03fdce1168b913000H, 03d2fada3055d19e2H
|
|
DQ 03fdd679920231000H, 03d18ed5096e87504H
|
|
DQ 03fddece20dffc000H, 03d43e26c2ced8aaaH
|
|
DQ 03fde71ebad35f000H, 03d011609e08e95e1H
|
|
DQ 03fdef6b3d3444000H, 03d40b35b2d1614faH
|
|
DQ 03fdf7a349e747000H, 03d4a6e7081d99120H
|
|
DQ 03fdffd6c9e8cc000H, 03cfa67452e86699dH
|
|
DQ 03fe03fa97e79f000H, 03d275e12e74f8beeH
|
|
DQ 03fe080748d542800H, 03d3b8c3b78ce0adbH
|
|
DQ 03fe0c11650cf0000H, 03d461752eb1152a5H
|
|
DQ 03fe1010826b18000H, 03d4ea3c98a07d258H
|
|
DQ 03fe140ccdd4ae800H, 03d1fcada197ed2c1H
|
|
DQ 03fe180633d744800H, 03d22551707e07a41H
|
|
DQ 03fe1bf426e8e9800H, 03d376aff6c055f55H
|
|
DQ 03fe1fdef5db3a000H, 03d4442de8501d871H
|
|
DQ 03fe23c68c8201000H, 03d270c749129a57aH
|
|
DQ 03fe27a23a05a8000H, 03d4cb0ea30b214a6H
|
|
DQ 0bfda8f9d1c354000H, 0bd4604f54f4f9853H
|
|
DQ 0bfda1506aee3b000H, 0bd44ff93dbb28c80H
|
|
DQ 0bfd99ae48aa53000H, 0bd0e6ed7003dfdf5H
|
|
DQ 0bfd9213957df2000H, 0bd3e186ac01b3f7fH
|
|
DQ 0bfd8a9228a043000H, 0bd49bc20cf8dd883H
|
|
DQ 0bfd8306ebf51c000H, 0bd45c8266e480596H
|
|
DQ 0bfd7b83a057f9000H, 0bd35f4f79f443745H
|
|
DQ 0bfd741a637fca000H, 0bd4025f49ff0180dH
|
|
DQ 0bfd6cb99e7aa4000H, 0bd412b5ad5a7002aH
|
|
DQ 0bfd654f5e853d000H, 0bd44c7008c4a72a7H
|
|
DQ 0bfd5dfff91d34000H, 0bd3f544ed390ba95H
|
|
DQ 0bfd56b9933779000H, 0bd391dc031bae772H
|
|
DQ 0bfd4f69f5d830000H, 0bd38f36dd24bae46H
|
|
DQ 0bfd483602143d000H, 0bce09c599a327931H
|
|
DQ 0bfd410b98a0d4000H, 0bd156a3c28e8042aH
|
|
DQ 0bfd39d83e4060000H, 0bd447f1643c10456H
|
|
DQ 0bfd32c15f8b57000H, 0bd0d6ee2e01d9231H
|
|
DQ 0bfd2ba1c0891f000H, 0bd3795076c3da632H
|
|
DQ 0bfd249f2ada03000H, 0bd2a7809feb5964fH
|
|
DQ 0bfd1d9406c900000H, 0bd4546d73ea7c032H
|
|
DQ 0bfd16935d34fb000H, 0bd2151c6348d84a4H
|
|
DQ 0bfd0fb093a3fd000H, 0bd2bacac000943a5H
|
|
DQ 0bfd08c588cda7000H, 0bd43c72c4f78dfa1H
|
|
DQ 0bfd01d228cf40000H, 0bd3c6972c813e541H
|
|
DQ 0bfcf5faa7e71a000H, 0bd3d157620c552c1H
|
|
DQ 0bfce867e093dc000H, 0bd366fa6f3fffcc0H
|
|
DQ 0bfcdac50fe6d4000H, 0bd2b6484bb8f2009H
|
|
DQ 0bfccd398e83e8000H, 0bd05f5cde492c839H
|
|
DQ 0bfcbfc5c1d5be000H, 0bd2784900e42b538H
|
|
DQ 0bfcb26a0fb83e000H, 0bd4a5b99e91f69b7H
|
|
DQ 0bfca4fed5abba000H, 0bd45976e8062c61fH
|
|
DQ 0bfc97d45e2448000H, 0bd401c636755cd02H
|
|
DQ 0bfc8a9ad0948a000H, 0bd4c89ba64f25a55H
|
|
DQ 0bfc7d520a4220000H, 0bd216a44d008a53dH
|
|
DQ 0bfc704b6c17f0000H, 0bd413a806d56d6eeH
|
|
DQ 0bfc633609cb64000H, 0bd33f125177ec11cH
|
|
DQ 0bfc563adff6b0000H, 0bd4d0837079422c3H
|
|
DQ 0bfc495a582ff2000H, 0bd3ebd9313709ef4H
|
|
DQ 0bfc3c6b62529a000H, 0bd42d2b08296bf5cH
|
|
DQ 0bfc2f9786ad2e000H, 0bd3b5188c2483623H
|
|
DQ 0bfc22df302746000H, 0bd3048e3c2505d3dH
|
|
DQ 0bfc1618c543b8000H, 0bd45b8d6a3b61bd1H
|
|
DQ 0bfc096e5a2260000H, 0bd4bde98232d61f6H
|
|
DQ 0bfbf9c0b5c568000H, 0bd4d3483b7a56256H
|
|
DQ 0bfbe089492ee4000H, 0bd405589fcd57f86H
|
|
DQ 0bfbc78bae5580000H, 0bd35351d0387c197H
|
|
DQ 0bfbaec8bfaf64000H, 0bd3d13cbabea0e44H
|
|
DQ 0bfb95eb24969c000H, 0bd3727fab299d747H
|
|
DQ 0bfb7d49341a08000H, 0bd4eeef8bcf7aa55H
|
|
DQ 0bfb64e3caa930000H, 0bd31aad2031e3ecaH
|
|
DQ 0bfb4c647d2ea8000H, 0bceb43c4115c4fb7H
|
|
DQ 0bfb3422b94a24000H, 0bd421b493a67e318H
|
|
DQ 0bfb1bc75cf5a4000H, 0bd4d7db2139e8397H
|
|
DQ 0bfb03aa8f8dc8000H, 0bd153121e9af5428H
|
|
DQ 0bfad6e8ef48f8000H, 0bd38293c51765dbcH
|
|
DQ 0bfaa6fbed7680000H, 0bd2b1c66db7cd724H
|
|
DQ 0bfa778fdc1828000H, 0bd34378af2af5332H
|
|
DQ 0bfa47f2e22550000H, 0bd2a424693c56dcdH
|
|
DQ 0bfa18249a5368000H, 0bd441b0d5fdf534bH
|
|
DQ 0bf9d1b35ee200000H, 0bd431fb72db4f24dH
|
|
DQ 0bf97427d317a0000H, 0bd4700f14b03b093H
|
|
DQ 0bf9163d20d100000H, 0bd46e8b9664fe33fH
|
|
DQ 0bf872c1f4cf00000H, 0bd2b4934580fe573H
|
|
DQ 0bf7709c46d780000H, 0bd4563ba56cde924H
|
|
DQ 0H, 0H
|
|
|
|
|
|
rcp_t2 DQ 03ff0000000000000H, 03fefff4000000000H
|
|
DQ 03feffe4000000000H, 03feffd4000000000H
|
|
DQ 03feffc4000000000H, 03feffb4000000000H
|
|
DQ 03feffa4000000000H, 03feff94000000000H
|
|
DQ 03feff84000000000H, 03feff74000000000H
|
|
DQ 03feff64000000000H, 03feff54000000000H
|
|
DQ 03feff44000000000H, 03feff34000000000H
|
|
DQ 03feff24000000000H, 03feff14000000000H
|
|
DQ 03feff04000000000H, 03fefef4000000000H
|
|
DQ 03fefee4000000000H, 03fefed4000000000H
|
|
DQ 03fefec4000000000H, 03fefeb4000000000H
|
|
DQ 03fefea4000000000H, 03fefe94000000000H
|
|
DQ 03fefe84000000000H, 03fefe74000000000H
|
|
DQ 03fefe64000000000H, 03fefe54000000000H
|
|
DQ 03fefe44000000000H, 03fefe34000000000H
|
|
DQ 03fefe24000000000H, 03fefe14000000000H
|
|
DQ 03fefe04000000000H, 03fefdf4000000000H
|
|
DQ 03fefde4000000000H, 03fefdd4000000000H
|
|
DQ 03fefdc4000000000H, 03fefdb4000000000H
|
|
DQ 03fefda4000000000H, 03fefd94000000000H
|
|
DQ 03fefd84000000000H, 03fefd74000000000H
|
|
DQ 03fefd64000000000H, 03fefd54000000000H
|
|
DQ 03fefd44000000000H, 03fefd34000000000H
|
|
DQ 03fefd28000000000H, 03fefd18000000000H
|
|
DQ 03fefd08000000000H, 03fefcf8000000000H
|
|
DQ 03fefce8000000000H, 03fefcd8000000000H
|
|
DQ 03fefcc8000000000H, 03fefcb8000000000H
|
|
DQ 03fefca8000000000H, 03fefc98000000000H
|
|
DQ 03fefc88000000000H, 03fefc78000000000H
|
|
DQ 03fefc68000000000H, 03fefc58000000000H
|
|
DQ 03fefc48000000000H, 03fefc38000000000H
|
|
DQ 03fefc28000000000H, 03fefc18000000000H
|
|
DQ 03ff0100000000000H, 03ff00fc000000000H
|
|
DQ 03ff00f8000000000H, 03ff00f4000000000H
|
|
DQ 03ff00f0000000000H, 03ff00ec000000000H
|
|
DQ 03ff00e8000000000H, 03ff00e4000000000H
|
|
DQ 03ff00e0000000000H, 03ff00dc000000000H
|
|
DQ 03ff00d8000000000H, 03ff00d4000000000H
|
|
DQ 03ff00d0000000000H, 03ff00cc000000000H
|
|
DQ 03ff00c8000000000H, 03ff00c4000000000H
|
|
DQ 03ff00c0000000000H, 03ff00bc000000000H
|
|
DQ 03ff00b8000000000H, 03ff00b4000000000H
|
|
DQ 03ff00b0000000000H, 03ff00ac000000000H
|
|
DQ 03ff00a8000000000H, 03ff00a4000000000H
|
|
DQ 03ff00a0000000000H, 03ff009c000000000H
|
|
DQ 03ff0098000000000H, 03ff0094000000000H
|
|
DQ 03ff0090000000000H, 03ff008c000000000H
|
|
DQ 03ff0088000000000H, 03ff0084000000000H
|
|
DQ 03ff0080000000000H, 03ff007c000000000H
|
|
DQ 03ff0078000000000H, 03ff0074000000000H
|
|
DQ 03ff0070000000000H, 03ff006c000000000H
|
|
DQ 03ff0068000000000H, 03ff0064000000000H
|
|
DQ 03ff0060000000000H, 03ff005c000000000H
|
|
DQ 03ff0058000000000H, 03ff0054000000000H
|
|
DQ 03ff0050000000000H, 03ff004c000000000H
|
|
DQ 03ff0048000000000H, 03ff0044000000000H
|
|
DQ 03ff0040000000000H, 03ff003c000000000H
|
|
DQ 03ff0038000000000H, 03ff0034000000000H
|
|
DQ 03ff0030000000000H, 03ff002c000000000H
|
|
DQ 03ff0028000000000H, 03ff0024000000000H
|
|
DQ 03ff0020000000000H, 03ff001c000000000H
|
|
DQ 03ff0018000000000H, 03ff0014000000000H
|
|
DQ 03ff0010000000000H, 03ff000c000000000H
|
|
DQ 03ff0008000000000H, 03ff0004000000000H
|
|
DQ 03ff0000000000000H, 0
|
|
|
|
|
|
log2_t2 DQ 0, 0
|
|
DQ 03f2150297c800000H, 03d210909f6306155H
|
|
DQ 03f34332be0000000H, 03d09518ce032f41dH
|
|
DQ 03f3fbe9f60c00000H, 03d4ac9bc570c3b37H
|
|
DQ 03f45a537a3600000H, 03d4325006127af86H
|
|
DQ 03f4b6b4dcbc00000H, 03d3c621fbc9e2ad6H
|
|
DQ 03f5098c916300000H, 03d3f7aec2cad082aH
|
|
DQ 03f537c0264100000H, 03d4bdf2754a94bbeH
|
|
DQ 03f565f52d1000000H, 03d46f089976214ecH
|
|
DQ 03f5942ba5e700000H, 03d2645f4fefad48aH
|
|
DQ 03f5c26390dc00000H, 03d394ecb87dff47fH
|
|
DQ 03f5f09cee0700000H, 03d415d326245addfH
|
|
DQ 03f60f6bdebf80000H, 03d492366d5b7121cH
|
|
DQ 03f62689ffae00000H, 03d3360481790324fH
|
|
DQ 03f63da8d9da00000H, 03d31fe61b7973265H
|
|
DQ 03f654c86d4f00000H, 03d4d5202bf82be32H
|
|
DQ 03f66be8ba1980000H, 03d3a5f8d1a33f641H
|
|
DQ 03f68309c04400000H, 03d4f65693283bc5bH
|
|
DQ 03f69a2b7fdb00000H, 03d4b05a072311cdeH
|
|
DQ 03f6b14df8ea00000H, 03d2da3ce84a38084H
|
|
DQ 03f6c8712b7c00000H, 03d385b88ccf9e4bcH
|
|
DQ 03f6df95179d00000H, 03d4138577c1eb13eH
|
|
DQ 03f6f6b9bd5880000H, 03d4eb2dd71123ec2H
|
|
DQ 03f706ef8e5d40000H, 03d4d0d7b6d01207aH
|
|
DQ 03f712829ae740000H, 03d44fe53f52c6d10H
|
|
DQ 03f71e16045000000H, 03d3f031f657d9491H
|
|
DQ 03f729a9ca9d40000H, 03d45d9663a7e7da0H
|
|
DQ 03f7353dedd500000H, 03d418e26d5dfd1bfH
|
|
DQ 03f740d26dfd00000H, 03d38dc829af0262cH
|
|
DQ 03f74c674b1b00000H, 03d408e4eb4d165e5H
|
|
DQ 03f757fc853500000H, 03d3092346f3f705eH
|
|
DQ 03f763921c5080000H, 03d4e3fa9e85711eeH
|
|
DQ 03f76f281073c0000H, 03d4d59479023862bH
|
|
DQ 03f77abe61a480000H, 03d40c38980430771H
|
|
DQ 03f786550fe880000H, 03d1f92db260b1230H
|
|
DQ 03f791ec1b4580000H, 03d150038c4b502c5H
|
|
DQ 03f79d8383c140000H, 03d48cd3d7b281721H
|
|
DQ 03f7a91b496200000H, 03d42c11f472c64baH
|
|
DQ 03f7b4b36c2d40000H, 03d4d0945eaf29dd2H
|
|
DQ 03f7c04bec2940000H, 03d21e7318833be77H
|
|
DQ 03f7cbe4c95b40000H, 03d462d58105ef8bfH
|
|
DQ 03f7d77e03c980000H, 03d4f85219e901c30H
|
|
DQ 03f7e3179b7a00000H, 03d3c51fbafc4227cH
|
|
DQ 03f7eeb1907240000H, 03d400766896bf3baH
|
|
DQ 03f7fa4be2b840000H, 03d43558362ba179cH
|
|
DQ 03f802f3492900000H, 03d2a3ccb5f4b8d2aH
|
|
DQ 03f8074d69a3c0000H, 03d490b788dcc06d5H
|
|
DQ 03f80d1b1320e0000H, 03d2b412556cf5977H
|
|
DQ 03f812e8eb4fc0000H, 03d45c237732b1f78H
|
|
DQ 03f818b6f23380000H, 03d45669defd365c1H
|
|
DQ 03f81e8527cf00000H, 03d4589b8de73054bH
|
|
DQ 03f824538c2540000H, 03d28fab914103d9cH
|
|
DQ 03f82a221f3900000H, 03d47df970829f58aH
|
|
DQ 03f82ff0e10d60000H, 03d4b0d87d80e4623H
|
|
DQ 03f835bfd1a560000H, 03cf61343d497e17fH
|
|
DQ 03f83b8ef103a0000H, 03d49f7f4ef56f96bH
|
|
DQ 03f8415e3f2b60000H, 03d4859d5f817f2faH
|
|
DQ 03f8472dbc1f80000H, 03d3b2734e7bf7114H
|
|
DQ 03f84cfd67e2e0000H, 03d3753903d1eeba1H
|
|
DQ 03f852cd427880000H, 03d23a058a8f8ba37H
|
|
DQ 03f8589d4be340000H, 03d37c2ec6bdcca43H
|
|
DQ 03f85e6d842620000H, 03d43701d45acf2c4H
|
|
DQ 03f8643deb4420000H, 03d3d6b197832ab27H
|
|
DQ 03f86a0e814020000H, 03d411a9b5557b8ccH
|
|
DQ 0bf7709c46d780000H, 0bd4563ba56cde924H
|
|
DQ 0bf76adca91cc0000H, 0bd37a1a05bc6b74bH
|
|
DQ 0bf7651cf479c0000H, 0bd461bfa6c8b2465H
|
|
DQ 0bf75f5d28ee00000H, 0bd48fc8fd49e79d0H
|
|
DQ 0bf7599d4678c0000H, 0bd4925a3c7b88c7cH
|
|
DQ 0bf753dd4d1940000H, 0bd4b4606033fb2beH
|
|
DQ 0bf74e1d3ccf00000H, 0bd20210971a52753H
|
|
DQ 0bf7485d1598c0000H, 0bd4812a07c384c12H
|
|
DQ 0bf7429cd77640000H, 0bd4c07239b769baaH
|
|
DQ 0bf73cdc8266c0000H, 0bd44838a3ea90181H
|
|
DQ 0bf7371c166980000H, 0bd288537c7f77e67H
|
|
DQ 0bf7315b937d80000H, 0bd4575a30536968cH
|
|
DQ 0bf72b9af9a280000H, 0bd2c45e11e2e7675H
|
|
DQ 0bf725da48d740000H, 0bd4f8176c38b4ce6H
|
|
DQ 0bf72019811bc0000H, 0bd1a700bd79ac8a3H
|
|
DQ 0bf71a58a26e80000H, 0bd46fb3522850043H
|
|
DQ 0bf71497accf40000H, 0bd4f08e7ddd3e76fH
|
|
DQ 0bf70ed6a03d40000H, 0bd4ff2a8fb0fa804H
|
|
DQ 0bf709157cb7c0000H, 0bd4e2fc0aec80d04H
|
|
DQ 0bf70354423e00000H, 0bd4e332fcfabff4fH
|
|
DQ 0bf6fb25e19f00000H, 0bd21aebe490c8214H
|
|
DQ 0bf6efa310d600000H, 0bd4543b144a21404H
|
|
DQ 0bf6e420122080000H, 0bd45215e0a197589H
|
|
DQ 0bf6d89ce57d00000H, 0bd30cd2d2dbef9ddH
|
|
DQ 0bf6cd198ae980000H, 0bd4370f2ebb44e84H
|
|
DQ 0bf6c196026500000H, 0bd4a99c21180f792H
|
|
DQ 0bf6b6124bee80000H, 0bd11b04ea788b3a9H
|
|
DQ 0bf6aa8e678380000H, 0bd3d2d0d040e5bb2H
|
|
DQ 0bf69f0a552380000H, 0bd201eaa7eae8a79H
|
|
DQ 0bf6938614cc80000H, 0bd2b467aacd98f5bH
|
|
DQ 0bf68801a67d00000H, 0bd4b3840d3f33c6bH
|
|
DQ 0bf67c7d0a3480000H, 0bd25ec92da83377dH
|
|
DQ 0bf670f83ff080000H, 0bd33ab2631d4676dH
|
|
DQ 0bf6657347b000000H, 0bd38fd1349b69dfeH
|
|
DQ 0bf659ee217180000H, 0bd41a8baa44fb97dH
|
|
DQ 0bf64e68cd3380000H, 0bd4d828cbc5c5ff3H
|
|
DQ 0bf642e34af500000H, 0bd44361aa8b3c316H
|
|
DQ 0bf6375d9ab400000H, 0bd49e932f704de99H
|
|
DQ 0bf62bd7bc6f80000H, 0bd42bd57c254b5e3H
|
|
DQ 0bf62051b02600000H, 0bd167df372942ee0H
|
|
DQ 0bf614cb75d580000H, 0bd3c729ec54d36cdH
|
|
DQ 0bf609450d7d00000H, 0bd490ea5c63bcdf1H
|
|
DQ 0bf5fb7cee3700000H, 0bd2d803cea0e76a9H
|
|
DQ 0bf5e46f655d00000H, 0bd4d398b96b4f4d5H
|
|
DQ 0bf5cd61806b00000H, 0bd4ea2cca3058bbdH
|
|
DQ 0bf5b6533f5e00000H, 0bd3f3e6ba7bbdd88H
|
|
DQ 0bf59f44a23200000H, 0bd442ddc05082614H
|
|
DQ 0bf58835a8e500000H, 0bd40498534d8fe6dH
|
|
DQ 0bf57126537400000H, 0bd2fa2a0fd4fca1cH
|
|
DQ 0bf55a16a1db00000H, 0bd4efd6c9949b49bH
|
|
DQ 0bf54306941900000H, 0bd4975aa0b715781H
|
|
DQ 0bf52bf62a2a00000H, 0bd4b3ae86d7c16e7H
|
|
DQ 0bf514e5640c00000H, 0bd3064bec2477c3fH
|
|
DQ 0bf4fba8837600000H, 0bd20f3d834ceb438H
|
|
DQ 0bf4cd85866800000H, 0bd433742d88c7aa2H
|
|
DQ 0bf49f61d0ea00000H, 0bd48f98b25223470H
|
|
DQ 0bf4713d62f600000H, 0bd4957c30af53ad3H
|
|
DQ 0bf443183c8600000H, 0bd48218d1305b92fH
|
|
DQ 0bf414f25d9400000H, 0bd492239f241b9b9H
|
|
DQ 0bf3cd978c3800000H, 0bcd0642236ea2a75H
|
|
DQ 0bf37148ec2800000H, 0bd40dfe447087803H
|
|
DQ 0bf314f8daf400000H, 0bd3e3bcf284f9cb2H
|
|
DQ 0bf2714eb11800000H, 0bd4e94d8dd523885H
|
|
DQ 0bf1715193b000000H, 0bd17d35d328b2afeH
|
|
DQ 0, 0
|
|
|
|
rcp_t3 DQ 03ff7154740000000H, 03ff71545c0000000H
|
|
DQ 03ff7154440000000H, 03ff7154300000000H
|
|
DQ 03ff7154180000000H, 03ff7154000000000H
|
|
DQ 03ff7153e80000000H, 03ff7153d40000000H
|
|
DQ 03ff7153bc0000000H, 03ff7153a40000000H
|
|
DQ 03ff71538c0000000H, 03ff7153780000000H
|
|
DQ 03ff7153600000000H, 03ff7153480000000H
|
|
DQ 03ff7153300000000H, 03ff7153180000000H
|
|
DQ 03ff7153040000000H, 03ff7152ec0000000H
|
|
DQ 03ff7152d40000000H, 03ff7152bc0000000H
|
|
DQ 03ff7152a80000000H, 03ff7152900000000H
|
|
DQ 03ff7152780000000H, 03ff7152600000000H
|
|
DQ 03ff71524c0000000H, 03ff7152340000000H
|
|
DQ 03ff71521c0000000H, 03ff7152040000000H
|
|
DQ 03ff7151ec0000000H, 03ff7151d80000000H
|
|
DQ 03ff7151c00000000H, 03ff7151a80000000H
|
|
DQ 03ff7151900000000H, 03ff71517c0000000H
|
|
DQ 03ff7151640000000H, 03ff71514c0000000H
|
|
DQ 03ff7151340000000H, 03ff71511c0000000H
|
|
DQ 03ff7151080000000H, 03ff7150f00000000H
|
|
DQ 03ff7150d80000000H, 03ff7150c00000000H
|
|
DQ 03ff7150ac0000000H, 03ff7150940000000H
|
|
DQ 03ff71507c0000000H, 03ff7150640000000H
|
|
DQ 03ff7150500000000H, 03ff7150380000000H
|
|
DQ 03ff7150200000000H, 03ff7150080000000H
|
|
DQ 03ff714ff00000000H, 03ff714fdc0000000H
|
|
DQ 03ff714fc40000000H, 03ff714fac0000000H
|
|
DQ 03ff714f940000000H, 03ff714f800000000H
|
|
DQ 03ff714f680000000H, 03ff714f500000000H
|
|
DQ 03ff714f380000000H, 03ff714f240000000H
|
|
DQ 03ff714f0c0000000H, 03ff714ef40000000H
|
|
DQ 03ff714edc0000000H, 03ff714ec40000000H
|
|
DQ 03ff714eb00000000H, 03ff714e980000000H
|
|
DQ 03ff714e800000000H, 03ff714e680000000H
|
|
DQ 03ff714e540000000H, 03ff714e3c0000000H
|
|
DQ 03ff714e240000000H, 03ff714e0c0000000H
|
|
DQ 03ff714df80000000H, 03ff714de00000000H
|
|
DQ 03ff714dc80000000H, 03ff714db00000000H
|
|
DQ 03ff714d980000000H, 03ff714d840000000H
|
|
DQ 03ff714d6c0000000H, 03ff714d540000000H
|
|
DQ 03ff714d3c0000000H, 03ff714d280000000H
|
|
DQ 03ff714d100000000H, 03ff714cf80000000H
|
|
DQ 03ff714ce00000000H, 03ff714ccc0000000H
|
|
DQ 03ff714cb40000000H, 03ff714c9c0000000H
|
|
DQ 03ff714c840000000H, 03ff714c6c0000000H
|
|
DQ 03ff714c580000000H, 03ff714c400000000H
|
|
DQ 03ff714c280000000H, 03ff714c100000000H
|
|
DQ 03ff714bfc0000000H, 03ff714be40000000H
|
|
DQ 03ff714bcc0000000H, 03ff714bb40000000H
|
|
DQ 03ff714ba00000000H, 03ff714b880000000H
|
|
DQ 03ff714b700000000H, 03ff714b580000000H
|
|
DQ 03ff714b400000000H, 03ff714b2c0000000H
|
|
DQ 03ff714b140000000H, 03ff714afc0000000H
|
|
DQ 03ff714ae40000000H, 03ff714ad00000000H
|
|
DQ 03ff714ab80000000H, 03ff714aa00000000H
|
|
DQ 03ff714a880000000H, 03ff714a740000000H
|
|
DQ 03ff714a5c0000000H, 03ff714a440000000H
|
|
DQ 03ff714a2c0000000H, 03ff714a140000000H
|
|
DQ 03ff714a000000000H, 03ff7149e80000000H
|
|
DQ 03ff7149d00000000H, 03ff7149b80000000H
|
|
DQ 03ff7149a40000000H, 03ff71498c0000000H
|
|
DQ 03ff7149740000000H, 03ff71495c0000000H
|
|
DQ 03ff7149480000000H, 03ff7149300000000H
|
|
DQ 03ff7149180000000H, 03ff7149000000000H
|
|
DQ 03ff715a380000000H, 03ff715a2c0000000H
|
|
DQ 03ff715a240000000H, 03ff715a180000000H
|
|
DQ 03ff715a0c0000000H, 03ff715a000000000H
|
|
DQ 03ff7159f40000000H, 03ff7159e80000000H
|
|
DQ 03ff7159dc0000000H, 03ff7159d00000000H
|
|
DQ 03ff7159c40000000H, 03ff7159bc0000000H
|
|
DQ 03ff7159b00000000H, 03ff7159a40000000H
|
|
DQ 03ff7159980000000H, 03ff71598c0000000H
|
|
DQ 03ff7159800000000H, 03ff7159740000000H
|
|
DQ 03ff7159680000000H, 03ff7159600000000H
|
|
DQ 03ff7159540000000H, 03ff7159480000000H
|
|
DQ 03ff71593c0000000H, 03ff7159300000000H
|
|
DQ 03ff7159240000000H, 03ff7159180000000H
|
|
DQ 03ff71590c0000000H, 03ff7159000000000H
|
|
DQ 03ff7158f80000000H, 03ff7158ec0000000H
|
|
DQ 03ff7158e00000000H, 03ff7158d40000000H
|
|
DQ 03ff7158c80000000H, 03ff7158bc0000000H
|
|
DQ 03ff7158b00000000H, 03ff7158a40000000H
|
|
DQ 03ff7158980000000H, 03ff7158900000000H
|
|
DQ 03ff7158840000000H, 03ff7158780000000H
|
|
DQ 03ff71586c0000000H, 03ff7158600000000H
|
|
DQ 03ff7158540000000H, 03ff7158480000000H
|
|
DQ 03ff71583c0000000H, 03ff7158300000000H
|
|
DQ 03ff7158280000000H, 03ff71581c0000000H
|
|
DQ 03ff7158100000000H, 03ff7158040000000H
|
|
DQ 03ff7157f80000000H, 03ff7157ec0000000H
|
|
DQ 03ff7157e00000000H, 03ff7157d40000000H
|
|
DQ 03ff7157cc0000000H, 03ff7157c00000000H
|
|
DQ 03ff7157b40000000H, 03ff7157a80000000H
|
|
DQ 03ff71579c0000000H, 03ff7157900000000H
|
|
DQ 03ff7157840000000H, 03ff7157780000000H
|
|
DQ 03ff71576c0000000H, 03ff7157640000000H
|
|
DQ 03ff7157580000000H, 03ff71574c0000000H
|
|
DQ 03ff7157400000000H, 03ff7157340000000H
|
|
DQ 03ff7157280000000H, 03ff71571c0000000H
|
|
DQ 03ff7157100000000H, 03ff7157040000000H
|
|
DQ 03ff7156fc0000000H, 03ff7156f00000000H
|
|
DQ 03ff7156e40000000H, 03ff7156d80000000H
|
|
DQ 03ff7156cc0000000H, 03ff7156c00000000H
|
|
DQ 03ff7156b40000000H, 03ff7156a80000000H
|
|
DQ 03ff7156a00000000H, 03ff7156940000000H
|
|
DQ 03ff7156880000000H, 03ff71567c0000000H
|
|
DQ 03ff7156700000000H, 03ff7156640000000H
|
|
DQ 03ff7156580000000H, 03ff71564c0000000H
|
|
DQ 03ff7156400000000H, 03ff7156380000000H
|
|
DQ 03ff71562c0000000H, 03ff7156200000000H
|
|
DQ 03ff7156140000000H, 03ff7156080000000H
|
|
DQ 03ff7155fc0000000H, 03ff7155f00000000H
|
|
DQ 03ff7155e40000000H, 03ff7155d80000000H
|
|
DQ 03ff7155d00000000H, 03ff7155c40000000H
|
|
DQ 03ff7155b80000000H, 03ff7155ac0000000H
|
|
DQ 03ff7155a00000000H, 03ff7155940000000H
|
|
DQ 03ff7155880000000H, 03ff71557c0000000H
|
|
DQ 03ff7155700000000H, 03ff7155680000000H
|
|
DQ 03ff71555c0000000H, 03ff7155500000000H
|
|
DQ 03ff7155440000000H, 03ff7155380000000H
|
|
DQ 03ff71552c0000000H, 03ff7155200000000H
|
|
DQ 03ff7155140000000H, 03ff71550c0000000H
|
|
DQ 03ff7155000000000H, 03ff7154f40000000H
|
|
DQ 03ff7154e80000000H, 03ff7154dc0000000H
|
|
DQ 03ff7154d00000000H, 03ff7154c40000000H
|
|
DQ 03ff7154b80000000H, 03ff7154ac0000000H
|
|
DQ 03ff7154a40000000H, 03ff7154980000000H
|
|
DQ 03ff71548c0000000H, 03ff7154800000000H
|
|
DQ 03ff7154740000000H, 0
|
|
|
|
log2_t3 DQ 0, 0
|
|
DQ 03eb80000c0000000H, 03d4722f0009be959H
|
|
DQ 03ec80001a0000000H, 03d45e6576cb6dc2eH
|
|
DQ 03ed10001a0000000H, 03d480762a98bdb6aH
|
|
DQ 03ed7000300000000H, 03d231a4c495ec799H
|
|
DQ 03edd0004b0000000H, 03d4926846928cda3H
|
|
DQ 03ee1800368000000H, 03d4527509fdde667H
|
|
DQ 03ee4000470000000H, 03d44fbd1292ae6daH
|
|
DQ 03ee70005d8000000H, 03d4ef91cb226fd03H
|
|
DQ 03eea000778000000H, 03d40978c9dc43b2eH
|
|
DQ 03eed000948000000H, 03d33ae75bbe97951H
|
|
DQ 03eef800af0000000H, 03d2d81b9a1639c05H
|
|
DQ 03ef140068c000000H, 03d3d3aa4a1dd8452H
|
|
DQ 03ef2c007b8000000H, 03d4d7bbe110bfb09H
|
|
DQ 03ef4400900000000H, 03d43fbcb9ab61086H
|
|
DQ 03ef5c00a60000000H, 03d421d94dff79062H
|
|
DQ 03ef7000b98000000H, 03d43b8e9647408a2H
|
|
DQ 03ef8800d24000000H, 03d4fd8ce39e1fdd4H
|
|
DQ 03efa000ecc000000H, 03d439ab84e20bc42H
|
|
DQ 03efb80108c000000H, 03d3dfd83269c6ac2H
|
|
DQ 03efcc01214000000H, 03d3ca32ecd8004e0H
|
|
DQ 03efe401400000000H, 03d47b472936c6005H
|
|
DQ 03effc01608000000H, 03d31736ce8ef8e21H
|
|
DQ 03f00a00c14000000H, 03d0617cfc138ccabH
|
|
DQ 03f01400cfe000000H, 03d4e6d11d620108aH
|
|
DQ 03f02000e26000000H, 03d2451827455b88dH
|
|
DQ 03f02c00f58000000H, 03d435e7b8e426950H
|
|
DQ 03f03801098000000H, 03d3296f937d77647H
|
|
DQ 03f044011e4000000H, 03d2b6df6e16cae71H
|
|
DQ 03f04e01302000000H, 03d2ff9376a2ea421H
|
|
DQ 03f05a01464000000H, 03d438ebd204c10d2H
|
|
DQ 03f066015d4000000H, 03d2b09d7e2fc6debH
|
|
DQ 03f07201750000000H, 03d099925641f4f35H
|
|
DQ 03f07c01896000000H, 03cedfbf4f07288e3H
|
|
DQ 03f08801a28000000H, 03d32a0616748ca2aH
|
|
DQ 03f09401bc6000000H, 03d49cc1e9cba43abH
|
|
DQ 03f0a001d72000000H, 03d41ebd38173f5dbH
|
|
DQ 03f0ac01f2a000000H, 03d41af6954471a92H
|
|
DQ 03f0b6020a2000000H, 03d44a88bd59f4b89H
|
|
DQ 03f0c202272000000H, 03d137160b27044e6H
|
|
DQ 03f0ce0244c000000H, 03d47d7f6c97ef2fcH
|
|
DQ 03f0da02634000000H, 03d44e605e1bb0db2H
|
|
DQ 03f0e4027d4000000H, 03d459d8417d4ebcfH
|
|
DQ 03f0f0029d4000000H, 03cf5ca7f05f05027H
|
|
DQ 03f0fc02bde000000H, 03d4363b1c234f566H
|
|
DQ 03f104016fb000000H, 03d3b7b6ed1035771H
|
|
DQ 03f109017df000000H, 03d38699e204367efH
|
|
DQ 03f10f018f6000000H, 03d44924bd9581118H
|
|
DQ 03f11501a14000000H, 03d2252e80eb13b47H
|
|
DQ 03f11b01b37000000H, 03d4c3c3381ce38a0H
|
|
DQ 03f12101c61000000H, 03d4b88d24672a90dH
|
|
DQ 03f12601d5e000000H, 03d4e1fc955055fefH
|
|
DQ 03f12c01e94000000H, 03d36e18a547f3bc2H
|
|
DQ 03f13201fd0000000H, 03ce9cbf2c6119ad4H
|
|
DQ 03f13802111000000H, 03d4d03232a579871H
|
|
DQ 03f13d02222000000H, 03d4d5c820ab96aa1H
|
|
DQ 03f14302370000000H, 03d2ff6235a37497cH
|
|
DQ 03f149024c3000000H, 03d4a4461e61bb95eH
|
|
DQ 03f14f0261d000000H, 03d4431272c3ec2f0H
|
|
DQ 03f15402742000000H, 03d424e2b9e3a8113H
|
|
DQ 03f15a028a7000000H, 03d4a40baad7a3180H
|
|
DQ 03f16002a13000000H, 03d33b2fef1b1988bH
|
|
DQ 03f16602b85000000H, 03d01893f34559377H
|
|
DQ 03f16c02cfc000000H, 03d4ffe120fb3ef44H
|
|
DQ 03f17102e3b000000H, 03d120082c162d124H
|
|
DQ 03f17702fbe000000H, 03d3e587c5b282967H
|
|
DQ 03f17d03148000000H, 03d1df8f956673eacH
|
|
DQ 03f183032d7000000H, 03d4ff8cd42de4f13H
|
|
DQ 03f1880342a000000H, 03c83f84104915062H
|
|
DQ 03f18e035c5000000H, 03d3484a765ad0e81H
|
|
DQ 03f19403766000000H, 03d4c2a7e827b5b7cH
|
|
DQ 03f19a0390e000000H, 03d45b9d9e619a5feH
|
|
DQ 03f19f03a74000000H, 03d4389fde2d65d47H
|
|
DQ 03f1a503c27000000H, 03d4b2175bb6d7bccH
|
|
DQ 03f1ab03de1000000H, 03d34c0cf5c760a80H
|
|
DQ 03f1b103fa1000000H, 03d046edae6d3e9a5H
|
|
DQ 03f1b704166000000H, 03d4fd521af377bfcH
|
|
DQ 03f1bc042e6000000H, 03d0cf59fe6ab1bfdH
|
|
DQ 03f1c2044b7000000H, 03d3ccd20cc753db5H
|
|
DQ 03f1c80468f000000H, 03d152df2a92669ccH
|
|
DQ 03f1ce0486c000000H, 03d4e8cfdbe6ff5d7H
|
|
DQ 03f1d3049ff000000H, 03d4e51b637245449H
|
|
DQ 03f1d904be9000000H, 03d30855ccdda9dd0H
|
|
DQ 03f1df04dd8000000H, 03d49dc0197d07430H
|
|
DQ 03f1e504fce000000H, 03d431dc9bd27e20aH
|
|
DQ 03f1ea05175000000H, 03d40ae402534fea4H
|
|
DQ 03f1f005376000000H, 03d47fa77710aad2aH
|
|
DQ 03f1f60557e000000H, 03d2bbdb4e113204bH
|
|
DQ 03f1fc0578b000000H, 03d4d8d3b6e50d246H
|
|
DQ 03f20102ccf800000H, 03d4bd3fc06a15de9H
|
|
DQ 03f20382daf800000H, 03d4d93a1498ec6c9H
|
|
DQ 03f20682ebf800000H, 03d33cb6df935a7f0H
|
|
DQ 03f20982fd2000000H, 03d4de1089920cfdaH
|
|
DQ 03f20c830e8000000H, 03d4985b012a6b1acH
|
|
DQ 03f20f031d2000000H, 03d4913e1b9ba2290H
|
|
DQ 03f212032ee000000H, 03d1624a57980edbcH
|
|
DQ 03f2150340c800000H, 03d441ee709125ff3H
|
|
DQ 03f2180352e800000H, 03d3a45e575f48b5dH
|
|
DQ 03f21a83622800000H, 03d3501dd1e238a6cH
|
|
DQ 03f21d8374a000000H, 03d4191bc1ea6aa2cH
|
|
DQ 03f22083875000000H, 03ce323237921f7b0H
|
|
DQ 03f223839a2800000H, 03d46b179d0781ff4H
|
|
DQ 03f22683ad3800000H, 03d44c09dda134362H
|
|
DQ 03f22903bd4000000H, 03d4652e31de50175H
|
|
DQ 03f22c03d0b000000H, 03d137d77dcd68a32H
|
|
DQ 03f22f03e44800000H, 03d4636fb2840cc02H
|
|
DQ 03f23203f81800000H, 03d41a8e1979c27f4H
|
|
DQ 03f2348408c000000H, 03d410dbf84163334H
|
|
DQ 03f237841ce800000H, 03d4a8e042a7d4e75H
|
|
DQ 03f23a84314800000H, 03d3772593772be29H
|
|
DQ 03f23d8445d800000H, 03d223d4b2e8c031dH
|
|
DQ 03f24004572000000H, 03d0c8072ca9dad06H
|
|
DQ 03f243046c0800000H, 03d315a83ee313d33H
|
|
DQ 03f24604812000000H, 03d473dc4088b7c68H
|
|
DQ 03f24904967000000H, 03d3af34ea9dceae1H
|
|
DQ 03f24c04abf000000H, 03d36c20ba0653485H
|
|
DQ 03f24e84be0000000H, 03d39a63c847be3ffH
|
|
DQ 03f25184d3d800000H, 03d48ca7750a55975H
|
|
DQ 03f25484e9e800000H, 03d38db2a2d1381bbH
|
|
DQ 03f25785002800000H, 03d2ef2461fbe7983H
|
|
DQ 03f25a0512d800000H, 03d2c153bc40c395cH
|
|
DQ 03f25d05297000000H, 03d4064fc5a39c232H
|
|
DQ 03f26005404000000H, 03d070d1f7c4b597eH
|
|
DQ 03f26305573800000H, 03d4a28e9bdbbc457H
|
|
DQ 03f265856a8800000H, 03d474989ecc252f3H
|
|
DQ 03f2688581e000000H, 03d4e13090fc01d57H
|
|
DQ 03f26b85997000000H, 03d391227c8678403H
|
|
DQ 03f26e85b13000000H, 03d155e22f244140dH
|
|
DQ 0bf170fd210000000H, 0bd24caa429329aeeH
|
|
DQ 0bf16dfd2ce000000H, 0bd4cb96d8562dc37H
|
|
DQ 0bf16bfd34d000000H, 0bd2813e19b9dbfb8H
|
|
DQ 0bf168fd409000000H, 0bd34c1a453011cc5H
|
|
DQ 0bf165fd4c3000000H, 0bd4cd61ac43e09bcH
|
|
DQ 0bf162fd57c000000H, 0bd4d64cef90ca8baH
|
|
DQ 0bf15ffd634000000H, 0bd3819d713b1c267H
|
|
DQ 0bf15cfd6ea000000H, 0bd319cda711db032H
|
|
DQ 0bf159fd79e000000H, 0bd43a950c71a6171H
|
|
DQ 0bf156fd851000000H, 0bd393b25eece00b9H
|
|
DQ 0bf153fd902000000H, 0bd43ab308b5fe712H
|
|
DQ 0bf151fd977000000H, 0bd4ca5e736256734H
|
|
DQ 0bf14efda26000000H, 0bd40886b3b9c924dH
|
|
DQ 0bf14bfdad3000000H, 0bd428441ff31aa38H
|
|
DQ 0bf148fdb7f000000H, 0bd14cb421675c431H
|
|
DQ 0bf145fdc29000000H, 0bcf8fb590baebb8dH
|
|
DQ 0bf142fdcd1000000H, 0bd3a1f2ca38e93f3H
|
|
DQ 0bf13ffdd78000000H, 0bd2dc25e83d52ed1H
|
|
DQ 0bf13cfde1d000000H, 0bd3fd5b6efa081f3H
|
|
DQ 0bf13afde8a000000H, 0bd49d89dd4f2bf07H
|
|
DQ 0bf137fdf2d000000H, 0bd3e4f3d5d3a13b4H
|
|
DQ 0bf134fdfce000000H, 0bd428fd96a5f7723H
|
|
DQ 0bf131fe06e000000H, 0bd20452b288690a5H
|
|
DQ 0bf12efe10c000000H, 0bd1d5f7c7e56ea2dH
|
|
DQ 0bf12bfe1a8000000H, 0bd415fc47d421debH
|
|
DQ 0bf128fe243000000H, 0bd3a598ca8dc214bH
|
|
DQ 0bf125fe2dc000000H, 0bd4712f1d7350f14H
|
|
DQ 0bf122fe374000000H, 0bd3e24878efa43e1H
|
|
DQ 0bf120fe3d8000000H, 0bd48adffee23f9f0H
|
|
DQ 0bf11dfe46d000000H, 0bd4d81e00aec2d96H
|
|
DQ 0bf11afe501000000H, 0bd406eddef9956b1H
|
|
DQ 0bf117fe593000000H, 0bd4174f65e105551H
|
|
DQ 0bf114fe624000000H, 0bcf284c306b71311H
|
|
DQ 0bf111fe6b2000000H, 0bd4dcc69dfedbec3H
|
|
DQ 0bf10efe740000000H, 0bd323b7cee38aa4bH
|
|
DQ 0bf10bfe7cc000000H, 0bd144104fd28c140H
|
|
DQ 0bf108fe856000000H, 0bd34171a36d6a695H
|
|
DQ 0bf106fe8b1000000H, 0bd4354a0acea06cdH
|
|
DQ 0bf103fe939000000H, 0bd2eb1b1fae67526H
|
|
DQ 0bf100fe9bf000000H, 0bd343a73fc467e03H
|
|
DQ 0bf0fbfd486000000H, 0bd4aa705ed090ecaH
|
|
DQ 0bf0f5fd58c000000H, 0bd4949cd0d4cde8eH
|
|
DQ 0bf0effd690000000H, 0bd2816308340bd3dH
|
|
DQ 0bf0e9fd790000000H, 0bcfb47fd2e8624a6H
|
|
DQ 0bf0e3fd88c000000H, 0bd338fca5233867dH
|
|
DQ 0bf0ddfd986000000H, 0bcf9cf14342e7c21H
|
|
DQ 0bf0d9fda2a000000H, 0bd3388827d84b6e0H
|
|
DQ 0bf0d3fdb1e000000H, 0bd3b3e0a6d6a2247H
|
|
DQ 0bf0cdfdc0e000000H, 0bd4f92aec1df2a86H
|
|
DQ 0bf0c7fdcfc000000H, 0bd4f9f3aa2200d30H
|
|
DQ 0bf0c1fdde8000000H, 0bd3b894b32ad9b9fH
|
|
DQ 0bf0bbfded0000000H, 0bd3405d8d2c46051H
|
|
DQ 0bf0b5fdfb4000000H, 0bd445a0bd420a715H
|
|
DQ 0bf0affe096000000H, 0bd39940136e0a90fH
|
|
DQ 0bf0abfe12a000000H, 0bd46b0a6f2af86bbH
|
|
DQ 0bf0a5fe206000000H, 0bd4bf4a2ca335408H
|
|
DQ 0bf09ffe2e0000000H, 0bd3ea2d6b12e4d93H
|
|
DQ 0bf099fe3b6000000H, 0bd40c6fd5fb7f840H
|
|
DQ 0bf093fe48a000000H, 0bce555685c9c3116H
|
|
DQ 0bf08dfe558000000H, 0bd4dfc70dfa2e7c3H
|
|
DQ 0bf087fe626000000H, 0bd337897b84ac785H
|
|
DQ 0bf081fe6f0000000H, 0bd1ca71ac6acd2d7H
|
|
DQ 0bf07bfe7b6000000H, 0bd370c682f1de078H
|
|
DQ 0bf077fe838000000H, 0bd45185d76c79d4cH
|
|
DQ 0bf071fe8fa000000H, 0bd33bb0cdd985699H
|
|
DQ 0bf06bfe9b8000000H, 0bd3976c00642b301H
|
|
DQ 0bf065fea72000000H, 0bd4db1e6f5a163e7H
|
|
DQ 0bf05ffeb2a000000H, 0bd4cc11808263596H
|
|
DQ 0bf059febe0000000H, 0bd33d1dff912d171H
|
|
DQ 0bf053fec92000000H, 0bd24a5ae52911a3aH
|
|
DQ 0bf04dfed40000000H, 0bd3d050f249f8edcH
|
|
DQ 0bf047fedec000000H, 0bd27d102dd924b0eH
|
|
DQ 0bf043fee5c000000H, 0bd3e62957baad081H
|
|
DQ 0bf03dfef02000000H, 0bd4376ad4524f2a0H
|
|
DQ 0bf037fefa6000000H, 0bd2752913877e949H
|
|
DQ 0bf031ff046000000H, 0bd292cb26a5ff847H
|
|
DQ 0bf02bff0e2000000H, 0bd44da42ec6a2baeH
|
|
DQ 0bf025ff17c000000H, 0bd4181e4056b600bH
|
|
DQ 0bf01fff212000000H, 0bd4c420ca7722725H
|
|
DQ 0bf019ff2a6000000H, 0bd451ab99454bc09H
|
|
DQ 0bf015ff306000000H, 0bd4f4702fac61211H
|
|
DQ 0bf00fff396000000H, 0bd23ccbf691e23e3H
|
|
DQ 0bf009ff420000000H, 0bd48b7d85ede8a3bH
|
|
DQ 0bf003ff4a8000000H, 0bd4a94f94a602836H
|
|
DQ 0beffbfea5c000000H, 0bd35151ebd4248b6H
|
|
DQ 0befeffeb60000000H, 0bd31312ebaebde60H
|
|
DQ 0befe3fec5c000000H, 0bd44bf0e08b2a851H
|
|
DQ 0befd7fed54000000H, 0bd3dfbe044563cddH
|
|
DQ 0befcbfee44000000H, 0bd47553a6bb2cf4dH
|
|
DQ 0befc3feee4000000H, 0bd02b3272c9e1514H
|
|
DQ 0befb7fefc8000000H, 0bd4655cdd79568b8H
|
|
DQ 0befabff0a8000000H, 0bd4998c8c6a29955H
|
|
DQ 0bef9fff184000000H, 0bd35e84003879074H
|
|
DQ 0bef93ff258000000H, 0bd34cfa09595f318H
|
|
DQ 0bef87ff324000000H, 0bd47f3d66389e086H
|
|
DQ 0bef7bff3ec000000H, 0bd43982f0dd1df79H
|
|
DQ 0bef6fff4ac000000H, 0bd4d54d70b7407c7H
|
|
DQ 0bef63ff568000000H, 0bd4529cb1e4119e9H
|
|
DQ 0bef5bff5e0000000H, 0bd4ea8cf63b0e57aH
|
|
DQ 0bef4fff694000000H, 0bd1a872dd1f9867bH
|
|
DQ 0bef43ff73c000000H, 0bd46113f80238647H
|
|
DQ 0bef37ff7e0000000H, 0bd46e9d9772d7da6H
|
|
DQ 0bef2bff880000000H, 0bd276ac184b1770cH
|
|
DQ 0bef1fff918000000H, 0bd171e07ff78e451H
|
|
DQ 0bef13ff9a8000000H, 0bd3c0a102a88bdf6H
|
|
DQ 0bef07ffa34000000H, 0bd2cfa098be9e4a8H
|
|
DQ 0beef7ff570000000H, 0bd3d205955bedc7eH
|
|
DQ 0beee7ff618000000H, 0bd47b79acbd1c3d4H
|
|
DQ 0beecfff710000000H, 0bd37b870ff9b8582H
|
|
DQ 0beeb7ff7f8000000H, 0bd3c31fb1038dd6dH
|
|
DQ 0bee9fff8d0000000H, 0bd4e6de6a68aa227H
|
|
DQ 0bee87ff9a0000000H, 0bd4cdaf09ce4e699H
|
|
DQ 0bee6fffa68000000H, 0bd32c03059eee94bH
|
|
DQ 0bee57ffb20000000H, 0bd1fead0c4719fccH
|
|
DQ 0bee3fffbc8000000H, 0bd39656642e976adH
|
|
DQ 0bee2fffc30000000H, 0bd46c7329db21925H
|
|
DQ 0bee17ffcc8000000H, 0bd389eab4517a5ceH
|
|
DQ 0bedffffaa0000000H, 0bd3fdf0e3da560d7H
|
|
DQ 0bedcfffba0000000H, 0bd0a7c3d4511fbcbH
|
|
DQ 0bed9fffc80000000H, 0bd0780884d13df75H
|
|
DQ 0bed6fffd40000000H, 0bd3ec0a3e439ae99H
|
|
DQ 0bed3fffdf0000000H, 0bd36c139bbface01H
|
|
DQ 0bed0fffe80000000H, 0bd4578e60a3c176bH
|
|
DQ 0becbfffe00000000H, 0bd3b5254714383f2H
|
|
DQ 0bec7fffe80000000H, 0bd4764e185e2f8bbH
|
|
DQ 0bec1ffff20000000H, 0bd4c67c0d84712a6H
|
|
DQ 0beb7ffff40000000H, 0bd3f05250dd0685fH
|
|
DQ 0bea7ffff80000000H, 0bd40b553538e0e0cH
|
|
DQ 0, 0
|
|
|
|
|
|
; log2 polynomial coefficients
|
|
clv DQ 03fc47fd462b3b816H, 03e79c3a6966457eeH ; c1|c3
|
|
DQ 0bfb550472a8bb463H, 0bfd62e4346694107H ; c2|c4
|
|
|
|
|
|
;-------Table T, D so that movapd gives [ D | T ]
|
|
;-------Note that the exponent field of T is set to 000 (instead of 3ffH)
|
|
exp2_tbl DQ 03ff0000000000000H, 00000000000000000H
|
|
DQ 03ff0163da9fb3335H, 03c9b61299ab8cdb7H
|
|
DQ 03ff02c9a3e778061H, 0bc719083535b085dH
|
|
DQ 03ff04315e86e7f85H, 0bc90a31c1977c96eH
|
|
DQ 03ff059b0d3158574H, 03c8d73e2a475b465H
|
|
DQ 03ff0706b29ddf6deH, 0bc8c91dfe2b13c26H
|
|
DQ 03ff0874518759bc8H, 03c6186be4bb284ffH
|
|
DQ 03ff09e3ecac6f383H, 03c91487818316135H
|
|
DQ 03ff0b5586cf9890fH, 03c98a62e4adc610aH
|
|
DQ 03ff0cc922b7247f7H, 03c901edc16e24f71H
|
|
DQ 03ff0e3ec32d3d1a2H, 03c403a1727c57b52H
|
|
DQ 03ff0fb66affed31bH, 0bc6b9bedc44ebd7bH
|
|
DQ 03ff11301d0125b51H, 0bc96c51039449b39H
|
|
DQ 03ff12abdc06c31ccH, 0bc51b514b36ca5c7H
|
|
DQ 03ff1429aaea92de0H, 0bc932fbf9af1369eH
|
|
DQ 03ff15a98c8a58e51H, 03c82406ab9eeab09H
|
|
DQ 03ff172b83c7d517bH, 0bc819041b9d78a75H
|
|
DQ 03ff18af9388c8deaH, 0bc911023d1970f6bH
|
|
DQ 03ff1a35beb6fcb75H, 03c8e5b4c7b4968e4H
|
|
DQ 03ff1bbe084045cd4H, 0bc995386352ef607H
|
|
DQ 03ff1d4873168b9aaH, 03c9e016e00a2643cH
|
|
DQ 03ff1ed5022fcd91dH, 0bc91df98027bb78bH
|
|
DQ 03ff2063b88628cd6H, 03c8dc775814a8494H
|
|
DQ 03ff21f49917ddc96H, 03c82a97e9494a5edH
|
|
DQ 03ff2387a6e756238H, 03c99b07eb6c70572H
|
|
DQ 03ff251ce4fb2a63fH, 03c8ac155bef4f4a4H
|
|
DQ 03ff26b4565e27cddH, 03c82bd339940e9d9H
|
|
DQ 03ff284dfe1f56381H, 0bc9a4c3a8c3f0d7dH
|
|
DQ 03ff29e9df51fdee1H, 03c8612e8afad1255H
|
|
DQ 03ff2b87fd0dad990H, 0bc410adcd6381aa3H
|
|
DQ 03ff2d285a6e4030bH, 03c90024754db41d4H
|
|
DQ 03ff2ecafa93e2f56H, 03c71ca0f45d52383H
|
|
DQ 03ff306fe0a31b715H, 03c86f46ad23182e4H
|
|
DQ 03ff32170fc4cd831H, 03c8a9ce78e18047cH
|
|
DQ 03ff33c08b26416ffH, 03c932721843659a5H
|
|
DQ 03ff356c55f929ff1H, 0bc8b5cee5c4e4628H
|
|
DQ 03ff371a7373aa9cbH, 0bc963aeabf42eae1H
|
|
DQ 03ff38cae6d05d866H, 0bc9e958d3c9904bcH
|
|
DQ 03ff3a7db34e59ff7H, 0bc75e436d661f5e2H
|
|
DQ 03ff3c32dc313a8e5H, 0bc9efff8375d29c3H
|
|
DQ 03ff3dea64c123422H, 03c8ada0911f09ebbH
|
|
DQ 03ff3fa4504ac801cH, 0bc97d023f956f9f3H
|
|
DQ 03ff4160a21f72e2aH, 0bc5ef3691c309278H
|
|
DQ 03ff431f5d950a897H, 0bc81c7dde35f7998H
|
|
DQ 03ff44e086061892dH, 03c489b7a04ef80cfH
|
|
DQ 03ff46a41ed1d0057H, 03c9c944bd1648a76H
|
|
DQ 03ff486a2b5c13cd0H, 03c73c1a3b69062f0H
|
|
DQ 03ff4a32af0d7d3deH, 03c99cb62f3d1be56H
|
|
DQ 03ff4bfdad5362a27H, 03c7d4397afec42e2H
|
|
DQ 03ff4dcb299fddd0dH, 03c98ecdbbc6a7833H
|
|
DQ 03ff4f9b2769d2ca7H, 0bc94b309d25957e3H
|
|
DQ 03ff516daa2cf6642H, 0bc8f768569bd93eeH
|
|
DQ 03ff5342b569d4f82H, 0bc807abe1db13cacH
|
|
DQ 03ff551a4ca5d920fH, 0bc8d689cefede59aH
|
|
DQ 03ff56f4736b527daH, 03c99bb2c011d93acH
|
|
DQ 03ff58d12d497c7fdH, 03c8295e15b9a1de7H
|
|
DQ 03ff5ab07dd485429H, 03c96324c054647acH
|
|
DQ 03ff5c9268a5946b7H, 03c3c4b1b816986a2H
|
|
DQ 03ff5e76f15ad2148H, 03c9ba6f93080e65dH
|
|
DQ 03ff605e1b976dc09H, 0bc93e2429b56de47H
|
|
DQ 03ff6247eb03a5585H, 0bc9383c17e40b496H
|
|
DQ 03ff6434634ccc320H, 0bc8c483c759d8932H
|
|
DQ 03ff6623882552225H, 0bc9bb60987591c33H
|
|
DQ 03ff68155d44ca973H, 03c6038ae44f73e64H
|
|
DQ 03ff6a09e667f3bcdH, 0bc9bdd3413b26455H
|
|
DQ 03ff6c012750bdabfH, 0bc72895667ff0b0cH
|
|
DQ 03ff6dfb23c651a2fH, 0bc6bbe3a683c88aaH
|
|
DQ 03ff6ff7df9519484H, 0bc883c0f25860ef6H
|
|
DQ 03ff71f75e8ec5f74H, 0bc816e4786887a99H
|
|
DQ 03ff73f9a48a58174H, 0bc90a8d96c65d53bH
|
|
DQ 03ff75feb564267c9H, 0bc90245957316dd3H
|
|
DQ 03ff780694fde5d3fH, 03c9866b80a02162cH
|
|
DQ 03ff7a11473eb0187H, 0bc841577ee04992fH
|
|
DQ 03ff7c1ed0130c132H, 03c9f124cd1164dd5H
|
|
DQ 03ff7e2f336cf4e62H, 03c705d02ba15797eH
|
|
DQ 03ff80427543e1a12H, 0bc927c86626d972aH
|
|
DQ 03ff82589994cce13H, 0bc9d4c1dd41532d7H
|
|
DQ 03ff8471a4623c7adH, 0bc88d684a341cdfbH
|
|
DQ 03ff868d99b4492edH, 0bc9fc6f89bd4f6baH
|
|
DQ 03ff88ac7d98a6699H, 03c9994c2f37cb53aH
|
|
DQ 03ff8ace5422aa0dbH, 03c96e9f156864b26H
|
|
DQ 03ff8cf3216b5448cH, 0bc70d55e32e9e3aaH
|
|
DQ 03ff8f1ae99157736H, 03c85cc13a2e3976cH
|
|
DQ 03ff9145b0b91ffc6H, 0bc9dd6792e582523H
|
|
DQ 03ff93737b0cdc5e5H, 0bc675fc781b57ebbH
|
|
DQ 03ff95a44cbc8520fH, 0bc764b7c96a5f039H
|
|
DQ 03ff97d829fde4e50H, 0bc9d185b7c1b85d0H
|
|
DQ 03ff9a0f170ca07baH, 0bc9173bd91cee632H
|
|
DQ 03ff9c49182a3f090H, 03c7c7c46b071f2beH
|
|
DQ 03ff9e86319e32323H, 03c7824ca78e64c6eH
|
|
DQ 03ffa0c667b5de565H, 0bc9359495d1cd532H
|
|
DQ 03ffa309bec4a2d33H, 03c96305c7ddc36abH
|
|
DQ 03ffa5503b23e255dH, 0bc9d2f6edb8d41e1H
|
|
DQ 03ffa799e1330b358H, 03c9bcb7ecac563c6H
|
|
DQ 03ffa9e6b5579fdbfH, 03c90fac90ef7fd31H
|
|
DQ 03ffac36bbfd3f37aH, 0bc8f9234cae76cd0H
|
|
DQ 03ffae89f995ad3adH, 03c97a1cd345dcc81H
|
|
DQ 03ffb0e07298db666H, 0bc9bdef54c80e424H
|
|
DQ 03ffb33a2b84f15fbH, 0bc62805e3084d707H
|
|
DQ 03ffb59728de5593aH, 0bc9c71dfbbba6de3H
|
|
DQ 03ffb7f76f2fb5e47H, 0bc75584f7e54ac3aH
|
|
DQ 03ffba5b030a1064aH, 0bc9efcd30e54292eH
|
|
DQ 03ffbcc1e904bc1d2H, 03c823dd07a2d9e84H
|
|
DQ 03ffbf2c25bd71e09H, 0bc9efdca3f6b9c72H
|
|
DQ 03ffc199bdd85529cH, 03c811065895048ddH
|
|
DQ 03ffc40ab5fffd07aH, 03c9b4537e083c60aH
|
|
DQ 03ffc67f12e57d14bH, 03c92884dff483cacH
|
|
DQ 03ffc8f6d9406e7b5H, 03c71acbc48805c44H
|
|
DQ 03ffcb720dcef9069H, 03c7503cbd1e949dbH
|
|
DQ 03ffcdf0b555dc3faH, 0bc8dd83b53829d72H
|
|
DQ 03ffd072d4a07897cH, 0bc9cbc3743797a9cH
|
|
DQ 03ffd2f87080d89f2H, 0bc9d487b719d8577H
|
|
DQ 03ffd5818dcfba487H, 03c82ed02d75b3706H
|
|
DQ 03ffd80e316c98398H, 0bc911ec18beddfe8H
|
|
DQ 03ffda9e603db3285H, 03c9c2300696db532H
|
|
DQ 03ffdd321f301b460H, 03c92da5778f018c2H
|
|
DQ 03ffdfc97337b9b5fH, 0bc91a5cd4f184b5bH
|
|
DQ 03ffe264614f5a129H, 0bc97b627817a1496H
|
|
DQ 03ffe502ee78b3ff6H, 03c839e8980a9cc8fH
|
|
DQ 03ffe7a51fbc74c83H, 03c92d522ca0c8de1H
|
|
DQ 03ffea4afa2a490daH, 0bc9e9c23179c2893H
|
|
DQ 03ffecf482d8e67f1H, 0bc9c93f3b411ad8cH
|
|
DQ 03ffefa1bee615a27H, 03c9dc7f486a4b6b0H
|
|
DQ 03fff252b376bba97H, 03c93a1a5bf0d8e43H
|
|
DQ 03fff50765b6e4540H, 03c99d3e12dd8a18aH
|
|
DQ 03fff7bfdad9cbe14H, 0bc9dbb12d0063509H
|
|
DQ 03fffa7c1819e90d8H, 03c874853f3a5931eH
|
|
DQ 03fffd3c22b8f71f1H, 03c62eb74966579e7H
|
|
|
|
|
|
Shifter DQ 04338000000000000H, 04338000000000000H ; 2^52+2^51|2^52+2^51
|
|
SIGMASK DQ 0000fffffffffffffH, 0000fffffffffffffH
|
|
ONEMASK DQ 03ff0000000000000H, 03ff0000000000000H
|
|
ABSVALMASK DQ 7fffffffffffffffH, 7fffffffffffffffH
|
|
|
|
; exponential polynomial coefficients
|
|
cev DQ 03f55d87fe78a6731H, 03fac6b08d704a0bfH ; c3|c5
|
|
DQ 03f83b2ab6fba4e77H, 03fcebfbdff82c58eH ; c2|c4
|
|
DQ 03fe62e42fefa39efH ; c1
|
|
|
|
|
|
|
|
|
|
HALFSIG DQ 0fffffffff8000000H
|
|
LHN DQ 0bff7154740000000H ; -log2(e) rounded to 27 bits
|
|
sNaN DQ 07ff0000000000001H
|
|
INF DQ 07ff0000000000000H
|
|
NEG_INF DQ 0fff0000000000000H
|
|
NEG_ZERO DQ 08000000000000000H
|
|
EMIN DQ 00010000000000000H
|
|
QIND DQ 0fff8000000000000H ; QNAN indefinite
|
|
|
|
ALIGN 16
|
|
CONST ENDS
|
|
|
|
|
|
$movsd MACRO op1, op2
|
|
LOCAL begin_movsd, end_movsd
|
|
begin_movsd:
|
|
movupd op1, op2
|
|
end_movsd:
|
|
org begin_movsd
|
|
db 0F2h
|
|
org end_movsd
|
|
ENDM
|
|
|
|
|
|
|
|
_TEXT SEGMENT PARA PUBLIC USE32 'CODE'
|
|
ALIGN 16
|
|
|
|
PUBLIC _pow_pentium4, _CIpow_pentium4
|
|
_CIpow_pentium4 PROC NEAR
|
|
push ebp
|
|
mov ebp,esp
|
|
sub esp,16 ; prepare place for argument
|
|
and esp,0fffffff0h
|
|
fxch st(1)
|
|
fstp qword ptr [esp] ; base
|
|
fstp qword ptr [esp+8] ; exponent
|
|
call _pow_pentium4
|
|
leave
|
|
ret
|
|
_pow_pentium4 label proc
|
|
; load first argument
|
|
movlpd xmm0, QWORD PTR [esp+4]
|
|
; load constants
|
|
movlpd xmm7, QWORD PTR [SIGMASK]
|
|
movlpd xmm2, QWORD PTR [ONEMASK]
|
|
|
|
andpd xmm7, xmm0
|
|
$movsd xmm4, xmm0
|
|
psrlq xmm0, 64-12-8
|
|
; get first 7 bits after leading 1
|
|
pextrw eax, xmm0, 0
|
|
; xmm7=first argument, with exponent set to 0+bias
|
|
orpd xmm7, xmm2
|
|
; extract sign/exponent + next 4 bits
|
|
pextrw ecx, xmm4, 3
|
|
|
|
and eax, 0ffH
|
|
add eax, 1
|
|
and eax, 1feH
|
|
; get r1=x*rcp_t1
|
|
mulsd xmm7, QWORD PTR [rcp_t1+eax*4]
|
|
; load first reciprocal value (based on first 7 bits)
|
|
movlpd xmm5, QWORD PTR [rcp_t1+eax*4]
|
|
add eax, eax
|
|
; load first log2_table values (high, low) in xmm6
|
|
movapd xmm6, QWORD PTR [log2_t1+eax*4]
|
|
|
|
; check sign/exponent of x
|
|
mov edx, 7fefH
|
|
; x infinity/NaN or negative ?
|
|
sub edx, ecx
|
|
; x denormal ?
|
|
sub ecx, 0010H
|
|
or ecx, edx
|
|
cmp ecx, 80000000H
|
|
jae SPECIAL_X
|
|
|
|
mov ecx, 0
|
|
; set xmm1=2^8*(bias-0.5-2^{-8})
|
|
mov edx, 3fe7fH
|
|
BACK_MAIN:
|
|
BACK_DENORMAL:
|
|
movd xmm1, edx
|
|
; get k (exponent) + j (j=0 if mantissa<1.5, 1 otherwise)
|
|
psubq xmm0, xmm1
|
|
psrlq xmm0, 8
|
|
; convert to DP format
|
|
cvtdq2pd xmm0, xmm0
|
|
|
|
; xmm1=mask for splitting argments in high/low parts
|
|
movlpd xmm1, QWORD PTR [HALFSIG]
|
|
|
|
; copy r1 to xmm3, set exponent to 0+bias
|
|
$movsd xmm3, xmm7 ;andpd xmm3, xmm7
|
|
; extract bits 7..14
|
|
psrlq xmm7, 64-12-14
|
|
pextrw eax, xmm7, 0
|
|
|
|
; set exponent of argument to 0+bias
|
|
andpd xmm4, QWORD PTR [SIGMASK]
|
|
|
|
and eax, 0ffH
|
|
add eax, 1
|
|
and eax, 1feH
|
|
; load second reciprocal value (based on 7 bit index)
|
|
; get r2=x*rcp_t1*rcp_t2
|
|
mulsd xmm3, QWORD PTR [rcp_t2+eax*4]
|
|
; rcp_t1*rcp_t2 (exact multiplication)
|
|
mulsd xmm5, QWORD PTR [rcp_t2+eax*4]
|
|
add eax, eax
|
|
; load next log2_table values (high, low) to xmm6
|
|
addpd xmm6, QWORD PTR [log2_t2+eax*4]
|
|
|
|
orpd xmm4, QWORD PTR [ONEMASK]
|
|
; add k
|
|
addsd xmm6, xmm0
|
|
; get xH = high part of x
|
|
andpd xmm1, xmm4
|
|
|
|
; copy r2 to xmm2
|
|
$movsd xmm2, xmm3
|
|
; extract bits 13...21
|
|
psrlq xmm3, 64-12-21
|
|
pextrw eax, xmm3, 0
|
|
|
|
; xmm0 = mask for splitting term in high/low parts
|
|
movlpd xmm0, QWORD PTR [HALFSIG]
|
|
; get xL = low part of x
|
|
subsd xmm4, xmm1
|
|
; xmm7=-log2(e) in double precision (scaling factor for reduced argument)
|
|
movlpd xmm7, QWORD PTR [LHN]
|
|
|
|
and eax, 1ffH
|
|
add eax, 1
|
|
and eax, 3feH
|
|
; load third reciprocal value (based on 8 bit index)
|
|
; get rcp_t1*rcp_t2*rcp_t3 (exact multiplication)
|
|
mulsd xmm5, QWORD PTR [rcp_t3+eax*4]
|
|
; get r3=x*rcp_t1*rcp_t2*rcp_t3
|
|
mulsd xmm2, QWORD PTR [rcp_t3+eax*4]
|
|
; load next log2_table values (high, low) to xmm6
|
|
addpd xmm6, QWORD PTR [log2_t3+eax*8]
|
|
|
|
|
|
; xmm0=rcp_H
|
|
andpd xmm0, xmm5
|
|
; xmm5=rcp_L
|
|
subsd xmm5, xmm0
|
|
; reduced argument
|
|
addsd xmm7, xmm2
|
|
|
|
; copy rcp_H
|
|
$movsd xmm3, xmm0
|
|
; rcp_H*xH
|
|
mulsd xmm0, xmm1
|
|
; xH*rcp_L
|
|
mulsd xmm1, xmm5
|
|
; rcp_H*xL
|
|
mulsd xmm3, xmm4
|
|
|
|
; calculate rounding error for reduced argument: R-rcp_H*xH
|
|
subsd xmm2, xmm0
|
|
; rcp_L*xL
|
|
mulsd xmm4, xmm5
|
|
; copy xmm6=D1+D2+D3|k+T1+T2+T3
|
|
$movsd xmm0, xmm6
|
|
; R-rcp_H*xH-rcp_L*xH
|
|
subsd xmm2, xmm1
|
|
; add reduced argument to high order term: xmm6=D1+D2+D3|k+T1+T2+T3+Rh
|
|
addsd xmm6, xmm7
|
|
|
|
; load y
|
|
movlpd xmm1, QWORD PTR [esp+12]
|
|
; get sign/exponent
|
|
pextrw eax, xmm1, 3
|
|
|
|
; R-rcp_H*xH-rcp_L*xH-rcp_H*xL
|
|
subsd xmm2, xmm3
|
|
; get -Rh
|
|
subsd xmm0, xmm6
|
|
; xmm3=HALFSIG mask
|
|
movlpd xmm3, QWORD PTR [HALFSIG]
|
|
|
|
; get exponent for log2(x)
|
|
pextrw edx, xmm6, 3
|
|
|
|
; E=R-rcp_H*xH-rcp_L*xH-rcp_H*xL-rcp_L*xL
|
|
subsd xmm2, xmm4
|
|
; xmm4=k+T1+T2+T3+Rh
|
|
$movsd xmm4, xmm6
|
|
; get Rl=R-Rh
|
|
addsd xmm0, xmm7
|
|
; R=R-E
|
|
subsd xmm7, xmm2
|
|
; xmm6=D1+D2+D3|k+T1+T2+T3+Rh+Eh
|
|
subsd xmm6, xmm2
|
|
; xmm7=R|R
|
|
unpcklpd xmm7, xmm7
|
|
|
|
; check if y is infinity/NaN
|
|
and eax, 7ff0H
|
|
cmp eax, 7ff0H
|
|
jae SPECIAL_Y
|
|
and edx, 7ff0H
|
|
sub eax, 3ff0H
|
|
add eax, edx
|
|
; y*log2(x)>=2^{11} ? (i.e. 2^{11}-eps-x<0)
|
|
mov edx, 40a0H
|
|
sub edx, eax
|
|
; avoid underflow on intermediate calculations (|y*log2(x)|<2^{-56} ?)
|
|
sub eax, 3c70H
|
|
or edx, eax
|
|
cmp edx, 80000000H
|
|
; small input or UF/OF
|
|
jae RETURN_ONE
|
|
|
|
BACK_XY_CHECK:
|
|
; -Eh
|
|
subsd xmm4, xmm6
|
|
; -El
|
|
subsd xmm2, xmm4
|
|
; xmm4=HALFSIG mask
|
|
movlpd xmm4, QWORD PTR [HALFSIG]
|
|
; yH
|
|
andpd xmm3, xmm1
|
|
; HH (high part of k+T1+T2+T3+Rh+Eh)
|
|
andpd xmm4, xmm6
|
|
|
|
; add correction to reduced argument: Rl+El
|
|
subsd xmm0, xmm2
|
|
|
|
xorpd xmm2, xmm2
|
|
mov edx, 4060H ;70H
|
|
pinsrw xmm2, edx, 3
|
|
|
|
; copy yH
|
|
$movsd xmm5, xmm3
|
|
; yH*HH
|
|
mulsd xmm3, xmm4
|
|
; HL
|
|
subsd xmm6, xmm4
|
|
; yL
|
|
subsd xmm1, xmm5
|
|
|
|
; get 2^7*(yH*HH)
|
|
mulsd xmm3, xmm2 ;paddd xmm3, xmm2
|
|
|
|
; yH*HL
|
|
mulsd xmm5, xmm6
|
|
; xmm2=cl1|cl3
|
|
movapd xmm2, QWORD PTR [clv]
|
|
; HH*yL
|
|
mulsd xmm4, xmm1
|
|
|
|
; get int(2^7*H)
|
|
cvtsd2si eax, xmm3
|
|
; HL*yL
|
|
mulsd xmm6, xmm1
|
|
; xmm1=cl2|cl4
|
|
movapd xmm1, QWORD PTR [clv+16]
|
|
|
|
; yH*HL+yL*HH
|
|
addsd xmm5, xmm4
|
|
; get D1+D2+D3
|
|
pshufd xmm4, xmm6, 0eeH
|
|
; yH*HL+yL*HH+yL*HL
|
|
addsd xmm5, xmm6
|
|
|
|
; underflow/possible overflow condition ?
|
|
mov edx, 1ff7fH
|
|
; eax>=(2^10-1)*2^7
|
|
sub edx, eax
|
|
; eax+bias*2^7<=59*2^7 ?
|
|
add eax, 1e1ffH
|
|
or edx, eax
|
|
; restore eax value
|
|
sub eax, 1e1ffH
|
|
; check sign bit
|
|
cmp edx, 0
|
|
jle UF_OF_CASES
|
|
|
|
|
|
; get table index, and exponent of result
|
|
; ecx contains expected sign of the result, scaled by 2^11
|
|
add ecx, eax
|
|
and eax, 7fH
|
|
; get exponent of result (scaled by 2^7)
|
|
and ecx, 0ffffff80h
|
|
; add exponent bias*2^7
|
|
add ecx, 1ff80h
|
|
|
|
; D1+D2+D3+(Rl+El)
|
|
addsd xmm4, xmm0
|
|
; xmm0=xmm3=2^7*H
|
|
$movsd xmm0, xmm3
|
|
|
|
; (2^7)*H+Shifter (to round to integer)
|
|
addsd xmm3, QWORD PTR [Shifter]
|
|
|
|
|
|
; cl1*R|cl3*R
|
|
mulpd xmm2, xmm7
|
|
|
|
; int((2^7)*H)=((2^7)*H+Shifter)-Shifter
|
|
subsd xmm3, QWORD PTR [Shifter]
|
|
|
|
; R^2|R^2
|
|
mulpd xmm7, xmm7
|
|
|
|
; R_exp_h'=R_exp_h*(2^7)=(2^7)*H-int((2^7)*H)
|
|
subsd xmm0, xmm3
|
|
|
|
; load table values
|
|
add eax, eax
|
|
add eax, eax
|
|
add eax, eax
|
|
add eax, eax
|
|
; D|T
|
|
movapd xmm3, QWORD PTR [exp2_tbl+eax]
|
|
|
|
; load ce3|ce5
|
|
movapd xmm6, QWORD PTR [cev]
|
|
|
|
|
|
; cl2*R^2|cl4*R^2
|
|
mulpd xmm1, xmm7
|
|
; cl1*R+cl2*R^2|cl3*R+cl4*R^2
|
|
addpd xmm2, xmm1
|
|
; unpack cl1*R+cl2*R^2
|
|
pshufd xmm1, xmm2, 0eeh
|
|
; *|cl3*R^3+cl4*R^4
|
|
mulsd xmm2, xmm7
|
|
; xmm7=0
|
|
xorpd xmm7, xmm7
|
|
mov edx, 3f80H
|
|
; Pl14
|
|
addsd xmm2, xmm1
|
|
; xmm7=scaling constant
|
|
pinsrw xmm7, edx, 3
|
|
; low part of log2(x): D1+D2+D3+(Rl+E)+P14
|
|
addsd xmm2, xmm4
|
|
|
|
; load ce1
|
|
movlpd xmm4, QWORD PTR [cev+32]
|
|
; load 2^k
|
|
movd xmm1, ecx
|
|
|
|
UF_BACK:
|
|
; y*(D1+D2+D3+(Rl+E)+P14)
|
|
mulsd xmm2, QWORD PTR [esp+12]
|
|
; get R_exp_h=2^{-7}*R_exp_h'
|
|
mulsd xmm0, xmm7
|
|
|
|
psllq xmm1, 52-7
|
|
; xmm1=2^k|2^k
|
|
pshufd xmm1, xmm1, 044h
|
|
|
|
; load ce2|ce4
|
|
movapd xmm7, QWORD PTR [cev+16]
|
|
; low part of y*log2(x): yH*HL+yL*HH+yL*HL+y*(D1+D2+D3+(Rl+E)+P14)
|
|
addsd xmm5, xmm2
|
|
|
|
; get D*2^k|T*2^k
|
|
mulpd xmm3, xmm1
|
|
; get R_exp=R_exp_h+yH*HL+yL*HH+yL*HL+y*(D1+D2+D3+(Rl+E)+P14)
|
|
addsd xmm0, xmm5
|
|
; xmm0=R_exp|R_exp
|
|
unpcklpd xmm0, xmm0
|
|
|
|
; ce3*R_exp|ce5*R_exp
|
|
mulpd xmm6, xmm0
|
|
; ce1*R_exp
|
|
mulsd xmm4, xmm0
|
|
; R_exp^2|R_exp^2
|
|
mulpd xmm0, xmm0
|
|
; ce2+ce3*R_exp|ce4+ce5*R_exp
|
|
addpd xmm7, xmm6
|
|
; R_exp^2*(ce2+ce3*R_exp)|R_exp^2*(ce4+ce5*R_exp)
|
|
mulpd xmm7, xmm0
|
|
; R_exp^2*(T*2^k)
|
|
mulsd xmm0, xmm3
|
|
; unpack R_exp^2*(ce2+ce3*R_exp)
|
|
pshufd xmm6, xmm7, 0eeh
|
|
; R_exp^4*(T*2^k)*(ce4+ce5*R_exp)
|
|
mulsd xmm0, xmm7
|
|
; unpack D*2^k
|
|
pshufd xmm5, xmm3, 0eeh
|
|
; R_exp^2*(T*2^k)*(ce2+ce3*R_exp)
|
|
mulsd xmm6, xmm3
|
|
; ce1*(T*2^k)*R_exp
|
|
mulsd xmm4, xmm3
|
|
|
|
; P45*(T*2^k)+D*2^k
|
|
addsd xmm0, xmm5
|
|
sub esp, 16
|
|
; P25*(T*2^k)+D*2^k
|
|
addsd xmm0, xmm6
|
|
; P15*(T*2^k)+D*2^k
|
|
addsd xmm0, xmm4
|
|
|
|
; T+P15*(T*2^k)+D*2^k
|
|
addsd xmm0, xmm3
|
|
|
|
movlpd QWORD PTR [esp+4], xmm0 ; return result
|
|
fld QWORD PTR [esp+4] ;
|
|
add esp, 16
|
|
ret
|
|
|
|
|
|
|
|
SPECIAL_X:
|
|
; load y
|
|
movlpd xmm1, QWORD PTR [esp+12]
|
|
movlpd xmm3, QWORD PTR [ABSVALMASK]
|
|
; load low half of y in eax
|
|
movd eax, xmm1
|
|
$movsd xmm2, xmm1
|
|
; eliminate sign, load high half of y in ecx
|
|
andpd xmm1, xmm3
|
|
psrlq xmm1, 32
|
|
movd ecx, xmm1
|
|
; y infinity/NaN ?
|
|
cmp ecx, 7ff00000H
|
|
jae Y_INF_NAN_CHECK_X
|
|
; y=+/- 0?
|
|
or eax, ecx
|
|
cmp eax, 0
|
|
jz Y_ZERO
|
|
|
|
; denormal, positive x ?
|
|
cmp edx, 0
|
|
jge DENORMAL_POS_X
|
|
; reconstruct sign/expon from edx=7fefH-s/exp
|
|
neg edx
|
|
add edx, 7fefH
|
|
|
|
; y integer ?
|
|
; xmm3=0fff00..0
|
|
psllq xmm3,64-12
|
|
; set exponent of y to all 1's
|
|
orpd xmm2, xmm3
|
|
; load bias-12
|
|
mov ecx, 3ffH-12
|
|
movd xmm3, ecx
|
|
; get exponent+64-52
|
|
psrlq xmm1, 32-12
|
|
psubd xmm1, xmm3
|
|
; xmm3=0
|
|
pxor xmm3, xmm3
|
|
; if exponent+12<0, set shift count to 0
|
|
pmaxsw xmm1, xmm3
|
|
; get fractional tail of y
|
|
psllq xmm2, xmm1
|
|
; fractional tail=0 ? (i.e. y integer ?)
|
|
pcmpeqd xmm2, xmm3
|
|
pmovmskb eax, xmm2
|
|
|
|
; take absolute value of x
|
|
mov ecx, edx
|
|
and edx, 7fffH
|
|
; check if x infinity/NaN
|
|
cmp edx, 7ff0H
|
|
jae INF_NAN_X
|
|
|
|
; x negative, finite
|
|
; y not integer ?
|
|
and eax, 0ffH
|
|
cmp eax, 0ffH
|
|
jnz RET_INVALID
|
|
|
|
; y integer
|
|
; y odd integer ?
|
|
movlpd xmm1, QWORD PTR [esp+12]
|
|
movlpd xmm2, QWORD PTR [esp+12]
|
|
; load bias-11
|
|
mov ecx, 3ffH-11
|
|
movd xmm3, ecx
|
|
; get exponent+64-53
|
|
andpd xmm1, QWORD PTR [ABSVALMASK]
|
|
psrlq xmm1, 64-12
|
|
psubd xmm1, xmm3
|
|
; xmm3=100..0
|
|
movlpd xmm3, QWORD PTR [NEG_ZERO]
|
|
; get last integer bit, fractional tail of y
|
|
psllq xmm2, xmm1
|
|
; last int. bit=0 ? (i.e. y is an odd integer ?)
|
|
pcmpeqd xmm2, xmm3
|
|
pmovmskb eax, xmm2
|
|
and eax, 0ffH
|
|
; if eax!=ffH, set ecx=2^11, else set ecx=0
|
|
mov ecx, 3ff01H
|
|
; set ecx=2^11*2^7 if y is an odd integer
|
|
add ecx, eax
|
|
and ecx, 40000H
|
|
|
|
; x denormal ?
|
|
cmp edx, 0010H
|
|
jb DENORMAL_X
|
|
|
|
; set xmm1=2^8*(bias-0.5-2^{-8})
|
|
mov edx, 0bfe7fH
|
|
|
|
; load constants, return to main path
|
|
movlpd xmm3, QWORD PTR [SIGMASK]
|
|
movlpd xmm2, QWORD PTR [ONEMASK]
|
|
|
|
jmp BACK_MAIN
|
|
|
|
Y_INF_NAN_CHECK_X:
|
|
; x NaN?
|
|
movlpd xmm7, QWORD PTR [esp+4]
|
|
movlpd xmm4, QWORD PTR [esp+4]
|
|
movd edx, xmm7
|
|
psrlq xmm7, 32
|
|
movd eax, xmm7
|
|
|
|
mov ecx, eax
|
|
and eax, 7fffffffH
|
|
cmp eax, 7ff00000H
|
|
jb Y_INF_NAN
|
|
ja X_NAN
|
|
|
|
cmp edx, 0
|
|
ja X_NAN
|
|
jmp Y_INF_NAN
|
|
|
|
DENORMAL_POS_X:
|
|
mov ecx, 0
|
|
DENORMAL_X:
|
|
; xmm0=2^64
|
|
xorpd xmm0, xmm0
|
|
mov eax, (3ffH+64)*16
|
|
pinsrw xmm0, eax, 3
|
|
; load constants
|
|
movlpd xmm7, QWORD PTR [SIGMASK]
|
|
movlpd xmm2, QWORD PTR [ONEMASK]
|
|
|
|
; scale x by 2^64
|
|
mulsd xmm0, xmm4
|
|
|
|
; x=+/-0 ?
|
|
movd edx, xmm4
|
|
psrlq xmm4, 32
|
|
movd eax, xmm4
|
|
cmp edx, 0
|
|
jz ZERO_X
|
|
|
|
BACK_DEN:
|
|
andpd xmm7, xmm0
|
|
$movsd xmm4, xmm0
|
|
andpd xmm0, QWORD PTR [ABSVALMASK]
|
|
psrlq xmm0, 64-12-8
|
|
; get first 7 bits after leading 1
|
|
pextrw eax, xmm0, 0
|
|
orpd xmm7, xmm2
|
|
|
|
and eax, 0ffH
|
|
add eax, 1
|
|
and eax, 1feH
|
|
; get r1=x*rcp_t1
|
|
mulsd xmm7, QWORD PTR [rcp_t1+eax*4]
|
|
; load first reciprocal value (based on first 7 bits)
|
|
movlpd xmm5, QWORD PTR [rcp_t1+eax*4]
|
|
add eax, eax
|
|
; load first log2_table values (high, low) in xmm6
|
|
movapd xmm6, QWORD PTR [log2_t1+eax*4]
|
|
|
|
; 2^8*(bias+64-0.5-2^{-8})
|
|
mov edx, 43e7fH
|
|
jmp BACK_DENORMAL
|
|
|
|
ZERO_X:
|
|
mov edx, eax
|
|
and edx, 7fffffffH
|
|
cmp edx, 0
|
|
jnz BACK_DEN
|
|
|
|
; get sign of y
|
|
mov edx, DWORD PTR [esp+16]
|
|
and edx, 80000000H
|
|
cmp edx, 0
|
|
jz ZERO_X_POS_Y
|
|
|
|
; return -infinity if (y odd and x=-0), +infinity otherwise
|
|
; ecx=0 or 2^11*2^7
|
|
shl ecx, 20-7
|
|
; eax=2^31 if (y odd and x=-0)
|
|
and eax, ecx
|
|
mov edx, 7ff00000H
|
|
; set sign of infinity
|
|
or edx, eax
|
|
; load result
|
|
movd xmm0, edx
|
|
psllq xmm0, 32
|
|
|
|
; raise divide by zero
|
|
movlpd xmm1, QWORD PTR [ONEMASK]
|
|
movlpd xmm2, QWORD PTR [esp+4]
|
|
divsd xmm1, xmm2
|
|
|
|
mov edx, 27
|
|
jmp CALL_LIBM_ERROR
|
|
|
|
|
|
ZERO_X_POS_Y:
|
|
|
|
; x=-0, and y odd integer ?
|
|
; ecx=0 or 2^11*2^7
|
|
shl ecx, 20-7
|
|
; eax=2^31 if (y odd and x=-0)
|
|
and eax, ecx
|
|
cmp eax, 0
|
|
jnz RET_NEG_ZERO
|
|
|
|
; return +0
|
|
fldz
|
|
ret
|
|
|
|
|
|
INF_NAN_X:
|
|
; y finite, not zero
|
|
; x NaN ?
|
|
movlpd xmm3, QWORD PTR [SIGMASK]
|
|
xorpd xmm1, xmm1
|
|
; get significand bits
|
|
andpd xmm3, xmm4
|
|
; significand bits = 0 ?
|
|
pcmpeqd xmm1, xmm3
|
|
pmovmskb ecx, xmm1
|
|
and ecx, 0ffH
|
|
cmp ecx, 0ffH
|
|
jnz X_NAN
|
|
|
|
; x=+infinity ?
|
|
pextrw ecx, xmm4, 3
|
|
and ecx, 8000H
|
|
cmp ecx,0
|
|
jz X_INF
|
|
|
|
; x=-infinity
|
|
; y integer ?
|
|
and eax, 0ffH
|
|
cmp eax, 0ffH
|
|
jnz X_NINF
|
|
; y odd integer ?
|
|
movlpd xmm1, QWORD PTR [esp+12]
|
|
movlpd xmm2, QWORD PTR [esp+12]
|
|
; load bias-11
|
|
mov ecx, 3ffH-11
|
|
movd xmm3, ecx
|
|
; get exponent+64-53
|
|
andpd xmm1, QWORD PTR [ABSVALMASK]
|
|
psrlq xmm1, 64-12
|
|
psubd xmm1, xmm3
|
|
; xmm3=0
|
|
pxor xmm3, xmm3
|
|
; get last integer bit, fractional tail of y
|
|
psllq xmm2, xmm1
|
|
; last int. bit=0 ? (i.e. y is an even integer ?)
|
|
pcmpeqd xmm2, xmm3
|
|
pmovmskb eax, xmm2
|
|
and eax, 0ffH
|
|
cmp eax, 0ffH
|
|
jz X_NINF
|
|
|
|
; x=-infinity, y an odd integer
|
|
movlpd xmm1, QWORD PTR [esp+12]
|
|
pextrw eax, xmm1, 3
|
|
and eax, 8000H
|
|
cmp eax, 0
|
|
; y>0 ?
|
|
jz RET_NINF
|
|
; y<0, return -0
|
|
|
|
RET_NEG_ZERO:
|
|
fld [NEG_ZERO]
|
|
ret
|
|
|
|
|
|
RET_NINF:
|
|
fld [NEG_INF]
|
|
ret
|
|
|
|
X_NINF:
|
|
; x=-infinity, y not an odd integer
|
|
movlpd xmm1, QWORD PTR [esp+12]
|
|
pextrw eax, xmm1, 3
|
|
and eax, 8000H
|
|
cmp eax, 0
|
|
; y>0 ? (return infinity)
|
|
jz RET_INF
|
|
; y<0, return 0
|
|
fldz
|
|
ret
|
|
|
|
X_INF:
|
|
; y<0 ?
|
|
movlpd xmm1, QWORD PTR [esp+12]
|
|
pextrw eax, xmm1, 3
|
|
and eax, 8000H
|
|
cmp eax, 0
|
|
jz RET_INF
|
|
|
|
; y<0, return 0
|
|
fldz
|
|
ret
|
|
|
|
|
|
X_NAN:
|
|
addsd xmm4, xmm4
|
|
; sub esp, 16
|
|
; movlpd QWORD PTR [esp+4], xmm4
|
|
; fld QWORD PTR [esp+4]
|
|
; add esp, 16
|
|
; ret
|
|
$movsd xmm0, xmm4
|
|
mov edx, 1006
|
|
jmp CALL_LIBM_ERROR
|
|
|
|
RET_INVALID:
|
|
; x=-0?
|
|
movlpd xmm2, QWORD PTR [esp+4]
|
|
movd eax, xmm2
|
|
psrlq xmm2, 32
|
|
movd edx, xmm2
|
|
and edx, 7fffffffH
|
|
or eax, edx
|
|
mov ecx, 0
|
|
cmp eax, 0
|
|
jz ZERO_X
|
|
|
|
; raise INVALID exception
|
|
movlpd xmm1, QWORD PTR [sNaN]
|
|
movlpd xmm0, QWORD PTR [QIND]
|
|
mulsd xmm1, xmm1
|
|
mov edx, 28
|
|
jmp CALL_LIBM_ERROR
|
|
|
|
|
|
SPECIAL_Y:
|
|
|
|
; load x, y
|
|
movlpd xmm4, QWORD PTR [esp+4]
|
|
movlpd xmm2, QWORD PTR [esp+12]
|
|
; x=+/-1 ?
|
|
; load lower bits of x
|
|
movd eax, xmm4
|
|
cmp eax, 0
|
|
jnz Y_INF_NAN
|
|
|
|
psrlq xmm4, 32
|
|
movd edx, xmm4
|
|
; x=1 ?
|
|
cmp edx, 3ff00000H
|
|
jz RET_ONE
|
|
|
|
; x=-1 ?
|
|
cmp edx, 0bff00000H
|
|
jnz Y_INF_NAN
|
|
|
|
; y=NaN ? (xmm1 contains y)
|
|
movlpd xmm3, QWORD PTR [SIGMASK]
|
|
xorpd xmm1, xmm1
|
|
; get significand bits, to determine if y=NaN
|
|
andpd xmm3, xmm2
|
|
; significand bits = 0 ?
|
|
pcmpeqd xmm1, xmm3
|
|
pmovmskb eax, xmm1
|
|
cmp eax, 0ffH
|
|
jnz RET_Y_NAN
|
|
|
|
; y=+/-infinity, return 1
|
|
fld1
|
|
ret
|
|
|
|
|
|
Y_INF_NAN:
|
|
|
|
movlpd xmm3, QWORD PTR [SIGMASK]
|
|
xorpd xmm1, xmm1
|
|
; get significand bits, to determine if y=NaN
|
|
andpd xmm3, xmm2
|
|
; significand bits = 0 ?
|
|
pcmpeqd xmm1, xmm3
|
|
pmovmskb eax, xmm1
|
|
and eax, 0ffH
|
|
cmp eax, 0ffH
|
|
jnz RET_Y_NAN
|
|
|
|
; y infinity, get sign
|
|
pextrw eax, xmm2, 3
|
|
; get x
|
|
movlpd xmm4, QWORD PTR [esp+4]
|
|
and eax, 8000H
|
|
; x=-1 ? (ecx,edx=high, low parts of x)
|
|
xor ecx, 0bff00000H
|
|
or edx, ecx
|
|
cmp edx, 0
|
|
; if x=-1, return 1
|
|
jz RET_ONE
|
|
cmp eax, 0
|
|
jz Y_INF
|
|
|
|
; |x|<1 ? ( |x|=1 will not take this path)
|
|
pextrw eax, xmm4, 3
|
|
and eax, 7ff0H
|
|
cmp eax, 3ff0H
|
|
jb RET_INF
|
|
|
|
; |x|>1, y=-infinity, return 0
|
|
fldz
|
|
ret
|
|
|
|
|
|
Y_INF:
|
|
; y=+infinity
|
|
; |x|>=1 ? ( |x|=1 will not take this path)
|
|
pextrw eax, xmm4, 3
|
|
and eax, 7ff0H
|
|
cmp eax, 3ff0H
|
|
jae RET_INF
|
|
|
|
; |x|<1, return 0
|
|
fldz
|
|
ret
|
|
|
|
RET_INF:
|
|
fld QWORD PTR [INF]
|
|
ret
|
|
|
|
|
|
RET_Y_NAN:
|
|
addsd xmm2, xmm2
|
|
; sub esp, 16
|
|
; movlpd QWORD PTR [esp+4], xmm2
|
|
; fld QWORD PTR [esp+4]
|
|
; add esp, 16
|
|
; ret
|
|
$movsd xmm0, xmm2
|
|
mov edx, 1006
|
|
jmp CALL_LIBM_ERROR
|
|
|
|
Y_ZERO:
|
|
|
|
; x=0 ?
|
|
movd eax, xmm4
|
|
psrlq xmm4, 32
|
|
movd edx, xmm4
|
|
and edx, 7fffffffH
|
|
mov ecx, eax
|
|
or eax, edx
|
|
movlpd xmm0, QWORD PTR [ONEMASK]
|
|
mov edx, 26
|
|
cmp eax, 0
|
|
jz CALL_LIBM_ERROR
|
|
|
|
; x=NaN ?
|
|
movd eax, xmm4
|
|
mov edx, 29
|
|
and eax, 7fffffffH
|
|
cmp eax, 7ff00000H
|
|
; x=NaN
|
|
ja CALL_LIBM_ERROR
|
|
; x!=NaN
|
|
jb Y_ZERO_RET
|
|
; x=NaN ?
|
|
cmp ecx,0
|
|
ja CALL_LIBM_ERROR
|
|
|
|
Y_ZERO_RET:
|
|
; return 1 for any x
|
|
sub esp, 16
|
|
movlpd QWORD PTR [esp+4], xmm0
|
|
fld QWORD PTR [esp+4]
|
|
add esp, 16
|
|
|
|
ret
|
|
|
|
RET_ONE:
|
|
; used for x=+/-1, special y
|
|
; fld1
|
|
; ret
|
|
|
|
|
|
movlpd xmm1, QWORD PTR [QIND]
|
|
movlpd xmm0, QWORD PTR [esp+12]
|
|
; set Invalid flag, if necessary
|
|
addsd xmm0, xmm1
|
|
|
|
mov edx, 28
|
|
; jmp cALL_LIBM_ERROR
|
|
|
|
|
|
CALL_LIBM_ERROR:
|
|
;call libm_error_support(void *arg1,void *arg2,void *retval,error_types input_tag)
|
|
sub esp, 28
|
|
movlpd QWORD PTR [esp+16], xmm0
|
|
mov DWORD PTR [esp+12],edx
|
|
mov edx, esp
|
|
add edx,16
|
|
mov DWORD PTR [esp+8],edx
|
|
add edx,16+8
|
|
mov DWORD PTR [esp+4],edx
|
|
sub edx, 8
|
|
mov DWORD PTR [esp],edx
|
|
call NEAR PTR __libm_error_support
|
|
; movlpd xmm0, QWORD PTR [esp+16]
|
|
|
|
; movlpd QWORD PTR [esp+16], xmm0 ; return result
|
|
fld QWORD PTR [esp+16] ;
|
|
add esp,28
|
|
ret
|
|
|
|
|
|
UF_OF_CASES:
|
|
cmp eax,0
|
|
jle UNDERFLOW_CASES
|
|
|
|
; if eax>=2^11*2^7, oF occurs
|
|
cmp eax, 40000H
|
|
jae RET_INF_OF
|
|
|
|
push esi
|
|
; overflow
|
|
; get table index, and exponent of result
|
|
mov edx, eax
|
|
; ecx contains expected sign of the result, scaled by 2^11
|
|
and eax, 7fH
|
|
; add exponent (bias+bias)*2^7
|
|
add ecx, 3ff00h
|
|
; edx+=(bias+(-bias)-1)*2^7 ; the same -1
|
|
sub edx, 128
|
|
and edx, 0ffffff80H
|
|
push edi
|
|
mov edi, 3ff0H
|
|
jmp OF_CONT
|
|
|
|
|
|
UNDERFLOW_CASES:
|
|
|
|
cmp eax, (2-1024)*256
|
|
jle RET_ZERO_UF
|
|
|
|
push esi
|
|
; get table index, and exponent of result
|
|
mov edx, eax
|
|
; ecx contains expected sign of the result, scaled by 2^11
|
|
and eax, 7fH
|
|
; add exponent (bias+1-bias)*2^7
|
|
add ecx, 80h
|
|
; edx=exponent*2^7
|
|
and edx, 0ffffff80H
|
|
; edx+=(bias+bias-1)*2^7
|
|
add edx, 3fe80H
|
|
push edi
|
|
mov edi, 0
|
|
|
|
OF_CONT:
|
|
; D1+D2+D3+(Rl+E)
|
|
addsd xmm4, xmm0
|
|
; xmm0=xmm3=2^7*H
|
|
$movsd xmm0, xmm3
|
|
|
|
; (2^7)*H+Shifter (to round to integer)
|
|
addsd xmm3, QWORD PTR [Shifter]
|
|
|
|
; esi=edx-bias*2^7
|
|
mov esi, edx
|
|
sub esi, 1ff80H
|
|
|
|
; cl1*R|cl3*R
|
|
mulpd xmm2, xmm7
|
|
|
|
; int((2^7)*H)=((2^7)*H+Shifter)-Shifter
|
|
subsd xmm3, QWORD PTR [Shifter]
|
|
|
|
; R^2|R^2
|
|
mulpd xmm7, xmm7
|
|
|
|
; R_exp_h'=R_exp_h*(2^7)=(2^7)*H-int((2^7)*H)
|
|
subsd xmm0, xmm3
|
|
|
|
; load table values
|
|
add eax, eax
|
|
add eax, eax
|
|
add eax, eax
|
|
add eax, eax
|
|
; D|T
|
|
movapd xmm3, QWORD PTR [exp2_tbl+eax]
|
|
|
|
; load ce3|ce5
|
|
movapd xmm6, QWORD PTR [cev]
|
|
|
|
|
|
; cl2*R^2|cl4*R^2
|
|
mulpd xmm1, xmm7
|
|
; cl1*R+cl2*R^2|cl3*R+cl4*R^2
|
|
addpd xmm2, xmm1
|
|
; unpack cl1*R+cl2*R^2
|
|
pshufd xmm1, xmm2, 0eeh
|
|
; *|cl3*R^3+cl4*R^4
|
|
mulsd xmm2, xmm7
|
|
; Pl14
|
|
addsd xmm2, xmm1
|
|
; low part of log2(x): D1+D2+D3+(Rl+E)+P14
|
|
addsd xmm2, xmm4
|
|
|
|
; load ce1
|
|
movlpd xmm4, QWORD PTR [cev+32]
|
|
; load 2^k2
|
|
movd xmm1, edx
|
|
; edx=-(edx-bias*2^7)/2^7
|
|
sub edx, 1ff80H
|
|
neg edx
|
|
sar edx, 7
|
|
|
|
add edx, 2
|
|
; if edx>=32, set edx to 64+
|
|
mov eax, edx
|
|
and eax, 32
|
|
add edx, eax
|
|
|
|
; xmm7=0
|
|
xorpd xmm7, xmm7
|
|
mov eax, 3f80H
|
|
; xmm7=scaling constant
|
|
pinsrw xmm7, eax, 3
|
|
|
|
; y*(D1+D2+D3+(Rl+E)+P14)
|
|
mulsd xmm2, QWORD PTR [esp+12+4+4]
|
|
; get R_exp_h=2^{-7}*R_exp_h'
|
|
mulsd xmm0, xmm7
|
|
|
|
psllq xmm1, 52-7
|
|
; xmm1=2^k2|2^k2
|
|
pshufd xmm1, xmm1, 044h
|
|
|
|
; load ce2|ce4
|
|
movapd xmm7, QWORD PTR [cev+16]
|
|
; low part of y*log2(x): yH*HL+yL*HH+yL*HL+y*(D1+D2+D3+(Rl+E)+P14)
|
|
addsd xmm5, xmm2
|
|
|
|
; get D*2^k|T*2^k
|
|
mulpd xmm3, xmm1
|
|
; get R_exp=R_exp_h+yH*HL+yL*HH+yL*HL+y*(D1+D2+D3+(Rl+E)+P14)
|
|
addsd xmm0, xmm5
|
|
; xmm0=R_exp|R_exp
|
|
unpcklpd xmm0, xmm0
|
|
|
|
; ce3*R_exp|ce5*R_exp
|
|
mulpd xmm6, xmm0
|
|
; ce1*R_exp
|
|
mulsd xmm4, xmm0
|
|
; R_exp^2|R_exp^2
|
|
mulpd xmm0, xmm0
|
|
; ce2+ce3*R_exp|ce4+ce5*R_exp
|
|
addpd xmm7, xmm6
|
|
; R_exp^2*(ce2+ce3*R_exp)|R_exp^2*(ce4+ce5*R_exp)
|
|
mulpd xmm7, xmm0
|
|
; R_exp^2*(T*2^k)
|
|
mulsd xmm0, xmm3
|
|
; unpack R_exp^2*(ce2+ce3*R_exp)
|
|
pshufd xmm6, xmm7, 0eeh
|
|
; R_exp^4*(T*2^k)*(ce4+ce5*R_exp)
|
|
mulsd xmm0, xmm7
|
|
; unpack D*2^k
|
|
pshufd xmm5, xmm3, 0eeh
|
|
; R_exp^2*(T*2^k)*(ce2+ce3*R_exp)
|
|
mulsd xmm6, xmm3
|
|
; ce1*(T*2^k)*R_exp
|
|
mulsd xmm4, xmm3
|
|
|
|
; xmm7=2^k'
|
|
movd xmm7, ecx
|
|
psllq xmm7, 52-7
|
|
|
|
movd xmm2, edx
|
|
pcmpeqd xmm1, xmm1
|
|
psllq xmm1, xmm2
|
|
|
|
; P45*(T*2^k)+D*2^k
|
|
addsd xmm0, xmm5
|
|
; P25*(T*2^k)+D*2^k
|
|
addsd xmm0, xmm6
|
|
|
|
; Th
|
|
andpd xmm1, xmm3
|
|
|
|
; P15*(T*2^k)+D*2^k
|
|
addsd xmm0, xmm4
|
|
; xmm6=0
|
|
xorpd xmm6, xmm6
|
|
|
|
pcmpeqd xmm4, xmm4
|
|
psllq xmm4, xmm2
|
|
|
|
; Tl
|
|
subsd xmm3, xmm1
|
|
; xmm2=Th
|
|
$movsd xmm2, xmm1
|
|
|
|
; (Th+(P15*(T*2^k)+D*2^k)_high)_high
|
|
addsd xmm1, xmm0
|
|
andpd xmm1, xmm4
|
|
; xmm6=(possible OF)?1:0
|
|
pinsrw xmm6, edi, 3
|
|
pop edi
|
|
|
|
; -(P15*(T*2^k)+D*2^k)_high
|
|
subsd xmm2, xmm1
|
|
|
|
; (P15*(T*2^k)+D*2^k)_low
|
|
addsd xmm0, xmm2
|
|
|
|
; Tl+(P15*(T*2^k)+D*2^k)_low
|
|
addsd xmm0, xmm3
|
|
|
|
cmp esi, 0
|
|
jg SCALE2
|
|
|
|
pop esi
|
|
; final scaling by 2^k'
|
|
mulsd xmm0, xmm7
|
|
mulsd xmm1, xmm7
|
|
|
|
; final addition
|
|
addsd xmm0, xmm1
|
|
|
|
mulsd xmm6, xmm0
|
|
addsd xmm0, xmm6
|
|
|
|
; overflow, or underflow
|
|
pextrw eax, xmm0, 3
|
|
and eax, 7ff0H
|
|
mov edx, 24
|
|
cmp eax, 7ff0H
|
|
jz CALL_LIBM_ERROR
|
|
|
|
mov edx, 25
|
|
cmp eax, 0
|
|
jz CALL_LIBM_ERROR
|
|
|
|
sub esp, 16
|
|
movlpd QWORD PTR [esp+4], xmm0 ; return result
|
|
fld QWORD PTR [esp+4] ;
|
|
add esp, 16
|
|
ret
|
|
|
|
|
|
SCALE2:
|
|
pop esi
|
|
|
|
; final addition
|
|
addsd xmm0, xmm1
|
|
; final scaling by 2^k'
|
|
mulsd xmm0, xmm7
|
|
|
|
mulsd xmm6, xmm0
|
|
addsd xmm0, xmm6
|
|
|
|
; overflow, or underflow
|
|
pextrw eax, xmm0, 3
|
|
and eax, 7ff0H
|
|
mov edx, 24
|
|
cmp eax, 7ff0H
|
|
jz CALL_LIBM_ERROR
|
|
|
|
mov edx, 25
|
|
cmp eax, 0
|
|
jz CALL_LIBM_ERROR
|
|
|
|
sub esp, 16
|
|
movlpd QWORD PTR [esp+4], xmm0 ; return result
|
|
fld QWORD PTR [esp+4] ;
|
|
add esp, 16
|
|
ret
|
|
|
|
|
|
RET_ZERO_UF:
|
|
|
|
movlpd xmm0, QWORD PTR [EMIN]
|
|
; sign
|
|
movd xmm1, ecx
|
|
mulsd xmm0, xmm0
|
|
|
|
; set sign
|
|
psllq xmm1, 63-18
|
|
orpd xmm0, xmm1
|
|
|
|
mov edx, 25
|
|
jmp CALL_LIBM_ERROR
|
|
|
|
RET_INF_OF:
|
|
|
|
mov edx, 24
|
|
|
|
; check sign
|
|
cmp ecx, 0
|
|
jz RET_INF_OF2
|
|
|
|
movlpd xmm0, QWORD PTR [NEG_INF]
|
|
jmp CALL_LIBM_ERROR
|
|
|
|
RET_INF_OF2:
|
|
|
|
movlpd xmm0, QWORD PTR [INF]
|
|
jmp CALL_LIBM_ERROR
|
|
|
|
|
|
RETURN_ONE:
|
|
; y|y
|
|
pshufd xmm4, xmm1, 44H
|
|
; y*log2(x)_high
|
|
mulpd xmm4, xmm6
|
|
; get exponent
|
|
pextrw eax, xmm4, 3
|
|
and eax, 7ff0H
|
|
; y*log2(x)>=2^{11} ? (i.e. 2^{11}-eps-x<0)
|
|
mov edx, 40a0H
|
|
sub edx, eax
|
|
; avoid underflow on intermediate calculations (|y*log2(x)|<2^{-56} ?)
|
|
sub eax, 3c70H
|
|
or edx, eax
|
|
cmp edx, 80000000H
|
|
; if no OF/UF occurs, return to main path
|
|
jb BACK_XY_CHECK
|
|
|
|
|
|
|
|
|
|
CONT_OF_UF:
|
|
; overflow/underflow ?
|
|
cmp eax, 80000000H
|
|
jb OF_UF
|
|
|
|
RET_ONE2:
|
|
; return +/- 1
|
|
or ecx, 1ff80H
|
|
movd xmm0, ecx
|
|
psllq xmm0, 52-7
|
|
|
|
sub esp, 16
|
|
movlpd [esp+4], xmm0
|
|
fld QWORD PTR [esp+4]
|
|
add esp, 16
|
|
ret
|
|
|
|
OF_UF:
|
|
|
|
movlpd xmm4, [esp+4]
|
|
pextrw edx, xmm4, 3
|
|
and edx, 7ff0H
|
|
sub edx, 3ff0H
|
|
|
|
pextrw eax, xmm1, 3
|
|
xor eax, edx
|
|
and eax, 8000H
|
|
cmp eax, 0
|
|
jnz RET_ZERO_UF
|
|
jmp RET_INF_OF
|
|
|
|
|
|
_CIpow_pentium4 ENDP
|
|
|
|
ALIGN 16
|
|
_TEXT ENDS
|
|
|
|
END
|
|
|