From: user5857@newsgrouper.org.invalid   
      
   Thomas Koenig posted:   
      
   > MitchAlsup schrieb:   
   >   
   > > The only thing in this corner of my ISA I regret is not having more bits   
   > > for the scale {to cover complex double, and Quaternions}   
   >   
   > There is a bit of inconvenience, but strenght reduction can go a   
   > long way to bridge that gap. Consider something like   
   >   
   > void foo (__complex double *c, double *d, long int n)   
   > {   
   > for (long int i=0; i c[i] += d[i];   
   > }   
      
   Wondering why "c[i] += d[i];" did not get a type mismatch.   
      
   Should be "c[i].real += d[i];"   
   >   
   > which could be something like (translated by hand, so errors   
   > are likely)   
   >   
   > foo:   
   > ble0 r3,.L_end   
   > mov r4,#0   
   > sll r3,r3,#3   
   > vec r5,{}   
   > ldd r6,[r2,r4,0]   
   > ldd r7,[r1,r4<<2,0]   
   > fadd r7,r7,r6   
   > std r7,[r1,r4<<2,0]   
   > loop1 ne,r4,#4,r3   
   > .L_end:   
   > ret   
   >   
   > which is as close to optimum (just a single sll instruction) as   
   > not to matter.   
   >   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|