Do a move when coercing FREG to FREG or FSREG to FSREG.
This commit is contained in:
parent
f0619ea4ae
commit
5432bd03d6
|
@ -630,13 +630,6 @@ STACKINGRULES
|
||||||
|
|
||||||
COERCIONS
|
COERCIONS
|
||||||
|
|
||||||
from ANY_BHW
|
|
||||||
uses REG
|
|
||||||
gen
|
|
||||||
COMMENT("coerce ANY_BHW->REG")
|
|
||||||
move %1, %a
|
|
||||||
yields %a
|
|
||||||
|
|
||||||
from STACK
|
from STACK
|
||||||
uses REG
|
uses REG
|
||||||
gen
|
gen
|
||||||
|
@ -645,18 +638,6 @@ COERCIONS
|
||||||
addi sp, sp, {CONST, 4}
|
addi sp, sp, {CONST, 4}
|
||||||
yields %a
|
yields %a
|
||||||
|
|
||||||
from FSREG
|
|
||||||
uses FSREG
|
|
||||||
gen
|
|
||||||
fmr %a, %1
|
|
||||||
yields %a
|
|
||||||
|
|
||||||
from FREG
|
|
||||||
uses FREG
|
|
||||||
gen
|
|
||||||
fmr %a, %1
|
|
||||||
yields %a
|
|
||||||
|
|
||||||
from STACK
|
from STACK
|
||||||
uses FREG
|
uses FREG
|
||||||
gen
|
gen
|
||||||
|
@ -673,21 +654,34 @@ COERCIONS
|
||||||
addi sp, sp, {CONST, 4}
|
addi sp, sp, {CONST, 4}
|
||||||
yields %a
|
yields %a
|
||||||
|
|
||||||
from IND_ALL_W
|
from ANY_BHW
|
||||||
uses FSREG
|
uses REG
|
||||||
gen
|
gen
|
||||||
|
COMMENT("coerce ANY_BHW->REG")
|
||||||
move %1, %a
|
move %1, %a
|
||||||
yields %a
|
yields %a
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* from IND_RC_D to REG REG is not possible, because
|
* There is no coercion from IND_ALL_D to REG REG, because
|
||||||
* %1.off+4 might overflow a signed 16-bit integer in
|
* coercions can't allocate registers for intermediate values.
|
||||||
* move {IND_RC_W, %1.val, %1.off+4}, %a
|
*
|
||||||
|
* A coercion to split IND_RC_D into two IND_RC_W, without
|
||||||
|
* allocating an intermediate register, would yield
|
||||||
|
* {IND_RC_W, %1.val, %1.off+4}
|
||||||
|
* but %1.off+4 might overflow a signed 16-bit integer.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
from IND_ALL_D
|
from FREG+IND_ALL_D
|
||||||
uses FREG
|
uses FREG
|
||||||
gen
|
gen
|
||||||
|
COMMENT("coerce FREG+IND_ALL_D->FREG")
|
||||||
|
move %1, %a
|
||||||
|
yields %a
|
||||||
|
|
||||||
|
from FSREG+IND_ALL_W
|
||||||
|
uses FSREG
|
||||||
|
gen
|
||||||
|
COMMENT("coerce FSREG+IND_ALL_W->FREG")
|
||||||
move %1, %a
|
move %1, %a
|
||||||
yields %a
|
yields %a
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue