diff options
author | laksen <laksen@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2015-07-07 17:02:44 +0000 |
---|---|---|
committer | laksen <laksen@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2015-07-07 17:02:44 +0000 |
commit | 8d2b4f03a27501a98b89645be2389164646942df (patch) | |
tree | 93a30770a1d86e88548ebd4bb7d03135b5ec6c91 | |
parent | 6fbb70beb4055fa02fea45045b92a34e92d9b338 (diff) | |
download | fpc-8d2b4f03a27501a98b89645be2389164646942df.tar.gz |
Add missing ARM instructions to simple peephole optimizations and spilling_get_operation_type.
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/laksen@31198 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | intrinsics/compiler/arm/aasmcpu.pas | 4 | ||||
-rw-r--r-- | intrinsics/compiler/arm/aoptcpu.pas | 9 |
2 files changed, 11 insertions, 2 deletions
diff --git a/intrinsics/compiler/arm/aasmcpu.pas b/intrinsics/compiler/arm/aasmcpu.pas index 5f1ecbedc6..d225b74a58 100644 --- a/intrinsics/compiler/arm/aasmcpu.pas +++ b/intrinsics/compiler/arm/aasmcpu.pas @@ -803,7 +803,9 @@ implementation result := operand_read; //Thumb2 A_LSL, A_LSR, A_ROR, A_ASR, A_SDIV, A_UDIV, A_MOVW, A_MOVT, A_MLS, A_BFI, - A_SMMLA,A_SMMLS: + A_QADD, + A_PKHTB,A_PKHBT, + A_SMMLA,A_SMMLS,A_SMUAD,A_SMUSD: if opnr in [0] then result:=operand_write else diff --git a/intrinsics/compiler/arm/aoptcpu.pas b/intrinsics/compiler/arm/aoptcpu.pas index 43eab3a862..f227265ba0 100644 --- a/intrinsics/compiler/arm/aoptcpu.pas +++ b/intrinsics/compiler/arm/aoptcpu.pas @@ -1482,7 +1482,14 @@ Implementation A_ORR, A_MLA, A_MLS, - A_MUL: + A_MUL, + A_QADD,A_QADD16,A_QADD8, + A_QSUB,A_QSUB16,A_QSUB8, + A_QDADD,A_QDSUB,A_QASX,A_QSAX, + A_SHADD16,A_SHADD8,A_UHADD16,A_UHADD8, + A_SHSUB16,A_SHSUB8,A_UHSUB16,A_UHSUB8, + A_PKHTB,A_PKHBT, + A_SMUAD,A_SMUSD: begin { optimize |