Searched defs:xmm0 (Results 1 - 23 of 23) sorted by relevance

/external/chromium/base/
H A Dcpu_unittest.cc27 __asm xorps xmm0, xmm0; local
32 __asm psrldq xmm0, 0; local
37 __asm addsubpd xmm0, xmm0; local
42 __asm psignb xmm0, xmm0; local
47 __asm pmuldq xmm0, xmm0; local
62 __asm__ __volatile__("xorps %%xmm0,
[all...]
/external/v8/test/cctest/
H A Dtest-disasm-ia32.cc375 __ addsd(xmm1, xmm0);
376 __ mulsd(xmm1, xmm0);
377 __ subsd(xmm1, xmm0);
378 __ divsd(xmm1, xmm0);
381 __ ucomisd(xmm0, xmm1);
384 __ movdqa(xmm0, Operand(ebx, ecx, times_4, 10000));
385 __ movdqa(Operand(ebx, ecx, times_4, 10000), xmm0); local
386 __ movdqu(xmm0, Operand(ebx, ecx, times_4, 10000));
387 __ movdqu(Operand(ebx, ecx, times_4, 10000), xmm0); local
418 __ andpd(xmm0, xmm
[all...]
H A Dtest-disasm-x64.cc358 __ addsd(xmm1, xmm0);
359 __ mulsd(xmm1, xmm0);
360 __ subsd(xmm1, xmm0);
361 __ divsd(xmm1, xmm0);
364 __ ucomisd(xmm0, xmm1);
367 __ movdqa(xmm0, Operand(rbx, rcx, times_4, 10000));
368 __ movdqa(Operand(rbx, rcx, times_4, 10000), xmm0); local
399 __ andpd(xmm0, xmm1);
402 __ movaps(xmm0, xmm1);
H A Dtest-assembler-ia32.cc271 __ movdbl(xmm0, Operand(esp, 1 * kPointerSize));
273 __ addsd(xmm0, xmm1);
274 __ mulsd(xmm0, xmm1);
275 __ subsd(xmm0, xmm1);
276 __ divsd(xmm0, xmm1);
277 // Copy xmm0 to st(0) using eight bytes of stack.
279 __ movdbl(Operand(esp, 0), xmm0); local
317 __ cvtsi2sd(xmm0, eax);
318 // Copy xmm0 to st(0) using eight bytes of stack.
320 __ movdbl(Operand(esp, 0), xmm0); local
[all...]
/external/libyuv/files/source/
H A Dformat_conversion.cc38 movdqa xmm0, [eax] local
40 pshufb xmm0, xmm7 local
41 movd [edx], xmm0
59 "movdqa (%0),%%xmm0\n"
61 "pshufb %%xmm7,%%xmm0\n"
62 "movd %%xmm0,(%1)\n"
H A Drow_win.cc88 movdqa xmm0, [eax] local
92 pmaddubsw xmm0, xmm7 local
97 phaddw xmm0, xmm1 local
99 psrlw xmm0, 7 local
101 packuswb xmm0, xmm2 local
102 paddb xmm0, xmm6 local
103 movdqa [edx], xmm0
121 movdqa xmm0, [eax] local
125 pmaddubsw xmm0, xmm7 local
130 phaddw xmm0, xmm local
132 psrlw xmm0, 7 local
134 packuswb xmm0, xmm2 local
135 paddb xmm0, xmm6 local
154 movdqa xmm0, [eax] local
158 pmaddubsw xmm0, xmm7 local
163 phaddw xmm0, xmm1 local
165 psrlw xmm0, 7 local
167 packuswb xmm0, xmm2 local
168 paddb xmm0, xmm6 local
195 movdqa xmm0, [eax] local
199 pavgb xmm0, [eax + esi] local
205 shufps xmm0, xmm1, 0x88 local
207 pavgb xmm0, xmm4 local
218 pmaddubsw xmm0, xmm7 // U local
222 phaddw xmm0, xmm2 local
224 psraw xmm0, 8 local
226 packsswb xmm0, xmm1 local
227 paddb xmm0, xmm5 // -> unsigned local
259 movdqa xmm0, [eax] local
263 pavgb xmm0, [eax + esi] local
269 shufps xmm0, xmm1, 0x88 local
271 pavgb xmm0, xmm4 local
282 pmaddubsw xmm0, xmm7 // U local
286 phaddw xmm0, xmm2 local
288 psraw xmm0, 8 local
290 packsswb xmm0, xmm1 local
291 paddb xmm0, xmm5 // -> unsigned local
323 movdqa xmm0, [eax] local
327 pavgb xmm0, [eax + esi] local
333 shufps xmm0, xmm1, 0x88 local
335 pavgb xmm0, xmm4 local
346 pmaddubsw xmm0, xmm7 // U local
350 phaddw xmm0, xmm2 local
352 psraw xmm0, 8 local
354 packsswb xmm0, xmm1 local
355 paddb xmm0, xmm5 // -> unsigned local
380 movdqa xmm0, [eax] local
388 palignr xmm1, xmm0, 12 // xmm1 = { xmm3[0:7] xmm0[12:15]} local
389 pshufb xmm0, xmm6 local
391 por xmm0, xmm7 local
419 movdqa xmm0, [eax] local
427 palignr xmm1, xmm0, 12 // xmm1 = { xmm3[0:7] xmm0[12:15]} local
428 pshufb xmm0, xmm6 local
430 por xmm0, xmm7 local
[all...]
H A Dconvert.cc374 movq xmm0, QWORD PTR [edx] ;src_v local
375 punpcklbw xmm6, xmm0 ;src_u, src_v mix local
488 movq xmm0, QWORD PTR [edx] ;src_v local
489 punpcklbw xmm6, xmm0 ;src_u, src_v mix local
H A Drotate.cc85 movq xmm0, qword ptr [eax] local
89 punpcklbw xmm0, xmm1 local
91 movdqa xmm1, xmm0
111 punpcklwd xmm0, xmm2 local
113 movdqa xmm2, xmm0
125 punpckldq xmm0, xmm4 local
126 movq qword ptr [edx], xmm0
127 movdqa xmm4, xmm0
184 movdqa xmm0, [eax] local
187 movdqa xmm7, xmm0 // us
188 punpcklbw xmm0, xmm1 local
218 punpcklwd xmm0, xmm2 local
238 punpckldq xmm0, xmm4 local
248 movdqa xmm0, xmm2 // use xmm0 as the temp register. local
252 punpckhdq xmm0, xmm6 local
257 movdqa xmm0, xmm1 // use xmm0 as the temp register. local
261 punpckhdq xmm0, xmm5 local
266 movdqa xmm0, xmm3 // use xmm0 as the temp register. local
270 punpckhdq xmm0, xmm7 local
871 movdqa xmm0, [eax] local
873 pshufb xmm0, xmm7 local
1082 movdqa xmm0, [eax] local
1084 pshufb xmm0, xmm7 local
[all...]
H A Dplanar_functions.cc76 movdqa xmm0, [eax]
79 movdqa xmm2, xmm0
81 pand xmm0, xmm7 // even bytes
83 packuswb xmm0, xmm1
84 movdqa [edx], xmm0
107 "movdqa (%0),%%xmm0\n"
110 "movdqa %%xmm0,%%xmm2\n"
112 "pand %%xmm7,%%xmm0\n"
114 "packuswb %%xmm1,%%xmm0\n"
115 "movdqa %%xmm0,(
517 movdqa xmm0, [eax] local
527 psrlw xmm0, 8 // YUYV -> UVUV local
529 packuswb xmm0, xmm1 local
531 pand xmm0, xmm7 // U local
532 packuswb xmm0, xmm0 local
669 movdqa xmm0, [eax] local
672 pand xmm0, xmm7 // even bytes are Y local
674 packuswb xmm0, xmm1 local
698 movdqa xmm0, [eax] local
703 pavgb xmm0, xmm2 local
705 psrlw xmm0, 8 // YUYV -> UVUV local
707 packuswb xmm0, xmm1 local
709 pand xmm0, xmm7 // U local
710 packuswb xmm0, xmm0 local
736 movdqa xmm0, [eax] local
739 psrlw xmm0, 8 // odd bytes are Y local
741 packuswb xmm0, xmm1 local
765 movdqa xmm0, [eax] local
770 pavgb xmm0, xmm2 local
772 pand xmm0, xmm7 // UYVY -> UVUV local
774 packuswb xmm0, xmm1 local
776 pand xmm0, xmm7 // U local
777 packuswb xmm0, xmm0 local
1214 movq xmm0, qword ptr [eax] local
1216 punpcklbw xmm0, xmm0 local
1218 punpcklwd xmm0, xmm0 local
1220 por xmm0, xmm7 local
1242 movdqa xmm0, [eax] local
1244 pshufb xmm0, xmm7 local
1264 movdqa xmm0, [eax] local
1266 pshufb xmm0, xmm7 local
[all...]
H A Dscale.cc281 movdqa xmm0, [eax] local
284 pand xmm0, xmm7 local
286 packuswb xmm0, xmm1 local
287 movdqa [edx], xmm0
310 movdqa xmm0, [eax] local
315 pavgb xmm0, xmm2 // average rows local
318 movdqa xmm2, xmm0 // average columns (32 to 16 pixels)
319 psrlw xmm0, 8 local
324 pavgw xmm0, xmm2 local
326 packuswb xmm0, xmm local
354 movdqa xmm0, [esi] local
357 pand xmm0, xmm7 local
359 packuswb xmm0, xmm1 local
360 packuswb xmm0, xmm0 local
387 movdqa xmm0, [esi] local
391 pavgb xmm0, xmm2 // average rows local
400 pavgb xmm0, xmm2 local
404 psrlw xmm0, 8 local
409 pavgw xmm0, xmm2 local
411 packuswb xmm0, xmm1 local
414 psrlw xmm0, 8 local
416 pavgw xmm0, xmm2 local
417 packuswb xmm0, xmm0 local
445 movdqa xmm0, [esi] local
448 pand xmm0, xmm7 local
450 packuswb xmm0, xmm1 // 32->16 local
451 packuswb xmm0, xmm0 // 16->8 local
452 packuswb xmm0, xmm0 // 8->4 local
478 movdqa xmm0, [esi] // average 8 rows to 1 local
482 pavgb xmm0, xmm2 local
492 pavgb xmm0, xmm2 local
509 pavgb xmm0, xmm2 local
512 psadbw xmm0, xmm7 // average 32 pixels to 4 local
514 pshufd xmm0, xmm0, 0xd8 // x1x0 -> xx01 local
516 por xmm0, xmm1 // -> 3201 local
517 psrlw xmm0, 3 local
518 packuswb xmm0, xmm0 local
519 packuswb xmm0, xmm0 local
552 movdqa xmm0, [esi] local
556 palignr xmm1, xmm0, 8 local
557 pshufb xmm0, xmm3 local
605 movdqa xmm0, [esi] // pixels 0..7 local
607 pavgb xmm0, xmm1 local
608 pshufb xmm0, xmm2 local
609 pmaddubsw xmm0, xmm5 local
610 paddsw xmm0, xmm7 local
611 psrlw xmm0, 2 local
612 packuswb xmm0, xmm0 local
614 movdqu xmm0, [esi+8] // pixels 8..15 local
616 pavgb xmm0, xmm1 local
617 pshufb xmm0, xmm3 local
618 pmaddubsw xmm0, xmm6 local
619 paddsw xmm0, xmm7 local
620 psrlw xmm0, 2 local
621 packuswb xmm0, xmm0 local
623 movdqa xmm0, [esi+16] // pixels 16..23 local
626 pavgb xmm0, xmm1 local
627 pshufb xmm0, xmm4 local
629 pmaddubsw xmm0, xmm1 local
630 paddsw xmm0, xmm7 local
631 psrlw xmm0, 2 local
632 packuswb xmm0, xmm0 local
662 movdqa xmm0, [esi] // pixels 0..7 local
665 pavgb xmm0, xmm1 local
666 pshufb xmm0, xmm2 local
667 pmaddubsw xmm0, xmm5 local
668 paddsw xmm0, xmm7 local
669 psrlw xmm0, 2 local
670 packuswb xmm0, xmm0 local
672 movdqu xmm0, [esi+8] // pixels 8..15 local
675 pavgb xmm0, xmm1 local
676 pshufb xmm0, xmm3 local
677 pmaddubsw xmm0, xmm6 local
678 paddsw xmm0, xmm7 local
679 psrlw xmm0, 2 local
680 packuswb xmm0, xmm0 local
682 movdqa xmm0, [esi+16] // pixels 16..23 local
686 pavgb xmm0, xmm1 local
687 pshufb xmm0, xmm4 local
689 pmaddubsw xmm0, xmm1 local
690 paddsw xmm0, xmm7 local
691 psrlw xmm0, 2 local
692 packuswb xmm0, xmm0 local
721 movdqa xmm0, [esi] // 16 pixels -> 0,1,2,3,4,5 local
724 pshufb xmm0, xmm5 local
726 paddusb xmm0, xmm1 local
756 movdqa xmm0, [esi] // sum up 3 rows into xmm0/1 local
760 punpcklbw xmm0, xmm7 local
764 paddusw xmm0, xmm2 local
771 paddusw xmm0, xmm2 local
775 psrldq xmm0, 2 local
777 psrldq xmm0, 2 local
824 movdqa xmm0, xmm2 // 16 pixels -> 0,1,2,3,4,5 of xmm0 local
825 pshufb xmm0, xmm4 local
828 paddusw xmm0, xmm1 local
830 paddusw xmm0, xmm2 local
832 pmulhuw xmm0, xmm7 // divide by 3,3,2, 3,3,2 local
833 packuswb xmm0, xmm0 local
836 pextrw eax, xmm0, 2 local
875 movdqa xmm0, [eax] // read 16 pixels local
878 punpcklbw xmm0, xmm7 local
928 movdqa xmm0, [esi] local
933 punpcklbw xmm0, xmm7 local
937 pmullw xmm0, xmm5 // scale row 0 local
941 paddusw xmm0, xmm2 // sum rows local
943 psrlw xmm0, 8 local
945 packuswb xmm0, xmm1 local
958 movdqa xmm0, [esi] local
972 movdqa xmm0, [esi] local
975 pavgb xmm0, xmm2 local
1017 movdqa xmm0, [esi] local
1021 punpcklbw xmm0, xmm2 local
1023 pmaddubsw xmm0, xmm7 local
1025 psrlw xmm0, 7 local
1027 packuswb xmm0, xmm1 local
1040 movdqa xmm0, [esi] local
1054 movdqa xmm0, [esi] local
1057 pavgb xmm0, xmm2 local
1090 movdqa xmm0, [eax] // pixels 0..7 local
1091 pshufb xmm0, xmm2 local
1092 pmaddubsw xmm0, xmm5 local
1093 paddsw xmm0, xmm1 local
1094 psrlw xmm0, 2 local
1095 packuswb xmm0, xmm0 local
1097 movdqu xmm0, [eax+8] // pixels 8..15 local
1098 pshufb xmm0, xmm3 local
1099 pmaddubsw xmm0, xmm6 local
1100 paddsw xmm0, xmm1 local
1101 psrlw xmm0, 2 local
1102 packuswb xmm0, xmm0 local
1104 movdqa xmm0, [eax+16] // pixels 16..23 local
1106 pshufb xmm0, xmm4 local
1107 pmaddubsw xmm0, xmm7 local
1108 paddsw xmm0, xmm1 local
1109 psrlw xmm0, 2 local
1110 packuswb xmm0, xmm0 local
[all...]
/external/v8/src/ia32/
H A Dcodegen-ia32.cc120 __ movdbl(xmm0, Operand(esp, 1 * kPointerSize));
121 __ sqrtsd(xmm0, xmm0);
122 __ movdbl(Operand(esp, 1 * kPointerSize), xmm0); local
191 __ movdqu(xmm0, Operand(src, 0));
192 __ movdqu(Operand(dst, 0), xmm0); local
216 __ movdqa(xmm0, Operand(src, 0x00));
220 __ movdqa(Operand(dst, 0x00), xmm0); local
232 __ movdqa(xmm0, Operand(src, 0));
234 __ movdqa(Operand(dst, 0), xmm0); local
241 __ movdqu(Operand(dst, count, times_1, -0x10), xmm0); local
266 __ movdqa(Operand(dst, 0x00), xmm0); local
280 __ movdqa(Operand(dst, 0), xmm0); local
287 __ movdqu(Operand(dst, count, times_1, -0x10), xmm0); local
456 xmm0); local
582 __ movdbl(FieldOperand(edx, HeapNumber::kValueOffset), xmm0); local
[all...]
H A Ddeoptimizer-ia32.cc913 __ movdbl(xmm0, Operand(esp, src_offset));
914 __ movdbl(Operand(ebx, dst_offset), xmm0); local
H A Dstub-cache-ia32.cc1955 // Check if the argument is a heap number and load its value into xmm0.
1958 __ movdbl(xmm0, FieldOperand(eax, HeapNumber::kValueOffset));
1963 __ ucomisd(xmm0, xmm1);
1967 __ cvttsd2si(eax, Operand(xmm0));
1984 __ ucomisd(xmm0, xmm1);
1988 __ movaps(xmm2, xmm0);
1991 __ addsd(xmm0, xmm1);
1992 __ subsd(xmm0, xmm1);
1995 // if xmm2 < xmm0:
1999 __ cmpltsd(xmm2, xmm0);
2008 __ movdbl(FieldOperand(eax, HeapNumber::kValueOffset), xmm0); local
3749 __ movdbl(FieldOperand(ecx, HeapNumber::kValueOffset), xmm0); local
[all...]
H A Dfull-codegen-ia32.cc2898 __ movd(xmm0, eax);
2900 __ xorps(xmm0, xmm1);
2901 __ subsd(xmm0, xmm1);
2902 __ movdbl(FieldOperand(edi, HeapNumber::kValueOffset), xmm0); local
H A Dcode-stubs-ia32.cc644 // into xmm0 and xmm1. Operands are in edx and eax.
649 // them into xmm0 and xmm1 if they are. Jump to label not_numbers if
658 // Checks that the two floating point numbers loaded into xmm0 and xmm1
1053 __ cvtsi2sd(xmm0, ecx);
1054 __ movdbl(FieldOperand(eax, HeapNumber::kValueOffset), xmm0); local
1492 __ cvtsi2sd(xmm0, left);
1493 __ movdbl(FieldOperand(eax, HeapNumber::kValueOffset), xmm0); local
1538 case Token::ADD: __ addsd(xmm0, xmm1); break;
1539 case Token::SUB: __ subsd(xmm0, xmm1); break;
1540 case Token::MUL: __ mulsd(xmm0, xmm
1544 __ movdbl(FieldOperand(ecx, HeapNumber::kValueOffset), xmm0); local
1716 __ movdbl(FieldOperand(eax, HeapNumber::kValueOffset), xmm0); local
1819 __ movdbl(FieldOperand(eax, HeapNumber::kValueOffset), xmm0); local
1940 __ movdbl(FieldOperand(eax, HeapNumber::kValueOffset), xmm0); local
2033 __ movdbl(FieldOperand(eax, HeapNumber::kValueOffset), xmm0); local
2144 __ movdbl(FieldOperand(eax, HeapNumber::kValueOffset), xmm0); local
2232 __ movdbl(FieldOperand(eax, HeapNumber::kValueOffset), xmm0); local
[all...]
H A Dlithium-codegen-ia32.cc1195 __ movd(xmm0, Operand(temp));
1196 __ por(res, xmm0);
1429 __ xorps(xmm0, xmm0);
1430 __ ucomisd(reg, xmm0);
2871 XMMRegister scratch = xmm0;
2891 XMMRegister xmm_scratch = xmm0;
2943 XMMRegister xmm_scratch = xmm0;
2995 XMMRegister xmm_scratch = xmm0;
3141 __ xorps(xmm0, xmm
3726 __ movdbl(FieldOperand(reg, HeapNumber::kValueOffset), xmm0); local
[all...]
/external/v8/src/x64/
H A Dcodegen-x64.cc76 // xmm0: raw double input.
80 __ movq(rbx, xmm0);
84 // The return value is expected to be in xmm0.
87 __ movq(xmm0, rbx);
111 // xmm0: raw double input.
113 __ sqrtsd(xmm0, xmm0);
140 // Windows 64 ABI passes double arguments in xmm0, xmm1 and
141 // returns result in xmm0.
148 __ movsd(Operand(rsp, kPointerSize), xmm0); local
348 xmm0); local
[all...]
H A Dstub-cache-x64.cc3174 __ cvtss2sd(xmm0, Operand(rbx, rcx, times_4, 0));
3177 __ movsd(xmm0, Operand(rbx, rcx, times_8, 0));
3189 // xmm0: value as double.
3209 __ cvtqsi2sd(xmm0, rcx);
3213 __ movsd(FieldOperand(rcx, HeapNumber::kValueOffset), xmm0); local
3222 __ movsd(FieldOperand(rcx, HeapNumber::kValueOffset), xmm0); local
3326 __ cvtlsi2ss(xmm0, rdx);
3327 __ movss(Operand(rbx, rdi, times_4, 0), xmm0); local
3331 __ cvtlsi2sd(xmm0, rdx);
3332 __ movsd(Operand(rbx, rdi, times_8, 0), xmm0); local
3366 __ movss(Operand(rbx, rdi, times_4, 0), xmm0); local
3369 __ movsd(Operand(rbx, rdi, times_8, 0), xmm0); local
3520 __ movsd(FieldOperand(rcx, HeapNumber::kValueOffset), xmm0); local
[all...]
H A Dfull-codegen-x64.cc2795 __ movd(xmm0, rax);
2797 __ xorps(xmm0, xmm1);
2798 __ subsd(xmm0, xmm1);
2799 __ movsd(FieldOperand(rbx, HeapNumber::kValueOffset), xmm0); local
H A Dcode-stubs-x64.cc274 __ movsd(xmm0, FieldOperand(rcx, i));
275 __ movsd(FieldOperand(rdx, i), xmm0); local
481 __ xorps(xmm0, xmm0);
482 __ ucomisd(xmm0, FieldOperand(argument, HeapNumber::kValueOffset));
559 // Load the operands from rdx and rax into xmm0 and xmm1, as doubles.
615 __ movq(xmm0, double_value); // Save copy in xmm0 in case we need it there.
625 __ cvttsd2siq(result, xmm0);
1114 __ cvtqsi2sd(xmm0, lef
1125 __ movsd(FieldOperand(rcx, HeapNumber::kValueOffset), xmm0); local
1165 __ movsd(FieldOperand(rax, HeapNumber::kValueOffset), xmm0); local
1231 __ movsd(FieldOperand(rax, HeapNumber::kValueOffset), xmm0); local
[all...]
/external/libvpx/vp8/common/x86/
H A Dpostproc_mmx.c431 pxor xmm0, xmm0 ; local
443 punpcklbw xmm3, xmm0 ;
451 punpcklbw xmm5, xmm0 ;
470 punpcklbw xmm5, xmm0 ;
493 punpcklbw xmm5, xmm0 ;
514 punpcklbw xmm4, xmm0 ;
546 packuswb xmm1, xmm0 ; local
576 punpcklbw xmm3, xmm0 ; local
585 punpcklbw xmm5, xmm0 ; local
604 punpcklbw xmm5, xmm0 ; local
678 packuswb xmm1, xmm0 ; local
895 pxor xmm0, xmm0 ; local
914 punpcklbw xmm1, xmm0 ; local
920 punpcklwd xmm1, xmm0 ; local
922 punpckhwd xmm2, xmm0 ; local
1196 pxor xmm0, xmm0 local
[all...]
/external/valgrind/main/none/tests/amd64/
H A Dsse4-64.c3577 void do_PBLENDVB ( Bool mem, V128* xmm0, V128* src, /*MOD*/V128* dst ) argument
3581 "movupd (%2), %%xmm0" "\n\t"
3586 : /*IN*/ "r"(src), "r"(dst), "r"(xmm0)
3587 : /*TRASH*/ "xmm11","xmm0"
3591 "movupd (%2), %%xmm0" "\n\t"
3597 : /*IN*/ "r"(src), "r"(dst), "r"(xmm0)
3598 : /*TRASH*/ "xmm11","xmm2","xmm0"
3605 V128 xmm0, src, dst, t_xmm0, t_src, t_dst; local
3612 memcpy(&xmm0, &t_xmm0, 16);
3615 do_PBLENDVB(False/*reg*/, &xmm0,
3644 do_BLENDVPD( Bool mem, V128* xmm0, V128* src, V128* dst ) argument
3672 V128 xmm0, src, dst, t_xmm0, t_src, t_dst; local
3711 do_BLENDVPS( Bool mem, V128* xmm0, V128* src, V128* dst ) argument
3739 V128 xmm0, src, dst, t_xmm0, t_src, t_dst; local
[all...]
/external/webkit/Source/JavaScriptCore/assembler/
H A DX86Assembler.h64 xmm0, enumerator in enum:JSC::X86Registers::__anon14923

Completed in 1738 milliseconds