|
|
|
|
|
|
|
|
(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, fregrd
regrs1, 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 |
|
FMOVFA FMOVFN FMOVFU FMOVFG FMOVFUG FMOVFL FMOVFUL FMOVFLG FMOVFNE FMOVFE FMOVFUE FMOVFGE FMOVFUGE FMOVFLE FMOVFULE FMOVFO |
fmov{s,d,q}a fmov{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 |
|
MOVA MOVN MOVNE MOVE MOVG MOVLE MOVGE MOVL MOVGU MOVLEU MOVCC MOVCS MOVPOS MOVNEG MOVVC MOVVS |
mova movn movne move movg movle movge movl movgu movleu movcc movcs movpos movneg movvc movvs |
%icc or %xcc, reg_or_imm11, reg rd %icc or %xcc, reg_or_imm11, reg rd %icc or %xcc, reg_or_imm11, reg rd %icc or %xcc,
reg_or_imm11, reg rd %icc or %xcc, reg_or_imm11, reg rd %icc or %xcc, reg_or_imm11, reg rd %icc or %xcc, reg_or_imm11, reg rd %icc or %xcc,
reg_or_imm11, reg rd %icc or %xcc, reg_or_imm11, reg rd %icc or %xcc, reg_or_imm11, reg rd %icc or %xcc, reg_or_imm11, reg rd %icc or %xcc,
reg_or_imm11, reg rd %icc or %xcc, reg_or_imm11, reg rd %icc or %xcc, reg_or_imm11, reg rd %icc or %xcc, reg_or_imm11, reg rd %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 |
MOVFA MOVFN MOVFU MOVFG MOVFUG MOVFL MOVFUL MOVFLG MOVFNE MOVFE MOVFUE MOVFGE MOVFUGE MOVFLE MOVFULE MOVFO |
mova movn 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 |
MOVRZ MOVRLEZ MOVRLZ MOVRNZ MOVRGZ MOVRGEZ |
movre movrlez 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 |
|
|
prefetch prefetcha 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 |
|