Double-quads can be loaded and stored (more) correctly.
--HG-- branch : dtrg-videocore
This commit is contained in:
parent
6cbe6e1c4e
commit
2c7ee27206
1 changed files with 42 additions and 11 deletions
|
@ -386,8 +386,8 @@ PATTERNS
|
||||||
|
|
||||||
pat ldl /* Load double-word from local */
|
pat ldl /* Load double-word from local */
|
||||||
leaving
|
leaving
|
||||||
lol $1 + QUAD*0
|
|
||||||
lol $1 + QUAD*1
|
lol $1 + QUAD*1
|
||||||
|
lol $1 + QUAD*0
|
||||||
|
|
||||||
pat stl inreg($1)>0 /* Store to local */
|
pat stl inreg($1)>0 /* Store to local */
|
||||||
with CONST+GPRI
|
with CONST+GPRI
|
||||||
|
@ -402,8 +402,8 @@ PATTERNS
|
||||||
|
|
||||||
pat sdl /* Store double-word to local */
|
pat sdl /* Store double-word to local */
|
||||||
leaving
|
leaving
|
||||||
stl $1 + QUAD*1
|
|
||||||
stl $1 + QUAD*0
|
stl $1 + QUAD*0
|
||||||
|
stl $1 + QUAD*1
|
||||||
|
|
||||||
pat lil inreg($1)>0 /* Load from indirected local */
|
pat lil inreg($1)>0 /* Load from indirected local */
|
||||||
uses REG
|
uses REG
|
||||||
|
@ -496,14 +496,15 @@ PATTERNS
|
||||||
dec
|
dec
|
||||||
sti QUAD
|
sti QUAD
|
||||||
|
|
||||||
pat lde /* Load external */
|
pat lde /* Load double external */
|
||||||
uses REG, REG
|
leaving
|
||||||
gen
|
lae $1
|
||||||
lea %a, {LABEL, $1}
|
loi QUAD*2
|
||||||
ld %b, {GPROFFSET, %a, 4}
|
|
||||||
ld %a, {GPROFFSET, %a, 0}
|
|
||||||
yields %b %a
|
|
||||||
|
|
||||||
|
pat sde /* Store double external */
|
||||||
|
leaving
|
||||||
|
lae $1
|
||||||
|
sti QUAD*2
|
||||||
|
|
||||||
|
|
||||||
/* Structures */
|
/* Structures */
|
||||||
|
@ -570,7 +571,7 @@ PATTERNS
|
||||||
ldhs %a, {GPROFFSET, %a, 0}
|
ldhs %a, {GPROFFSET, %a, 0}
|
||||||
yields %a
|
yields %a
|
||||||
|
|
||||||
pat loi $1==WORD /* Load short indirect */
|
pat loi $1==WORD /* Load short indirect */
|
||||||
with LABEL
|
with LABEL
|
||||||
uses REG
|
uses REG
|
||||||
gen
|
gen
|
||||||
|
@ -583,7 +584,7 @@ PATTERNS
|
||||||
ldh %a, {GPROFFSET, %a, 0}
|
ldh %a, {GPROFFSET, %a, 0}
|
||||||
yields %a
|
yields %a
|
||||||
|
|
||||||
pat loi $1==QUAD /* Load quad indirect */
|
pat loi $1==QUAD /* Load quad indirect */
|
||||||
with LABEL
|
with LABEL
|
||||||
uses REG
|
uses REG
|
||||||
gen
|
gen
|
||||||
|
@ -596,6 +597,22 @@ PATTERNS
|
||||||
ld %a, {GPROFFSET, %a, 0}
|
ld %a, {GPROFFSET, %a, 0}
|
||||||
yields %a
|
yields %a
|
||||||
|
|
||||||
|
pat loi $1==2*QUAD /* Load double-quad indirect */
|
||||||
|
with LABEL
|
||||||
|
uses REG, REG
|
||||||
|
gen
|
||||||
|
lea %b, %1
|
||||||
|
ld %a, {GPROFFSET, %b, 0}
|
||||||
|
ld %b, {GPROFFSET, %b, 4}
|
||||||
|
yields %b %a
|
||||||
|
with GPRI
|
||||||
|
uses reusing %1, REG, REG
|
||||||
|
gen
|
||||||
|
add %b, %1, GP
|
||||||
|
ld %a, {GPROFFSET, %b, 0}
|
||||||
|
ld %b, {GPROFFSET, %b, 4}
|
||||||
|
yields %b %a
|
||||||
|
|
||||||
pat loi !nicesize($1) /* Load arbitrary size */
|
pat loi !nicesize($1) /* Load arbitrary size */
|
||||||
leaving
|
leaving
|
||||||
loc $1
|
loc $1
|
||||||
|
@ -638,6 +655,20 @@ PATTERNS
|
||||||
add %a, %1, GP
|
add %a, %1, GP
|
||||||
st %2, {GPROFFSET, %a, 0}
|
st %2, {GPROFFSET, %a, 0}
|
||||||
|
|
||||||
|
pat sti $1==2*QUAD /* Load double-quad indirect */
|
||||||
|
with LABEL GPRI GPRI
|
||||||
|
uses REG
|
||||||
|
gen
|
||||||
|
lea %a, %1
|
||||||
|
st %2, {GPROFFSET, %a, 0}
|
||||||
|
st %3, {GPROFFSET, %a, 4}
|
||||||
|
with GPRI GPRI GPRI
|
||||||
|
uses reusing %1, REG=%1
|
||||||
|
gen
|
||||||
|
add %a, GP
|
||||||
|
st %2, {GPROFFSET, %a, 0}
|
||||||
|
st %3, {GPROFFSET, %a, 4}
|
||||||
|
|
||||||
pat sti /* Store arbitrary size */
|
pat sti /* Store arbitrary size */
|
||||||
leaving
|
leaving
|
||||||
loc $1
|
loc $1
|
||||||
|
|
Loading…
Reference in a new issue