HP OpenVMS Systemsask the wizard |
The Question is: I wonder if there is any MACRO source code or any other programming language code example on how to use the ctpop instruction in the Alpha architecure. The Answer is :
The CTPOP count population Alpha instruction is part of one of the more
recently added Alpha instruction groups known as the count instructions
extension (CIX), and would be an AMACRO (Alpha assembler; Macro64)
instruction -- and not a Macro32 (VAX Macro compiler) instruction.
This is also available to C code using the asm mechanism, as well, and
(in recent C compilers) the _POPCNT() C built-in function.
The OpenVMS Wizard would recommend coding a particular instruction or
built-in with care, as this usage can lead to code-portability issues.
For details on how to interprete the following, please see the Macro64
documentation on the OpenVMS Freeware.
Count Population
Format:
CTPOP Rb.rq,Rc.wq ! Operate Format
Operation:
temp = 0
FOR i FROM 0 TO 63
IF { Rbv<i> EQ 1 } THEN temp = temp + 1
END
Rc<6:0> <- temp<6:0>
Rc<63:7> <- 0
Exceptions:
None.
Instruction Mnemonics:
CTPOP Count Population
Qualifiers:
None
Description
The number of ones in Rb is written to Rc.
|