Explorar o código

* Aarch64: support LSE instructions

git-svn-id: trunk@49112 -
florian %!s(int64=4) %!d(string=hai) anos
pai
achega
f3d8efc8ec

+ 20 - 1
compiler/aarch64/a64att.inc

@@ -397,5 +397,24 @@
 'lsr',
 'ror',
 'neg',
-'ins'
+'ins',
+'cas',
+'casp',
+'ldadd',
+'ldclr',
+'ldeor',
+'ldset',
+'ldsmax',
+'ldsmin',
+'ldumax',
+'ldumin',
+'stadd',
+'stclr',
+'steor',
+'stset',
+'stsmax',
+'stsmin',
+'stumax',
+'stumin',
+'swp'
 );

+ 19 - 0
compiler/aarch64/a64atts.inc

@@ -397,5 +397,24 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
 attsufNONE
 );

+ 40 - 0
compiler/aarch64/a64ins.dat

@@ -798,3 +798,43 @@
 
 [INS]
 
+; Large System Extensions
+
+[CAS]
+
+[CASP]
+
+[LDADD]
+
+[LDCLR]
+
+[LDEOR]
+
+[LDSET]
+
+[LDSMAX]
+
+[LDSMIN]
+
+[LDUMAX]
+
+[LDUMIN]
+
+[STADD]
+
+[STCLR]
+
+[STEOR]
+
+[STSET]
+
+[STSMAX]
+
+[STSMIN]
+
+[STUMAX]
+
+[STUMIN]
+
+[SWP]
+

+ 20 - 1
compiler/aarch64/a64op.inc

@@ -397,5 +397,24 @@ A_LSL,
 A_LSR,
 A_ROR,
 A_NEG,
-A_INS
+A_INS,
+A_CAS,
+A_CASP,
+A_LDADD,
+A_LDCLR,
+A_LDEOR,
+A_LDSET,
+A_LDSMAX,
+A_LDSMIN,
+A_LDUMAX,
+A_LDUMIN,
+A_STADD,
+A_STCLR,
+A_STEOR,
+A_STSET,
+A_STSMAX,
+A_STSMIN,
+A_STUMAX,
+A_STUMIN,
+A_SWP
 );

+ 2 - 0
compiler/aarch64/aasmcpu.pas

@@ -882,6 +882,8 @@ implementation
                   else
                     result:=sr_complex;
                 end;
+              A_LDADD,
+              A_STADD,
               A_LDAR,
               A_LDAXR,
               A_LDXR,