Instruction Descriptions 4–55
4.6.3 Byte Insert
Format:
Operation:
CASE
big_endian_data: Rbv’ ← Rbv XOR 111
2
little_endian_data: Rbv’ ← Rbv
ENDCASE
CASE
INSBL: byte_mask ← 0000 0000 0000 0001
2
INSWx: byte_mask ← 0000 0000 0000 0011
2
INSLx: byte_mask ← 0000 0000 0000 1111
2
INSQx: byte_mask ← 0000 0000 1111 1111
2
ENDCASE
byte_mask ← LEFT_SHIFT(byte_mask, Rbv’<2:0>)
CASE
INSxL:
byte_loc ← Rbv’<2:0>*8
temp ← LEFT_SHIFT(Rav, byte_loc<5:0>)
Rc ← BYTE_ZAP(temp, NOT(byte_mask<7:0>))
INSxH:
byte_loc ← 64 - Rbv’<2:0>*8
temp ← RIGHT_SHIFT(Rav, byte_loc<5:0>)
Rc ← BYTE_ZAP(temp, NOT(byte_mask<15:8>))
ENDCASE
Exceptions:
Instruction mnemonics:
INSxx Ra.rq,Rb.rq,Rc.wq
!Operate format
INSxx Ra.rq,#b.ib,Rc.wq
!Operate format
None
INSBL Insert Byte Low
INSWL Insert Word Low
INSLL Insert Longword Low
INSQL Insert Quadword Low
INSWH Insert Word High
INSLH Insert Longword High
INSQH Insert Quadword High