Volume 3: Instruction Reference
3:23
br
The modulo-scheduled loop types are:
•
ctop
and
cexit:
These branch types behave identically, except in the determination
of whether to branch or not. For
br.ctop
, the branch is taken if either LC is
non-zero or EC is greater than one. For
br.cexit
, the opposite is true. It is not
taken if either LC is non-zero or EC is greater than one and is taken otherwise.
These branch types also use LC and EC to control register rotation and predicate
initialization. During the prolog and kernel phase, when LC is non-zero, LC counts
down. When
br.ctop
or
br.cexit
is executed with LC equal to zero, the epilog
phase is entered, and EC counts down. When
br.ctop
or
br.cexit
is executed with
LC equal to zero and EC equal to one, a final decrement of EC and a final register
rotation are done. If LC and EC are equal to zero, register rotation stops. These
other effects are the same for the two branch types, and are described in
.
wtop
and
wexit:
These branch types behave identically, except in the
determination of whether to branch or not. For
br.wtop
, the branch is taken if
either the qualifying predicate is one or EC is greater than one. For
br.wexit
, the
opposite is true. It is not taken if either the qualifying predicate is one or EC is
greater than one, and is taken otherwise.
These branch types also use the qualifying predicate and EC to control register
rotation and predicate initialization. During the prolog phase, the qualifying
predicate is either zero or one, depending upon the scheme used to program the
loop. During the kernel phase, the qualifying predicate is one. During the epilog
phase, the qualifying predicate is zero, and EC counts down. When
br.wtop
or
br.wexit
is executed with the qualifying predicate equal to zero and EC equal to
one, a final decrement of EC and a final register rotation are done. If the qualifying
predicate and EC are zero, register rotation stops. These other effects are the same
for the two branch types, and are described in
Figure 2-3.
Operation of br.ctop and br.cexit
LC?
== 0 (Epilog)
ctop, cexit
ctop: Branch
cexit: Fall-thru
ctop: Fall-thru
cexit: Branch
EC?
EC--
PR[63] = 0
RRB--
EC = EC
PR[63] = 1
RRB--
EC--
PR[63] = 0
RRB--
> 1
== 1
== 0
EC = EC
PR[63] = 0
RRB = RRB
LC = LC
LC--
LC = LC
LC = LC
Kernel)
!= 0
(Prolog /
(Special
Unrolled
Loops)
Содержание Itanium 9150M
Страница 1: ......
Страница 209: ...3 200 Volume 3 Instruction Reference padd Interruptions Illegal Operation fault...
Страница 301: ...3 292 Volume 3 Pseudo Code Functions Intel Itanium Architecture Software Developer s Manual Rev 2 3...
Страница 405: ...3 396 Volume 3 Resource and Dependency Semantics...
Страница 406: ...3 397 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index...
Страница 407: ...3 398 Intel Itanium Architecture Software Developer s Manual Rev 2 3...
Страница 419: ...INDEX Index 12 Index for Volumes 1 2 3 and 4...
Страница 420: ......