Taken_Branch = 1; Ip = Ip + Sign_Ext; If (!Impl_Uia_Fault_Supported() && 21 << 4), 25); ((Psr.it && Unimplemented_Virtual_Address(Ip, Psr.vm)) - Intel ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS MANUAL VOLUME 3 REV 2.3 Manual

Architecture software developer's manual revision 2.3
Hide thumbs Also See for ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS MANUAL VOLUME 3 REV 2.3:
Table of Contents

Advertisement

fchkf — Floating-point Check Flags
(
) fchkf.
Format:
qp
sf target
The flags in FPSR.sf.flags are compared with FPSR.s0.flags and FPSR.traps. If any flags
Description:
set in FPSR.sf.flags correspond to FPSR.traps which are enabled, or if any flags set in
FPSR.sf.flags are not set in FPSR.s0.flags, then a branch to
The target
as a signed immediate displacement (
containing this instruction (
The branching behavior of this instruction can be optionally unimplemented. If the
instruction would have branched, and the branching behavior is not implemented, then
a Speculative Operation fault is taken and the value specified by
and placed in the Interruption Immediate control register (IIM). The fault handler
emulates the branch by sign-extending the IIM value, adding it to IIP and returning.
The mnemonic values for sf are given in
Operation:
if (PR[qp]) {
switch (sf) {
case 's0':
case 's1':
case 's2':
case 's3':
}
if ((tmp_flags & ~AR[FPSR].traps) || (tmp_flags & ~AR[FPSR].sf0.flags)) {
if (check_branch_implemented(FCHKF)) {
} else
}
}
None
FP Exceptions:
Speculative Operation fault
Interruptions:
Unimplemented Instruction Address trap
Volume 3: Instruction Reference
25
operand, specifies a label to branch to. This is encoded in the instruction
25
=
imm
21
tmp_flags = AR[FPSR].sf0.flags;
break;
tmp_flags = AR[FPSR].sf1.flags;
break;
tmp_flags = AR[FPSR].sf2.flags;
break;
tmp_flags = AR[FPSR].sf3.flags;
break;

taken_branch = 1;

IP = IP + sign_ext((imm
if (!impl_uia_fault_supported() &&
((PSR.it && unimplemented_virtual_address(IP, PSR.vm))
|| (!PSR.it && unimplemented_physical_address(IP)))

unimplemented_instruction_address_trap(0, IP);

if (PSR.tb)

taken_branch_trap();

speculation_fault(FCHKF, zero_ext(imm
) between the target bundle and the bundle
imm
21
- IP >> 4).
target
25
Table 2-23 on page
<< 4), 25);
21
, 21));
21
Taken Branch trap
fchkf
is taken.
target
25
is zero-extended
imm
21
3:56.
F14
3:63

Advertisement

Table of Contents
loading

This manual is also suitable for:

Itanium 9150m

Table of Contents