|
|
|
|
|
|
|
|
(Branch on
cc with prediction) Branch always |
|
BPN |
|
%icc or %xcc, label |
Branch never |
0 |
BPNE |
|
%icc or %xcc, label |
Branch on
not equal |
not Z |
BPE |
|
%icc or %xcc, label |
Branch on equal |
Z |
BPG |
|
%icc or %xcc, label |
Branch on
greater |
not (Z or (N xor V)) |
BPLE |
|
%icc or %xcc, label |
Branch on less or
equal |
Z or (N xor V) |
BPGE |
|
%icc or %xcc, label |
Branch on greater or equal |
not
(N xor V) |
BPL |
|
%icc or %xcc, label |
Branch on less |
N xor V |
BPGU |
|
%icc or %xcc,
label |
Branch on greater unsigned |
not (C or Z) |
BPLEU |
|
%icc or %xcc, label |
Branch on less
or equal unsigned |
C or Z |
BPCC |
|
%icc or %xcc, label |
Branch on carry clear (greater
than or equal, unsigned) |
not C |
BPCS |
|
%icc or %xcc, label |
Branch on carry set (less
than, unsigned) |
C |
BPPOS |
|
%icc or %xcc, label |
Branch on positive |
not N |
BPNEG |
|
%icc or %xcc, label |
Branch on
negative |
N |
BPVC |
|
%icc or %xcc, label |
Branch on overflow clear |
not V |
BPVS |
|
%icc or %xcc, label |
Branch on
overflow set |
V |
BRZ |
|
regrs1, label |
Branch on register zero |
Z |
BRLEZ |
|
regrs1, label |
Branch on register less than or
equal to zero |
N or Z |
BRLZ |
|
regrs1, label |
Branch on register less than zero |
N |
BRNZ |
|
regrs1, label |
Branch
on register not zero |
not Z |
BRGZ |
|
regrs1, label |
Branch on register greater than zero |
not (N
or Z) |
BRGEZ |
|
regrs1, label |
Branch on register greater than or equal to zero |
not N |
CASA |
|
[ regrs1] imm_asi, regrs2, regrd [regrs1]%asi,regrs2,regrd |
Compare
and swap word from alternate space |
|
CASXA |
|
[ regrs1] imm_asi, regrs2, regrd[regrs1]%asi,regrs2,regrd |
Compare and swap extended from alternate space |
|
|
|
|
(Branch on cc with prediction) Branch never |
|
FBPN |
|
%fccn, label |
Branch always |
0 |
FBPU |
|
%fccn, label |
Branch on unordered |
U |
FBPG |
|
%fccn, label |
Branch
on greater |
G |
FBPUG |
|
%fccn, label |
Branch on unordered or greater |
G or U |
FBPL |
|
%fccn, label |
Branch on less |
L |
FBPUL |
|
%fccn,
label |
Branch on unordered or less |
L or U |
FBPLG |
|
%fccn, label |
Branch on less or greater |
L
or G |
FBPNE |
|
%fccn, label |
Branch on not equal |
L or G or U |
FBPE |
|
%fccn, label |
Branch on
equal |
E |
FBPUE |
|
%fccn, label |
Branch on unordered or equal |
E or U |
FBPGE |
|
%fccn, label |
Branch on greater or
equal |
E or G |
FBPUGE |
|
%fccn, label |
Branch on unordered or greater or equal |
E or G
or U |
FBPLE |
|
%fccn, label |
Branch on less or equal |
E or L |
FBPULE |
|
%fccn, label |
Branch on unordered
or less or equal |
E or L or u |
FBPO |
|
|
Branch on ordered |
E or
L or G |
FLUSHW |
flushw |
|
Flush register windows |
|
|
|
%icc or %xcc, fregrs2, fregrd |
(Move on integer
cc) Move always |
|
FMOVN |
|
%icc or %xcc, fregrs2, fregrd |
Move never |
0 |
FMOVNE |
|
%icc or %xcc, fregrs2,
fregrd |
Move if not equal |
not Z |
FMOVE |
|
%icc or %xcc, fregrs2, fregrd |
Move if equal |
Z |
FMOVG |
|
%icc or
%xcc, fregrs2, fregrd |
Move if greater |
not (Z or (N xor V)) |
FMOVLE |
|
%icc or %xcc,
fregrs2, fregrd |
Move if less or equal |
Z or (N xor V) |
FMOVGE |
|
%icc or %xcc,
fregrs2, fregrd |
Move if greater or equal |
not (N xor V) |
FMOVL |
|
%icc or %xcc, fregrs2,
fregrd |
Move if less |
N xor V |
FMOVGU |
|
%icc or %xcc, fregrs2, fregrd |
Move if greater unsigned |
not
(C or Z) |
FMOVLEU |
|
%icc or %xcc, fregrs2, fregrd |
Move if less or equal unsigned |
C
or Z |
FMOVCC |
|
%icc or %xcc, fregrs2, fregrd |
Move if carry clear (greater or equal,
unsigned) |
not C |
FMOVCS |
|
%icc or %xcc, fregrs2, fregrd |
Move if carry set (less than, unsigned) |
C |
FMOVPOS |
|
%icc
or %xcc, fregrs2, fregrd |
Move if positive |
not N |
FMOVNEG |
|
%icc or %xcc, fregrs2, fregrd |
Move if
negative |
N |
FMOVVC |
|
%icc or %xcc, fregrs2, fregrd |
Move if overflow clear |
not V |
FMOVVS |
|
%icc or %xcc, fregrs2,
fregrd |
Move if overflow set |
V |
|
|
|
(Move f-p register on cc) Move if
register zero |
|
FMOVRLEZ |
|
regrs1, fregrs2, fregrd |
Move if register less than or equal zero |
|
FMOVRLZ |
|
regrs1, fregrs2,
fregrd |
Move if register less than zero |
|
|
fmovr{s,d,q}ne fmovr {s,d,q}gz fmovr {s,d,q}gez |
regrs1, fregrs2, fregrdregrs1, fregrs2, fregrd regrs1, fregrs2, fregrd |
Move
if register not zero Move if register greater than zero Move if register greater
than or equal to zero |
|
FMOVFAFMOVFN FMOVFU FMOVFG FMOVFUG FMOVFL FMOVFUL FMOVFLG FMOVFNE FMOVFE FMOVFUE FMOVFGE FMOVFUGE FMOVFLE FMOVFULE FMOVFO |
fmov{s,d,q}afmov{s,d,q}n fmov{s,d,q}u fmov{s,d,q}g fmov{s,d,q}ug fmov{s,d,q}l fmov{s,d,q}ul fmov{s,d,q}lg fmov{s,d,q}ne fmov{s,d,q}e fmov{s,d,q}ue fmov{s,d,q}ge fmov{s,d,q}uge fmov{s,d,q}le fmov{s,d,q}ule fmov{s,d,q}o |
%fccn,fregrs2, fregrd %fccn,fregrs2,fregrd %fccn,fregrs2,fregrd %fccn,fregrs2,fregrd %fccn,fregrs2,fregrd %fccn,fregrs2,fregrd %fccn,fregrs2,fregrd %fccn,fregrs2,fregrd %fccn,fregrs2,fregrd %fccn,fregrs2,fregrd %fccn,fregrs2,fregrd %fccn,fregrs2,fregrd %fccn,fregrs2,fregrd %fccn,fregrs2,fregrd %fccn,fregrs2,fregrd %fccn,fregrs2,fregrd |
(Move on floating-point cc) Move always Move never Move if
unordered Move if greater Move if unordered or greater Move if less Move if unordered or
less Move if less or greater Move if not equal Move if equal Move if unordered
or equal Move if greater or equal Move if unordered or greater or equal Move
if less or equal Move if unordered or less or equal Move if ordered |
1 0 U G G
or U L L or U L or G L or G or U E E or U E
or G E or G or U E or L E or L or u E
or L or G |
|
|
[ address], reg rd [regaddr] imm_asi, regrd |
Load a signed word Load signed word
from alternate space |
|
|
|
[ address], regrd [regaddr] imm_asi, regrd [reg_plus_imm] %asi, regrd [address], %fsr |
Load extended word Load extended
word from alternate space Load floating-point state register |
|
MEMBAR |
membar |
membar_mask |
Memory barrier |
|
MOVAMOVN MOVNE MOVE MOVG MOVLE MOVGE MOVL MOVGU MOVLEU MOVCC MOVCS MOVPOS MOVNEG MOVVC MOVVS |
movamovn movne move movg movle movge movl movgu movleu movcc movcs movpos movneg movvc movvs |
%icc or %xcc, reg_or_imm11, regrd %icc or
%xcc, reg_or_imm11, regrd %icc or %xcc, reg_or_imm11, regrd %icc or %xcc, reg_or_imm11, regrd %icc or %xcc, reg_or_imm11, regrd %icc or
%xcc, reg_or_imm11, regrd %icc or %xcc, reg_or_imm11, regrd %icc or %xcc, reg_or_imm11, regrd %icc or %xcc, reg_or_imm11, regrd %icc or
%xcc, reg_or_imm11, regrd %icc or %xcc, reg_or_imm11, regrd %icc or %xcc, reg_or_imm11, regrd %icc or %xcc, reg_or_imm11, regrd %icc or
%xcc, reg_or_imm11, regrd %icc or %xcc, reg_or_imm11, regrd %icc or %xcc, reg_or_imm11, regrd |
(Move integer register on cc) Move
always Move never Move if not equal Move if equal Move if greater Move if less or
equal Move if greater or equal Move if less Move if greater unsigned Move if less
or equal unsigned Move if carry clear (greater or equal, unsigned) Move if carry
set (less than, unsigned) Move if positive Move if negative Move if overflow clear Move if
overflow set |
1 0 not Z Z not (Z or (N xor V)) Z or (N xor V) not
(N xor V) N xor V not (C or Z) C or Z not C C not N N not
V V |
MOVFAMOVFN MOVFU MOVFG MOVFUG MOVFL MOVFUL MOVFLG MOVFNE MOVFE MOVFUE MOVFGE MOVFUGE MOVFLE MOVFULE MOVFO |
movamovn movu movg movug movl movul movlg movne move movue movge movuge movle movule movo |
%fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd %fccn,reg_or_imm11,regrd |
(Move on floating-point cc) Move always Move never Move if unordered Move if greater Move if unordered
or greater Move if less Move if unordered or less Move if less or greater Move
if not equal Move if equal Move if unordered or equal Move if greater or
equal Move if unordered or greater or equal Move if less or equal Move if
unordered or less or equal Move if ordered |
1 0 U G G or U L L or U L or
G L or G or U E E or U E or G E or G
or U E or L E or L or u E or L or G |
MOVRZMOVRLEZ MOVRLZ MOVRNZ MOVRGZ MOVRGEZ |
movremovrlez movrlz movrnz movrgz movrgez |
regrs1,
reg_or_imm10,regrd regrs1, reg_or_imm10,regrd regrs1, reg_or_imm10,regrd regrs1, reg_or_imm10,regrd regrs1, reg_or_imm10,regrd regrs1, reg_or_imm10,regrd |
(Move register on register cc) Move if register
zero Move if register less than or equal to zero Move if register less
than zero Move if register not zero Move if register greater than zero Move if
register greater than or equal to zero |
Z N or Z N not Z N nor Z not
N |
MULX |
mulx |
regrs1, reg_or_imm,regrd |
(Generic 64-bit Multiply) Multiply (signed or unsigned) |
See SDIVX and UDIVX |
POPC |
popc |
reg_or_imm, regrd |
Population count |
|
|
prefetchprefetcha prefetcha |
[address], prefetch_dcn [regaddr] imm_asi, prefetch_fcn [reg_plus_imm]
%asi, prefetch_fcn |
Prefetch data Prefetch data from alternate space |
See The SPARC architecture manual, version 9 |
|
sdivx |
regrs1, reg_or_imm,regrd |
(64-bit signed divide) Signed Divide |
See
MULX and UDIVX |
|
|
regrd, [address]regrd, [address] imm_asi regrd, [reg_plus_imm] %asi %fsr, [address] |
Store extended word Store extended word into alternate
space Store floating-point register (all 64-bits) |
|
UDIVX |
udivx |
regrs1, reg_or_imm, regrd |
(64-bit unsigned divide) Unsigned divide |
See MULX and SDIVX |
|