mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	Merge remote branch 'wtay/optimize'
This commit is contained in:
		
						commit
						4e6dce593f
					
				
					 2 changed files with 8 additions and 14 deletions
				
			
		| 
						 | 
					@ -57,14 +57,12 @@
 | 
				
			||||||
      " punpcklwd %%mm4, "#s"        \n\t" /* .. |    0  |   p0  | */                   \
 | 
					      " punpcklwd %%mm4, "#s"        \n\t" /* .. |    0  |   p0  | */                   \
 | 
				
			||||||
      " pcmpgtw "#v", %%mm4          \n\t" /* .. |    0  | s(vl) | */                   \
 | 
					      " pcmpgtw "#v", %%mm4          \n\t" /* .. |    0  | s(vl) | */                   \
 | 
				
			||||||
      " pand "#s", %%mm4             \n\t" /* .. |    0  |  (p0) |  (vl >> 15) & p */   \
 | 
					      " pand "#s", %%mm4             \n\t" /* .. |    0  |  (p0) |  (vl >> 15) & p */   \
 | 
				
			||||||
      " movq %%mm6, %%mm5            \n\t" /* .. |  ffff |   0   | */                   \
 | 
					      " movq "#s", %%mm5             \n\t"                                              \
 | 
				
			||||||
      " pand "#v", %%mm5             \n\t" /* .. |   vh  |   0   | */                   \
 | 
					      " pmulhw "#v", "#s"            \n\t" /* .. |    0  | vl*p0 | */                   \
 | 
				
			||||||
      " por %%mm5, %%mm4             \n\t" /* .. |   vh  |  (p0) | */                   \
 | 
					      " paddw %%mm4, "#s"            \n\t" /* .. |    0  | vl*p0 | + sign correct */    \
 | 
				
			||||||
      " pmulhw "#s", "#v"            \n\t" /* .. |    0  | vl*p0 | */                   \
 | 
					      " psrld $16, "#v"              \n\t" /* .. |    0  |   vh  | */                   \
 | 
				
			||||||
      " paddw %%mm4, "#v"            \n\t" /* .. |   vh  | vl*p0 | vh + sign correct */ \
 | 
					      " pmaddwd %%mm5, "#v"          \n\t" /* .. |    p0 * vh    | */                   \
 | 
				
			||||||
      " pslld $16, "#s"              \n\t" /* .. |   p0  |    0  | */                   \
 | 
					      " paddd "#s", "#v"             \n\t" /* .. |    p0 * v0    | */                   \
 | 
				
			||||||
      " por %%mm7, "#s"              \n\t" /* .. |   p0  |    1  | */                   \
 | 
					 | 
				
			||||||
      " pmaddwd "#s", "#v"           \n\t" /* .. |    p0 * v0    | */                   \
 | 
					 | 
				
			||||||
      " packssdw "#v", "#v"          \n\t" /* .. | p1*v1 | p0*v0 | */
 | 
					      " packssdw "#v", "#v"          \n\t" /* .. | p1*v1 | p0*v0 | */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* approximately advances %3 = (%3 + a) % b. This function requires that
 | 
					/* approximately advances %3 = (%3 + a) % b. This function requires that
 | 
				
			||||||
| 
						 | 
					@ -105,10 +103,6 @@ pa_volume_s16ne_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsi
 | 
				
			||||||
    __asm__ __volatile__ (
 | 
					    __asm__ __volatile__ (
 | 
				
			||||||
        " xor %3, %3                    \n\t"
 | 
					        " xor %3, %3                    \n\t"
 | 
				
			||||||
        " sar $1, %2                    \n\t" /* length /= sizeof (int16_t) */
 | 
					        " sar $1, %2                    \n\t" /* length /= sizeof (int16_t) */
 | 
				
			||||||
        " pcmpeqw %%mm6, %%mm6          \n\t" /* .. |  ffff |  ffff | */
 | 
					 | 
				
			||||||
        " pcmpeqw %%mm7, %%mm7          \n\t" /* .. |  ffff |  ffff | */
 | 
					 | 
				
			||||||
        " pslld  $16, %%mm6             \n\t" /* .. |  ffff |     0 | */
 | 
					 | 
				
			||||||
        " psrld  $31, %%mm7             \n\t" /* .. |     0 |     1 | */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        " test $1, %2                   \n\t" /* check for odd samples */
 | 
					        " test $1, %2                   \n\t" /* check for odd samples */
 | 
				
			||||||
        " je 2f                         \n\t"
 | 
					        " je 2f                         \n\t"
 | 
				
			||||||
| 
						 | 
					@ -239,7 +233,7 @@ pa_volume_s16re_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsi
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef RUN_TEST
 | 
					#define RUN_TEST
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef RUN_TEST
 | 
					#ifdef RUN_TEST
 | 
				
			||||||
#define CHANNELS 2
 | 
					#define CHANNELS 2
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,7 +45,7 @@
 | 
				
			||||||
      " movdqa "#s", %%xmm5          \n\t"                                              \
 | 
					      " movdqa "#s", %%xmm5          \n\t"                                              \
 | 
				
			||||||
      " pmulhuw "#v", "#s"           \n\t" /* .. |    0  | vl*p0 | */                   \
 | 
					      " pmulhuw "#v", "#s"           \n\t" /* .. |    0  | vl*p0 | */                   \
 | 
				
			||||||
      " psubd %%xmm4, "#s"           \n\t" /* .. |    0  | vl*p0 | + sign correct */    \
 | 
					      " psubd %%xmm4, "#s"           \n\t" /* .. |    0  | vl*p0 | + sign correct */    \
 | 
				
			||||||
      " psrld $16, "#v"              \n\t" /* .. |   p0  |    0  | */                   \
 | 
					      " psrld $16, "#v"              \n\t" /* .. |    0  |   vh  | */                   \
 | 
				
			||||||
      " pmaddwd %%xmm5, "#v"         \n\t" /* .. |    p0 * vh    | */                   \
 | 
					      " pmaddwd %%xmm5, "#v"         \n\t" /* .. |    p0 * vh    | */                   \
 | 
				
			||||||
      " paddd "#s", "#v"             \n\t" /* .. |    p0 * v0    | */                   \
 | 
					      " paddd "#s", "#v"             \n\t" /* .. |    p0 * v0    | */                   \
 | 
				
			||||||
      " packssdw "#v", "#v"          \n\t" /* .. | p1*v1 | p0*v0 | */
 | 
					      " packssdw "#v", "#v"          \n\t" /* .. | p1*v1 | p0*v0 | */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue