From: David Given Date: Wed, 22 May 2013 22:55:23 +0000 (+0100) Subject: Double-quads can be loaded and stored (more) correctly. X-Git-Tag: release-6-0-pre-5~10^2~44 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=2c7ee272065d29bb145c5e9c474920b96e6c7918;p=ack.git Double-quads can be loaded and stored (more) correctly. --HG-- branch : dtrg-videocore --- diff --git a/mach/vc4/ncg/table b/mach/vc4/ncg/table index 3c96d711c..e5cc0e190 100644 --- a/mach/vc4/ncg/table +++ b/mach/vc4/ncg/table @@ -386,8 +386,8 @@ PATTERNS pat ldl /* Load double-word from local */ leaving - lol $1 + QUAD*0 lol $1 + QUAD*1 + lol $1 + QUAD*0 pat stl inreg($1)>0 /* Store to local */ with CONST+GPRI @@ -402,8 +402,8 @@ PATTERNS pat sdl /* Store double-word to local */ leaving - stl $1 + QUAD*1 stl $1 + QUAD*0 + stl $1 + QUAD*1 pat lil inreg($1)>0 /* Load from indirected local */ uses REG @@ -496,14 +496,15 @@ PATTERNS dec sti QUAD - pat lde /* Load external */ - uses REG, REG - gen - lea %a, {LABEL, $1} - ld %b, {GPROFFSET, %a, 4} - ld %a, {GPROFFSET, %a, 0} - yields %b %a + pat lde /* Load double external */ + leaving + lae $1 + loi QUAD*2 + pat sde /* Store double external */ + leaving + lae $1 + sti QUAD*2 /* Structures */ @@ -570,7 +571,7 @@ PATTERNS ldhs %a, {GPROFFSET, %a, 0} yields %a - pat loi $1==WORD /* Load short indirect */ + pat loi $1==WORD /* Load short indirect */ with LABEL uses REG gen @@ -583,7 +584,7 @@ PATTERNS ldh %a, {GPROFFSET, %a, 0} yields %a - pat loi $1==QUAD /* Load quad indirect */ + pat loi $1==QUAD /* Load quad indirect */ with LABEL uses REG gen @@ -596,6 +597,22 @@ PATTERNS ld %a, {GPROFFSET, %a, 0} 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 */ leaving loc $1 @@ -638,6 +655,20 @@ PATTERNS add %a, %1, GP 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 */ leaving loc $1