Make betterer.
This commit is contained in:
parent
65e75be42d
commit
06059233da
1 changed files with 30 additions and 0 deletions
|
@ -61,6 +61,10 @@ PATTERNS
|
||||||
emit "mov r0, %in"
|
emit "mov r0, %in"
|
||||||
cost 4;
|
cost 4;
|
||||||
|
|
||||||
|
STACKADJUST4(delta:aluparam)
|
||||||
|
emit "add sp, sp, %delta"
|
||||||
|
cost 4;
|
||||||
|
|
||||||
int = in:REG4
|
int = in:REG4
|
||||||
prefers int(in)
|
prefers int(in)
|
||||||
cost 1;
|
cost 1;
|
||||||
|
@ -82,6 +86,10 @@ PATTERNS
|
||||||
emit "str %value, %addr"
|
emit "str %value, %addr"
|
||||||
cost 4;
|
cost 4;
|
||||||
|
|
||||||
|
STORE1(addr:address, value:int)
|
||||||
|
emit "strb %value, %addr"
|
||||||
|
cost 4;
|
||||||
|
|
||||||
int = LOAD4(addr:address)
|
int = LOAD4(addr:address)
|
||||||
emit "ldr %int, %addr"
|
emit "ldr %int, %addr"
|
||||||
cost 4;
|
cost 4;
|
||||||
|
@ -114,10 +122,14 @@ PATTERNS
|
||||||
address = ADD4(addr:int, offset:CONST4)
|
address = ADD4(addr:int, offset:CONST4)
|
||||||
emit "[%addr, #$offset]";
|
emit "[%addr, #$offset]";
|
||||||
|
|
||||||
|
address = ADD4(addr1:int, addr2:int)
|
||||||
|
emit "[%addr1, %addr2]";
|
||||||
|
|
||||||
address = addr:int
|
address = addr:int
|
||||||
emit "[%addr]";
|
emit "[%addr]";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Branches */
|
/* Branches */
|
||||||
|
|
||||||
JUMP(addr:BLOCK4)
|
JUMP(addr:BLOCK4)
|
||||||
|
@ -129,6 +141,15 @@ PATTERNS
|
||||||
emit "b $false"
|
emit "b $false"
|
||||||
cost 8;
|
cost 8;
|
||||||
|
|
||||||
|
CJUMPLE(value:cc, PAIR(true:BLOCK4, false:BLOCK4))
|
||||||
|
emit "ble $true"
|
||||||
|
emit "b $false"
|
||||||
|
cost 8;
|
||||||
|
|
||||||
|
CALL(dest:LABEL4)
|
||||||
|
emit "bl $dest"
|
||||||
|
cost 4;
|
||||||
|
|
||||||
|
|
||||||
/* Comparisons */
|
/* Comparisons */
|
||||||
|
|
||||||
|
@ -168,6 +189,15 @@ PATTERNS
|
||||||
emit "add %int, %right, %left"
|
emit "add %int, %right, %left"
|
||||||
cost 4;
|
cost 4;
|
||||||
|
|
||||||
|
int = MOD4(left:int, right:int)
|
||||||
|
emit "udiv %int, %left, %right"
|
||||||
|
emit "mls %int, %int, %right, %left"
|
||||||
|
cost 8;
|
||||||
|
|
||||||
|
int = DIV4(left:int, right:aluparam)
|
||||||
|
emit "div %int, %left, %right"
|
||||||
|
cost 4;
|
||||||
|
|
||||||
aluparam = value:CONST4
|
aluparam = value:CONST4
|
||||||
emit "#$value";
|
emit "#$value";
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue