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.
- Takes the value from source register rS
- Shifts it left by n bit positions
- 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)
- rA (Destination register) - Result of left shift operation
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)