* (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} {$ifdef i8086}
cpuinfo, cpuinfo,
{$endif i8086} {$endif i8086}
{$ifdef xtensa}
cpuinfo,
{$endif xtensa}
cgbase,procinfo cgbase,procinfo
; ;
@ -1591,7 +1594,7 @@ implementation
(thenstmnt.nodetype=assignn) and (elsestmnt.nodetype=assignn) and (thenstmnt.nodetype=assignn) and (elsestmnt.nodetype=assignn) and
not(might_have_sideeffects(left)) and not(might_have_sideeffects(left)) and
tassignmentnode(thenstmnt).left.isequal(tassignmentnode(elsestmnt).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).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 (tassignmentnode(thenstmnt).right.isequal(taddnode(left).right) and (tassignmentnode(elsestmnt).right.isequal(taddnode(left).left)))) then
begin begin

View File

@ -141,7 +141,8 @@ Const
CPUXTENSA_HAS_BOOLEAN_OPTION, CPUXTENSA_HAS_BOOLEAN_OPTION,
CPUXTENSA_HAS_MUL32HIGH, CPUXTENSA_HAS_MUL32HIGH,
CPUXTENSA_HAS_DIV, CPUXTENSA_HAS_DIV,
CPUXTENSA_HAS_LOOPS CPUXTENSA_HAS_LOOPS,
CPUXTENSA_HAS_MINMAX
); );
tfpuflags = tfpuflags =
@ -155,7 +156,7 @@ Const
( (
{ cpu_none } [], { cpu_none } [],
{ cpu_lx106 } [], { 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 = fpu_capabilities : array[tfputype] of set of tfpuflags =