Article View: comp.lang.misc
Article #5771Re: Many people's opinions on compu
From: Steven Ryan
Date: Wed, 21 Sep 1988 21:52
Date: Wed, 21 Sep 1988 21:52
46 lines
2568 bytes
2568 bytes
>But if the compiler has any brains at all, p && q should be compiled to
>the same thing as p?q:false. I don't see what the latter gains you
>except to irritate the programmer.
Using an example from my alma mater, suppose we have (m=n and o<0), where
m, n, o are integer variables. Then if and<->if-then-else, on Cy170,
+ SX6 B1 * assume true.
IX0 X.m-X.n * X0 := m-n
ZR X0,TRUE * stall cpu; true if (m=n); maybe fill i-cache.
+ ZR X.o,FALSE * -0 gotcha; stall cpu; maybe fill i-cache.
NG X.o,TRUE * stall cpu; true if (o<0); maybe fill i-cache.
+FALSE SX6 0
NO
NO
+TRUE
So that it takes 3 words and 3 jumps; each jump stalls the cpu until the
jump condition is verified. If the target label is out of stack, the i-cache
has to be filled.
Now when the and is semantically distinct from if-then-else,
+ SX7 B0 * +0.
IX0 X.m-X.n * X0 := m-n.
IX.o X.o+X7 * insure o is not a -0.
BX1 -X0 * X1 := n-m.
+ IX0 X0+X7 * insure m-n is not a -0.
IX1 X1+X7 * insure n-m is not a -0
SX7 B1
BX0 -X0-X1 * set sign bit if sign(m-n)=sign(n-m), if m=n.
+ BX0 X0*X.o * set sign bit if m=n and o<0.
LX0 1
BX6 X0*X7 * X6=X0 sign bit, 1 if true, 0 if false.
So that it takes 1 parcel less than three words, no alignment constraints
(only 15-bit instructions used), no jumps, no cpu stalls, no no-ops, i-cache
can be prefetched, and the code does not create additional basic blocks
so that all the usual basic block optimisations can be applied.
All the world is not a Vax. On some machines, jumps are killers. By providing
a separate conditional expression to handle, say, if x>0 then sqrt(x)>2 else
false, it is reasonable to let and/or be the fastest possible operator the
machine can provide.
In other words, say what you mean and don't depend on tricks.
Technical Details
Message-ID:
<1452@garth.UUCP>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!mailrus!ames!zodiac!joyce!sri-unix!garth!smryanReferences:
<1433@garth.UUCP> <208100001@s.cs.uiuc.edu>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!mailrus!ames!zodiac!joyce!sri-unix!garth!smryan From: smryan@garth.UUCP (Steven Ryan) Newsgroups: comp.lang.misc Subject: Re: Many people's opinions on compu Message-ID: <1452@garth.UUCP> Date: 21 Sep 88 21:52:08 GMT References: <1433@garth.UUCP> <208100001@s.cs.uiuc.edu> Reply-To: smryan@garth.UUCP (Steven Ryan) Organization: INTERGRAPH (APD) -- Palo Alto, CA Lines: 46