slwi
Shift Left Word Immediate - 54 00 00 3E
slwi

Instruction Syntax

Mnemonic Format Flags
slwi rA,rS,n None

Instruction Encoding

0
1
0
1
0
1
S
S
S
S
S
A
A
A
A
A
n
n
n
n
n
n
1
1
1
1
1
1

Field Bits Description
Primary Opcode 0-5 010101 (0x15)
rS 6-10 Source register
rA 11-15 Destination register
n 16-20 Shift count (0-31)
MB 21-25 11111 (Begin bit)
ME 26-30 11111 (End bit)

Operation

rA ← (rS) << n

SLWI shifts the value in source register rS left by n bit positions and stores the result in destination register rA.

  1. Takes the value from source register rS
  2. Shifts it left by n bit positions
  3. Stores the result in destination register rA

Note: SLWI is a derived form of the RLWINM instruction with MB=31-n and ME=31.

Affected Registers

General Purpose Registers (GPRs)

Examples

Basic Left Shift

# Shift r3 left by 2 bits
slwi r4, r3, 2     # r4 = r3 << 2 (multiply by 4)

# Shift r5 left by 8 bits
slwi r6, r5, 8     # r6 = r5 << 8 (multiply by 256)

Multiplication by Powers of 2

# Multiply by 2
slwi r3, r4, 1     # r3 = r4 * 2

# Multiply by 4
slwi r3, r4, 2     # r3 = r4 * 4

# Multiply by 8
slwi r3, r4, 3     # r3 = r4 * 8

# Multiply by 16
slwi r3, r4, 4     # r3 = r4 * 16

Bit Field Manipulation

# Clear lower bits and shift
andi r3, r4, 0xFF  # Extract lower 8 bits
slwi r3, r3, 16    # Shift to upper 16 bits

# Prepare for bit field insertion
slwi r3, r4, 8     # Shift value to bit position 8-15

Address Calculation

# Calculate array element address (4-byte elements)
slwi r3, r4, 2     # r3 = r4 * 4 (element offset)
add r5, r6, r3     # r5 = base_address + offset

Bit Mask Creation

# Create bit mask for specific bit position
li r3, 1           # Load 1
slwi r3, r3, 5     # Shift to bit 5: 0x00000020

# Create mask for multiple bits
li r3, 0xFF        # Load 0xFF
slwi r3, r3, 8     # Shift to bits 8-15: 0x0000FF00

Data Alignment

# Align address to 4-byte boundary
slwi r3, r4, 2     # Multiply by 4
slwi r3, r3, 2     # Multiply by 4 again (total * 16)

Related Instructions

srwi (Shift Right Word Immediate), rlwinm (Rotate Left Word Immediate then AND with Mask), slw (Shift Left Word), srw (Shift Right Word)

Back to Index