Upload Tizen:Base source
[external/binutils.git] / gas / testsuite / gas / score / addi.s
1 /*
2  * test relax
3  * addi <-> addei! : for addei : register number must be in 0-15, offset : 4b, only 16b -> 32b
4  *   (1)addi rD, simm16 : rD = rD + simm16, -32768 <= simm16 <= 32767
5  *   (2)addei! rD, imm4 : rD = rD + 2**imm4
6  * addi <-> subei! : for addei : register number must be in 0-15, offset : 4b, only 16b -> 32b
7  *   (1)addi rD, simm16 : rD = rD + simm16, -32768 <= simm16 <= 32767
8  *   (2)subei! rD, imm4 : rD = rD + 2**imm4
9         
10  * Author: ligang
11  */
12
13 /* This macro transform 16b instruction to 32b. */
14 .macro tran1632 insn32, insn16, sign
15 .align 4
16         
17   \insn16 r0, 0                  #16b -> 32b
18   \insn32 r0, \sign * 1         
19
20   \insn16 r15, 4                 #16b -> 32b
21   \insn32 r15, \sign * 16
22
23   \insn16 r15, 14                #16b -> 32b
24   \insn32 r15, \sign * 1024 * 16
25
26   \insn16 r8, 3                  #No transform
27   \insn16 r8, 3                  #No transform
28
29   \insn16 r15, 15                #No transform. Because 2**15 = 32768, extend range of addi
30   \insn32 r15, 0x7FFF
31
32 .endm
33
34 .text
35
36   tran1632 "addi.c", "addei!", 1
37   tran1632 "addi.c", "subei!", -1