[PD-cvs] externals/tb/volctl~ volctl~.c,1.4,1.5

Tim Blechmann timblech at users.sourceforge.net
Fri Apr 29 18:29:42 CEST 2005


Update of /cvsroot/pure-data/externals/tb/volctl~
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7620

Modified Files:
	volctl~.c 
Log Message:
optimized for inplace operation

Index: volctl~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/volctl~/volctl~.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** volctl~.c	24 Jan 2005 21:22:31 -0000	1.4
--- volctl~.c	29 Apr 2005 16:29:40 -0000	1.5
***************
*** 180,188 ****
  
      if (x->x_ticksleft)
!     {
  		int n = (int)(w[4]);
  	
  		x->x_ticksleft--;
! 		
  		asm(
  			".set T_FLOAT,4                          \n"
--- 180,189 ----
  
      if (x->x_ticksleft)
!     { 
  		int n = (int)(w[4]);
  	
  		x->x_ticksleft--;
! 
! #if defined(__GNUC__) && (defined(_X86_) || defined(__i386__) || defined(__i586__) || defined(__i686__) )
  		asm(
  			".set T_FLOAT,4                          \n"
***************
*** 254,278 ****
  
  		case 1:
! 			asm(
! 				".set T_FLOAT,4                          \n"
  			
! 				"shrl      $4, %1                        \n"
  
! 				"1:                                        \n"
! 				"movaps    (%1), %%xmm0                    \n"
! 				"movaps    4*T_FLOAT(%1), %%xmm1           \n"
! 				"movaps    8*T_FLOAT(%1), %%xmm2           \n"
! 				"movaps    12*T_FLOAT(%1), %%xmm3          \n"
! 				"movaps    %%xmm0, (%2)                    \n"
! 				"movaps    %%xmm1, 4*T_FLOAT(%2)           \n"
! 				"movaps    %%xmm2, 8*T_FLOAT(%2)           \n"
! 				"movaps    %%xmm3, 12*T_FLOAT(%2)          \n"
  				
! 				"addl      $16*T_FLOAT,%1                  \n"
! 				"addl      $16*T_FLOAT,%2                  \n"
! 				"loop      1b                              \n"
! 				:
! 				:"c"(w[4]),"r"(in),"r"(out)
! 				:"%xmm0","%xmm1","%xmm2","%xmm3");
  			break;
  
--- 255,280 ----
  
  		case 1:
! 			if (in != out)
! 				asm(
! 					".set T_FLOAT,4                            \n"
  			
! 					"shrl      $4, %1                          \n"
  
! 					"1:                                        \n"
! 					"movaps    (%1), %%xmm0                    \n"
! 					"movaps    4*T_FLOAT(%1), %%xmm1           \n"
! 					"movaps    8*T_FLOAT(%1), %%xmm2           \n"
! 					"movaps    12*T_FLOAT(%1), %%xmm3          \n"
! 					"movaps    %%xmm0, (%2)                    \n"
! 					"movaps    %%xmm1, 4*T_FLOAT(%2)           \n"
! 					"movaps    %%xmm2, 8*T_FLOAT(%2)           \n"
! 					"movaps    %%xmm3, 12*T_FLOAT(%2)          \n"
  				
! 					"addl      $16*T_FLOAT,%1                  \n"
! 					"addl      $16*T_FLOAT,%2                  \n"
! 					"loop      1b                              \n"
! 					:
! 					:"c"(w[4]),"r"(in),"r"(out)
! 					:"%xmm0","%xmm1","%xmm2","%xmm3");
  			break;
  





More information about the Pd-cvs mailing list