Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Assembly Language > Re: Skybuck pre...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 3 of 74 Topic 4972 of 5166
Post > Topic >>

Re: Skybuck presents alternative division method, to be benchmarked ;)

by "Skybuck Flying" <BloodyShame@[EMAIL PROTECTED] > Apr 24, 2008 at 04:01 PM

The search is easily optimized if leading zero count instruction is 
available:

vBiggerDivisor := 1 shl 32-LeadingZeroCount;
v****fter := 1 shl 32-LeadingZeroCount;
vAnder := $FFFFFFFF shr LeadingZeroCount;

No more while vTemp > 0 loop necessary.

Interesting.

Now I go look for a leading zero count replacement for my AMD X2 3800+ 
(it 
doesn't have the instruction :))

Then I am gonna give it another benchmark try ;) :)

Bye,
  Skybuck.


"Skybuck Flying" <BloodyShame@[EMAIL PROTECTED]
> wrote in message 
news:230c6$480f33a2$541983fa$18551@[EMAIL PROTECTED]
>I suspected the algorithm was general.
>
> To prove it's general, here is a general version which works with any 
> divisor.
>
> I didn't bother optimizing it though.
>
> Just a proof of concept ;)
>
> No do***entation is provided for the algorithm by me... that's the fun 
> part for you... try to figure out how it works :) LOL.
>
> If you really interested in it, and can't figure it out... let me know I

> might tell you LOL.
>
> // Quickly written and quickly tested, not thoroughly tested.
>
> // general version just out of curiosity...
> function SimulatedDivGeneral( Content : longword; Divisor : longword ) :

> longword;
> var
> vTemp : longword;
> vDivisions : longword;
> vBiggerDivisor : longword;
> v****fter : byte;
> vAnder : longword;
> vDivisorDifference : longword;
> begin
> result := 0;  // latency 1

this piece not necessary anymore and can be replaced by the 4 (?) 
instructions above. Very nice.

> // search for bigger binary/****ft divisor the the current divisor
> vBiggerDivisor := 1;
> v****fter := 0;
> vAnder := 0;
>
> vTemp := Divisor;
>
> while vTemp > 0 do
> begin
>  vBiggerDivisor := vBiggerDivisor shl 1;
>  v****fter := v****fter + 1;
>  vAnder := vAnder shl 1 + 1;
>  vTemp := vTemp shr 1;
> end;



>
> vDivisorDifference := vBiggerDivisor - Divisor;
>
> // main algorithm
> while Content > vBiggerDivisor do // latency 1 + latency 1 = latency 2
> begin
>  vDivisions := (Content shr v****fter); // latency 1 + latency 1 =
latency 
> 2
>  Content := (Content and vAnder) + vDivisions * vDivisorDifference; // 
> latency 1 + latency 1 = latency 2
>  result := result + vDivisions; // latency 1
> end;
>
> // single loop latency: 2 + 2 + 2 + 1 = 7
> if Content >= Divisor then // latency 1 + latency 1 = latency 2
> begin
>  result := result + 1; // latency 1
> end;
>
> // best case latency: 1 + 7 + 3 = 11
> // worst case latency (max loops 11 for 32 bit longwords): 1 + 7 * 11 +
3 
> = 81
>
> // very close to div 7, though this routine is probably directpath
mostly 
> and not vector path
> // so maybe it's faster... but then again still some calling overhead.. 
> let's see what happens
> // when it's inlined ;)
> // yup inlining works real nice.
>
> // time for a benchmark :)
>
> // tested on amd x2 3800+
> // for content values ranging from say 1000 to even a million this
routine 
> appears
> // to be faster than the div... kinda nice.
>
> // general routine is slower... didn't bother to optimize it or so ;)
> end;

Bye,
  Skybuck.
 




 74 Posts in Topic:
Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-23 13:52:52 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-23 15:09:13 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 16:01:10 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 16:13:18 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 16:29:27 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 16:38:18 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 16:51:19 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 17:09:28 
Re: Skybuck presents alternative division method, to be benchmar
Locke <jlocke@[EMAIL P  2008-04-24 16:09:04 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 17:27:06 
Re: Skybuck presents alternative division method, to be benchmar
Locke <jlocke@[EMAIL P  2008-04-24 16:34:45 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 17:49:19 
Re: Skybuck presents alternative division method, to be benchmar
Zathras <webnewsgroup@  2008-04-24 17:30:08 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 17:14:38 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 17:20:14 
Re: Skybuck presents alternative division method, to be benchmar
"Skybuck Flying"  2008-04-24 17:26:48 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-23 16:12:07 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-23 19:27:30 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-23 18:31:32 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 04:27:50 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-24 15:58:03 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 17:19:29 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-24 16:26:15 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 17:47:58 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-24 16:56:04 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:07:57 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-24 17:13:12 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:24:40 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:32:42 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:38:19 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:45:22 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:46:58 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:50:34 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-24 18:42:15 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 19:51:14 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-24 18:46:57 
Re: Skybuck presents Faster Div 7
"Wolfgang Kern"  2008-04-24 21:00:06 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-25 08:14:52 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-25 10:06:43 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-25 10:23:26 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-25 12:48:07 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-26 13:06:28 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-26 13:16:38 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-26 17:53:54 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-26 17:21:05 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-25 09:19:40 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-25 12:56:12 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-26 09:13:05 
Re: Skybuck presents Faster Div 7
Locke <jlocke@[EMAIL P  2008-04-24 18:45:37 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 18:33:57 
Re: Skybuck presents Faster Div 7
Robert Redelmeier <red  2008-04-24 15:41:25 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 17:58:48 
Re: Skybuck presents Faster Div 7
Chuck Crayne <ccrayne@  2008-04-23 20:59:04 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 06:54:54 
Re: Skybuck presents Faster Div 7
"Wolfgang Kern"  2008-04-24 11:45:40 
Re: Skybuck presents Faster Div 7
Robert Redelmeier <red  2008-04-24 12:23:15 
Re: Skybuck presents Faster Div 7
"Wolfgang Kern"  2008-04-24 20:53:17 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-25 08:17:20 
Re: Skybuck presents Faster Div 7
Robert Redelmeier <red  2008-04-25 13:38:45 
Re: Skybuck presents Faster Div 7
"rio" <a@[EM  2008-04-25 22:40:49 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-26 09:11:45 
Re: Skybuck presents Faster Div 7
"Wolfgang Kern"  2008-04-26 12:58:17 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-26 17:48:37 
Re: Skybuck presents Faster Div 7
"rio" <a@[EM  2008-04-27 07:43:48 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-27 09:50:19 
Re: Skybuck presents Faster Div 7
"rio" <a@[EM  2008-04-27 22:01:40 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-27 22:51:40 
Re: Skybuck presents Faster Div 7
"rio" <a@[EM  2008-04-28 17:03:57 
Re: Skybuck presents Faster Div 7
"rio" <a@[EM  2008-04-28 17:22:36 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-05-02 06:59:08 
Re: Skybuck presents Faster Div 7
"Wolfgang Kern"  2008-04-27 10:13:24 
Re: Skybuck presents Faster Div 7
"Skybuck Flying"  2008-04-24 14:43:09 
Re: Skybuck presents BitLength
"Skybuck Flying"  2008-04-26 07:00:39 
Re: Skybuck presents BitLength
"Skybuck Flying"  2008-04-26 07:13:22 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Thu Oct 16 0:55:42 CDT 2008.