* (modified) patch by Christo Crause: ESP8266 doesn't support min/max instructions, resolves #38175

git-svn-id: trunk@47699 -
This commit is contained in:
florian 2020-12-06 16:37:54 +00:00
parent 92520c423e
commit 4f3271500a
2 changed files with 7 additions and 3 deletions

View File

@ -302,6 +302,9 @@ implementation
{$ifdef i8086}
cpuinfo,
{$endif i8086}
{$ifdef xtensa}
cpuinfo,
{$endif xtensa}
cgbase,procinfo
;
@ -1591,7 +1594,7 @@ implementation
(thenstmnt.nodetype=assignn) and (elsestmnt.nodetype=assignn) and
not(might_have_sideeffects(left)) and
tassignmentnode(thenstmnt).left.isequal(tassignmentnode(elsestmnt).left) and
is_32bitint(tassignmentnode(thenstmnt).right.resultdef) and
(CPUXTENSA_HAS_MINMAX in cpu_capabilities[current_settings.cputype]) and is_32bitint(tassignmentnode(thenstmnt).right.resultdef) and
((tassignmentnode(thenstmnt).right.isequal(taddnode(left).left) and (tassignmentnode(elsestmnt).right.isequal(taddnode(left).right))) or
(tassignmentnode(thenstmnt).right.isequal(taddnode(left).right) and (tassignmentnode(elsestmnt).right.isequal(taddnode(left).left)))) then
begin

View File

@ -141,7 +141,8 @@ Const
CPUXTENSA_HAS_BOOLEAN_OPTION,
CPUXTENSA_HAS_MUL32HIGH,
CPUXTENSA_HAS_DIV,
CPUXTENSA_HAS_LOOPS
CPUXTENSA_HAS_LOOPS,
CPUXTENSA_HAS_MINMAX
);
tfpuflags =
@ -155,7 +156,7 @@ Const
(
{ cpu_none } [],
{ cpu_lx106 } [],
{ cpu_lx6 } [CPUXTENSA_REGWINDOW, CPUXTENSA_HAS_SEXT, CPUXTENSA_HAS_NSAx, CPUXTENSA_HAS_BOOLEAN_OPTION, CPUXTENSA_HAS_MUL32HIGH, CPUXTENSA_HAS_DIV, CPUXTENSA_HAS_LOOPS]
{ cpu_lx6 } [CPUXTENSA_REGWINDOW, CPUXTENSA_HAS_SEXT, CPUXTENSA_HAS_NSAx, CPUXTENSA_HAS_BOOLEAN_OPTION, CPUXTENSA_HAS_MUL32HIGH, CPUXTENSA_HAS_DIV, CPUXTENSA_HAS_LOOPS, CPUXTENSA_HAS_MINMAX]
);
fpu_capabilities : array[tfputype] of set of tfpuflags =