mpv_sparc32.S
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:94k
源码类别:

CA认证

开发平台:

WINDOWS

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is an asm version of SPARC/VIS multiply and add function
  13.  *
  14.  * The Initial Developer of the Original Code is Sun Microsystems Inc.
  15.  * Portions created by Sun Microsystems Inc. are 
  16.  * Copyright (C) 1999-2000 Sun Microsystems Inc.  All Rights Reserved.
  17.  * 
  18.  * Contributor(s):
  19.  * 
  20.  * Alternatively, the contents of this file may be used under the
  21.  * terms of the GNU General Public License Version 2 or later (the
  22.  * "GPL"), in which case the provisions of the GPL are applicable 
  23.  * instead of those above. If you wish to allow use of your 
  24.  * version of this file only under the terms of the GPL and not to
  25.  * allow others to use your version of this file under the MPL,
  26.  * indicate your decision by deleting the provisions above and
  27.  * replace them with the notice and other provisions required by
  28.  * the GPL.  If you do not delete the provisions above, a recipient
  29.  * may use your version of this file under either the MPL or the
  30.  * GPL.
  31.  *  $Id: mpv_sparc32.S,v 1.1 2000/09/29 23:38:02 nelsonb%netscape.com Exp $
  32.  */
  33. .section ".text",#alloc,#execinstr
  34. .file "mul_add.c"
  35. .section ".data",#alloc,#write
  36. .align 8
  37. mask_cnst:
  38. .word -2147483648
  39. .word -2147483648
  40. .type mask_cnst,#object
  41. .size mask_cnst,8
  42. .section ".text",#alloc,#execinstr
  43. /* 000000    0 */ .align 8
  44. !
  45. ! CONSTANT POOL
  46. !
  47.                        .L_const_seg_900000106:
  48. /* 000000    0 */ .word 1127219200,0
  49. /* 0x0008      */ .word 1105199103,-4194304
  50. /* 0x0010      */ .word -1008730112,0
  51. /* 0x0018    0 */ .align 4
  52. !
  53. ! SUBROUTINE mul_add
  54. !
  55. ! OFFSET    SOURCE LINE LABEL INSTRUCTION
  56.                         .global mul_add
  57.                        mul_add:
  58. /* 000000      */ sethi %hi(0x2c00),%g1
  59. /* 0x0004      */ sethi %hi(mask_cnst),%g2
  60. /* 0x0008      */ xor %g1,-584,%g1
  61. /* 0x000c      */ add %g2,%lo(mask_cnst),%g2
  62. /* 0x0010      */ save %sp,%g1,%sp
  63.                        .L900000190:
  64. /* 0x0014      */ call .+8
  65. /* 0x0018      */ sethi /*X*/%hi(_GLOBAL_OFFSET_TABLE_-(.L900000190-.)),%g5
  66. ! FILE mul_add.c
  67. !    1       !/* Copyright (C) 1999, Sun Microsystems, Inc. */
  68. !    3       !#include "vis_proto.h"
  69. !    5       !/***************************************************************/
  70. !    7       !typedef  int                t_s32;
  71. !    8       !typedef  unsigned int       t_u32;
  72. !    9       !#if defined(__sparcv9)
  73. !   10       !typedef  long               t_s64;
  74. !   11       !typedef  unsigned long      t_u64;
  75. !   12       !#else
  76. !   13       !typedef  long long          t_s64;
  77. !   14       !typedef  unsigned long long t_u64;
  78. !   15       !#endif
  79. !   16       !typedef  double             t_d64;
  80. !   18       !/***************************************************************/
  81. !   20       !typedef union {
  82. !   21       !  t_d64 d64;
  83. !   22       !  struct {
  84. !   23       !    t_s32 i0;
  85. !   24       !    t_s32 i1;
  86. !   25       !  } i32s;
  87. !   26       !} d64_2_i32;
  88. !   28       !/***************************************************************/
  89. !   30       !#define BUFF_SIZE  256
  90. !   32       !#define A_BITS  21
  91. !   33       !#define A_MASK  ((1 << A_BITS) - 1)
  92. !   35       !/***************************************************************/
  93. !   37       !static t_u64 mask_cnst[] = {
  94. !   38       !  0x8000000080000000ull
  95. !   39       !};
  96. !   41       !/***************************************************************/
  97. !   43       !#define DEF_VARS(N)                     
  98. !   44       !  t_d64 *py = (t_d64*)y;                
  99. !   45       !  t_d64 mask = *((t_d64*)mask_cnst);    
  100. !   46       !  t_d64 ca = (1u << 31) - 1;            
  101. !   47       !  t_d64 da = (t_d64)a;                  
  102. !   48       !  t_s64 buff[N], s;                     
  103. !   49       !  d64_2_i32 dy
  104. !   51       !/***************************************************************/
  105. !   53       !#define MUL_U32_S64_1(i)                                        
  106. !   54       !  dy.f32s.i0 = vis_fxnors(vis_read_hi(mask), ((t_f32*)y)[0]);   
  107. !   55       !  buff[0] = (ca - (t_d64)dy.i32s.i0) * da
  108. !   57       !#define MUL_U32_S64_1_D()                                       
  109. !   58       !  dy.f32s.i0 = vis_fxnors(vis_read_hi(mask), ((t_f32*)y)[0]);   
  110. !   59       !  d0 = ca - (t_d64)dy.i32s.i0;                                  
  111. !   60       !  buff[0] = (t_s64)(d0 * da);                                   
  112. !   61       !  buff[1] = (t_s64)(d0 * db);                                   
  113. !   63       !#define MUL_U32_S64_1_E(i)                                      
  114. !   64       !  dy.f32s.i0 = vis_fxnors(vis_read_hi(mask), ((t_f32*)y)[0]);   
  115. !   65       !  d0 = ca - (t_d64)dy.i32s.i0;                                  
  116. !   66       !  buff[0] = (t_s64)(d0 * da);                                   
  117. !   67       !  buff[1] = (t_s64)(d0 * db - (1ULL << 63))
  118. !   69       !/************ ***************************************************/
  119. !   71       !#define MUL_U32_S64_2(i)                                
  120. !   72       !  dy.d64 = vis_fxnor(mask, py[i]);                      
  121. !   73       !  buff[2*(i)  ] = (ca - (t_d64)dy.i32s.i0) * da;        
  122. !   74       !  buff[2*(i)+1] = (ca - (t_d64)dy.i32s.i1) * da
  123. !   76       !#define MUL_U32_S64_2_D(i)              
  124. !   77       !  dy.d64 = vis_fxnor(mask, py[i]);      
  125. !   78       !  d0 = ca - (t_d64)dy.i32s.i0;          
  126. !   79       !  d1 = ca - (t_d64)dy.i32s.i1;          
  127. !   80       !  buff[4*(i)  ] = (t_s64)(d0 * da);     
  128. !   81       !  buff[4*(i)+1] = (t_s64)(d0 * db);     
  129. !   82       !  buff[4*(i)+2] = (t_s64)(d1 * da);     
  130. !   83       !  buff[4*(i)+3] = (t_s64)(d1 * db)
  131. !   85       !#define MUL_U32_S64_2_E(i)                              
  132. !   86       !  dy.d64 = vis_fxnor(mask, py[i]);                      
  133. !   87       !  d0 = ca - (t_d64)dy.i32s.i0;                          
  134. !   88       !  d1 = ca - (t_d64)dy.i32s.i1;                          
  135. !   89       !  buff[4*(i)  ] = (t_s64)(d0 * da);                     
  136. !   90       !  buff[4*(i)+1] = (t_s64)(d0 * db - (1ULL << 63));      
  137. !   91       !  buff[4*(i)+2] = (t_s64)(d1 * da);                     
  138. !   92       !  buff[4*(i)+3] = (t_s64)(d1 * db - (1ULL << 63))
  139. !   94       !/***************************************************************/
  140. !   96       !#define ADD_S64_U32(i)          
  141. !   97       !  s = buff[i] + x[i] + c;       
  142. !   98       !  z[i] = s;                     
  143. !   99       !  c = (s >> 32)
  144. !  101       !#define ADD_S64_U32_D(i)                        
  145. !  102       !  s = buff[2*(i)] + buff[2*(i)+1] + x[i] + c;   
  146. !  103       !  z[i] = s;                                     
  147. !  104       !  c = (s >> 32)
  148. !  106       !#define ADD_S64_U32_E(i)                                        
  149. !  107       !  s =  buff[2*(i)] + buff[2*(i)+1] + x[i] + uc + (1ULL << 63);  
  150. !  108       !  z[i] = s;                                                     
  151. !  109       !  uc = ((t_u64)s >> 32)
  152. !  111       !/***************************************************************/
  153. !  113       !#define MUL_U32_S64_8(i)        
  154. !  114       !  MUL_U32_S64_2(i);             
  155. !  115       !  MUL_U32_S64_2(i+1);           
  156. !  116       !  MUL_U32_S64_2(i+2);           
  157. !  117       !  MUL_U32_S64_2(i+3)
  158. !  119       !#define MUL_U32_S64_D_8(i)      
  159. !  120       !  MUL_U32_S64_2_D(i);           
  160. !  121       !  MUL_U32_S64_2_D(i+1);         
  161. !  122       !  MUL_U32_S64_2_D(i+2);         
  162. !  123       !  MUL_U32_S64_2_D(i+3)
  163. !  125       !#define MUL_U32_S64_E_8(i)      
  164. !  126       !  MUL_U32_S64_2_E(i);           
  165. !  127       !  MUL_U32_S64_2_E(i+1);         
  166. !  128       !  MUL_U32_S64_2_E(i+2);         
  167. !  129       !  MUL_U32_S64_2_E(i+3)
  168. !  131       !/***************************************************************/
  169. !  133       !#define ADD_S64_U32_8(i)        
  170. !  134       !  ADD_S64_U32(i);               
  171. !  135       !  ADD_S64_U32(i+1);             
  172. !  136       !  ADD_S64_U32(i+2);             
  173. !  137       !  ADD_S64_U32(i+3);             
  174. !  138       !  ADD_S64_U32(i+4);             
  175. !  139       !  ADD_S64_U32(i+5);             
  176. !  140       !  ADD_S64_U32(i+6);             
  177. !  141       !  ADD_S64_U32(i+7)
  178. !  143       !#define ADD_S64_U32_D_8(i)      
  179. !  144       !  ADD_S64_U32_D(i);             
  180. !  145       !  ADD_S64_U32_D(i+1);           
  181. !  146       !  ADD_S64_U32_D(i+2);           
  182. !  147       !  ADD_S64_U32_D(i+3);           
  183. !  148       !  ADD_S64_U32_D(i+4);           
  184. !  149       !  ADD_S64_U32_D(i+5);           
  185. !  150       !  ADD_S64_U32_D(i+6);           
  186. !  151       !  ADD_S64_U32_D(i+7)
  187. !  153       !#define ADD_S64_U32_E_8(i)      
  188. !  154       !  ADD_S64_U32_E(i);             
  189. !  155       !  ADD_S64_U32_E(i+1);           
  190. !  156       !  ADD_S64_U32_E(i+2);           
  191. !  157       !  ADD_S64_U32_E(i+3);           
  192. !  158       !  ADD_S64_U32_E(i+4);           
  193. !  159       !  ADD_S64_U32_E(i+5);           
  194. !  160       !  ADD_S64_U32_E(i+6);           
  195. !  161       !  ADD_S64_U32_E(i+7)
  196. !  163       !/***************************************************************/
  197. !  165       !t_u32 mul_add(t_u32 *z, t_u32 *x, t_u32 *y, int n, t_u32 a)
  198. !  166       !{
  199. !  167       !  if (a < (1 << A_BITS)) {
  200. !  169       !    if (n == 8) {
  201. !  170       !      DEF_VARS(8);
  202. !  171       !      t_s32 c = 0;
  203. !  173       !      MUL_U32_S64_8(0);
  204. /* 0x001c  173 */ sethi %hi(.L_const_seg_900000106),%g3
  205. /* 0x0020  166 */ add %g5,/*X*/%lo(_GLOBAL_OFFSET_TABLE_-(.L900000190-.)),%g5
  206. /* 0x0024      */ or %g0,%i4,%o0
  207. /* 0x0028      */ st %o0,[%fp+84]
  208. /* 0x002c      */ add %g5,%o7,%o1
  209. /* 0x0030      */ or %g0,%i3,%o2
  210. /* 0x0034      */ ld [%o1+%g2],%g2
  211. /* 0x0038  173 */ add %g3,%lo(.L_const_seg_900000106),%g3
  212. /* 0x003c  167 */ sethi %hi(0x200000),%g4
  213. /* 0x0040  173 */ ld [%o1+%g3],%o1
  214. /* 0x0044  166 */ or %g0,%i0,%i4
  215. /* 0x0048      */ or %g0,%i2,%o7
  216. /* 0x004c      */ ldd [%g2],%f30
  217. /* 0x0050      */ or %g0,%i1,%o4
  218. /* 0x0054  167 */ cmp %o0,%g4
  219. /* 0x0058  166 */ or %g0,%o2,%o3
  220. /* 0x005c  167 */ bcc,pn %icc,.L77000062
  221. /* 0x0060      */ or %g0,%i4,%o5
  222. /* 0x0064  169 */ cmp %o2,8
  223. /* 0x0068      */ bne,pn %icc,.L77000051
  224. /* 0x006c      */ ld [%fp+84],%f7
  225. /* 0x0070      */ ldd [%o7],%f4
  226. /* 0x0074  170 */ ldd [%o1],%f8
  227. /* 0x0078      */ fxnor %f30,%f4,%f4
  228. /* 0x007c  173 */ ldd [%o1+8],%f14
  229. /* 0x0080      */ ldd [%o7+8],%f10
  230. /* 0x0084      */ fitod %f4,%f12
  231. /* 0x0088      */ ldd [%o7+16],%f16
  232. /* 0x008c      */ fitod %f5,%f4
  233. /* 0x0090      */ ldd [%o7+24],%f18
  234. /* 0x0094      */ fxnor %f30,%f10,%f10
  235. !  174       !      ADD_S64_U32_8(0);
  236. /* 0x0098  174 */ ld [%i1],%g2
  237. /* 0x009c      */ ld [%i1+4],%g3
  238. /* 0x00a0      */ fxnor %f30,%f16,%f16
  239. /* 0x00a4  173 */ fsubd %f14,%f4,%f4
  240. /* 0x00a8  174 */ ld [%i1+8],%g4
  241. /* 0x00ac      */ ld [%i1+16],%o0
  242. /* 0x00b0  173 */ fitod %f16,%f20
  243. /* 0x00b4  174 */ ld [%i1+12],%g5
  244. /* 0x00b8      */ ld [%i1+20],%o1
  245. /* 0x00bc      */ ld [%i1+24],%o2
  246. /* 0x00c0  170 */ fmovs %f8,%f6
  247. /* 0x00c4  174 */ ld [%i1+28],%o3
  248. /* 0x00c8  170 */ fsubd %f6,%f8,%f6
  249. /* 0x00cc  173 */ fsubd %f14,%f12,%f8
  250. /* 0x00d0      */ fitod %f10,%f12
  251. /* 0x00d4      */ fmuld %f4,%f6,%f4
  252. /* 0x00d8      */ fitod %f11,%f10
  253. /* 0x00dc      */ fmuld %f8,%f6,%f8
  254. /* 0x00e0      */ fsubd %f14,%f12,%f12
  255. /* 0x00e4      */ fdtox %f4,%f4
  256. /* 0x00e8      */ std %f4,[%sp+360]
  257. /* 0x00ec      */ fdtox %f8,%f8
  258. /* 0x00f0      */ std %f8,[%sp+368]
  259. /* 0x00f4      */ fmuld %f12,%f6,%f12
  260. /* 0x00f8      */ fsubd %f14,%f10,%f10
  261. /* 0x00fc      */ fsubd %f14,%f20,%f4
  262. /* 0x0100      */ fitod %f17,%f8
  263. /* 0x0104  174 */ ldx [%sp+368],%o4
  264. /* 0x0108      */ fxnor %f30,%f18,%f16
  265. /* 0x010c  173 */ fmuld %f10,%f6,%f10
  266. /* 0x0110      */ fdtox %f12,%f12
  267. /* 0x0114      */ std %f12,[%sp+352]
  268. /* 0x0118      */ fmuld %f4,%f6,%f4
  269. /* 0x011c      */ fitod %f16,%f18
  270. /* 0x0120  174 */ add %o4,%g2,%g2
  271. /* 0x0124      */ st %g2,[%i4]
  272. /* 0x0128      */ ldx [%sp+360],%o4
  273. /* 0x012c  173 */ fsubd %f14,%f8,%f8
  274. /* 0x0130  174 */ srax %g2,32,%o5
  275. /* 0x0134  173 */ fdtox %f10,%f10
  276. /* 0x0138      */ std %f10,[%sp+344]
  277. /* 0x013c      */ fdtox %f4,%f4
  278. /* 0x0140      */ std %f4,[%sp+336]
  279. /* 0x0144  174 */ add %o4,%g3,%o4
  280. /* 0x0148  173 */ fitod %f17,%f12
  281. /* 0x014c  174 */ ldx [%sp+352],%g2
  282. /* 0x0150      */ add %o4,%o5,%g3
  283. /* 0x0154  173 */ fmuld %f8,%f6,%f8
  284. /* 0x0158      */ fsubd %f14,%f18,%f10
  285. /* 0x015c  174 */ st %g3,[%i4+4]
  286. /* 0x0160      */ srax %g3,32,%g3
  287. /* 0x0164      */ add %g2,%g4,%g4
  288. /* 0x0168      */ ldx [%sp+344],%g2
  289. /* 0x016c  173 */ fsubd %f14,%f12,%f4
  290. /* 0x0170  174 */ add %g4,%g3,%g3
  291. /* 0x0174      */ ldx [%sp+336],%g4
  292. /* 0x0178  173 */ fmuld %f10,%f6,%f10
  293. /* 0x017c      */ fdtox %f8,%f8
  294. /* 0x0180      */ std %f8,[%sp+328]
  295. /* 0x0184  174 */ add %g4,%o0,%g4
  296. /* 0x0188      */ add %g2,%g5,%g2
  297. /* 0x018c      */ st %g3,[%i4+8]
  298. /* 0x0190  173 */ fmuld %f4,%f6,%f4
  299. /* 0x0194  174 */ srax %g3,32,%o0
  300. /* 0x0198      */ ldx [%sp+328],%g5
  301. /* 0x019c  173 */ fdtox %f10,%f6
  302. /* 0x01a0      */ std %f6,[%sp+320]
  303. /* 0x01a4  174 */ add %g2,%o0,%g2
  304. /* 0x01a8      */ srax %g2,32,%g3
  305. /* 0x01ac      */ st %g2,[%i4+12]
  306. /* 0x01b0      */ add %g5,%o1,%o1
  307. /* 0x01b4  173 */ fdtox %f4,%f4
  308. /* 0x01b8      */ std %f4,[%sp+312]
  309. /* 0x01bc  174 */ add %g4,%g3,%g3
  310. /* 0x01c0      */ srax %g3,32,%g4
  311. /* 0x01c4      */ st %g3,[%i4+16]
  312. /* 0x01c8      */ ldx [%sp+320],%o0
  313. /* 0x01cc      */ add %o1,%g4,%g4
  314. /* 0x01d0      */ ldx [%sp+312],%g5
  315. /* 0x01d4      */ srax %g4,32,%g2
  316. /* 0x01d8      */ add %o0,%o2,%o2
  317. /* 0x01dc      */ st %g4,[%i4+20]
  318. /* 0x01e0      */ add %o2,%g2,%g2
  319. /* 0x01e4      */ add %g5,%o3,%g5
  320. /* 0x01e8      */ st %g2,[%i4+24]
  321. /* 0x01ec      */ srax %g2,32,%g3
  322. /* 0x01f0      */ add %g5,%g3,%g2
  323. /* 0x01f4      */ st %g2,[%i4+28]
  324. !  176       !      return c;
  325. /* 0x01f8  176 */ srax %g2,32,%i0
  326. /* 0x01fc      */ ret ! Result =  %i0
  327. /* 0x0200      */ restore %g0,%g0,%g0
  328.                        .L77000051:
  329. !  178       !    } else if (n == 16) {
  330. /* 0x0204  178 */ cmp %o2,16
  331. /* 0x0208      */ bne,pn %icc,.L77000112
  332. /* 0x020c      */ ld [%fp+84],%f7
  333. /* 0x0210      */ ldd [%o7],%f4
  334. !  179       !      DEF_VARS(16);
  335. /* 0x0214  179 */ ldd [%o1],%f8
  336. !  180       !      t_s32 c = 0;
  337. !  182       !      MUL_U32_S64_8(0);
  338. /* 0x0218  182 */ ldd [%o1+8],%f14
  339. /* 0x021c      */ fxnor %f30,%f4,%f4
  340. /* 0x0220      */ ldd [%o7+8],%f10
  341. /* 0x0224      */ ldd [%o7+16],%f16
  342. /* 0x0228      */ fitod %f4,%f12
  343. /* 0x022c      */ ldd [%o7+24],%f18
  344. /* 0x0230      */ fitod %f5,%f4
  345. /* 0x0234      */ ldd [%o7+32],%f20
  346. /* 0x0238      */ fxnor %f30,%f10,%f10
  347. /* 0x023c      */ ldd [%o7+40],%f22
  348. /* 0x0240      */ fxnor %f30,%f16,%f16
  349. /* 0x0244      */ ldd [%o7+48],%f0
  350. /* 0x0248      */ fitod %f10,%f24
  351. /* 0x024c      */ ldd [%o7+56],%f26
  352. /* 0x0250      */ fsubd %f14,%f4,%f4
  353. !  183       !      MUL_U32_S64_8(4);
  354. !  184       !      ADD_S64_U32_8(0);
  355. !  185       !      ADD_S64_U32_8(8);
  356. /* 0x0254  185 */ ld [%i1+36],%o5
  357. /* 0x0258  182 */ fitod %f11,%f10
  358. /* 0x025c  184 */ ld [%i1],%g2
  359. /* 0x0260  182 */ fsubd %f14,%f24,%f24
  360. /* 0x0264  185 */ stx %o5,[%sp+312]
  361. /* 0x0268  182 */ fitod %f16,%f28
  362. /* 0x026c  184 */ ld [%i1+4],%g3
  363. /* 0x0270  182 */ fsubd %f14,%f10,%f10
  364. /* 0x0274  185 */ ld [%i1+40],%o5
  365. /* 0x0278      */ fxnor %f30,%f20,%f20
  366. /* 0x027c  184 */ ld [%i1+8],%g4
  367. /* 0x0280      */ stx %o5,[%sp+320]
  368. /* 0x0284      */ ld [%i1+12],%g5
  369. /* 0x0288      */ ld [%i1+16],%o0
  370. /* 0x028c  179 */ fmovs %f8,%f6
  371. /* 0x0290  184 */ ld [%i1+20],%o1
  372. /* 0x0294  185 */ ld [%i1+32],%o4
  373. /* 0x0298  179 */ fsubd %f6,%f8,%f6
  374. /* 0x029c  184 */ ld [%i1+24],%o2
  375. /* 0x02a0  182 */ fsubd %f14,%f12,%f8
  376. /* 0x02a4  185 */ stx %o4,[%sp+328]
  377. /* 0x02a8      */ fxnor %f30,%f0,%f12
  378. /* 0x02ac  184 */ ld [%i1+28],%o3
  379. /* 0x02b0  182 */ fmuld %f4,%f6,%f4
  380. /* 0x02b4  185 */ ld [%i1+44],%o4
  381. /* 0x02b8  182 */ fmuld %f8,%f6,%f8
  382. /* 0x02bc      */ fmuld %f24,%f6,%f24
  383. /* 0x02c0  185 */ stx %o4,[%sp+360]
  384. /* 0x02c4  182 */ fdtox %f4,%f4
  385. /* 0x02c8      */ fmuld %f10,%f6,%f10
  386. /* 0x02cc      */ std %f4,[%sp+496]
  387. /* 0x02d0      */ fdtox %f8,%f8
  388. /* 0x02d4      */ std %f8,[%sp+504]
  389. /* 0x02d8      */ fitod %f17,%f8
  390. /* 0x02dc  185 */ ld [%i1+60],%o4
  391. /* 0x02e0      */ fxnor %f30,%f18,%f16
  392. /* 0x02e4  182 */ fdtox %f24,%f24
  393. /* 0x02e8      */ std %f24,[%sp+488]
  394. /* 0x02ec  184 */ ldx [%sp+504],%o7
  395. /* 0x02f0  182 */ fsubd %f14,%f28,%f4
  396. /* 0x02f4      */ fitod %f16,%f18
  397. /* 0x02f8      */ fsubd %f14,%f8,%f8
  398. /* 0x02fc  184 */ add %o7,%g2,%g2
  399. /* 0x0300      */ st %g2,[%i4]
  400. /* 0x0304      */ ldx [%sp+496],%o7
  401. /* 0x0308  182 */ fitod %f17,%f16
  402. /* 0x030c  184 */ srax %g2,32,%o5
  403. /* 0x0310  182 */ fmuld %f4,%f6,%f4
  404. /* 0x0314      */ fsubd %f14,%f18,%f18
  405. /* 0x0318      */ fdtox %f10,%f10
  406. /* 0x031c      */ std %f10,[%sp+480]
  407. /* 0x0320  184 */ add %o7,%g3,%g3
  408. /* 0x0324  182 */ fmuld %f8,%f6,%f24
  409. /* 0x0328  183 */ fitod %f20,%f8
  410. /* 0x032c  184 */ add %g3,%o5,%g3
  411. /* 0x0330  185 */ ld [%i1+48],%o5
  412. /* 0x0334  184 */ st %g3,[%i4+4]
  413. /* 0x0338  182 */ fdtox %f4,%f4
  414. /* 0x033c      */ fmuld %f18,%f6,%f10
  415. /* 0x0340  184 */ ldx [%sp+488],%o7
  416. /* 0x0344      */ fxnor %f30,%f22,%f18
  417. /* 0x0348  182 */ std %f4,[%sp+472]
  418. /* 0x034c      */ fsubd %f14,%f16,%f4
  419. /* 0x0350  184 */ stx %o5,[%sp+344]
  420. /* 0x0354  183 */ fitod %f21,%f16
  421. /* 0x0358  184 */ srax %g3,32,%o5
  422. /* 0x035c  183 */ fsubd %f14,%f8,%f8
  423. /* 0x0360  184 */ add %o7,%g4,%g4
  424. /* 0x0364  185 */ ld [%i1+52],%o7
  425. /* 0x0368  182 */ fdtox %f24,%f20
  426. /* 0x036c      */ std %f20,[%sp+464]
  427. /* 0x0370  184 */ add %g4,%o5,%g4
  428. /* 0x0374  182 */ fmuld %f4,%f6,%f4
  429. /* 0x0378  184 */ stx %o7,[%sp+336]
  430. /* 0x037c  182 */ fdtox %f10,%f10
  431. /* 0x0380  184 */ ldx [%sp+480],%o7
  432. /* 0x0384  183 */ fitod %f18,%f20
  433. /* 0x0388      */ fmuld %f8,%f6,%f8
  434. /* 0x038c  182 */ std %f10,[%sp+456]
  435. /* 0x0390  183 */ fsubd %f14,%f16,%f10
  436. /* 0x0394  185 */ ld [%i1+56],%o5
  437. /* 0x0398  183 */ fitod %f19,%f16
  438. /* 0x039c  184 */ add %o7,%g5,%g5
  439. /* 0x03a0      */ ldx [%sp+472],%o7
  440. /* 0x03a4  182 */ fdtox %f4,%f4
  441. /* 0x03a8  184 */ stx %o5,[%sp+352]
  442. /* 0x03ac      */ srax %g4,32,%o5
  443. /* 0x03b0  183 */ fdtox %f8,%f8
  444. /* 0x03b4  182 */ std %f4,[%sp+448]
  445. /* 0x03b8  183 */ fitod %f12,%f18
  446. /* 0x03bc  184 */ add %g5,%o5,%g5
  447. /* 0x03c0  183 */ fmuld %f10,%f6,%f4
  448. /* 0x03c4  184 */ ldx [%sp+464],%o5
  449. /* 0x03c8  183 */ fsubd %f14,%f20,%f10
  450. /* 0x03cc  184 */ add %o7,%o0,%o0
  451. /* 0x03d0  183 */ std %f8,[%sp+440]
  452. /* 0x03d4  184 */ srax %g5,32,%o7
  453. /* 0x03d8  183 */ fsubd %f14,%f16,%f8
  454. /* 0x03dc  184 */ ldx [%sp+456],%g2
  455. /* 0x03e0  183 */ fdtox %f4,%f4
  456. /* 0x03e4  184 */ add %o0,%o7,%o0
  457. /* 0x03e8  183 */ std %f4,[%sp+432]
  458. /* 0x03ec      */ fxnor %f30,%f26,%f16
  459. /* 0x03f0  184 */ add %o5,%o1,%o1
  460. /* 0x03f4  183 */ fmuld %f10,%f6,%f10
  461. /* 0x03f8  184 */ ldx [%sp+448],%o7
  462. /* 0x03fc      */ srax %o0,32,%o5
  463. /* 0x0400  183 */ fitod %f13,%f12
  464. /* 0x0404      */ fmuld %f8,%f6,%f4
  465. /* 0x0408  184 */ st %g4,[%i4+8]
  466. /* 0x040c  183 */ fsubd %f14,%f18,%f8
  467. /* 0x0410  184 */ add %o1,%o5,%g3
  468. /* 0x0414  185 */ ldx [%sp+440],%o1
  469. /* 0x0418  183 */ fitod %f16,%f18
  470. /* 0x041c  184 */ add %g2,%o2,%g2
  471. /* 0x0420      */ st %g5,[%i4+12]
  472. /* 0x0424      */ srax %g3,32,%o2
  473. /* 0x0428  183 */ fdtox %f10,%f10
  474. /* 0x042c      */ std %f10,[%sp+424]
  475. /* 0x0430      */ fsubd %f14,%f12,%f10
  476. /* 0x0434  184 */ add %g2,%o2,%o2
  477. /* 0x0438  183 */ fmuld %f8,%f6,%f8
  478. /* 0x043c  185 */ ldx [%sp+328],%g2
  479. /* 0x0440  183 */ fdtox %f4,%f4
  480. /* 0x0444  184 */ add %o7,%o3,%g4
  481. /* 0x0448  183 */ std %f4,[%sp+416]
  482. /* 0x044c  184 */ srax %o2,32,%o3
  483. /* 0x0450  183 */ fitod %f17,%f12
  484. /* 0x0454  185 */ ldx [%sp+432],%g5
  485. /* 0x0458  184 */ add %g4,%o3,%o3
  486. /* 0x045c  185 */ add %o1,%g2,%o1
  487. /* 0x0460  183 */ fsubd %f14,%f18,%f4
  488. /* 0x0464  185 */ ldx [%sp+312],%o5
  489. /* 0x0468      */ srax %o3,32,%g4
  490. /* 0x046c  183 */ fdtox %f8,%f8
  491. /* 0x0470      */ fmuld %f10,%f6,%f10
  492. /* 0x0474      */ std %f8,[%sp+408]
  493. /* 0x0478  185 */ add %o1,%g4,%o1
  494. /* 0x047c  183 */ fsubd %f14,%f12,%f8
  495. /* 0x0480  185 */ ldx [%sp+424],%o7
  496. /* 0x0484      */ add %g5,%o5,%g2
  497. /* 0x0488  183 */ fmuld %f4,%f6,%f4
  498. /* 0x048c  185 */ ldx [%sp+320],%g4
  499. /* 0x0490      */ srax %o1,32,%g5
  500. /* 0x0494  183 */ fdtox %f10,%f10
  501. /* 0x0498  184 */ st %g3,[%i4+20]
  502. /* 0x049c  185 */ add %g2,%g5,%g2
  503. /* 0x04a0  183 */ fmuld %f8,%f6,%f6
  504. /* 0x04a4  185 */ ldx [%sp+360],%o5
  505. /* 0x04a8      */ srax %g2,32,%g5
  506. /* 0x04ac      */ add %o7,%g4,%g4
  507. /* 0x04b0      */ ldx [%sp+416],%g3
  508. /* 0x04b4      */ add %g4,%g5,%g4
  509. /* 0x04b8  183 */ fdtox %f4,%f4
  510. /* 0x04bc      */ std %f10,[%sp+400]
  511. /* 0x04c0  184 */ st %o0,[%i4+16]
  512. /* 0x04c4  185 */ add %g3,%o5,%g3
  513. /* 0x04c8  183 */ std %f4,[%sp+392]
  514. /* 0x04cc  185 */ srax %g4,32,%o5
  515. /* 0x04d0  183 */ fdtox %f6,%f4
  516. /* 0x04d4  185 */ ldx [%sp+344],%o7
  517. /* 0x04d8      */ add %g3,%o5,%g3
  518. /* 0x04dc      */ stx %g3,[%sp+368]
  519. /* 0x04e0      */ srax %g3,32,%o5
  520. /* 0x04e4      */ ldx [%sp+408],%o0
  521. /* 0x04e8      */ ldx [%sp+400],%g5
  522. /* 0x04ec      */ ldx [%sp+336],%g3
  523. /* 0x04f0      */ add %o0,%o7,%o0
  524. /* 0x04f4  183 */ std %f4,[%sp+384]
  525. /* 0x04f8  185 */ add %g5,%g3,%g3
  526. /* 0x04fc      */ add %o0,%o5,%g5
  527. /* 0x0500      */ stx %g5,[%sp+376]
  528. /* 0x0504      */ ldx [%sp+392],%o7
  529. /* 0x0508      */ srax %g5,32,%o0
  530. /* 0x050c      */ ldx [%sp+352],%g5
  531. /* 0x0510      */ add %g3,%o0,%g3
  532. /* 0x0514      */ ldx [%sp+384],%o5
  533. /* 0x0518      */ add %o7,%g5,%g5
  534. /* 0x051c  184 */ st %o2,[%i4+24]
  535. /* 0x0520  185 */ srax %g3,32,%o2
  536. /* 0x0524      */ st %o1,[%i4+32]
  537. /* 0x0528      */ add %g5,%o2,%g5
  538. /* 0x052c      */ add %o5,%o4,%o0
  539. /* 0x0530      */ st %g2,[%i4+36]
  540. /* 0x0534      */ srax %g5,32,%g2
  541. /* 0x0538      */ ldx [%sp+368],%o1
  542. /* 0x053c      */ ldx [%sp+376],%o2
  543. /* 0x0540      */ st %g4,[%i4+40]
  544. /* 0x0544      */ add %o0,%g2,%g4
  545. /* 0x0548  184 */ st %o3,[%i4+28]
  546. !  187       !      return c;
  547. /* 0x054c  187 */ srax %g4,32,%i0
  548. /* 0x0550  185 */ st %o1,[%i4+44]
  549. /* 0x0554      */ st %o2,[%i4+48]
  550. /* 0x0558      */ st %g3,[%i4+52]
  551. /* 0x055c      */ st %g5,[%i4+56]
  552. /* 0x0560      */ st %g4,[%i4+60]
  553. /* 0x0564      */ ret ! Result =  %i0
  554. /* 0x0568      */ restore %g0,%g0,%g0
  555.                        .L77000112:
  556. !  189       !    } else {
  557. !  190       !      DEF_VARS(BUFF_SIZE);
  558. /* 0x056c  190 */ ldd [%o1],%f8
  559. !  191       !      t_s32 i, c = 0;
  560. !  193       !#pragma pipeloop(0)
  561. !  194       !      for (i = 0; i < (n+1)/2; i ++) {
  562. /* 0x0570  194 */ add %o2,1,%g2
  563. /* 0x0574  191 */ or %g0,0,%i0
  564. /* 0x0578  194 */ srl %g2,31,%g3
  565. /* 0x057c  190 */ ldd [%o1+8],%f18
  566. /* 0x0580  187 */ or %g0,%o7,%g4
  567. /* 0x0584  190 */ fmovs %f8,%f6
  568. /* 0x0588  194 */ add %g2,%g3,%g2
  569. /* 0x058c  187 */ add %fp,-2264,%g3
  570. /* 0x0590  194 */ sra %g2,1,%o0
  571. /* 0x0594  187 */ add %fp,-2256,%o7
  572. /* 0x0598  190 */ fsubd %f6,%f8,%f16
  573. /* 0x059c  194 */ cmp %o0,0
  574. /* 0x05a0      */ ble,pt %icc,.L900000199
  575. /* 0x05a4      */ cmp %o3,0
  576. /* 0x05a8  187 */ sub %o0,1,%g2
  577. /* 0x05ac      */ add %g2,1,%o1
  578. /* 0x05b0  194 */ or %g0,0,%o0
  579. /* 0x05b4      */ cmp %o1,8
  580. /* 0x05b8      */ bl,pn %icc,.L77000113
  581. /* 0x05bc      */ sub %g2,2,%o2
  582. /* 0x05c0      */ ldd [%g4],%f2
  583. !  195       !        MUL_U32_S64_2(i);
  584. /* 0x05c4  195 */ or %g0,5,%o0
  585. /* 0x05c8      */ ldd [%g4+8],%f0
  586. /* 0x05cc      */ add %g4,24,%o1
  587. /* 0x05d0      */ add %g4,16,%g4
  588. /* 0x05d4      */ fxnor %f30,%f2,%f4
  589. /* 0x05d8      */ ldd [%g4],%f2
  590. /* 0x05dc      */ fxnor %f30,%f0,%f6
  591. /* 0x05e0      */ ldd [%g4+8],%f10
  592. /* 0x05e4      */ add %g4,16,%o1
  593. /* 0x05e8      */ fitod %f5,%f0
  594. /* 0x05ec      */ ldd [%g4+16],%f12
  595. /* 0x05f0      */ fitod %f4,%f4
  596. /* 0x05f4      */ fxnor %f30,%f2,%f8
  597. /* 0x05f8      */ fitod %f7,%f2
  598. /* 0x05fc      */ fsubd %f18,%f0,%f0
  599. /* 0x0600      */ fsubd %f18,%f4,%f4
  600. /* 0x0604      */ fxnor %f30,%f10,%f10
  601.                        .L900000177:
  602. /* 0x0608  195 */ fitod %f9,%f22
  603. /* 0x060c      */ add %o0,3,%o0
  604. /* 0x0610      */ add %o7,48,%o7
  605. /* 0x0614      */ fmuld %f0,%f16,%f0
  606. /* 0x0618      */ fmuld %f4,%f16,%f24
  607. /* 0x061c      */ cmp %o0,%o2
  608. /* 0x0620      */ add %g3,48,%g3
  609. /* 0x0624      */ fsubd %f18,%f2,%f2
  610. /* 0x0628      */ fitod %f6,%f4
  611. /* 0x062c      */ fdtox %f0,%f0
  612. /* 0x0630      */ ldd [%o1+8],%f20
  613. /* 0x0634      */ fdtox %f24,%f6
  614. /* 0x0638      */ fsubd %f18,%f4,%f4
  615. /* 0x063c      */ std %f6,[%g3-48]
  616. /* 0x0640      */ fxnor %f30,%f12,%f6
  617. /* 0x0644      */ std %f0,[%o7-48]
  618. /* 0x0648      */ fitod %f11,%f0
  619. /* 0x064c      */ fmuld %f2,%f16,%f2
  620. /* 0x0650      */ fmuld %f4,%f16,%f24
  621. /* 0x0654      */ fsubd %f18,%f22,%f12
  622. /* 0x0658      */ fitod %f8,%f4
  623. /* 0x065c      */ fdtox %f2,%f2
  624. /* 0x0660      */ add %o1,16,%o1
  625. /* 0x0664      */ ldd [%o1],%f22
  626. /* 0x0668      */ fdtox %f24,%f8
  627. /* 0x066c      */ fsubd %f18,%f4,%f4
  628. /* 0x0670      */ std %f8,[%g3-32]
  629. /* 0x0674      */ fxnor %f30,%f20,%f8
  630. /* 0x0678      */ std %f2,[%o7-32]
  631. /* 0x067c      */ fitod %f7,%f2
  632. /* 0x0680      */ fmuld %f12,%f16,%f12
  633. /* 0x0684      */ fmuld %f4,%f16,%f24
  634. /* 0x0688      */ fsubd %f18,%f0,%f0
  635. /* 0x068c      */ fitod %f10,%f4
  636. /* 0x0690      */ fdtox %f12,%f20
  637. /* 0x0694      */ add %o1,8,%o1
  638. /* 0x0698      */ ldd [%o1],%f12
  639. /* 0x069c      */ fdtox %f24,%f10
  640. /* 0x06a0      */ fsubd %f18,%f4,%f4
  641. /* 0x06a4      */ std %f10,[%g3-16]
  642. /* 0x06a8      */ fxnor %f30,%f22,%f10
  643. /* 0x06ac      */ ble,pt %icc,.L900000177
  644. /* 0x06b0      */ std %f20,[%o7-16]
  645.                        .L900000180:
  646. /* 0x06b4  195 */ fitod %f6,%f6
  647. /* 0x06b8      */ fmuld %f4,%f16,%f24
  648. /* 0x06bc      */ add %g3,80,%g3
  649. /* 0x06c0      */ fsubd %f18,%f2,%f2
  650. /* 0x06c4      */ fmuld %f0,%f16,%f22
  651. /* 0x06c8      */ add %o7,80,%o7
  652. /* 0x06cc      */ fitod %f8,%f26
  653. /* 0x06d0      */ cmp %o0,%g2
  654. /* 0x06d4      */ add %o1,8,%g4
  655. /* 0x06d8      */ fsubd %f18,%f6,%f4
  656. /* 0x06dc      */ fitod %f9,%f8
  657. /* 0x06e0      */ fxnor %f30,%f12,%f0
  658. /* 0x06e4      */ fmuld %f2,%f16,%f12
  659. /* 0x06e8      */ fitod %f10,%f6
  660. /* 0x06ec      */ fmuld %f4,%f16,%f20
  661. /* 0x06f0      */ fitod %f11,%f4
  662. /* 0x06f4      */ fsubd %f18,%f26,%f10
  663. /* 0x06f8      */ fitod %f0,%f2
  664. /* 0x06fc      */ fsubd %f18,%f8,%f8
  665. /* 0x0700      */ fitod %f1,%f0
  666. /* 0x0704      */ fmuld %f10,%f16,%f10
  667. /* 0x0708      */ fdtox %f24,%f24
  668. /* 0x070c      */ std %f24,[%g3-80]
  669. /* 0x0710      */ fsubd %f18,%f6,%f6
  670. /* 0x0714      */ fmuld %f8,%f16,%f8
  671. /* 0x0718      */ fdtox %f22,%f22
  672. /* 0x071c      */ std %f22,[%o7-80]
  673. /* 0x0720      */ fsubd %f18,%f4,%f4
  674. /* 0x0724      */ fdtox %f20,%f20
  675. /* 0x0728      */ std %f20,[%g3-64]
  676. /* 0x072c      */ fmuld %f6,%f16,%f6
  677. /* 0x0730      */ fsubd %f18,%f2,%f2
  678. /* 0x0734      */ fsubd %f18,%f0,%f0
  679. /* 0x0738      */ fmuld %f4,%f16,%f4
  680. /* 0x073c      */ fdtox %f12,%f12
  681. /* 0x0740      */ std %f12,[%o7-64]
  682. /* 0x0744      */ fdtox %f10,%f10
  683. /* 0x0748      */ std %f10,[%g3-48]
  684. /* 0x074c      */ fmuld %f2,%f16,%f2
  685. /* 0x0750      */ fdtox %f8,%f8
  686. /* 0x0754      */ std %f8,[%o7-48]
  687. /* 0x0758      */ fmuld %f0,%f16,%f0
  688. /* 0x075c      */ fdtox %f6,%f6
  689. /* 0x0760      */ std %f6,[%g3-32]
  690. /* 0x0764      */ fdtox %f4,%f4
  691. /* 0x0768      */ std %f4,[%o7-32]
  692. /* 0x076c      */ fdtox %f2,%f2
  693. /* 0x0770      */ std %f2,[%g3-16]
  694. /* 0x0774      */ fdtox %f0,%f0
  695. /* 0x0778      */ bg,pn %icc,.L77000057
  696. /* 0x077c      */ std %f0,[%o7-16]
  697.                        .L77000113:
  698. /* 0x0780      */ ldd [%g4],%f0
  699.                        .L900000198:
  700. /* 0x0784      */ fxnor %f30,%f0,%f0
  701. /* 0x0788  195 */ add %o0,1,%o0
  702. /* 0x078c      */ add %g4,8,%g4
  703. /* 0x0790      */ cmp %o0,%g2
  704. /* 0x0794      */ fitod %f0,%f2
  705. /* 0x0798      */ fitod %f1,%f0
  706. /* 0x079c      */ fsubd %f18,%f2,%f2
  707. /* 0x07a0      */ fsubd %f18,%f0,%f0
  708. /* 0x07a4      */ fmuld %f2,%f16,%f2
  709. /* 0x07a8      */ fmuld %f0,%f16,%f0
  710. /* 0x07ac      */ fdtox %f2,%f2
  711. /* 0x07b0      */ std %f2,[%g3]
  712. /* 0x07b4      */ add %g3,16,%g3
  713. /* 0x07b8      */ fdtox %f0,%f0
  714. /* 0x07bc      */ std %f0,[%o7]
  715. /* 0x07c0      */ add %o7,16,%o7
  716. /* 0x07c4      */ ble,a,pt %icc,.L900000198
  717. /* 0x07c8      */ ldd [%g4],%f0
  718.                        .L77000057:
  719. !  196       !      }
  720. !  198       !#pragma pipeloop(0)
  721. !  199       !      for (i = 0; i < n; i ++) {
  722. /* 0x07cc  199 */ cmp %o3,0
  723.                        .L900000199:
  724. /* 0x07d0  199 */ ble,pt %icc,.L77000089
  725. /* 0x07d4      */ nop
  726. /* 0x07d8      */ or %g0,%o4,%g2
  727. /* 0x07dc      */ or %g0,%o5,%o4
  728. /* 0x07e0      */ sub %o3,1,%o7
  729. /* 0x07e4      */ or %g0,0,%g4
  730. /* 0x07e8      */ add %fp,-2264,%g3
  731. /* 0x07ec  195 */ cmp %o3,5
  732. /* 0x07f0      */ sub %o3,3,%o3
  733. /* 0x07f4      */ bl,pn %icc,.L77000114
  734. /* 0x07f8      */ ldx [%fp-2264],%o0
  735. !  200       !        ADD_S64_U32(i);
  736. /* 0x07fc  200 */ add %o5,4,%o4
  737. /* 0x0800    0 */ add %fp,-2248,%g3
  738. /* 0x0804  200 */ ld [%g2],%o1
  739. /* 0x0808      */ sra %i0,0,%o5
  740. /* 0x080c      */ or %g0,2,%g4
  741. /* 0x0810      */ ld [%g2+4],%o2
  742. /* 0x0814      */ add %g2,8,%g2
  743. /* 0x0818      */ add %o0,%o1,%o0
  744. /* 0x081c      */ ldx [%fp-2256],%o1
  745. /* 0x0820      */ add %o0,%o5,%o0
  746. /* 0x0824      */ st %o0,[%o4-4]
  747. /* 0x0828      */ srax %o0,32,%o0
  748.                        .L900000173:
  749. /* 0x082c  200 */ ldx [%g3],%g5
  750. /* 0x0830      */ sra %o0,0,%o5
  751. /* 0x0834      */ add %o1,%o2,%o0
  752. /* 0x0838      */ ld [%g2],%o1
  753. /* 0x083c      */ add %o0,%o5,%o0
  754. /* 0x0840      */ add %g4,3,%g4
  755. /* 0x0844      */ st %o0,[%o4]
  756. /* 0x0848      */ srax %o0,32,%i0
  757. /* 0x084c      */ cmp %g4,%o3
  758. /* 0x0850      */ ldx [%g3+8],%o0
  759. /* 0x0854      */ sra %i0,0,%o5
  760. /* 0x0858      */ add %g5,%o1,%o1
  761. /* 0x085c      */ ld [%g2+4],%o2
  762. /* 0x0860      */ add %o1,%o5,%o1
  763. /* 0x0864      */ add %o4,12,%o4
  764. /* 0x0868      */ st %o1,[%o4-8]
  765. /* 0x086c      */ srax %o1,32,%o5
  766. /* 0x0870      */ add %g2,12,%g2
  767. /* 0x0874      */ ldx [%g3+16],%o1
  768. /* 0x0878      */ add %o0,%o2,%o0
  769. /* 0x087c      */ ld [%g2-4],%o2
  770. /* 0x0880      */ add %o0,%o5,%o0
  771. /* 0x0884      */ add %g3,24,%g3
  772. /* 0x0888      */ st %o0,[%o4-4]
  773. /* 0x088c      */ ble,pt %icc,.L900000173
  774. /* 0x0890      */ srax %o0,32,%o0
  775.                        .L900000176:
  776. /* 0x0894  200 */ sra %o0,0,%o3
  777. /* 0x0898      */ add %o1,%o2,%o0
  778. /* 0x089c      */ add %o0,%o3,%o0
  779. /* 0x08a0      */ add %o4,4,%o4
  780. /* 0x08a4      */ st %o0,[%o4-4]
  781. /* 0x08a8      */ cmp %g4,%o7
  782. /* 0x08ac      */ bg,pn %icc,.L77000089
  783. /* 0x08b0      */ srax %o0,32,%i0
  784.                        .L77000114:
  785. /* 0x08b4  200 */ ld [%g2],%o2
  786.                        .L900000197:
  787. /* 0x08b8  200 */ ldx [%g3],%o0
  788. /* 0x08bc      */ sra %i0,0,%o1
  789. /* 0x08c0      */ add %g4,1,%g4
  790. /* 0x08c4      */ add %g2,4,%g2
  791. /* 0x08c8      */ add %g3,8,%g3
  792. /* 0x08cc      */ add %o0,%o2,%o0
  793. /* 0x08d0      */ cmp %g4,%o7
  794. /* 0x08d4      */ add %o0,%o1,%o0
  795. /* 0x08d8      */ st %o0,[%o4]
  796. /* 0x08dc      */ add %o4,4,%o4
  797. /* 0x08e0      */ srax %o0,32,%i0
  798. /* 0x08e4      */ ble,a,pt %icc,.L900000197
  799. /* 0x08e8      */ ld [%g2],%o2
  800.                        .L77000061:
  801. /* 0x08ec      */ ret ! Result =  %i0
  802. /* 0x08f0      */ restore %g0,%g0,%g0
  803.                        .L77000062:
  804. /* 0x08f4      */ sethi %hi(0x80000000),%g2
  805. !  201       !      }
  806. !  203       !      return c;
  807. !  205       !    }
  808. !  206       !  } else if (a < (1u << 31)) {
  809. !  208       !    if (n == 8) {
  810. !  209       !      DEF_VARS(2*8);
  811. !  210       !      t_d64 d0, d1, db;
  812. !  211       !      t_s32 c = 0;
  813. !  213       !      da = (t_d64)(a &  A_MASK);
  814. /* 0x08f8  213 */ ldd [%o1],%f6
  815. /* 0x08fc  206 */ cmp %o0,%g2
  816. /* 0x0900      */ bcc,pn %icc,.L77000076
  817. /* 0x0904      */ cmp %o2,8
  818. /* 0x0908  208 */ bne,pn %icc,.L77000065
  819. /* 0x090c      */ sethi %hi(0xffe00000),%g2
  820. /* 0x0910  213 */ fmovs %f6,%f10
  821. /* 0x0914      */ ldd [%o7],%f4
  822. !  214       !      db = (t_d64)(a &~ A_MASK);
  823. /* 0x0918  214 */ fmovs %f6,%f12
  824. /* 0x091c      */ or %g0,%g2,%g3
  825. /* 0x0920      */ ldd [%o7+8],%f14
  826. /* 0x0924  213 */ andn %o0,%g2,%g2
  827. /* 0x0928  214 */ and %o0,%g3,%g3
  828. /* 0x092c  213 */ st %g2,[%sp+460]
  829. /* 0x0930      */ fxnor %f30,%f4,%f4
  830. /* 0x0934  214 */ st %g3,[%sp+456]
  831. /* 0x0938      */ fxnor %f30,%f14,%f14
  832. !  216       !      MUL_U32_S64_D_8(0);
  833. /* 0x093c  216 */ ldd [%o1+8],%f16
  834. /* 0x0940      */ fitod %f4,%f8
  835. /* 0x0944      */ ldd [%o7+16],%f18
  836. /* 0x0948      */ fitod %f5,%f4
  837. /* 0x094c      */ ldd [%o7+24],%f20
  838. /* 0x0950  213 */ ld [%sp+460],%f11
  839. /* 0x0954  216 */ fsubd %f16,%f8,%f8
  840. /* 0x0958  214 */ ld [%sp+456],%f13
  841. /* 0x095c  216 */ fsubd %f16,%f4,%f4
  842. !  217       !      ADD_S64_U32_D_8(0);
  843. /* 0x0960  217 */ ld [%i1],%g2
  844. /* 0x0964  213 */ fsubd %f10,%f6,%f10
  845. /* 0x0968  217 */ ld [%i1+28],%o3
  846. /* 0x096c  214 */ fsubd %f12,%f6,%f6
  847. /* 0x0970  217 */ ld [%i1+4],%g3
  848. /* 0x0974  216 */ fitod %f14,%f12
  849. /* 0x0978  217 */ stx %o3,[%sp+312]
  850. /* 0x097c  216 */ fitod %f15,%f14
  851. /* 0x0980      */ fmuld %f4,%f10,%f24
  852. /* 0x0984  217 */ ld [%i1+8],%g4
  853. /* 0x0988      */ fxnor %f30,%f18,%f18
  854. /* 0x098c  216 */ fmuld %f8,%f10,%f22
  855. /* 0x0990  217 */ ld [%i1+12],%g5
  856. /* 0x0994  216 */ fsubd %f16,%f12,%f12
  857. /* 0x0998      */ fmuld %f4,%f6,%f4
  858. /* 0x099c  217 */ ld [%i1+16],%o0
  859. /* 0x09a0  216 */ fitod %f18,%f26
  860. /* 0x09a4      */ fmuld %f8,%f6,%f8
  861. /* 0x09a8  217 */ ld [%i1+20],%o1
  862. /* 0x09ac  216 */ fsubd %f16,%f14,%f14
  863. /* 0x09b0  217 */ ld [%i1+24],%o2
  864. /* 0x09b4  216 */ fdtox %f4,%f4
  865. /* 0x09b8      */ fmuld %f12,%f10,%f28
  866. /* 0x09bc      */ std %f4,[%sp+424]
  867. /* 0x09c0      */ fdtox %f8,%f8
  868. /* 0x09c4      */ fmuld %f12,%f6,%f12
  869. /* 0x09c8      */ std %f8,[%sp+440]
  870. /* 0x09cc      */ fsubd %f16,%f26,%f4
  871. /* 0x09d0      */ fitod %f19,%f8
  872. /* 0x09d4      */ fmuld %f14,%f10,%f18
  873. /* 0x09d8      */ fdtox %f12,%f12
  874. /* 0x09dc      */ std %f12,[%sp+408]
  875. /* 0x09e0      */ fmuld %f14,%f6,%f14
  876. /* 0x09e4  217 */ ldx [%sp+440],%o5
  877. /* 0x09e8  216 */ fdtox %f22,%f22
  878. /* 0x09ec      */ fmuld %f4,%f10,%f12
  879. /* 0x09f0      */ std %f22,[%sp+448]
  880. /* 0x09f4      */ fxnor %f30,%f20,%f20
  881. /* 0x09f8      */ fmuld %f4,%f6,%f4
  882. /* 0x09fc      */ fdtox %f24,%f22
  883. /* 0x0a00      */ std %f22,[%sp+432]
  884. /* 0x0a04  217 */ ldx [%sp+448],%o4
  885. /* 0x0a08  216 */ fsubd %f16,%f8,%f8
  886. /* 0x0a0c      */ fitod %f20,%f22
  887. /* 0x0a10      */ fdtox %f14,%f14
  888. /* 0x0a14      */ std %f14,[%sp+392]
  889. /* 0x0a18  217 */ add %o4,%o5,%o4
  890. /* 0x0a1c      */ ldx [%sp+432],%o5
  891. /* 0x0a20  216 */ fdtox %f28,%f24
  892. /* 0x0a24  217 */ add %o4,%g2,%o4
  893. /* 0x0a28  216 */ fmuld %f8,%f10,%f14
  894. /* 0x0a2c      */ std %f24,[%sp+416]
  895. /* 0x0a30  217 */ srax %o4,32,%o7
  896. /* 0x0a34  216 */ fitod %f21,%f20
  897. /* 0x0a38      */ fmuld %f8,%f6,%f8
  898. /* 0x0a3c  217 */ stx %o4,[%sp+320]
  899. /* 0x0a40  216 */ fdtox %f4,%f4
  900. /* 0x0a44      */ std %f4,[%sp+376]
  901. /* 0x0a48      */ fdtox %f18,%f18
  902. /* 0x0a4c      */ std %f18,[%sp+400]
  903. /* 0x0a50      */ fsubd %f16,%f20,%f4
  904. /* 0x0a54  217 */ ldx [%sp+424],%g2
  905. /* 0x0a58  216 */ fsubd %f16,%f22,%f18
  906. /* 0x0a5c  217 */ ldx [%sp+416],%o3
  907. /* 0x0a60  216 */ fdtox %f12,%f12
  908. /* 0x0a64      */ std %f12,[%sp+384]
  909. /* 0x0a68  217 */ add %o5,%g2,%g2
  910. /* 0x0a6c  216 */ fdtox %f14,%f14
  911. /* 0x0a70  217 */ ldx [%sp+408],%o4
  912. /* 0x0a74      */ add %g2,%g3,%g2
  913. /* 0x0a78  216 */ fdtox %f8,%f8
  914. /* 0x0a7c      */ fmuld %f18,%f10,%f12
  915. /* 0x0a80      */ std %f14,[%sp+368]
  916. /* 0x0a84  217 */ add %g2,%o7,%g2
  917. /* 0x0a88  216 */ fmuld %f4,%f10,%f14
  918. /* 0x0a8c      */ std %f8,[%sp+360]
  919. /* 0x0a90  217 */ srax %g2,32,%o5
  920. /* 0x0a94      */ add %o3,%o4,%o3
  921. /* 0x0a98  216 */ fmuld %f18,%f6,%f16
  922. /* 0x0a9c  217 */ ldx [%sp+392],%o4
  923. /* 0x0aa0      */ add %o3,%g4,%g4
  924. /* 0x0aa4  216 */ fmuld %f4,%f6,%f4
  925. /* 0x0aa8  217 */ ldx [%sp+400],%g3
  926. /* 0x0aac      */ add %g4,%o5,%g4
  927. /* 0x0ab0  216 */ fdtox %f12,%f6
  928. /* 0x0ab4  217 */ ldx [%sp+384],%o7
  929. /* 0x0ab8      */ ldx [%sp+376],%o3
  930. /* 0x0abc      */ add %g3,%o4,%g3
  931. /* 0x0ac0  216 */ fdtox %f4,%f4
  932. /* 0x0ac4      */ std %f6,[%sp+352]
  933. /* 0x0ac8  217 */ srax %g4,32,%o4
  934. /* 0x0acc      */ add %g3,%g5,%g3
  935. /* 0x0ad0      */ ldx [%sp+368],%g5
  936. /* 0x0ad4      */ add %o7,%o3,%o3
  937. /* 0x0ad8      */ add %g3,%o4,%g3
  938. /* 0x0adc  216 */ std %f4,[%sp+328]
  939. /* 0x0ae0  217 */ srax %g3,32,%o4
  940. /* 0x0ae4      */ add %o3,%o0,%o0
  941. /* 0x0ae8      */ ldx [%sp+360],%o3
  942. /* 0x0aec      */ add %o0,%o4,%o4
  943. /* 0x0af0  216 */ fdtox %f16,%f6
  944. /* 0x0af4      */ std %f6,[%sp+344]
  945. /* 0x0af8      */ fdtox %f14,%f6
  946. /* 0x0afc      */ std %f6,[%sp+336]
  947. /* 0x0b00  217 */ add %g5,%o3,%o3
  948. /* 0x0b04      */ ldx [%sp+352],%o5
  949. /* 0x0b08      */ srax %o4,32,%g5
  950. /* 0x0b0c      */ add %o3,%o1,%o1
  951. /* 0x0b10      */ st %g2,[%i4+4]
  952. /* 0x0b14      */ add %o1,%g5,%o1
  953. /* 0x0b18      */ ldx [%sp+344],%o7
  954. /* 0x0b1c      */ ldx [%sp+320],%g5
  955. /* 0x0b20      */ ldx [%sp+336],%o3
  956. /* 0x0b24      */ add %o5,%o7,%o0
  957. /* 0x0b28      */ ldx [%sp+328],%o5
  958. /* 0x0b2c      */ add %o0,%o2,%o2
  959. /* 0x0b30      */ st %g5,[%i4]
  960. /* 0x0b34      */ srax %o1,32,%g5
  961. /* 0x0b38      */ ldx [%sp+312],%o7
  962. /* 0x0b3c      */ add %o2,%g5,%o2
  963. /* 0x0b40      */ add %o3,%o5,%o3
  964. /* 0x0b44      */ st %o4,[%i4+16]
  965. /* 0x0b48      */ srax %o2,32,%g2
  966. /* 0x0b4c      */ st %o1,[%i4+20]
  967. /* 0x0b50      */ add %o3,%o7,%o3
  968. /* 0x0b54      */ st %o2,[%i4+24]
  969. /* 0x0b58      */ add %o3,%g2,%g2
  970. /* 0x0b5c      */ st %g4,[%i4+8]
  971. !  219       !      return c;
  972. /* 0x0b60  219 */ srax %g2,32,%i0
  973. /* 0x0b64  217 */ st %g3,[%i4+12]
  974. /* 0x0b68      */ st %g2,[%i4+28]
  975. /* 0x0b6c      */ ret ! Result =  %i0
  976. /* 0x0b70      */ restore %g0,%g0,%g0
  977.                        .L77000065:
  978. !  221       !    } else if (n == 16) {
  979. /* 0x0b74  221 */ cmp %o2,16
  980. /* 0x0b78      */ bne,pn %icc,.L77000109
  981. /* 0x0b7c      */ sethi %hi(0xffe00000),%g2
  982. /* 0x0b80      */ ldd [%o7],%f4
  983. !  222       !      DEF_VARS(2*16);
  984. !  223       !      t_d64 d0, d1, db;
  985. !  224       !      t_s32 c = 0;
  986. !  226       !      da = (t_d64)(a &  A_MASK);
  987. !  227       !      db = (t_d64)(a &~ A_MASK);
  988. /* 0x0b84  227 */ or %g0,%g2,%g3
  989. /* 0x0b88  226 */ andn %o0,%g2,%g2
  990. /* 0x0b8c      */ st %g2,[%sp+572]
  991. /* 0x0b90  227 */ and %o0,%g3,%g3
  992. /* 0x0b94      */ fxnor %f30,%f4,%f4
  993. /* 0x0b98  226 */ ldd [%o1],%f8
  994. /* 0x0b9c  227 */ st %g3,[%sp+568]
  995. !  229       !      MUL_U32_S64_D_8(0);
  996. /* 0x0ba0  229 */ fitod %f4,%f10
  997. /* 0x0ba4      */ ldd [%o1+8],%f16
  998. /* 0x0ba8      */ ldd [%o7+8],%f14
  999. /* 0x0bac      */ fitod %f5,%f4
  1000. /* 0x0bb0  226 */ ld [%sp+572],%f7
  1001. /* 0x0bb4  229 */ fsubd %f16,%f10,%f10
  1002. /* 0x0bb8  227 */ ld [%sp+568],%f13
  1003. /* 0x0bbc      */ fxnor %f30,%f14,%f14
  1004. /* 0x0bc0  229 */ fsubd %f16,%f4,%f4
  1005. /* 0x0bc4  226 */ fmovs %f8,%f6
  1006. /* 0x0bc8  227 */ fmovs %f8,%f12
  1007. /* 0x0bcc  226 */ fsubd %f6,%f8,%f6
  1008. /* 0x0bd0  227 */ fsubd %f12,%f8,%f8
  1009. /* 0x0bd4  229 */ fitod %f14,%f12
  1010. /* 0x0bd8      */ fmuld %f10,%f6,%f18
  1011. /* 0x0bdc      */ fitod %f15,%f14
  1012. /* 0x0be0      */ fmuld %f10,%f8,%f10
  1013. /* 0x0be4      */ fsubd %f16,%f12,%f12
  1014. /* 0x0be8      */ fmuld %f4,%f6,%f20
  1015. /* 0x0bec      */ fmuld %f4,%f8,%f4
  1016. /* 0x0bf0      */ fsubd %f16,%f14,%f14
  1017. /* 0x0bf4      */ fdtox %f10,%f10
  1018. /* 0x0bf8      */ std %f10,[%sp+552]
  1019. /* 0x0bfc      */ fmuld %f12,%f6,%f10
  1020. /* 0x0c00      */ fdtox %f18,%f18
  1021. /* 0x0c04      */ std %f18,[%sp+560]
  1022. /* 0x0c08      */ fmuld %f12,%f8,%f12
  1023. /* 0x0c0c      */ fdtox %f4,%f4
  1024. /* 0x0c10      */ std %f4,[%sp+536]
  1025. /* 0x0c14      */ fmuld %f14,%f6,%f4
  1026. /* 0x0c18      */ fdtox %f20,%f18
  1027. /* 0x0c1c      */ std %f18,[%sp+544]
  1028. /* 0x0c20      */ fdtox %f10,%f10
  1029. /* 0x0c24      */ std %f10,[%sp+528]
  1030. /* 0x0c28      */ fmuld %f14,%f8,%f14
  1031. /* 0x0c2c      */ fdtox %f12,%f12
  1032. /* 0x0c30      */ std %f12,[%sp+520]
  1033. /* 0x0c34      */ ldd [%o7+16],%f10
  1034. /* 0x0c38      */ fdtox %f4,%f4
  1035. /* 0x0c3c      */ ldd [%o7+24],%f12
  1036. /* 0x0c40      */ fdtox %f14,%f14
  1037. /* 0x0c44      */ std %f4,[%sp+512]
  1038. /* 0x0c48      */ fxnor %f30,%f10,%f10
  1039. /* 0x0c4c      */ fxnor %f30,%f12,%f4
  1040. /* 0x0c50      */ std %f14,[%sp+504]
  1041. /* 0x0c54      */ fitod %f10,%f12
  1042. /* 0x0c58      */ fitod %f11,%f10
  1043. /* 0x0c5c      */ fitod %f4,%f14
  1044. /* 0x0c60      */ fsubd %f16,%f12,%f12
  1045. /* 0x0c64      */ fsubd %f16,%f10,%f10
  1046. /* 0x0c68      */ fitod %f5,%f4
  1047. /* 0x0c6c      */ fmuld %f12,%f6,%f18
  1048. /* 0x0c70      */ fsubd %f16,%f14,%f14
  1049. /* 0x0c74      */ fmuld %f10,%f6,%f20
  1050. /* 0x0c78      */ fmuld %f12,%f8,%f12
  1051. /* 0x0c7c      */ fsubd %f16,%f4,%f4
  1052. /* 0x0c80      */ fmuld %f10,%f8,%f10
  1053. /* 0x0c84      */ fdtox %f18,%f18
  1054. /* 0x0c88      */ std %f18,[%sp+496]
  1055. /* 0x0c8c      */ fdtox %f20,%f18
  1056. /* 0x0c90      */ std %f18,[%sp+480]
  1057. /* 0x0c94      */ fdtox %f12,%f12
  1058. /* 0x0c98      */ std %f12,[%sp+488]
  1059. /* 0x0c9c      */ fmuld %f14,%f6,%f12
  1060. /* 0x0ca0      */ fdtox %f10,%f10
  1061. /* 0x0ca4      */ std %f10,[%sp+472]
  1062. /* 0x0ca8      */ fmuld %f4,%f6,%f10
  1063. /* 0x0cac      */ fmuld %f4,%f8,%f4
  1064. /* 0x0cb0      */ fdtox %f12,%f12
  1065. /* 0x0cb4      */ std %f12,[%sp+464]
  1066. /* 0x0cb8      */ fmuld %f14,%f8,%f14
  1067. /* 0x0cbc      */ fdtox %f10,%f10
  1068. /* 0x0cc0      */ std %f10,[%sp+448]
  1069. /* 0x0cc4      */ ldd [%o7+32],%f12
  1070. /* 0x0cc8      */ fdtox %f4,%f4
  1071. /* 0x0ccc      */ std %f4,[%sp+440]
  1072. /* 0x0cd0      */ fdtox %f14,%f14
  1073. /* 0x0cd4      */ fxnor %f30,%f12,%f12
  1074. /* 0x0cd8      */ std %f14,[%sp+456]
  1075. /* 0x0cdc      */ ldd [%o7+40],%f14
  1076. !  230       !      MUL_U32_S64_D_8(4);
  1077. /* 0x0ce0  230 */ fitod %f12,%f4
  1078. /* 0x0ce4      */ fitod %f13,%f12
  1079. /* 0x0ce8      */ fxnor %f30,%f14,%f10
  1080. /* 0x0cec      */ fsubd %f16,%f4,%f4
  1081. /* 0x0cf0      */ fsubd %f16,%f12,%f12
  1082. /* 0x0cf4      */ fitod %f10,%f14
  1083. /* 0x0cf8      */ fitod %f11,%f10
  1084. /* 0x0cfc      */ fmuld %f4,%f6,%f18
  1085. /* 0x0d00      */ fmuld %f12,%f6,%f20
  1086. /* 0x0d04      */ fsubd %f16,%f14,%f14
  1087. /* 0x0d08      */ fmuld %f4,%f8,%f4
  1088. /* 0x0d0c      */ fsubd %f16,%f10,%f10
  1089. /* 0x0d10      */ fmuld %f12,%f8,%f12
  1090. /* 0x0d14      */ fdtox %f18,%f18
  1091. /* 0x0d18      */ std %f18,[%sp+432]
  1092. /* 0x0d1c      */ fdtox %f4,%f4
  1093. /* 0x0d20      */ std %f4,[%sp+424]
  1094. /* 0x0d24      */ fdtox %f12,%f12
  1095. /* 0x0d28      */ std %f12,[%sp+408]
  1096. /* 0x0d2c      */ fmuld %f14,%f6,%f4
  1097. /* 0x0d30      */ fdtox %f20,%f18
  1098. /* 0x0d34      */ std %f18,[%sp+416]
  1099. /* 0x0d38      */ fmuld %f10,%f6,%f12
  1100. /* 0x0d3c      */ fmuld %f10,%f8,%f10
  1101. /* 0x0d40      */ fdtox %f4,%f4
  1102. /* 0x0d44      */ std %f4,[%sp+400]
  1103. /* 0x0d48      */ fmuld %f14,%f8,%f14
  1104. /* 0x0d4c      */ fdtox %f12,%f12
  1105. /* 0x0d50      */ std %f12,[%sp+384]
  1106. /* 0x0d54      */ ldd [%o7+48],%f4
  1107. /* 0x0d58      */ fdtox %f10,%f10
  1108. /* 0x0d5c      */ std %f10,[%sp+376]
  1109. /* 0x0d60      */ fdtox %f14,%f14
  1110. /* 0x0d64      */ std %f14,[%sp+392]
  1111. /* 0x0d68      */ fxnor %f30,%f4,%f4
  1112. /* 0x0d6c      */ ldd [%o7+56],%f14
  1113. /* 0x0d70      */ fitod %f4,%f10
  1114. /* 0x0d74      */ fitod %f5,%f4
  1115. /* 0x0d78      */ fxnor %f30,%f14,%f12
  1116. /* 0x0d7c      */ fsubd %f16,%f10,%f10
  1117. /* 0x0d80      */ fsubd %f16,%f4,%f4
  1118. /* 0x0d84      */ fitod %f12,%f14
  1119. /* 0x0d88      */ fitod %f13,%f12
  1120. /* 0x0d8c      */ fmuld %f10,%f6,%f18
  1121. /* 0x0d90      */ fmuld %f4,%f6,%f20
  1122. /* 0x0d94      */ fsubd %f16,%f14,%f14
  1123. /* 0x0d98      */ fmuld %f10,%f8,%f10
  1124. /* 0x0d9c      */ fdtox %f18,%f18
  1125. /* 0x0da0      */ std %f18,[%sp+368]
  1126. /* 0x0da4      */ fmuld %f4,%f8,%f4
  1127. /* 0x0da8      */ fdtox %f10,%f10
  1128. /* 0x0dac      */ std %f10,[%sp+360]
  1129. /* 0x0db0      */ fdtox %f20,%f10
  1130. /* 0x0db4      */ std %f10,[%sp+352]
  1131. /* 0x0db8      */ fdtox %f4,%f4
  1132. /* 0x0dbc      */ std %f4,[%sp+344]
  1133. /* 0x0dc0      */ fmuld %f14,%f6,%f10
  1134. /* 0x0dc4      */ fmuld %f14,%f8,%f4
  1135. /* 0x0dc8      */ fdtox %f10,%f10
  1136. /* 0x0dcc      */ std %f10,[%sp+336]
  1137. /* 0x0dd0      */ fdtox %f4,%f4
  1138. /* 0x0dd4      */ std %f4,[%sp+328]
  1139. !  231       !      ADD_S64_U32_D_8(0);
  1140. /* 0x0dd8  231 */ ldx [%sp+552],%g3
  1141. /* 0x0ddc  230 */ fsubd %f16,%f12,%f4
  1142. /* 0x0de0  231 */ ldx [%sp+560],%g2
  1143. /* 0x0de4      */ ld [%i1],%g4
  1144. /* 0x0de8      */ ldx [%sp+544],%g5
  1145. /* 0x0dec      */ add %g2,%g3,%g2
  1146. /* 0x0df0  230 */ fmuld %f4,%f6,%f6
  1147. /* 0x0df4  231 */ ldx [%sp+536],%g3
  1148. /* 0x0df8      */ add %g2,%g4,%g4
  1149. /* 0x0dfc  230 */ fmuld %f4,%f8,%f4
  1150. /* 0x0e00  231 */ ld [%i1+4],%g2
  1151. /* 0x0e04      */ ldx [%sp+520],%o0
  1152. /* 0x0e08      */ add %g5,%g3,%g3
  1153. /* 0x0e0c  230 */ fdtox %f6,%f6
  1154. /* 0x0e10  231 */ ldx [%sp+528],%g5
  1155. /* 0x0e14      */ add %g3,%g2,%g2
  1156. /* 0x0e18  230 */ fdtox %f4,%f4
  1157. /* 0x0e1c  231 */ st %g4,[%i4]
  1158. /* 0x0e20      */ srax %g4,32,%g4
  1159. /* 0x0e24      */ ld [%i1+8],%g3
  1160. /* 0x0e28      */ add %g2,%g4,%g2
  1161. /* 0x0e2c      */ add %g5,%o0,%g4
  1162. /* 0x0e30      */ ldx [%sp+512],%o0
  1163. /* 0x0e34      */ srax %g2,32,%g5
  1164. /* 0x0e38      */ ldx [%sp+504],%o1
  1165. /* 0x0e3c      */ add %g4,%g3,%g3
  1166. /* 0x0e40      */ ld [%i1+12],%g4
  1167. /* 0x0e44      */ add %g3,%g5,%g3
  1168. /* 0x0e48      */ ldx [%sp+488],%o2
  1169. /* 0x0e4c      */ add %o0,%o1,%g5
  1170. /* 0x0e50      */ ldx [%sp+496],%o1
  1171. /* 0x0e54      */ srax %g3,32,%o0
  1172. /* 0x0e58      */ add %g5,%g4,%g4
  1173. /* 0x0e5c      */ st %g2,[%i4+4]
  1174. /* 0x0e60      */ add %g4,%o0,%g4
  1175. /* 0x0e64      */ ld [%i1+16],%g2
  1176. /* 0x0e68      */ srax %g4,32,%o0
  1177. /* 0x0e6c      */ add %o1,%o2,%g5
  1178. /* 0x0e70      */ ldx [%sp+480],%o1
  1179. /* 0x0e74      */ ldx [%sp+472],%o2
  1180. /* 0x0e78      */ add %g5,%g2,%g2
  1181. /* 0x0e7c      */ st %g3,[%i4+8]
  1182. /* 0x0e80      */ add %g2,%o0,%g2
  1183. /* 0x0e84      */ ld [%i1+20],%g3
  1184. /* 0x0e88      */ srax %g2,32,%o0
  1185. /* 0x0e8c      */ add %o1,%o2,%g5
  1186. /* 0x0e90      */ ldx [%sp+464],%o1
  1187. /* 0x0e94      */ ldx [%sp+456],%o2
  1188. /* 0x0e98      */ add %g5,%g3,%g3
  1189. /* 0x0e9c      */ st %g4,[%i4+12]
  1190. /* 0x0ea0      */ add %g3,%o0,%g3
  1191. /* 0x0ea4      */ ld [%i1+24],%g4
  1192. /* 0x0ea8      */ srax %g3,32,%o0
  1193. /* 0x0eac      */ add %o1,%o2,%g5
  1194. /* 0x0eb0      */ ldx [%sp+448],%o1
  1195. /* 0x0eb4      */ ldx [%sp+440],%o2
  1196. /* 0x0eb8      */ add %g5,%g4,%g4
  1197. /* 0x0ebc      */ st %g2,[%i4+16]
  1198. /* 0x0ec0      */ add %g4,%o0,%g4
  1199. /* 0x0ec4      */ ld [%i1+28],%g2
  1200. /* 0x0ec8      */ srax %g4,32,%o0
  1201. /* 0x0ecc      */ add %o1,%o2,%g5
  1202. !  232       !      ADD_S64_U32_D_8(8);
  1203. /* 0x0ed0  232 */ ldx [%sp+432],%o1
  1204. /* 0x0ed4      */ ldx [%sp+424],%o2
  1205. /* 0x0ed8  231 */ add %g5,%g2,%g2
  1206. /* 0x0edc      */ st %g3,[%i4+20]
  1207. /* 0x0ee0      */ add %g2,%o0,%g2
  1208. /* 0x0ee4  232 */ ld [%i1+32],%g3
  1209. /* 0x0ee8      */ srax %g2,32,%o0
  1210. /* 0x0eec      */ add %o1,%o2,%g5
  1211. /* 0x0ef0      */ ldx [%sp+416],%o1
  1212. /* 0x0ef4      */ ldx [%sp+408],%o2
  1213. /* 0x0ef8      */ add %g5,%g3,%g3
  1214. /* 0x0efc  231 */ st %g4,[%i4+24]
  1215. /* 0x0f00  232 */ add %g3,%o0,%g3
  1216. /* 0x0f04      */ ld [%i1+36],%g4
  1217. /* 0x0f08      */ srax %g3,32,%o0
  1218. /* 0x0f0c      */ add %o1,%o2,%g5
  1219. /* 0x0f10      */ ldx [%sp+400],%o1
  1220. /* 0x0f14      */ ldx [%sp+392],%o2
  1221. /* 0x0f18      */ add %g5,%g4,%g4
  1222. /* 0x0f1c  231 */ st %g2,[%i4+28]
  1223. /* 0x0f20  232 */ add %g4,%o0,%g4
  1224. /* 0x0f24      */ ld [%i1+40],%g2
  1225. /* 0x0f28      */ srax %g4,32,%o0
  1226. /* 0x0f2c      */ add %o1,%o2,%g5
  1227. /* 0x0f30      */ ldx [%sp+384],%o1
  1228. /* 0x0f34      */ ldx [%sp+376],%o2
  1229. /* 0x0f38      */ add %g5,%g2,%g2
  1230. /* 0x0f3c      */ st %g3,[%i4+32]
  1231. /* 0x0f40      */ add %g2,%o0,%g2
  1232. /* 0x0f44      */ ld [%i1+44],%g3
  1233. /* 0x0f48      */ srax %g2,32,%o0
  1234. /* 0x0f4c      */ add %o1,%o2,%g5
  1235. /* 0x0f50      */ ldx [%sp+368],%o1
  1236. /* 0x0f54      */ ldx [%sp+360],%o2
  1237. /* 0x0f58      */ add %g5,%g3,%g3
  1238. /* 0x0f5c      */ st %g4,[%i4+36]
  1239. /* 0x0f60      */ add %g3,%o0,%g3
  1240. /* 0x0f64      */ ld [%i1+48],%g4
  1241. /* 0x0f68      */ srax %g3,32,%o0
  1242. /* 0x0f6c      */ add %o1,%o2,%g5
  1243. /* 0x0f70      */ ldx [%sp+352],%o1
  1244. /* 0x0f74      */ ldx [%sp+344],%o2
  1245. /* 0x0f78      */ add %g5,%g4,%g4
  1246. /* 0x0f7c  230 */ std %f6,[%sp+320]
  1247. /* 0x0f80  232 */ add %g4,%o0,%g4
  1248. /* 0x0f84  230 */ std %f4,[%sp+312]
  1249. /* 0x0f88  232 */ srax %g4,32,%o0
  1250. /* 0x0f8c      */ add %o1,%o2,%g5
  1251. /* 0x0f90      */ st %g2,[%i4+40]
  1252. /* 0x0f94      */ ld [%i1+52],%g2
  1253. /* 0x0f98      */ ldx [%sp+336],%o1
  1254. /* 0x0f9c      */ ldx [%sp+328],%o2
  1255. /* 0x0fa0      */ add %g5,%g2,%g2
  1256. /* 0x0fa4      */ st %g3,[%i4+44]
  1257. /* 0x0fa8      */ add %g2,%o0,%g2
  1258. /* 0x0fac      */ ld [%i1+56],%g3
  1259. /* 0x0fb0      */ add %o1,%o2,%g5
  1260. /* 0x0fb4      */ ldx [%sp+320],%o1
  1261. /* 0x0fb8      */ srax %g2,32,%o0
  1262. /* 0x0fbc      */ ldx [%sp+312],%o2
  1263. /* 0x0fc0      */ add %g5,%g3,%g3
  1264. /* 0x0fc4      */ st %g4,[%i4+48]
  1265. /* 0x0fc8      */ add %g3,%o0,%g3
  1266. /* 0x0fcc      */ ld [%i1+60],%g4
  1267. /* 0x0fd0      */ add %o1,%o2,%g5
  1268. /* 0x0fd4      */ st %g2,[%i4+52]
  1269. /* 0x0fd8      */ srax %g3,32,%o0
  1270. /* 0x0fdc      */ add %g5,%g4,%g2
  1271. /* 0x0fe0      */ st %g3,[%i4+56]
  1272. /* 0x0fe4      */ add %g2,%o0,%g2
  1273. /* 0x0fe8      */ st %g2,[%i4+60]
  1274. !  234       !      return c;
  1275. /* 0x0fec  234 */ srax %g2,32,%i0
  1276. /* 0x0ff0      */ ret ! Result =  %i0
  1277. /* 0x0ff4      */ restore %g0,%g0,%g0
  1278.                        .L77000109:
  1279. !  236       !    } else {
  1280. !  237       !      DEF_VARS(2*BUFF_SIZE);
  1281. !  238       !      t_d64 d0, d1, db;
  1282. !  239       !      t_s32 i, c = 0;
  1283. !  241       !      da = (t_d64)(a &  A_MASK);
  1284. !  242       !      db = (t_d64)(a &~ A_MASK);
  1285. /* 0x0ff8  242 */ or %g0,%g2,%g3
  1286. /* 0x0ffc  241 */ andn %o0,%g2,%g2
  1287. /* 0x1000      */ st %g2,[%sp+316]
  1288. /* 0x1004  242 */ and %o0,%g3,%g2
  1289. /* 0x1008      */ st %g2,[%sp+312]
  1290. /* 0x100c  239 */ or %g0,0,%g4
  1291. !  244       !#pragma pipeloop(0)
  1292. !  245       !      for (i = 0; i < (n+1)/2; i ++) {
  1293. /* 0x1010  245 */ add %o2,1,%g2
  1294. /* 0x1014  241 */ ldd [%o1],%f6
  1295. /* 0x1018  234 */ sethi %hi(0x1800),%g1
  1296. /* 0x101c  245 */ srl %g2,31,%g3
  1297. /* 0x1020  234 */ xor %g1,-624,%g1
  1298. /* 0x1024  237 */ ldd [%o1+8],%f20
  1299. /* 0x1028  245 */ add %g2,%g3,%g2
  1300. /* 0x102c  241 */ fmovs %f6,%f8
  1301. /* 0x1030  234 */ add %g1,%fp,%g5
  1302. /* 0x1034  242 */ fmovs %f6,%f10
  1303. /* 0x1038  241 */ ld [%sp+316],%f9
  1304. /* 0x103c  245 */ sra %g2,1,%o0
  1305. /* 0x1040  242 */ ld [%sp+312],%f11
  1306. /* 0x1044  245 */ cmp %o0,0
  1307. /* 0x1048  234 */ sethi %hi(0x1800),%g1
  1308. /* 0x104c  241 */ fsubd %f8,%f6,%f18
  1309. /* 0x1050  234 */ xor %g1,-616,%g1
  1310. /* 0x1054      */ or %g0,%o7,%o1
  1311. /* 0x1058  242 */ fsubd %f10,%f6,%f16
  1312. /* 0x105c  245 */ ble,pt %icc,.L900000196
  1313. /* 0x1060      */ cmp %o3,0
  1314. /* 0x1064  234 */ add %g1,%fp,%g3
  1315. /* 0x1068      */ sethi %hi(0x1800),%g1
  1316. /* 0x106c      */ xor %g1,-608,%g1
  1317. /* 0x1070      */ sub %o0,1,%o2
  1318. /* 0x1074      */ add %g1,%fp,%g2
  1319. /* 0x1078      */ sethi %hi(0x1800),%g1
  1320. /* 0x107c      */ xor %g1,-600,%g1
  1321. /* 0x1080  245 */ cmp %o0,7
  1322. /* 0x1084      */ or %g0,0,%i0
  1323. /* 0x1088  234 */ add %g1,%fp,%o7
  1324. /* 0x108c  245 */ bl,pn %icc,.L77000110
  1325. /* 0x1090      */ sub %o0,3,%o0
  1326. /* 0x1094      */ ldd [%o1],%f2
  1327. !  246       !        MUL_U32_S64_2_D(i);
  1328. /* 0x1098  246 */ add %i2,16,%i1
  1329. /* 0x109c      */ ldd [%o1+8],%f0
  1330. /* 0x10a0      */ add %o1,8,%o1
  1331. /* 0x10a4      */ or %g0,4,%i0
  1332. /* 0x10a8      */ fxnor %f30,%f2,%f6
  1333. /* 0x10ac      */ ldd [%i2+16],%f4
  1334. /* 0x10b0      */ add %i1,16,%o1
  1335. /* 0x10b4      */ fxnor %f30,%f0,%f12
  1336. /* 0x10b8      */ ldd [%i2+24],%f0
  1337. /* 0x10bc      */ fitod %f7,%f2
  1338. /* 0x10c0      */ fitod %f6,%f6
  1339. /* 0x10c4      */ fxnor %f30,%f4,%f10
  1340. /* 0x10c8      */ fsubd %f20,%f2,%f2
  1341. /* 0x10cc      */ fxnor %f30,%f0,%f8
  1342. /* 0x10d0      */ fitod %f13,%f4
  1343. /* 0x10d4      */ fsubd %f20,%f6,%f6
  1344. /* 0x10d8      */ fmuld %f2,%f16,%f0
  1345.                        .L900000181:
  1346. /* 0x10dc      */ ldd [%o1],%f24
  1347. /* 0x10e0  246 */ add %i0,3,%i0
  1348. /* 0x10e4      */ add %o7,96,%o7
  1349. /* 0x10e8      */ fitod %f11,%f22
  1350. /* 0x10ec      */ fsubd %f20,%f4,%f26
  1351. /* 0x10f0      */ cmp %i0,%o0
  1352. /* 0x10f4      */ add %g2,96,%g2
  1353. /* 0x10f8      */ fmuld %f6,%f18,%f28
  1354. /* 0x10fc      */ fmuld %f6,%f16,%f6
  1355. /* 0x1100      */ add %g3,96,%g3
  1356. /* 0x1104      */ add %g5,96,%g5
  1357. /* 0x1108      */ fdtox %f0,%f0
  1358. /* 0x110c      */ fitod %f12,%f4
  1359. /* 0x1110      */ fmuld %f2,%f18,%f2
  1360. /* 0x1114      */ fdtox %f28,%f12
  1361. /* 0x1118      */ fdtox %f6,%f6
  1362. /* 0x111c      */ std %f12,[%g5-96]
  1363. /* 0x1120      */ std %f6,[%g3-96]
  1364. /* 0x1124      */ fdtox %f2,%f2
  1365. /* 0x1128      */ fsubd %f20,%f4,%f6
  1366. /* 0x112c      */ std %f2,[%g2-96]
  1367. /* 0x1130      */ add %o1,8,%o1
  1368. /* 0x1134      */ fxnor %f30,%f24,%f12
  1369. /* 0x1138      */ fmuld %f26,%f16,%f4
  1370. /* 0x113c      */ std %f0,[%o7-96]
  1371. /* 0x1140      */ ldd [%o1],%f0
  1372. /* 0x1144      */ fitod %f9,%f2
  1373. /* 0x1148      */ fsubd %f20,%f22,%f28
  1374. /* 0x114c      */ fmuld %f6,%f18,%f24
  1375. /* 0x1150      */ fmuld %f6,%f16,%f22
  1376. /* 0x1154      */ fdtox %f4,%f4
  1377. /* 0x1158      */ fitod %f10,%f6
  1378. /* 0x115c      */ fmuld %f26,%f18,%f10
  1379. /* 0x1160      */ fdtox %f24,%f24
  1380. /* 0x1164      */ fdtox %f22,%f22
  1381. /* 0x1168      */ std %f24,[%g5-64]
  1382. /* 0x116c      */ std %f22,[%g3-64]
  1383. /* 0x1170      */ fdtox %f10,%f10
  1384. /* 0x1174      */ fsubd %f20,%f6,%f6
  1385. /* 0x1178      */ std %f10,[%g2-64]
  1386. /* 0x117c      */ add %o1,8,%o1
  1387. /* 0x1180      */ fxnor %f30,%f0,%f10
  1388. /* 0x1184      */ fmuld %f28,%f16,%f0
  1389. /* 0x1188      */ std %f4,[%o7-64]
  1390. /* 0x118c      */ ldd [%o1],%f22
  1391. /* 0x1190      */ fitod %f13,%f4
  1392. /* 0x1194      */ fsubd %f20,%f2,%f2
  1393. /* 0x1198      */ fmuld %f6,%f18,%f26
  1394. /* 0x119c      */ fmuld %f6,%f16,%f24
  1395. /* 0x11a0      */ fdtox %f0,%f0
  1396. /* 0x11a4      */ fitod %f8,%f6
  1397. /* 0x11a8      */ fmuld %f28,%f18,%f8
  1398. /* 0x11ac      */ fdtox %f26,%f26
  1399. /* 0x11b0      */ fdtox %f24,%f24
  1400. /* 0x11b4      */ std %f26,[%g5-32]
  1401. /* 0x11b8      */ std %f24,[%g3-32]
  1402. /* 0x11bc      */ fdtox %f8,%f8
  1403. /* 0x11c0      */ fsubd %f20,%f6,%f6
  1404. /* 0x11c4      */ std %f8,[%g2-32]
  1405. /* 0x11c8      */ add %o1,8,%o1
  1406. /* 0x11cc      */ fxnor %f30,%f22,%f8
  1407. /* 0x11d0      */ std %f0,[%o7-32]
  1408. /* 0x11d4      */ ble,pt %icc,.L900000181
  1409. /* 0x11d8      */ fmuld %f2,%f16,%f0
  1410.                        .L900000184:
  1411. /* 0x11dc  246 */ fitod %f12,%f28
  1412. /* 0x11e0      */ fmuld %f6,%f18,%f24
  1413. /* 0x11e4      */ add %g5,128,%g5
  1414. /* 0x11e8      */ fitod %f10,%f12
  1415. /* 0x11ec      */ fmuld %f6,%f16,%f26
  1416. /* 0x11f0      */ add %g3,128,%g3
  1417. /* 0x11f4      */ fsubd %f20,%f4,%f4
  1418. /* 0x11f8      */ fmuld %f2,%f18,%f22
  1419. /* 0x11fc      */ add %g2,128,%g2
  1420. /* 0x1200      */ fdtox %f24,%f6
  1421. /* 0x1204      */ std %f6,[%g5-128]
  1422. /* 0x1208      */ add %o7,128,%o7
  1423. /* 0x120c      */ fsubd %f20,%f28,%f2
  1424. /* 0x1210      */ cmp %i0,%o2
  1425. /* 0x1214      */ fitod %f11,%f6
  1426. /* 0x1218      */ fmuld %f4,%f18,%f24
  1427. /* 0x121c      */ fdtox %f26,%f10
  1428. /* 0x1220      */ std %f10,[%g3-128]
  1429. /* 0x1224      */ fdtox %f22,%f10
  1430. /* 0x1228      */ std %f10,[%g2-128]
  1431. /* 0x122c      */ fmuld %f2,%f18,%f26
  1432. /* 0x1230      */ fsubd %f20,%f12,%f10
  1433. /* 0x1234      */ fmuld %f2,%f16,%f2
  1434. /* 0x1238      */ fsubd %f20,%f6,%f22
  1435. /* 0x123c      */ fmuld %f4,%f16,%f12
  1436. /* 0x1240      */ fdtox %f0,%f0
  1437. /* 0x1244      */ std %f0,[%o7-128]
  1438. /* 0x1248      */ fitod %f8,%f4
  1439. /* 0x124c      */ fmuld %f10,%f18,%f6
  1440. /* 0x1250      */ fdtox %f26,%f0
  1441. /* 0x1254      */ std %f0,[%g5-96]
  1442. /* 0x1258      */ fmuld %f10,%f16,%f10
  1443. /* 0x125c      */ fdtox %f2,%f2
  1444. /* 0x1260      */ std %f2,[%g3-96]
  1445. /* 0x1264      */ fitod %f9,%f0
  1446. /* 0x1268      */ fmuld %f22,%f18,%f2
  1447. /* 0x126c      */ fdtox %f24,%f8
  1448. /* 0x1270      */ std %f8,[%g2-96]
  1449. /* 0x1274      */ fsubd %f20,%f4,%f4
  1450. /* 0x1278      */ fmuld %f22,%f16,%f8
  1451. /* 0x127c      */ fdtox %f12,%f12
  1452. /* 0x1280      */ std %f12,[%o7-96]
  1453. /* 0x1284      */ fsubd %f20,%f0,%f0
  1454. /* 0x1288      */ fdtox %f6,%f6
  1455. /* 0x128c      */ std %f6,[%g5-64]
  1456. /* 0x1290      */ fdtox %f10,%f10
  1457. /* 0x1294      */ std %f10,[%g3-64]
  1458. /* 0x1298      */ fmuld %f4,%f18,%f6
  1459. /* 0x129c      */ fdtox %f2,%f2
  1460. /* 0x12a0      */ std %f2,[%g2-64]
  1461. /* 0x12a4      */ fmuld %f4,%f16,%f4
  1462. /* 0x12a8      */ fmuld %f0,%f18,%f2
  1463. /* 0x12ac      */ fdtox %f8,%f8
  1464. /* 0x12b0      */ std %f8,[%o7-64]
  1465. /* 0x12b4      */ fdtox %f6,%f6
  1466. /* 0x12b8      */ std %f6,[%g5-32]
  1467. /* 0x12bc      */ fmuld %f0,%f16,%f0
  1468. /* 0x12c0      */ fdtox %f4,%f4
  1469. /* 0x12c4      */ std %f4,[%g3-32]
  1470. /* 0x12c8      */ fdtox %f2,%f2
  1471. /* 0x12cc      */ std %f2,[%g2-32]
  1472. /* 0x12d0      */ fdtox %f0,%f0
  1473. /* 0x12d4      */ bg,pn %icc,.L77000071
  1474. /* 0x12d8      */ std %f0,[%o7-32]
  1475.                        .L77000110:
  1476. /* 0x12dc      */ ldd [%o1],%f0
  1477.                        .L900000195:
  1478. /* 0x12e0      */ fxnor %f30,%f0,%f0
  1479. /* 0x12e4  246 */ add %i0,1,%i0
  1480. /* 0x12e8      */ add %o1,8,%o1
  1481. /* 0x12ec      */ cmp %i0,%o2
  1482. /* 0x12f0      */ fitod %f0,%f2
  1483. /* 0x12f4      */ fitod %f1,%f0
  1484. /* 0x12f8      */ fsubd %f20,%f2,%f2
  1485. /* 0x12fc      */ fsubd %f20,%f0,%f0
  1486. /* 0x1300      */ fmuld %f2,%f18,%f6
  1487. /* 0x1304      */ fmuld %f2,%f16,%f4
  1488. /* 0x1308      */ fmuld %f0,%f18,%f2
  1489. /* 0x130c      */ fdtox %f6,%f6
  1490. /* 0x1310      */ std %f6,[%g5]
  1491. /* 0x1314      */ fmuld %f0,%f16,%f0
  1492. /* 0x1318      */ fdtox %f4,%f4
  1493. /* 0x131c      */ std %f4,[%g3]
  1494. /* 0x1320      */ add %g3,32,%g3
  1495. /* 0x1324      */ fdtox %f2,%f2
  1496. /* 0x1328      */ std %f2,[%g2]
  1497. /* 0x132c      */ add %g2,32,%g2
  1498. /* 0x1330      */ fdtox %f0,%f0
  1499. /* 0x1334      */ std %f0,[%o7]
  1500. /* 0x1338      */ add %o7,32,%o7
  1501. /* 0x133c      */ add %g5,32,%g5
  1502. /* 0x1340      */ ble,a,pt %icc,.L900000195
  1503. /* 0x1344      */ ldd [%o1],%f0
  1504.                        .L77000071:
  1505. !  247       !      }
  1506. !  249       !#pragma pipeloop(0)
  1507. !  250       !      for (i = 0; i < n; i ++) {
  1508. /* 0x1348  250 */ cmp %o3,0
  1509.                        .L900000196:
  1510. /* 0x134c  250 */ ble,a,pt %icc,.L77000089
  1511. /* 0x1350      */ or %g0,%g4,%i0
  1512. /* 0x1354      */ sethi %hi(0x1800),%g1
  1513. /* 0x1358      */ xor %g1,-624,%g1
  1514. /* 0x135c      */ or %g0,%o5,%g5
  1515. /* 0x1360      */ add %g1,%fp,%g3
  1516. /* 0x1364      */ sethi %hi(0x1800),%g1
  1517. /* 0x1368      */ xor %g1,-616,%g1
  1518. /* 0x136c      */ or %g0,%o4,%i0
  1519. /* 0x1370      */ add %g1,%fp,%o5
  1520. /* 0x1374      */ or %g0,0,%i1
  1521. /* 0x1378      */ sub %o3,1,%o7
  1522. /* 0x137c  246 */ cmp %o3,5
  1523. /* 0x1380      */ bl,pn %icc,.L77000111
  1524. /* 0x1384      */ sethi %hi(0x1800),%g1
  1525. !  251       !        ADD_S64_U32_D(i);
  1526. /* 0x1388  251 */ ld [%i0],%o2
  1527. /* 0x138c  246 */ sub %o3,3,%o4
  1528. /* 0x1390  251 */ xor %g1,-624,%g1
  1529. /* 0x1394      */ add %g5,4,%g5
  1530. /* 0x1398      */ add %g1,%fp,%g1
  1531. /* 0x139c      */ or %g0,2,%i1
  1532. /* 0x13a0      */ ldx [%g1+8],%o1
  1533. /* 0x13a4      */ ldx [%g1],%o0
  1534. /* 0x13a8      */ ldx [%g1+16],%o3
  1535. /* 0x13ac      */ sethi %hi(0x1800),%g1
  1536. /* 0x13b0      */ xor %g1,-592,%g1
  1537. /* 0x13b4      */ add %o0,%o1,%o0
  1538. /* 0x13b8      */ ld [%i0+4],%o1
  1539. /* 0x13bc      */ add %g1,%fp,%g3
  1540. /* 0x13c0      */ sethi %hi(0x1800),%g1
  1541. /* 0x13c4      */ xor %g1,-600,%g1
  1542. /* 0x13c8      */ add %o0,%o2,%o0
  1543. /* 0x13cc      */ add %g1,%fp,%g1
  1544. /* 0x13d0      */ add %i0,8,%i0
  1545. /* 0x13d4      */ ldx [%g1],%o2
  1546. /* 0x13d8      */ sethi %hi(0x1800),%g1
  1547. /* 0x13dc      */ st %o0,[%g5-4]
  1548. /* 0x13e0      */ srax %o0,32,%o0
  1549. /* 0x13e4      */ xor %g1,-584,%g1
  1550. /* 0x13e8      */ add %g1,%fp,%o5
  1551.                        .L900000169:
  1552. /* 0x13ec  251 */ add %o3,%o2,%g4
  1553. /* 0x13f0      */ ld [%i0],%o3
  1554. /* 0x13f4      */ add %i1,3,%i1
  1555. /* 0x13f8      */ ldx [%g3],%o2
  1556. /* 0x13fc      */ sra %o0,0,%g2
  1557. /* 0x1400      */ add %g4,%o1,%o1
  1558. /* 0x1404      */ ldx [%o5],%o0
  1559. /* 0x1408      */ add %o1,%g2,%o1
  1560. /* 0x140c      */ cmp %i1,%o4
  1561. /* 0x1410      */ st %o1,[%g5]
  1562. /* 0x1414      */ srax %o1,32,%g4
  1563. /* 0x1418      */ add %g5,12,%g5
  1564. /* 0x141c      */ add %o2,%o0,%o1
  1565. /* 0x1420      */ ld [%i0+4],%o2
  1566. /* 0x1424      */ add %i0,12,%i0
  1567. /* 0x1428      */ ldx [%g3+16],%o0
  1568. /* 0x142c      */ add %o1,%o3,%o3
  1569. /* 0x1430      */ ldx [%o5+16],%o1
  1570. /* 0x1434      */ add %o3,%g4,%o3
  1571. /* 0x1438      */ add %o5,48,%o5
  1572. /* 0x143c      */ st %o3,[%g5-8]
  1573. /* 0x1440      */ srax %o3,32,%g2
  1574. /* 0x1444      */ add %g3,48,%g3
  1575. /* 0x1448      */ add %o0,%o1,%o0
  1576. /* 0x144c      */ ld [%i0-4],%o1
  1577. /* 0x1450      */ ldx [%g3-16],%o3
  1578. /* 0x1454      */ add %o0,%o2,%o0
  1579. /* 0x1458      */ ldx [%o5-16],%o2
  1580. /* 0x145c      */ add %o0,%g2,%o0
  1581. /* 0x1460      */ st %o0,[%g5-4]
  1582. /* 0x1464      */ ble,pt %icc,.L900000169
  1583. /* 0x1468      */ srax %o0,32,%o0
  1584.                        .L900000172:
  1585. /* 0x146c  251 */ add %o3,%o2,%o3
  1586. /* 0x1470      */ add %g5,4,%g5
  1587. /* 0x1474      */ sra %o0,0,%o2
  1588. /* 0x1478      */ add %o3,%o1,%o0
  1589. /* 0x147c      */ add %o0,%o2,%o0
  1590. /* 0x1480      */ st %o0,[%g5-4]
  1591. /* 0x1484      */ cmp %i1,%o7
  1592. /* 0x1488      */ srax %o0,32,%g4
  1593. /* 0x148c      */ bg,a,pn %icc,.L77000089
  1594. /* 0x1490      */ or %g0,%g4,%i0
  1595.                        .L77000111:
  1596. /* 0x1494  251 */ ldx [%g3],%o0
  1597.                        .L900000194:
  1598. /* 0x1498  251 */ ldx [%o5],%o3
  1599. /* 0x149c      */ sra %g4,0,%o1
  1600. /* 0x14a0      */ add %i1,1,%i1
  1601. /* 0x14a4      */ ld [%i0],%o2
  1602. /* 0x14a8      */ add %g3,16,%g3
  1603. /* 0x14ac      */ add %o5,16,%o5
  1604. /* 0x14b0      */ add %o0,%o3,%o0
  1605. /* 0x14b4      */ add %i0,4,%i0
  1606. /* 0x14b8      */ add %o0,%o2,%o0
  1607. /* 0x14bc      */ cmp %i1,%o7
  1608. /* 0x14c0      */ add %o0,%o1,%o0
  1609. /* 0x14c4      */ st %o0,[%g5]
  1610. /* 0x14c8      */ add %g5,4,%g5
  1611. /* 0x14cc      */ srax %o0,32,%g4
  1612. /* 0x14d0      */ ble,a,pt %icc,.L900000194
  1613. /* 0x14d4      */ ldx [%g3],%o0
  1614.                        .L77000075:
  1615. /* 0x14d8      */ ret ! Result =  %i0
  1616. /* 0x14dc      */ restore %g0,%g4,%o0
  1617.                        .L77000076:
  1618. !  252       !      }
  1619. !  254       !      return c;
  1620. !  255       !    }
  1621. !  257       !  } else {
  1622. !  259       !    if (n == 8) {
  1623. /* 0x14e0  259 */ bne,pn %icc,.L77000078
  1624. /* 0x14e4      */ sethi %hi(0xffe00000),%g2
  1625. /* 0x14e8      */ ldd [%o7],%f4
  1626. !  260       !      DEF_VARS(2*8);
  1627. !  261       !      t_d64 d0, d1, db;
  1628. !  262       !      t_u32 uc = 0;
  1629. !  264       !      da = (t_d64)(a &  A_MASK);
  1630. /* 0x14ec  264 */ ldd [%o1],%f6
  1631. /* 0x14f0      */ or %g0,%g2,%g3
  1632. !  265       !      db = (t_d64)(a &~ A_MASK);
  1633. /* 0x14f4  265 */ and %o0,%g2,%g2
  1634. /* 0x14f8      */ st %g2,[%sp+456]
  1635. /* 0x14fc      */ fxnor %f30,%f4,%f4
  1636. /* 0x1500  264 */ andn %o0,%g3,%g2
  1637. /* 0x1504      */ st %g2,[%sp+460]
  1638. !  267       !      MUL_U32_S64_E_8(0);
  1639. /* 0x1508  267 */ ldd [%o1+8],%f12
  1640. /* 0x150c      */ fitod %f4,%f10
  1641. /* 0x1510      */ ldd [%o7+8],%f14
  1642. /* 0x1514      */ fitod %f5,%f4
  1643. /* 0x1518      */ ldd [%o1+16],%f18
  1644. /* 0x151c  265 */ ld [%sp+456],%f9
  1645. /* 0x1520  267 */ fsubd %f12,%f10,%f10
  1646. /* 0x1524  264 */ ld [%sp+460],%f17
  1647. /* 0x1528  267 */ fsubd %f12,%f4,%f4
  1648. !  268       !      ADD_S64_U32_E_8(0);
  1649. /* 0x152c  268 */ sethi %hi(0x80000000),%g3
  1650. /* 0x1530      */ ldd [%o7+16],%f20
  1651. /* 0x1534      */ fxnor %f30,%f14,%f14
  1652. /* 0x1538      */ sllx %g3,32,%g3
  1653. /* 0x153c      */ ldd [%o7+24],%f22
  1654. /* 0x1540      */ ld [%i1+24],%o3
  1655. /* 0x1544  267 */ fitod %f14,%f26
  1656. /* 0x1548  268 */ ld [%i1+28],%o4
  1657. /* 0x154c  267 */ fitod %f15,%f14
  1658. /* 0x1550  268 */ stx %o3,[%sp+320]
  1659. /* 0x1554      */ fxnor %f30,%f20,%f20
  1660. /* 0x1558      */ stx %o4,[%sp+312]
  1661. /* 0x155c  267 */ fsubd %f12,%f26,%f26
  1662. /* 0x1560  268 */ ld [%i1],%g2
  1663. /* 0x1564  267 */ fsubd %f12,%f14,%f14
  1664. /* 0x1568  268 */ ld [%i1+4],%g4
  1665. /* 0x156c      */ ld [%i1+8],%g5
  1666. /* 0x1570      */ ld [%i1+12],%o0
  1667. /* 0x1574  265 */ fmovs %f6,%f8
  1668. /* 0x1578  268 */ ld [%i1+16],%o1
  1669. /* 0x157c  264 */ fmovs %f6,%f16
  1670. /* 0x1580  268 */ ld [%i1+20],%o2
  1671. /* 0x1584  265 */ fsubd %f8,%f6,%f8
  1672. /* 0x1588  264 */ fsubd %f16,%f6,%f6
  1673. /* 0x158c  267 */ fmuld %f10,%f8,%f24
  1674. /* 0x1590      */ fmuld %f4,%f8,%f16
  1675. /* 0x1594      */ fmuld %f4,%f6,%f4
  1676. /* 0x1598      */ faddd %f24,%f18,%f24
  1677. /* 0x159c      */ fmuld %f10,%f6,%f10
  1678. /* 0x15a0      */ faddd %f16,%f18,%f16
  1679. /* 0x15a4      */ fmuld %f26,%f8,%f28
  1680. /* 0x15a8      */ fdtox %f4,%f4
  1681. /* 0x15ac      */ std %f4,[%sp+432]
  1682. /* 0x15b0      */ fmuld %f26,%f6,%f26
  1683. /* 0x15b4      */ fdtox %f24,%f24
  1684. /* 0x15b8      */ std %f24,[%sp+440]
  1685. /* 0x15bc      */ fmuld %f14,%f6,%f4
  1686. /* 0x15c0      */ fdtox %f10,%f10
  1687. /* 0x15c4      */ std %f10,[%sp+448]
  1688. /* 0x15c8      */ fmuld %f14,%f8,%f24
  1689. /* 0x15cc  268 */ ldx [%sp+432],%o4
  1690. /* 0x15d0  267 */ fdtox %f16,%f14
  1691. /* 0x15d4      */ std %f14,[%sp+424]
  1692. /* 0x15d8      */ fitod %f20,%f10
  1693. /* 0x15dc  268 */ ldx [%sp+440],%o7
  1694. /* 0x15e0  267 */ faddd %f28,%f18,%f14
  1695. /* 0x15e4  268 */ ldx [%sp+448],%o5
  1696. /* 0x15e8  267 */ fitod %f21,%f16
  1697. /* 0x15ec      */ fsubd %f12,%f10,%f10
  1698. /* 0x15f0  268 */ ldx [%sp+424],%o3
  1699. /* 0x15f4  267 */ fdtox %f14,%f14
  1700. /* 0x15f8  268 */ add %o5,%o7,%o5
  1701. /* 0x15fc  267 */ std %f14,[%sp+408]
  1702. /* 0x1600      */ fxnor %f30,%f22,%f20
  1703. /* 0x1604  268 */ add %o5,%g2,%g2
  1704. /* 0x1608  267 */ faddd %f24,%f18,%f14
  1705. /* 0x160c  268 */ add %o4,%o3,%o3
  1706. /* 0x1610      */ sub %g2,%g3,%g2
  1707. /* 0x1614      */ st %g2,[%i4]
  1708. /* 0x1618  267 */ fdtox %f26,%f22
  1709. /* 0x161c  268 */ srlx %g2,32,%o5
  1710. /* 0x1620  267 */ fmuld %f10,%f8,%f26
  1711. /* 0x1624      */ std %f22,[%sp+416]
  1712. /* 0x1628      */ fsubd %f12,%f16,%f16
  1713. /* 0x162c  268 */ add %o3,%g4,%g4
  1714. /* 0x1630  267 */ fmuld %f10,%f6,%f10
  1715. /* 0x1634      */ fdtox %f4,%f4
  1716. /* 0x1638      */ std %f4,[%sp+400]
  1717. /* 0x163c  268 */ add %g4,%o5,%g4
  1718. /* 0x1640      */ ldx [%sp+416],%o7
  1719. /* 0x1644  267 */ fdtox %f14,%f4
  1720. /* 0x1648  268 */ sub %g4,%g3,%g4
  1721. /* 0x164c  267 */ std %f4,[%sp+392]
  1722. /* 0x1650      */ fitod %f20,%f22
  1723. /* 0x1654      */ fmuld %f16,%f8,%f14
  1724. /* 0x1658  268 */ ldx [%sp+408],%o3
  1725. /* 0x165c  267 */ faddd %f26,%f18,%f4
  1726. /* 0x1660      */ fmuld %f16,%f6,%f16
  1727. /* 0x1664  268 */ st %g4,[%i4+4]
  1728. /* 0x1668  267 */ fitod %f21,%f20
  1729. /* 0x166c  268 */ ldx [%sp+392],%o5
  1730. /* 0x1670  267 */ fsubd %f12,%f22,%f22
  1731. /* 0x1674  268 */ add %o7,%o3,%o3
  1732. /* 0x1678      */ ldx [%sp+400],%o4
  1733. /* 0x167c  267 */ fdtox %f4,%f4
  1734. /* 0x1680  268 */ add %o3,%g5,%o3
  1735. /* 0x1684  267 */ std %f4,[%sp+376]
  1736. /* 0x1688      */ fdtox %f10,%f10
  1737. /* 0x168c  268 */ srlx %g4,32,%g5
  1738. /* 0x1690  267 */ faddd %f14,%f18,%f4
  1739. /* 0x1694      */ std %f10,[%sp+384]
  1740. /* 0x1698      */ fmuld %f22,%f8,%f10
  1741. /* 0x169c  268 */ ldx [%sp+312],%g4
  1742. /* 0x16a0  267 */ fsubd %f12,%f20,%f12
  1743. /* 0x16a4  268 */ add %o4,%o5,%o4
  1744. /* 0x16a8  267 */ fmuld %f22,%f6,%f14
  1745. /* 0x16ac      */ fdtox %f16,%f16
  1746. /* 0x16b0      */ std %f16,[%sp+368]
  1747. /* 0x16b4  268 */ add %o3,%g5,%o3
  1748. /* 0x16b8  267 */ fdtox %f4,%f4
  1749. /* 0x16bc      */ std %f4,[%sp+360]
  1750. /* 0x16c0  268 */ add %o4,%o0,%o0
  1751. /* 0x16c4  267 */ faddd %f10,%f18,%f4
  1752. /* 0x16c8  268 */ ldx [%sp+376],%o4
  1753. /* 0x16cc      */ sub %o3,%g3,%o3
  1754. /* 0x16d0  267 */ fmuld %f12,%f8,%f16
  1755. /* 0x16d4  268 */ ldx [%sp+384],%g5
  1756. /* 0x16d8      */ srlx %o3,32,%o5
  1757. /* 0x16dc  267 */ fdtox %f14,%f14
  1758. /* 0x16e0      */ fmuld %f12,%f6,%f6
  1759. /* 0x16e4      */ std %f14,[%sp+352]
  1760. /* 0x16e8  268 */ add %o0,%o5,%o0
  1761. /* 0x16ec      */ add %g5,%o4,%g5
  1762. /* 0x16f0  267 */ fdtox %f4,%f4
  1763. /* 0x16f4      */ std %f4,[%sp+344]
  1764. /* 0x16f8  268 */ ldx [%sp+368],%o7
  1765. /* 0x16fc      */ sub %o0,%g3,%o0
  1766. /* 0x1700      */ add %g5,%o1,%o1
  1767. /* 0x1704  267 */ faddd %f16,%f18,%f4
  1768. /* 0x1708  268 */ ldx [%sp+360],%o4
  1769. /* 0x170c      */ srlx %o0,32,%g5
  1770. /* 0x1710  267 */ fdtox %f6,%f6
  1771. /* 0x1714  268 */ add %o1,%g5,%o1
  1772. /* 0x1718  267 */ std %f6,[%sp+336]
  1773. /* 0x171c  268 */ add %o7,%o4,%o4
  1774. /* 0x1720      */ sub %o1,%g3,%o1
  1775. /* 0x1724      */ ldx [%sp+352],%o5
  1776. /* 0x1728      */ add %o4,%o2,%o2
  1777. /* 0x172c  267 */ fdtox %f4,%f4
  1778. /* 0x1730      */ std %f4,[%sp+328]
  1779. /* 0x1734  268 */ ldx [%sp+344],%o4
  1780. /* 0x1738      */ srlx %o1,32,%g5
  1781. /* 0x173c      */ add %o2,%g5,%o2
  1782. /* 0x1740      */ st %o3,[%i4+8]
  1783. /* 0x1744      */ add %o5,%o4,%g5
  1784. /* 0x1748      */ ldx [%sp+320],%o5
  1785. /* 0x174c      */ sub %o2,%g3,%o2
  1786. /* 0x1750      */ ldx [%sp+336],%o7
  1787. /* 0x1754      */ srlx %o2,32,%g2
  1788. /* 0x1758      */ ldx [%sp+328],%o4
  1789. /* 0x175c      */ add %g5,%o5,%g5
  1790. /* 0x1760      */ add %g5,%g2,%g2
  1791. /* 0x1764      */ st %o0,[%i4+12]
  1792. /* 0x1768      */ add %o7,%o4,%o4
  1793. /* 0x176c      */ sub %g2,%g3,%g2
  1794. /* 0x1770      */ st %o1,[%i4+16]
  1795. /* 0x1774      */ srlx %g2,32,%g5
  1796. /* 0x1778      */ add %o4,%g4,%g4
  1797. /* 0x177c      */ st %o2,[%i4+20]
  1798. /* 0x1780      */ add %g4,%g5,%g4
  1799. /* 0x1784      */ st %g2,[%i4+24]
  1800. /* 0x1788      */ sub %g4,%g3,%g3
  1801. /* 0x178c      */ st %g3,[%i4+28]
  1802. !  270       !      return uc;
  1803. /* 0x1790  270 */ srlx %g3,32,%i0
  1804. /* 0x1794      */ ret ! Result =  %i0
  1805. /* 0x1798      */ restore %g0,%g0,%g0
  1806.                        .L77000078:
  1807. !  272       !    } else if (n == 16) {
  1808. /* 0x179c  272 */ cmp %o2,16
  1809. /* 0x17a0      */ bne,pn %icc,.L77000106
  1810. /* 0x17a4      */ sethi %hi(0xffe00000),%g2
  1811. /* 0x17a8      */ ldd [%o7],%f6
  1812. !  273       !      DEF_VARS(2*16);
  1813. !  274       !      t_d64 d0, d1, db;
  1814. !  275       !      t_u32 uc = 0;
  1815. !  277       !      da = (t_d64)(a &  A_MASK);
  1816. /* 0x17ac  277 */ or %g0,%g2,%g3
  1817. !  278       !      db = (t_d64)(a &~ A_MASK);
  1818. /* 0x17b0  278 */ and %o0,%g2,%g2
  1819. /* 0x17b4      */ st %g2,[%sp+312]
  1820. /* 0x17b8  277 */ andn %o0,%g3,%g2
  1821. /* 0x17bc      */ sethi %hi(0x80000000),%g3
  1822. /* 0x17c0      */ fxnor %f30,%f6,%f6
  1823. /* 0x17c4      */ ldd [%o1],%f8
  1824. /* 0x17c8      */ sllx %g3,32,%o0
  1825. /* 0x17cc      */ st %g2,[%sp+316]
  1826. !  280       !      MUL_U32_S64_E_8(0);
  1827. /* 0x17d0  280 */ fitod %f6,%f12
  1828. /* 0x17d4      */ ldd [%o1+8],%f4
  1829. /* 0x17d8      */ fitod %f7,%f6
  1830. /* 0x17dc      */ ldd [%o1+16],%f2
  1831. !  281       !      MUL_U32_S64_E_8(4);
  1832. !  282       !      ADD_S64_U32_E_8(0);
  1833. /* 0x17e0  282 */ stx %o0,[%sp+96]
  1834. /* 0x17e4  278 */ ld [%sp+312],%f11
  1835. /* 0x17e8  280 */ fsubd %f4,%f6,%f6
  1836. /* 0x17ec  277 */ ld [%sp+316],%f15
  1837. /* 0x17f0  282 */ ldx [%sp+96],%o3
  1838. /* 0x17f4  278 */ fmovs %f8,%f10
  1839. /* 0x17f8  277 */ fmovs %f8,%f14
  1840. /* 0x17fc  278 */ fsubd %f10,%f8,%f16
  1841. /* 0x1800  280 */ fsubd %f4,%f12,%f10
  1842. /* 0x1804  277 */ fsubd %f14,%f8,%f14
  1843. /* 0x1808  280 */ fmuld %f6,%f16,%f12
  1844. /* 0x180c      */ fmuld %f10,%f16,%f8
  1845. /* 0x1810      */ fmuld %f6,%f14,%f6
  1846. /* 0x1814      */ faddd %f12,%f2,%f12
  1847. /* 0x1818      */ fmuld %f10,%f14,%f10
  1848. /* 0x181c      */ faddd %f8,%f2,%f8
  1849. /* 0x1820      */ fdtox %f6,%f6
  1850. /* 0x1824      */ std %f6,[%sp+288]
  1851. /* 0x1828      */ fdtox %f12,%f6
  1852. /* 0x182c      */ std %f6,[%sp+280]
  1853. /* 0x1830      */ fdtox %f10,%f10
  1854. /* 0x1834      */ std %f10,[%sp+304]
  1855. /* 0x1838      */ fdtox %f8,%f8
  1856. /* 0x183c      */ std %f8,[%sp+296]
  1857. /* 0x1840      */ ldd [%o7+8],%f0
  1858. /* 0x1844      */ fxnor %f30,%f0,%f6
  1859. /* 0x1848      */ ldx [%sp+296],%g3
  1860. /* 0x184c      */ fitod %f6,%f8
  1861. /* 0x1850      */ ldx [%sp+304],%g2
  1862. /* 0x1854      */ fitod %f7,%f6
  1863. /* 0x1858      */ add %g2,%g3,%g2
  1864. /* 0x185c      */ fsubd %f4,%f8,%f8
  1865. /* 0x1860      */ fsubd %f4,%f6,%f6
  1866. /* 0x1864      */ fmuld %f8,%f16,%f10
  1867. /* 0x1868      */ fmuld %f6,%f16,%f12
  1868. /* 0x186c      */ fmuld %f8,%f14,%f8
  1869. /* 0x1870      */ fmuld %f6,%f14,%f6
  1870. /* 0x1874      */ faddd %f10,%f2,%f10
  1871. /* 0x1878      */ faddd %f12,%f2,%f12
  1872. /* 0x187c      */ fdtox %f8,%f8
  1873. /* 0x1880      */ std %f8,[%sp+272]
  1874. /* 0x1884      */ fdtox %f6,%f6
  1875. /* 0x1888      */ std %f6,[%sp+256]
  1876. /* 0x188c      */ fdtox %f10,%f8
  1877. /* 0x1890      */ std %f8,[%sp+264]
  1878. /* 0x1894      */ fdtox %f12,%f6
  1879. /* 0x1898      */ std %f6,[%sp+248]
  1880. /* 0x189c      */ ldd [%o7+16],%f0
  1881. /* 0x18a0      */ fxnor %f30,%f0,%f6
  1882. /* 0x18a4      */ fitod %f6,%f8
  1883. /* 0x18a8      */ fitod %f7,%f6
  1884. /* 0x18ac      */ fsubd %f4,%f8,%f8
  1885. /* 0x18b0      */ fsubd %f4,%f6,%f6
  1886. /* 0x18b4      */ fmuld %f8,%f16,%f10
  1887. /* 0x18b8      */ fmuld %f6,%f16,%f12
  1888. /* 0x18bc      */ fmuld %f8,%f14,%f8
  1889. /* 0x18c0      */ fmuld %f6,%f14,%f6
  1890. /* 0x18c4      */ faddd %f10,%f2,%f10
  1891. /* 0x18c8      */ faddd %f12,%f2,%f12
  1892. /* 0x18cc      */ fdtox %f8,%f8
  1893. /* 0x18d0      */ std %f8,[%sp+240]
  1894. /* 0x18d4      */ fdtox %f6,%f6
  1895. /* 0x18d8      */ std %f6,[%sp+224]
  1896. /* 0x18dc      */ fdtox %f10,%f8
  1897. /* 0x18e0      */ std %f8,[%sp+232]
  1898. /* 0x18e4      */ fdtox %f12,%f6
  1899. /* 0x18e8      */ std %f6,[%sp+216]
  1900. /* 0x18ec      */ ldd [%o7+24],%f0
  1901. /* 0x18f0      */ fxnor %f30,%f0,%f6
  1902. /* 0x18f4      */ fitod %f6,%f8
  1903. /* 0x18f8      */ fitod %f7,%f6
  1904. /* 0x18fc      */ fsubd %f4,%f8,%f8
  1905. /* 0x1900      */ fsubd %f4,%f6,%f6
  1906. /* 0x1904      */ fmuld %f8,%f16,%f10
  1907. /* 0x1908      */ fmuld %f6,%f16,%f12
  1908. /* 0x190c      */ fmuld %f8,%f14,%f8
  1909. /* 0x1910      */ fmuld %f6,%f14,%f6
  1910. /* 0x1914      */ faddd %f10,%f2,%f10
  1911. /* 0x1918      */ faddd %f12,%f2,%f12
  1912. /* 0x191c      */ fdtox %f8,%f8
  1913. /* 0x1920      */ std %f8,[%sp+208]
  1914. /* 0x1924      */ fdtox %f6,%f6
  1915. /* 0x1928      */ std %f6,[%sp+192]
  1916. /* 0x192c      */ fdtox %f10,%f8
  1917. /* 0x1930      */ std %f8,[%sp+200]
  1918. /* 0x1934      */ fdtox %f12,%f6
  1919. /* 0x1938      */ std %f6,[%sp+184]
  1920. /* 0x193c      */ ldd [%o7+32],%f0
  1921. /* 0x1940      */ fxnor %f30,%f0,%f6
  1922. /* 0x1944  281 */ fitod %f6,%f8
  1923. /* 0x1948      */ fitod %f7,%f6
  1924. /* 0x194c      */ fsubd %f4,%f8,%f8
  1925. /* 0x1950      */ fsubd %f4,%f6,%f6
  1926. /* 0x1954      */ fmuld %f8,%f16,%f10
  1927. /* 0x1958      */ fmuld %f6,%f16,%f12
  1928. /* 0x195c      */ fmuld %f8,%f14,%f8
  1929. /* 0x1960      */ fmuld %f6,%f14,%f6
  1930. /* 0x1964      */ faddd %f10,%f2,%f10
  1931. /* 0x1968      */ faddd %f12,%f2,%f12
  1932. /* 0x196c      */ fdtox %f8,%f8
  1933. /* 0x1970      */ std %f8,[%sp+176]
  1934. /* 0x1974      */ fdtox %f6,%f6
  1935. /* 0x1978      */ std %f6,[%sp+160]
  1936. /* 0x197c      */ fdtox %f10,%f8
  1937. /* 0x1980      */ std %f8,[%sp+168]
  1938. /* 0x1984      */ fdtox %f12,%f6
  1939. /* 0x1988      */ std %f6,[%sp+152]
  1940. /* 0x198c      */ ldd [%o7+40],%f0
  1941. /* 0x1990      */ fxnor %f30,%f0,%f6
  1942. /* 0x1994      */ fitod %f6,%f8
  1943. /* 0x1998      */ fitod %f7,%f6
  1944. /* 0x199c      */ fsubd %f4,%f8,%f8
  1945. /* 0x19a0      */ fsubd %f4,%f6,%f6
  1946. /* 0x19a4      */ fmuld %f8,%f16,%f10
  1947. /* 0x19a8      */ fmuld %f6,%f16,%f12
  1948. /* 0x19ac      */ fmuld %f8,%f14,%f8
  1949. /* 0x19b0      */ fmuld %f6,%f14,%f6
  1950. /* 0x19b4      */ faddd %f10,%f2,%f10
  1951. /* 0x19b8      */ faddd %f12,%f2,%f12
  1952. /* 0x19bc      */ fdtox %f8,%f8
  1953. /* 0x19c0      */ std %f8,[%sp+144]
  1954. /* 0x19c4      */ fdtox %f6,%f6
  1955. /* 0x19c8      */ std %f6,[%sp+128]
  1956. /* 0x19cc      */ fdtox %f10,%f8
  1957. /* 0x19d0      */ std %f8,[%sp+136]
  1958. /* 0x19d4      */ fdtox %f12,%f6
  1959. /* 0x19d8      */ std %f6,[%sp+120]
  1960. /* 0x19dc      */ ldd [%o7+48],%f0
  1961. /* 0x19e0      */ fxnor %f30,%f0,%f6
  1962. /* 0x19e4      */ fitod %f6,%f8
  1963. /* 0x19e8      */ fitod %f7,%f6
  1964. /* 0x19ec      */ fsubd %f4,%f8,%f8
  1965. /* 0x19f0      */ fsubd %f4,%f6,%f12
  1966. /* 0x19f4      */ fmuld %f8,%f16,%f6
  1967. /* 0x19f8      */ fmuld %f8,%f14,%f8
  1968. /* 0x19fc      */ fmuld %f12,%f14,%f10
  1969. /* 0x1a00      */ faddd %f6,%f2,%f6
  1970. /* 0x1a04      */ fdtox %f8,%f8
  1971. /* 0x1a08      */ std %f8,[%sp+112]
  1972. /* 0x1a0c      */ fdtox %f10,%f0
  1973. /* 0x1a10      */ fdtox %f6,%f6
  1974. /* 0x1a14      */ std %f6,[%sp+104]
  1975. /* 0x1a18      */ ld [%i1],%g3
  1976. /* 0x1a1c      */ fmuld %f12,%f16,%f6
  1977. /* 0x1a20  282 */ ld [%i1+4],%g5
  1978. /* 0x1a24      */ add %g2,%g3,%g2
  1979. /* 0x1a28      */ ld [%i1+8],%o4
  1980. /* 0x1a2c      */ sub %g2,%o0,%o0
  1981. /* 0x1a30      */ st %o0,[%i4]
  1982. /* 0x1a34  281 */ faddd %f6,%f2,%f6
  1983. /* 0x1a38  282 */ ldx [%sp+280],%g4
  1984. /* 0x1a3c      */ srlx %o0,32,%g2
  1985. /* 0x1a40      */ ldx [%sp+288],%g3
  1986. /* 0x1a44      */ ld [%i1+20],%o2
  1987. /* 0x1a48  281 */ fdtox %f6,%f6
  1988. /* 0x1a4c  282 */ add %g3,%g4,%g3
  1989. /* 0x1a50      */ add %g3,%g5,%g3
  1990. /* 0x1a54      */ ld [%i1+12],%g5
  1991. /* 0x1a58      */ add %g3,%g2,%g2
  1992. /* 0x1a5c      */ ld [%i1+16],%g3
  1993. /* 0x1a60      */ sub %g2,%o3,%g2
  1994. /* 0x1a64      */ st %g2,[%i4+4]
  1995. /* 0x1a68      */ ldx [%sp+264],%o1
  1996. /* 0x1a6c      */ srlx %g2,32,%g2
  1997. /* 0x1a70      */ ldx [%sp+272],%o0
  1998. /* 0x1a74      */ add %o0,%o1,%o0
  1999. /* 0x1a78      */ ld [%i1+24],%o1
  2000. /* 0x1a7c      */ add %o0,%o4,%g4
  2001. /* 0x1a80      */ ld [%i1+28],%o0
  2002. /* 0x1a84      */ add %g4,%g2,%g4
  2003. !  283       !      ADD_S64_U32_E_8(8);
  2004. /* 0x1a88  283 */ ld [%i1+32],%g2
  2005. /* 0x1a8c  282 */ sub %g4,%o3,%g4
  2006. /* 0x1a90      */ st %g4,[%i4+8]
  2007. /* 0x1a94      */ ldx [%sp+248],%o4
  2008. /* 0x1a98      */ srlx %g4,32,%g4
  2009. /* 0x1a9c      */ ldx [%sp+256],%o3
  2010. /* 0x1aa0      */ ldd [%o7+56],%f8
  2011. /* 0x1aa4      */ add %o3,%o4,%o3
  2012. /* 0x1aa8      */ ldx [%sp+96],%o7
  2013. /* 0x1aac      */ add %o3,%g5,%g5
  2014. /* 0x1ab0      */ fxnor %f30,%f8,%f8
  2015. /* 0x1ab4  281 */ std %f6,[%sp+360]
  2016. /* 0x1ab8  282 */ add %g5,%g4,%o4
  2017. /* 0x1abc  281 */ std %f0,[%sp+368]
  2018. /* 0x1ac0  282 */ sub %o4,%o7,%o4
  2019. /* 0x1ac4      */ st %o4,[%i4+12]
  2020. /* 0x1ac8  281 */ fitod %f8,%f10
  2021. /* 0x1acc  282 */ ldx [%sp+232],%o7
  2022. /* 0x1ad0      */ srlx %o4,32,%o4
  2023. /* 0x1ad4  281 */ fitod %f9,%f8
  2024. /* 0x1ad8  282 */ ldx [%sp+240],%g5
  2025. /* 0x1adc  281 */ fsubd %f4,%f10,%f10
  2026. /* 0x1ae0  283 */ ld [%i1+44],%g4
  2027. /* 0x1ae4  282 */ add %g5,%o7,%g5
  2028. /* 0x1ae8      */ ldx [%sp+96],%o7
  2029. /* 0x1aec  281 */ fsubd %f4,%f8,%f6
  2030. /* 0x1af0  282 */ add %g5,%g3,%g3
  2031. /* 0x1af4  283 */ ld [%i1+48],%g5
  2032. /* 0x1af8  282 */ add %g3,%o4,%g3
  2033. /* 0x1afc  281 */ fmuld %f10,%f16,%f8
  2034. /* 0x1b00  283 */ stx %g4,[%sp+320]
  2035. /* 0x1b04  282 */ sub %g3,%o7,%g3
  2036. /* 0x1b08      */ st %g3,[%i4+16]
  2037. /* 0x1b0c  281 */ fmuld %f10,%f14,%f10
  2038. /* 0x1b10  282 */ stx %g5,[%sp+312]
  2039. /* 0x1b14      */ srlx %g3,32,%g3
  2040. /* 0x1b18  281 */ fmuld %f6,%f16,%f12
  2041. /* 0x1b1c  282 */ ldx [%sp+224],%o7
  2042. /* 0x1b20  281 */ faddd %f8,%f2,%f8
  2043. /* 0x1b24      */ fmuld %f6,%f14,%f6
  2044. /* 0x1b28  282 */ ldx [%sp+216],%g5
  2045. /* 0x1b2c  281 */ fdtox %f10,%f10
  2046. /* 0x1b30  283 */ ldx [%sp+368],%o4
  2047. /* 0x1b34  282 */ add %o7,%g5,%g5
  2048. /* 0x1b38  283 */ ldx [%sp+360],%g4
  2049. /* 0x1b3c  281 */ fdtox %f8,%f8
  2050. /* 0x1b40  282 */ add %g5,%o2,%o2
  2051. /* 0x1b44  283 */ ld [%i1+52],%g5
  2052. /* 0x1b48  281 */ fdtox %f6,%f6
  2053. /* 0x1b4c  282 */ add %o2,%g3,%g3
  2054. /* 0x1b50      */ ldx [%sp+96],%o2
  2055. /* 0x1b54  283 */ add %o4,%g4,%g4
  2056. /* 0x1b58  281 */ std %f10,[%sp+352]
  2057. /* 0x1b5c  283 */ add %g4,%g5,%o4
  2058. /* 0x1b60  281 */ faddd %f12,%f2,%f10
  2059. /* 0x1b64  282 */ sub %g3,%o2,%g3
  2060. /* 0x1b68      */ st %g3,[%i4+20]
  2061. /* 0x1b6c      */ ldx [%sp+200],%o7
  2062. /* 0x1b70      */ srlx %g3,32,%g3
  2063. /* 0x1b74      */ ldx [%sp+208],%o2
  2064. /* 0x1b78  281 */ std %f8,[%sp+344]
  2065. /* 0x1b7c      */ fdtox %f10,%f8
  2066. /* 0x1b80  282 */ add %o2,%o7,%o2
  2067. /* 0x1b84  281 */ std %f6,[%sp+336]
  2068. /* 0x1b88  282 */ add %o2,%o1,%g4
  2069. /* 0x1b8c      */ ldx [%sp+96],%o1
  2070. /* 0x1b90      */ add %g4,%g3,%g3
  2071. /* 0x1b94  283 */ ldx [%sp+352],%g5
  2072. /* 0x1b98  282 */ sub %g3,%o1,%g3
  2073. /* 0x1b9c      */ st %g3,[%i4+24]
  2074. /* 0x1ba0  283 */ ldx [%sp+344],%o7
  2075. /* 0x1ba4  282 */ srlx %g3,32,%g3
  2076. /* 0x1ba8  281 */ std %f8,[%sp+328]
  2077. /* 0x1bac  282 */ ldx [%sp+192],%o1
  2078. /* 0x1bb0  283 */ add %g5,%o7,%o2
  2079. /* 0x1bb4  282 */ ldx [%sp+184],%g4
  2080. /* 0x1bb8  283 */ ld [%i1+56],%g5
  2081. /* 0x1bbc  282 */ add %o1,%g4,%g4
  2082. /* 0x1bc0      */ ldx [%sp+96],%o7
  2083. /* 0x1bc4  283 */ add %o2,%g5,%o2
  2084. /* 0x1bc8  282 */ add %g4,%o0,%g4
  2085. /* 0x1bcc  283 */ ldx [%sp+336],%o1
  2086. /* 0x1bd0      */ ldx [%sp+328],%g5
  2087. /* 0x1bd4  282 */ add %g4,%g3,%g3
  2088. /* 0x1bd8  283 */ ld [%i1+60],%g4
  2089. /* 0x1bdc  282 */ sub %g3,%o7,%g3
  2090. /* 0x1be0  283 */ add %o1,%g5,%g5
  2091. /* 0x1be4  282 */ st %g3,[%i4+28]
  2092. /* 0x1be8  283 */ add %g5,%g4,%o1
  2093. /* 0x1bec      */ ldx [%sp+176],%o0
  2094. /* 0x1bf0      */ ldx [%sp+168],%g4
  2095. /* 0x1bf4      */ srlx %g3,32,%g3
  2096. /* 0x1bf8      */ ld [%i1+36],%o5
  2097. /* 0x1bfc      */ add %o0,%g4,%g4
  2098. /* 0x1c00      */ ld [%i1+40],%o3
  2099. /* 0x1c04      */ add %g4,%g2,%g2
  2100. /* 0x1c08      */ add %g2,%g3,%g2
  2101. /* 0x1c0c      */ sub %g2,%o7,%g2
  2102. /* 0x1c10      */ st %g2,[%i4+32]
  2103. /* 0x1c14      */ ldx [%sp+160],%g5
  2104. /* 0x1c18      */ srlx %g2,32,%g2
  2105. /* 0x1c1c      */ ldx [%sp+152],%g4
  2106. /* 0x1c20      */ add %g5,%g4,%g3
  2107. /* 0x1c24      */ add %g3,%o5,%g3
  2108. /* 0x1c28      */ add %g3,%g2,%g2
  2109. /* 0x1c2c      */ sub %g2,%o7,%g2
  2110. /* 0x1c30      */ st %g2,[%i4+36]
  2111. /* 0x1c34      */ ldx [%sp+144],%g5
  2112. /* 0x1c38      */ srlx %g2,32,%g2
  2113. /* 0x1c3c      */ ldx [%sp+136],%g4
  2114. /* 0x1c40      */ add %g5,%g4,%g3
  2115. /* 0x1c44      */ ldx [%sp+320],%g5
  2116. /* 0x1c48      */ add %g3,%o3,%o3
  2117. /* 0x1c4c      */ add %o3,%g2,%o3
  2118. /* 0x1c50      */ sub %o3,%o7,%o3
  2119. /* 0x1c54      */ st %o3,[%i4+40]
  2120. /* 0x1c58      */ ldx [%sp+128],%g4
  2121. /* 0x1c5c      */ srlx %o3,32,%o3
  2122. /* 0x1c60      */ ldx [%sp+120],%g3
  2123. /* 0x1c64      */ add %g4,%g3,%g2
  2124. /* 0x1c68      */ add %g2,%g5,%g2
  2125. /* 0x1c6c      */ ldx [%sp+312],%g5
  2126. /* 0x1c70      */ add %g2,%o3,%o3
  2127. /* 0x1c74      */ sub %o3,%o7,%o3
  2128. /* 0x1c78      */ st %o3,[%i4+44]
  2129. /* 0x1c7c      */ ldx [%sp+112],%g4
  2130. /* 0x1c80      */ srlx %o3,32,%o3
  2131. /* 0x1c84      */ ldx [%sp+104],%g3
  2132. /* 0x1c88      */ add %g4,%g3,%g2
  2133. /* 0x1c8c      */ add %g2,%g5,%g2
  2134. /* 0x1c90      */ add %g2,%o3,%o3
  2135. /* 0x1c94      */ sub %o3,%o7,%o3
  2136. /* 0x1c98      */ st %o3,[%i4+48]
  2137. /* 0x1c9c      */ srlx %o3,32,%o3
  2138. /* 0x1ca0      */ add %o4,%o3,%g2
  2139. /* 0x1ca4      */ sub %g2,%o7,%g2
  2140. /* 0x1ca8      */ st %g2,[%i4+52]
  2141. /* 0x1cac      */ srlx %g2,32,%g2
  2142. /* 0x1cb0      */ add %o2,%g2,%g2
  2143. /* 0x1cb4      */ sub %g2,%o7,%g2
  2144. /* 0x1cb8      */ st %g2,[%i4+56]
  2145. /* 0x1cbc      */ srlx %g2,32,%g2
  2146. /* 0x1cc0      */ add %o1,%g2,%g2
  2147. /* 0x1cc4      */ sub %g2,%o7,%g2
  2148. /* 0x1cc8      */ st %g2,[%i4+60]
  2149. !  285       !      return uc;
  2150. /* 0x1ccc  285 */ srlx %g2,32,%i0
  2151. /* 0x1cd0      */ ret ! Result =  %i0
  2152. /* 0x1cd4      */ restore %g0,%g0,%g0
  2153.                        .L77000106:
  2154. !  287       !    } else {
  2155. !  288       !      DEF_VARS(2*BUFF_SIZE);
  2156. !  289       !      t_d64 d0, d1, db;
  2157. !  290       !      t_u32 uc = 0;
  2158. !  291       !      t_s32 i;
  2159. !  293       !      da = (t_d64)(a &  A_MASK);
  2160. !  294       !      db = (t_d64)(a &~ A_MASK);
  2161. /* 0x1cd8  294 */ or %g0,%g2,%g3
  2162. /* 0x1cdc  293 */ andn %o0,%g2,%g2
  2163. /* 0x1ce0      */ st %g2,[%sp+316]
  2164. /* 0x1ce4  288 */ fmovd %f30,%f14
  2165. /* 0x1ce8  294 */ and %o0,%g3,%g2
  2166. /* 0x1cec      */ st %g2,[%sp+312]
  2167. /* 0x1cf0  290 */ or %g0,0,%g4
  2168. !  296       !#pragma pipeloop(0)
  2169. !  297       !      for (i = 0; i < (n+1)/2; i ++) {
  2170. /* 0x1cf4  297 */ add %o2,1,%g2
  2171. /* 0x1cf8  293 */ ldd [%o1],%f6
  2172. /* 0x1cfc  285 */ sethi %hi(0x2c00),%g1
  2173. /* 0x1d00  297 */ srl %g2,31,%g3
  2174. /* 0x1d04  285 */ xor %g1,-8,%g1
  2175. /* 0x1d08  288 */ ldd [%o1+8],%f22
  2176. /* 0x1d0c  297 */ add %g2,%g3,%g2
  2177. /* 0x1d10  293 */ fmovs %f6,%f8
  2178. /* 0x1d14  285 */ add %g1,%fp,%g5
  2179. /* 0x1d18  294 */ fmovs %f6,%f10
  2180. /* 0x1d1c  293 */ ld [%sp+316],%f9
  2181. /* 0x1d20  297 */ sra %g2,1,%o0
  2182. /* 0x1d24  294 */ ld [%sp+312],%f11
  2183. /* 0x1d28  297 */ cmp %o0,0
  2184. /* 0x1d2c  285 */ sethi %hi(0x2800),%g1
  2185. /* 0x1d30  293 */ fsubd %f8,%f6,%f20
  2186. /* 0x1d34  285 */ xor %g1,-1024,%g1
  2187. /* 0x1d38      */ ldd [%o1+16],%f16
  2188. /* 0x1d3c  294 */ fsubd %f10,%f6,%f18
  2189. /* 0x1d40  297 */ ble,pt %icc,.L900000193
  2190. /* 0x1d44      */ cmp %o3,0
  2191. /* 0x1d48  285 */ add %g1,%fp,%g3
  2192. /* 0x1d4c      */ sethi %hi(0x2800),%g1
  2193. /* 0x1d50      */ xor %g1,-1016,%g1
  2194. /* 0x1d54      */ or %g0,%o7,%o1
  2195. /* 0x1d58      */ add %g1,%fp,%g2
  2196. /* 0x1d5c      */ sethi %hi(0x2800),%g1
  2197. /* 0x1d60      */ xor %g1,-1008,%g1
  2198. /* 0x1d64      */ sub %o0,1,%o2
  2199. /* 0x1d68  297 */ cmp %o0,7
  2200. /* 0x1d6c      */ or %g0,0,%i0
  2201. /* 0x1d70  285 */ add %g1,%fp,%o7
  2202. /* 0x1d74  297 */ bl,pn %icc,.L77000107
  2203. /* 0x1d78      */ add %o1,8,%o0
  2204. /* 0x1d7c      */ ldd [%o1],%f2
  2205. !  298       !        MUL_U32_S64_2_E(i);
  2206. /* 0x1d80  298 */ add %i2,16,%i1
  2207. /* 0x1d84  297 */ sub %o2,2,%o1
  2208. /* 0x1d88      */ ldd [%o0],%f0
  2209. /* 0x1d8c  298 */ or %g0,4,%i0
  2210. /* 0x1d90      */ add %i1,8,%o0
  2211. /* 0x1d94      */ fxnor %f30,%f2,%f6
  2212. /* 0x1d98      */ ldd [%i2+16],%f4
  2213. /* 0x1d9c      */ fxnor %f30,%f0,%f12
  2214. /* 0x1da0      */ ldd [%i2+24],%f0
  2215. /* 0x1da4      */ fitod %f7,%f2
  2216. /* 0x1da8      */ fitod %f6,%f6
  2217. /* 0x1dac      */ fxnor %f30,%f4,%f10
  2218. /* 0x1db0      */ fsubd %f22,%f2,%f2
  2219. /* 0x1db4      */ fxnor %f30,%f0,%f8
  2220. /* 0x1db8      */ fitod %f13,%f4
  2221. /* 0x1dbc      */ fsubd %f22,%f6,%f6
  2222. /* 0x1dc0      */ fmuld %f2,%f20,%f0
  2223.                        .L900000185:
  2224. /* 0x1dc4  298 */ fitod %f11,%f26
  2225. /* 0x1dc8      */ add %i0,3,%i0
  2226. /* 0x1dcc      */ add %o7,96,%o7
  2227. /* 0x1dd0      */ fmuld %f2,%f18,%f32
  2228. /* 0x1dd4      */ fsubd %f22,%f4,%f4
  2229. /* 0x1dd8      */ add %o0,8,%o0
  2230. /* 0x1ddc      */ cmp %i0,%o1
  2231. /* 0x1de0      */ fmuld %f6,%f18,%f30
  2232. /* 0x1de4      */ ldd [%o0],%f2
  2233. /* 0x1de8      */ add %g2,96,%g2
  2234. /* 0x1dec      */ add %g3,96,%g3
  2235. /* 0x1df0      */ fdtox %f0,%f24
  2236. /* 0x1df4      */ fmuld %f6,%f20,%f28
  2237. /* 0x1df8      */ faddd %f32,%f16,%f0
  2238. /* 0x1dfc      */ add %g5,96,%g5
  2239. /* 0x1e00      */ faddd %f30,%f16,%f30
  2240. /* 0x1e04      */ fitod %f12,%f6
  2241. /* 0x1e08      */ fdtox %f28,%f28
  2242. /* 0x1e0c      */ fdtox %f30,%f12
  2243. /* 0x1e10      */ std %f28,[%g5-96]
  2244. /* 0x1e14      */ std %f12,[%g3-96]
  2245. /* 0x1e18      */ fdtox %f0,%f0
  2246. /* 0x1e1c      */ fsubd %f22,%f6,%f28
  2247. /* 0x1e20      */ std %f24,[%g2-96]
  2248. /* 0x1e24      */ fxnor %f14,%f2,%f12
  2249. /* 0x1e28      */ fmuld %f4,%f20,%f24
  2250. /* 0x1e2c      */ std %f0,[%o7-96]
  2251. /* 0x1e30      */ fitod %f9,%f2
  2252. /* 0x1e34      */ fmuld %f4,%f18,%f4
  2253. /* 0x1e38      */ fsubd %f22,%f26,%f0
  2254. /* 0x1e3c      */ fmuld %f28,%f18,%f26
  2255. /* 0x1e40      */ add %o0,8,%o0
  2256. /* 0x1e44      */ ldd [%o0],%f6
  2257. /* 0x1e48      */ fdtox %f24,%f24
  2258. /* 0x1e4c      */ faddd %f4,%f16,%f4
  2259. /* 0x1e50      */ fmuld %f28,%f20,%f28
  2260. /* 0x1e54      */ faddd %f26,%f16,%f26
  2261. /* 0x1e58      */ fitod %f10,%f10
  2262. /* 0x1e5c      */ fdtox %f28,%f28
  2263. /* 0x1e60      */ fdtox %f26,%f26
  2264. /* 0x1e64      */ std %f28,[%g5-64]
  2265. /* 0x1e68      */ std %f26,[%g3-64]
  2266. /* 0x1e6c      */ fdtox %f4,%f4
  2267. /* 0x1e70      */ fsubd %f22,%f10,%f28
  2268. /* 0x1e74      */ std %f24,[%g2-64]
  2269. /* 0x1e78      */ fxnor %f14,%f6,%f10
  2270. /* 0x1e7c      */ fmuld %f0,%f20,%f26
  2271. /* 0x1e80      */ std %f4,[%o7-64]
  2272. /* 0x1e84      */ fitod %f13,%f4
  2273. /* 0x1e88      */ fmuld %f0,%f18,%f0
  2274. /* 0x1e8c      */ fsubd %f22,%f2,%f2
  2275. /* 0x1e90      */ fmuld %f28,%f18,%f6
  2276. /* 0x1e94      */ add %o0,8,%o0
  2277. /* 0x1e98      */ ldd [%o0],%f24
  2278. /* 0x1e9c      */ fdtox %f26,%f26
  2279. /* 0x1ea0      */ faddd %f0,%f16,%f0
  2280. /* 0x1ea4      */ fmuld %f28,%f20,%f28
  2281. /* 0x1ea8      */ faddd %f6,%f16,%f30
  2282. /* 0x1eac      */ fitod %f8,%f6
  2283. /* 0x1eb0      */ fdtox %f28,%f28
  2284. /* 0x1eb4      */ fdtox %f30,%f8
  2285. /* 0x1eb8      */ std %f28,[%g5-32]
  2286. /* 0x1ebc      */ std %f8,[%g3-32]
  2287. /* 0x1ec0      */ fdtox %f0,%f0
  2288. /* 0x1ec4      */ fsubd %f22,%f6,%f6
  2289. /* 0x1ec8      */ std %f26,[%g2-32]
  2290. /* 0x1ecc      */ fxnor %f14,%f24,%f8
  2291. /* 0x1ed0      */ std %f0,[%o7-32]
  2292. /* 0x1ed4      */ ble,pt %icc,.L900000185
  2293. /* 0x1ed8      */ fmuld %f2,%f20,%f0
  2294.                        .L900000188:
  2295. /* 0x1edc  298 */ fitod %f12,%f24
  2296. /* 0x1ee0      */ fmuld %f6,%f18,%f26
  2297. /* 0x1ee4      */ add %g5,128,%g5
  2298. /* 0x1ee8      */ fitod %f10,%f12
  2299. /* 0x1eec      */ fmuld %f6,%f20,%f28
  2300. /* 0x1ef0      */ add %g3,128,%g3
  2301. /* 0x1ef4      */ fsubd %f22,%f4,%f4
  2302. /* 0x1ef8      */ fmuld %f2,%f18,%f2
  2303. /* 0x1efc      */ add %g2,128,%g2
  2304. /* 0x1f00      */ fsubd %f22,%f24,%f24
  2305. /* 0x1f04      */ add %o7,128,%o7
  2306. /* 0x1f08      */ cmp %i0,%o2
  2307. /* 0x1f0c      */ faddd %f26,%f16,%f6
  2308. /* 0x1f10      */ add %o0,8,%o1
  2309. /* 0x1f14      */ fdtox %f28,%f28
  2310. /* 0x1f18      */ std %f28,[%g5-128]
  2311. /* 0x1f1c      */ fmuld %f4,%f18,%f30
  2312. /* 0x1f20      */ faddd %f2,%f16,%f2
  2313. /* 0x1f24      */ fmuld %f24,%f18,%f26
  2314. /* 0x1f28      */ fitod %f11,%f10
  2315. /* 0x1f2c      */ fmuld %f24,%f20,%f28
  2316. /* 0x1f30      */ fsubd %f22,%f12,%f24
  2317. /* 0x1f34      */ fmuld %f4,%f20,%f4
  2318. /* 0x1f38      */ fdtox %f6,%f6
  2319. /* 0x1f3c      */ std %f6,[%g3-128]
  2320. /* 0x1f40      */ fdtox %f0,%f0
  2321. /* 0x1f44      */ std %f0,[%g2-128]
  2322. /* 0x1f48      */ fitod %f8,%f6
  2323. /* 0x1f4c      */ fmuld %f24,%f18,%f12
  2324. /* 0x1f50      */ fdtox %f2,%f0
  2325. /* 0x1f54      */ std %f0,[%o7-128]
  2326. /* 0x1f58      */ fmuld %f24,%f20,%f24
  2327. /* 0x1f5c      */ fsubd %f22,%f10,%f10
  2328. /* 0x1f60      */ faddd %f26,%f16,%f26
  2329. /* 0x1f64      */ fitod %f9,%f2
  2330. /* 0x1f68      */ fsubd %f22,%f6,%f6
  2331. /* 0x1f6c      */ fmuld %f10,%f18,%f0
  2332. /* 0x1f70      */ fdtox %f28,%f28
  2333. /* 0x1f74      */ std %f28,[%g5-96]
  2334. /* 0x1f78      */ fmuld %f10,%f20,%f10
  2335. /* 0x1f7c      */ faddd %f30,%f16,%f8
  2336. /* 0x1f80      */ fdtox %f26,%f26
  2337. /* 0x1f84      */ std %f26,[%g3-96]
  2338. /* 0x1f88      */ fdtox %f4,%f4
  2339. /* 0x1f8c      */ std %f4,[%g2-96]
  2340. /* 0x1f90      */ fsubd %f22,%f2,%f2
  2341. /* 0x1f94      */ fmuld %f6,%f18,%f4
  2342. /* 0x1f98      */ faddd %f12,%f16,%f12
  2343. /* 0x1f9c      */ fmuld %f6,%f20,%f6
  2344. /* 0x1fa0      */ fdtox %f8,%f8
  2345. /* 0x1fa4      */ std %f8,[%o7-96]
  2346. /* 0x1fa8      */ faddd %f0,%f16,%f8
  2347. /* 0x1fac      */ fmuld %f2,%f18,%f0
  2348. /* 0x1fb0      */ fdtox %f24,%f24
  2349. /* 0x1fb4      */ std %f24,[%g5-64]
  2350. /* 0x1fb8      */ fmuld %f2,%f20,%f2
  2351. /* 0x1fbc      */ fdtox %f12,%f12
  2352. /* 0x1fc0      */ std %f12,[%g3-64]
  2353. /* 0x1fc4      */ fdtox %f10,%f10
  2354. /* 0x1fc8      */ std %f10,[%g2-64]
  2355. /* 0x1fcc      */ faddd %f4,%f16,%f4
  2356. /* 0x1fd0      */ fdtox %f8,%f8
  2357. /* 0x1fd4      */ std %f8,[%o7-64]
  2358. /* 0x1fd8      */ faddd %f0,%f16,%f0
  2359. /* 0x1fdc      */ fdtox %f6,%f6
  2360. /* 0x1fe0      */ std %f6,[%g5-32]
  2361. /* 0x1fe4      */ fdtox %f4,%f4
  2362. /* 0x1fe8      */ std %f4,[%g3-32]
  2363. /* 0x1fec      */ fdtox %f2,%f2
  2364. /* 0x1ff0      */ std %f2,[%g2-32]
  2365. /* 0x1ff4      */ fdtox %f0,%f0
  2366. /* 0x1ff8      */ bg,pn %icc,.L77000084
  2367. /* 0x1ffc      */ std %f0,[%o7-32]
  2368.                        .L77000107:
  2369. /* 0x2000      */ ldd [%o1],%f0
  2370.                        .L900000192:
  2371. /* 0x2004      */ fxnor %f14,%f0,%f2
  2372. /* 0x2008  298 */ add %i0,1,%i0
  2373. /* 0x200c      */ add %o1,8,%o1
  2374. /* 0x2010      */ cmp %i0,%o2
  2375. /* 0x2014      */ fitod %f2,%f0
  2376. /* 0x2018      */ fitod %f3,%f2
  2377. /* 0x201c      */ fsubd %f22,%f0,%f0
  2378. /* 0x2020      */ fsubd %f22,%f2,%f2
  2379. /* 0x2024      */ fmuld %f0,%f18,%f4
  2380. /* 0x2028      */ fmuld %f0,%f20,%f6
  2381. /* 0x202c      */ fmuld %f2,%f18,%f0
  2382. /* 0x2030      */ faddd %f4,%f16,%f4
  2383. /* 0x2034      */ fmuld %f2,%f20,%f2
  2384. /* 0x2038      */ fdtox %f6,%f6
  2385. /* 0x203c      */ std %f6,[%g5]
  2386. /* 0x2040      */ add %g5,32,%g5
  2387. /* 0x2044      */ faddd %f0,%f16,%f0
  2388. /* 0x2048      */ fdtox %f4,%f4
  2389. /* 0x204c      */ std %f4,[%g3]
  2390. /* 0x2050      */ add %g3,32,%g3
  2391. /* 0x2054      */ fdtox %f2,%f2
  2392. /* 0x2058      */ std %f2,[%g2]
  2393. /* 0x205c      */ add %g2,32,%g2
  2394. /* 0x2060      */ fdtox %f0,%f0
  2395. /* 0x2064      */ std %f0,[%o7]
  2396. /* 0x2068      */ add %o7,32,%o7
  2397. /* 0x206c      */ ble,a,pt %icc,.L900000192
  2398. /* 0x2070      */ ldd [%o1],%f0
  2399.                        .L77000084:
  2400. !  299       !      }
  2401. !  301       !#pragma pipeloop(0)
  2402. !  302       !      for (i = 0; i < n; i ++) {
  2403. /* 0x2074  302 */ cmp %o3,0
  2404.                        .L900000193:
  2405. /* 0x2078  302 */ ble,pt %icc,.L77000089
  2406. /* 0x207c      */ or %g0,%g4,%i0
  2407. /* 0x2080      */ sethi %hi(0x2c00),%g1
  2408. /* 0x2084      */ xor %g1,-8,%g1
  2409. /* 0x2088      */ or %g0,%o4,%i1
  2410. /* 0x208c      */ add %g1,%fp,%g5
  2411. /* 0x2090      */ sethi %hi(0x2800),%g1
  2412. /* 0x2094      */ xor %g1,-1024,%g1
  2413. /* 0x2098      */ or %g0,0,%i2
  2414. /* 0x209c      */ add %g1,%fp,%g3
  2415. /* 0x20a0      */ sub %o3,1,%o7
  2416. /* 0x20a4      */ or %g0,%i4,%i0
  2417. /* 0x20a8  298 */ cmp %o3,7
  2418. /* 0x20ac      */ bl,pn %icc,.L77000108
  2419. /* 0x20b0      */ sethi %hi(0x2c00),%g1
  2420. /* 0x20b4      */ sub %o3,4,%o4
  2421. !  303       !        ADD_S64_U32_E(i);
  2422. /* 0x20b8  303 */ ld [%i1],%o3
  2423. /* 0x20bc      */ xor %g1,-8,%g1
  2424. /* 0x20c0      */ ld [%i1+4],%o1
  2425. /* 0x20c4      */ sethi %hi(0x80000000),%o5
  2426. /* 0x20c8      */ add %g1,%fp,%g1
  2427. /* 0x20cc      */ add %i4,4,%i0
  2428. /* 0x20d0      */ ldx [%g1+8],%o2
  2429. /* 0x20d4      */ sllx %o5,32,%o5
  2430. /* 0x20d8      */ add %i1,8,%i1
  2431. /* 0x20dc      */ ldx [%g1],%o0
  2432. /* 0x20e0      */ or %g0,3,%i2
  2433. /* 0x20e4      */ ldx [%g1+24],%g2
  2434. /* 0x20e8      */ add %o0,%o2,%o0
  2435. /* 0x20ec      */ ldx [%g1+16],%o2
  2436. /* 0x20f0      */ sethi %hi(0x2800),%g1
  2437. /* 0x20f4      */ xor %g1,-992,%g1
  2438. /* 0x20f8      */ add %o0,%o3,%o0
  2439. /* 0x20fc      */ add %g1,%fp,%g3
  2440. /* 0x2100      */ sethi %hi(0x2800),%g1
  2441. /* 0x2104      */ xor %g1,-1000,%g1
  2442. /* 0x2108      */ sub %o0,%o5,%o0
  2443. /* 0x210c      */ add %g1,%fp,%g1
  2444. /* 0x2110      */ add %o2,%g2,%o2
  2445. /* 0x2114      */ ldx [%g1],%o3
  2446. /* 0x2118      */ sethi %hi(0x2800),%g1
  2447. /* 0x211c      */ st %o0,[%i4]
  2448. /* 0x2120      */ srlx %o0,32,%o0
  2449. /* 0x2124      */ xor %g1,-984,%g1
  2450. /* 0x2128      */ add %g1,%fp,%g5
  2451.                        .L900000165:
  2452. /* 0x212c  303 */ ldx [%g3],%g4
  2453. /* 0x2130      */ srl %o0,0,%g2
  2454. /* 0x2134      */ add %o2,%o1,%o0
  2455. /* 0x2138      */ ld [%i1],%o2
  2456. /* 0x213c      */ add %o0,%g2,%g2
  2457. /* 0x2140      */ add %i2,4,%i2
  2458. /* 0x2144      */ ldx [%g5],%o1
  2459. /* 0x2148      */ add %o3,%g4,%o0
  2460. /* 0x214c      */ sub %g2,%o5,%o3
  2461. /* 0x2150      */ st %o3,[%i0]
  2462. /* 0x2154      */ srlx %o3,32,%o3
  2463. /* 0x2158      */ cmp %i2,%o4
  2464. /* 0x215c      */ ldx [%g3+16],%g2
  2465. /* 0x2160      */ add %o0,%o2,%o0
  2466. /* 0x2164      */ ld [%i1+4],%o2
  2467. /* 0x2168      */ add %o0,%o3,%o3
  2468. /* 0x216c      */ add %i0,16,%i0
  2469. /* 0x2170      */ ldx [%g5+16],%o0
  2470. /* 0x2174      */ add %o1,%g2,%o1
  2471. /* 0x2178      */ sub %o3,%o5,%o3
  2472. /* 0x217c      */ st %o3,[%i0-12]
  2473. /* 0x2180      */ srlx %o3,32,%g4
  2474. /* 0x2184      */ add %i1,16,%i1
  2475. /* 0x2188      */ ldx [%g3+32],%g2
  2476. /* 0x218c      */ add %o1,%o2,%o2
  2477. /* 0x2190      */ ld [%i1-8],%o1
  2478. /* 0x2194      */ add %o2,%g4,%o3
  2479. /* 0x2198      */ add %g3,64,%g3
  2480. /* 0x219c      */ ldx [%g5+32],%o2
  2481. /* 0x21a0      */ add %o0,%g2,%o0
  2482. /* 0x21a4      */ sub %o3,%o5,%o3
  2483. /* 0x21a8      */ st %o3,[%i0-8]
  2484. /* 0x21ac      */ srlx %o3,32,%o3
  2485. /* 0x21b0      */ add %g5,64,%g5
  2486. /* 0x21b4      */ ldx [%g3-16],%g2
  2487. /* 0x21b8      */ add %o0,%o1,%o0
  2488. /* 0x21bc      */ ld [%i1-4],%o1
  2489. /* 0x21c0      */ add %o0,%o3,%o0
  2490. /* 0x21c4      */ ldx [%g5-16],%o3
  2491. /* 0x21c8      */ add %o2,%g2,%o2
  2492. /* 0x21cc      */ sub %o0,%o5,%o0
  2493. /* 0x21d0      */ st %o0,[%i0-4]
  2494. /* 0x21d4      */ ble,pt %icc,.L900000165
  2495. /* 0x21d8      */ srlx %o0,32,%o0
  2496.                        .L900000168:
  2497. /* 0x21dc  303 */ srl %o0,0,%o4
  2498. /* 0x21e0      */ ldx [%g3],%o0
  2499. /* 0x21e4      */ add %o2,%o1,%o1
  2500. /* 0x21e8      */ ld [%i1],%o2
  2501. /* 0x21ec      */ add %o1,%o4,%o1
  2502. /* 0x21f0      */ add %i0,8,%i0
  2503. /* 0x21f4      */ sub %o1,%o5,%o1
  2504. /* 0x21f8      */ add %o3,%o0,%o0
  2505. /* 0x21fc      */ st %o1,[%i0-8]
  2506. /* 0x2200      */ srlx %o1,32,%o1
  2507. /* 0x2204      */ add %o0,%o2,%o0
  2508. /* 0x2208      */ add %o0,%o1,%o0
  2509. /* 0x220c      */ cmp %i2,%o7
  2510. /* 0x2210      */ sub %o0,%o5,%o0
  2511. /* 0x2214      */ st %o0,[%i0-4]
  2512. /* 0x2218      */ bg,pn %icc,.L77000088
  2513. /* 0x221c      */ srlx %o0,32,%g4
  2514. /* 0x2220      */ add %i1,4,%i1
  2515. /* 0x2224      */ add %g3,16,%g3
  2516.                        .L77000108:
  2517. /* 0x2228  303 */ ldx [%g5],%o0
  2518.                        .L900000191:
  2519. /* 0x222c  303 */ sethi %hi(0x80000000),%o2
  2520. /* 0x2230      */ ldx [%g3],%o3
  2521. /* 0x2234      */ add %i2,1,%i2
  2522. /* 0x2238      */ sllx %o2,32,%o5
  2523. /* 0x223c      */ ld [%i1],%o2
  2524. /* 0x2240      */ add %g5,16,%g5
  2525. /* 0x2244      */ srl %g4,0,%o1
  2526. /* 0x2248      */ add %o0,%o3,%o0
  2527. /* 0x224c      */ add %o0,%o2,%o0
  2528. /* 0x2250      */ add %i1,4,%i1
  2529. /* 0x2254      */ add %o0,%o1,%o0
  2530. /* 0x2258      */ add %g3,16,%g3
  2531. /* 0x225c      */ sub %o0,%o5,%o0
  2532. /* 0x2260      */ st %o0,[%i0]
  2533. /* 0x2264      */ cmp %i2,%o7
  2534. /* 0x2268      */ srlx %o0,32,%g4
  2535. /* 0x226c      */ add %i0,4,%i0
  2536. /* 0x2270      */ ble,a,pt %icc,.L900000191
  2537. /* 0x2274      */ ldx [%g5],%o0
  2538.                        .L77000088:
  2539. !  304       !      }
  2540. !  306       !      return uc;
  2541. /* 0x2278  306 */ or %g0,%g4,%i0
  2542.                        .L77000089:
  2543. /* 0x227c      */ ret ! Result =  %i0
  2544. /* 0x2280      */ restore %g0,%g0,%g0
  2545. /* 0x2284    0 */ .type mul_add,2
  2546. /* 0x2284      */ .size mul_add,(.-mul_add)
  2547. .section ".text",#alloc,#execinstr
  2548. /* 000000    0 */ .align 4
  2549. !
  2550. ! SUBROUTINE mul_add_inp
  2551. !
  2552. ! OFFSET    SOURCE LINE LABEL INSTRUCTION
  2553.                         .global mul_add_inp
  2554.                        mul_add_inp:
  2555. /* 000000      */ or %g0,%o2,%g1
  2556. /* 0x0004      */ or %g0,%o0,%g3
  2557. /* 0x0008      */ or %g0,%o1,%g2
  2558. /* 0x000c      */ or %g0,%o3,%o4
  2559. !  307       !    }
  2560. !  308       !  }
  2561. !  309       !}
  2562. !  311       !/***************************************************************/
  2563. !  313       !t_u32 mul_add_inp(t_u32 *x, t_u32 *y, int n, t_u32 a)
  2564. !  314       !{
  2565. !  315       !  return mul_add(x, x, y, n, a);
  2566. /* 0x0010  315 */ or %g0,%g1,%o3
  2567. /* 0x0014      */ or %g0,%g3,%o1
  2568. /* 0x0018      */ or %g0,%g2,%o2
  2569. /* 0x001c      */ or %g0,%o7,%g1
  2570. /* 0x0020      */ call mul_add ! params =  %o0 %o1 %o2 %o3 %o4 ! Result =  ! (tail call)
  2571. /* 0x0024      */ or %g0,%g1,%o7
  2572. /* 0x0028    0 */ .type mul_add_inp,2
  2573. /* 0x0028      */ .size mul_add_inp,(.-mul_add_inp)
  2574. ! Begin Disassembling Stabs
  2575. .xstabs ".stab.index","Xa ; O ; P ; V=3.1 ; R=WorkShop Compilers 5.0 98/12/15 C 5.0",60,0,0,0 ! (/usr/tmp/acompAAA52aaHc:1)
  2576. .xstabs ".stab.index","/h/interzone/d3/nelsonb/nss_28x/ns/security/lib/crypto; /tools/ns/workshop-5.0/bin/../SC5.0/bin/cc -fast -xO5 -xrestrict=%%all -xdepend -xchip=ultra -xarch=v8plusa -KPIC -mt -S vis_32.il  mul_add.c -W0,-xp",52,0,0,0 ! (/usr/tmp/acompAAA52aaHc:2)
  2577. ! End Disassembling Stabs
  2578. ! Begin Disassembling Ident
  2579. .ident "cg: WorkShop Compilers 5.0 99/08/12 Compiler Common 5.0 Patch 107357-05" ! (NO SOURCE LINE)
  2580. .ident "@(#)vis_proto.ht1.3t97/03/30 SMI" ! (/usr/tmp/acompAAA52aaHc:4)
  2581. .ident "acomp: WorkShop Compilers 5.0 98/12/15 C 5.0" ! (/usr/tmp/acompAAA52aaHc:12)
  2582. ! End Disassembling Ident