66 lines
1.3 KiB
ArmAsm
66 lines
1.3 KiB
ArmAsm
/*
|
|
* test relax
|
|
* not.c <-> not! : register number must be in 0-15
|
|
* neg.c <-> neg! : register number must be in 0-15
|
|
* cmp.c <-> cmp! : register number must be in 0-15
|
|
|
|
* Author: ligang
|
|
*/
|
|
|
|
/* This macro transform 32b instruction to 16b. */
|
|
.macro tran3216 insn32, insn16
|
|
.align 4
|
|
|
|
\insn32 r0, r7 #32b -> 16b
|
|
\insn16 r0, r7
|
|
|
|
\insn32 r15, r4 #32b -> 16b
|
|
\insn16 r15, r4
|
|
|
|
\insn32 r15, r15 #32b -> 16b
|
|
\insn16 r15, r15
|
|
|
|
\insn16 r15, r3
|
|
\insn32 r15, r3 #32b -> 16b
|
|
|
|
\insn32 r8, r2 #32b -> 16b
|
|
\insn32 r8, r2 #32b -> 16b
|
|
|
|
\insn32 r15, r5 #No transform
|
|
\insn32 r26, r23
|
|
|
|
.endm
|
|
|
|
/* This macro transform 16b instruction to 32b. */
|
|
.macro tran1632 insn32, insn16
|
|
.align 4
|
|
|
|
\insn16 r0, r2 #16b -> 32b
|
|
\insn32 r20, r21
|
|
|
|
\insn16 r15, r4 #16b -> 32b
|
|
\insn32 r25, r21
|
|
|
|
\insn16 r15, r3 #16b -> 32b
|
|
\insn32 r25, r22
|
|
|
|
\insn16 r8, r3 #No transform
|
|
\insn16 r8, r3 #No transform
|
|
|
|
\insn16 r6, r2 #No transform
|
|
\insn32 r6, r2 #32b -> 16b
|
|
|
|
\insn32 r7, r4 #32b -> 16b
|
|
\insn16 r7, r4 #No transform
|
|
|
|
.endm
|
|
|
|
.text
|
|
|
|
tran3216 "not.c", "not!"
|
|
tran3216 "neg.c", "neg!"
|
|
tran3216 "cmp.c", "cmp!"
|
|
|
|
tran1632 "not.c", "not!"
|
|
tran1632 "neg.c", "neg!"
|
|
tran1632 "cmp.c", "cmp!"
|