mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-30 15:32:52 +01:00
f403d95eb4
This patch provides initial implementation of load address macro instruction for Mips. We have implemented two kinds of expansions with their variations depending on the size of immediate operand: 1) load address with immediate value directly: * la d,j => addiu d,$zero,j (for -32768 <= j <= 65535) * la d,j => lui d,hi16(j) ori d,d,lo16(j) (for any other 32 bit value of j) 2) load load address with register offset value * la d,j(s) => addiu d,s,j (for -32768 <= j <= 65535) * la d,j(s) => lui d,hi16(j) (for any other 32 bit value of j) ori d,d,lo16(j) addu d,d,s This patch does not cover the case when the address is loaded from the value of the label or function. Contributer: Vladimir Medic llvm-svn: 165561
28 lines
1.3 KiB
ArmAsm
28 lines
1.3 KiB
ArmAsm
# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | FileCheck %s
|
|
# Check that the assembler can handle the documented syntax
|
|
# for macro instructions
|
|
# CHECK: .section __TEXT,__text,regular,pure_instructions
|
|
#------------------------------------------------------------------------------
|
|
# Load immediate instructions
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ori $5, $zero, 123 # encoding: [0x7b,0x00,0x05,0x34]
|
|
# CHECK: addiu $6, $zero, -2345 # encoding: [0xd7,0xf6,0x06,0x24]
|
|
# CHECK: lui $7, 1 # encoding: [0x01,0x00,0x07,0x3c]
|
|
# CHECK: ori $7, $7, 2 # encoding: [0x02,0x00,0xe7,0x34]
|
|
# CHECK: addiu $4, $zero, 20 # encoding: [0x14,0x00,0x04,0x24]
|
|
# CHECK: lui $7, 1 # encoding: [0x01,0x00,0x07,0x3c]
|
|
# CHECK: ori $7, $7, 2 # encoding: [0x02,0x00,0xe7,0x34]
|
|
# CHECK: addiu $4, $5, 20 # encoding: [0x14,0x00,0xa4,0x24]
|
|
# CHECK: lui $7, 1 # encoding: [0x01,0x00,0x07,0x3c]
|
|
# CHECK: ori $7, $7, 2 # encoding: [0x02,0x00,0xe7,0x34]
|
|
# CHECK: addu $7, $7, $8 # encoding: [0x21,0x38,0xe8,0x00]
|
|
|
|
li $5,123
|
|
li $6,-2345
|
|
li $7,65538
|
|
|
|
la $a0, 20
|
|
la $7,65538
|
|
la $a0, 20($a1)
|
|
la $7,65538($8)
|