Encoding:

COP1

010001

110

df

wt

s16

6

3

2

5

16

Format:

BZ.df 

Immediate Branch If At Least One Element Is Zero

BZ.B wt,s16

MSA

Immediate Branch If At Least One Element Is Zero

BZ.H wt,s16

MSA

Immediate Branch If At Least One Element Is Zero

BZ.W wt,s16

MSA

Immediate Branch If At Least One Element Is Zero

BZ.D wt,s16

MSA

Immediate Branch If At Least One Element Is Zero

Purpose:

Immediate Branch If At Least One Element Is Zero

Immediate PC offset branch if at least one destination element is zero.

Description:

if wt[i] = 0 for some i then branch PC-relative s16

PC-relative branch if at least one element in wt is zero. The branch instruction has a delay slot. s16 is a PC word offset, i.e. signed count of 32-bit instructions, from the PC of the delay slot.

Restrictions:

Processor operation is UNPREDICTABLE if a branch is placed in the delay slot of a branch or jump.

Operation:

BZ.B:
   for i in 0 .. WRLEN/8-1
      branch(WR[wt]8i+7..8i = 0, s16)
   endfor
BZ.H:
   for i in 0 .. WRLEN/16-1
      branch(WR[wt]16i+15..16i = 0, s16)
   endfor
BZ.W:
   for i in 0 .. WRLEN/32-1
      branch(WR[wt]32i+31..32i = 0, s16)
   endfor
BZ.D:
   for i in 0 .. WRLEN/64-1
      branch(WR[wt]64i+63..64i = 0, s16)
   endfor
function branch(cond, offset)
   if cond then
      I:   target_offset = (offset9)GPRLEN-12 || offset9..0 || 0^^2
      I+1: PC = PC + target_offset
   endif
endfunction branch

Exceptions:

Reserved Instruction Exception, MSA Disabled Exception.