From c5ee3b6735e334fea5b9fc6ce50c34a1651871aa Mon Sep 17 00:00:00 2001 From: ceriel Date: Thu, 9 Nov 1989 18:43:02 +0000 Subject: [PATCH] Added patterns --- mach/i86/ncg/table | 128 ++++++++++++++++++++++++++------------------- 1 file changed, 75 insertions(+), 53 deletions(-) diff --git a/mach/i86/ncg/table b/mach/i86/ncg/table index 56b3d942e..bc3be1a37 100644 --- a/mach/i86/ncg/table +++ b/mach/i86/ncg/table @@ -449,6 +449,9 @@ PATTERNS pat loc yields {ANYCON,$1} +pat ldc loww($1)==0 && highw($1)==0 +uses REG = {ANYCON, 0} yields %a %a + pat ldc yields {ANYCON,highw($1)} {ANYCON,loww($1)} @@ -1997,6 +2000,8 @@ with rmorconst REG pat loc and $1==65535 && $2==2 +pat loc and $1==0 && $2==2 leaving asp 2 loc 0 + pat and $1==4 with EXACT REG REG rmorconst rmorconst gen and %1,%3 @@ -2005,9 +2010,13 @@ with rmorconst rmorconst REG REG gen and %3,%1 and %4,%2 yields %4 %3 -pat ldc and highw($1)==(0-1) && $2==4 -with REG - gen and %1,{ANYCON, loww($1)} yields %1 +pat ldc and highw($1)==(0-1) && $2==4 leaving loc loww($1) and 2 + +pat ldc and loww($1)==0 && $2==4 leaving asp 2 loc highw($1) and 2 loc 0 + +pat ldc and loww($1)==65535 && $2==4 +with rmorconst REG + gen and %2,{ANYCON, highw($1)} yields %2 %1 pat ldc and highw($1)==0 && $2==4 with REG rmorconst @@ -2029,6 +2038,10 @@ with REG rmorconst with rmorconst REG gen or %2,%1 yields %2 +pat loc ior $1==0 && $2==2 + +pat loc ior $1==65535 && $2==2 leaving asp 2 loc $1 + pat ior $1==4 with EXACT REG REG rmorconst rmorconst gen or %1,%3 @@ -2041,9 +2054,13 @@ pat ldc ior highw($1)==(0-1) && $2==4 with REG rmorconst gen or %1,{ANYCON, loww($1)} yields {ANYCON,0-1} %1 -pat ldc ior highw($1)==0 && $2==4 -with REG - gen or %1,{ANYCON, loww($1)} yields %1 +pat ldc ior highw($1)==0 && $2==4 leaving loc loww($1) ior 2 + +pat ldc ior loww($1)==65535 && $2==4 leaving asp 2 loc highw($1) ior 2 loc 0-1 + +pat ldc ior loww($1)==0 && $2==4 +with rmorconst REG + gen or %2,{ANYCON, highw($1)} yields %2 %1 pat ior defined($1) kills ALL @@ -2471,6 +2488,32 @@ pat cmp zgt call cmxzxx("ja","jb") pat cms zeq $1==2 call cmxzxx("je","je") pat cms zne $1==2 call cmxzxx("jne","jne") +proc cmx4zxx example cmi zlt +with regorconst regorconst rm rm STACK + gen cmp %4,%2 + jxx[1] {label,$2} + jne {label,1f} + cmp %3,%1 + jxx[2] {label,$2} + 1: +with rm rm regorconst regorconst STACK + gen cmp %2,%4 + jxx[3] {label,$2} + jne {label,1f} + cmp %1,%3 + jxx[4] {label,$2} + 1: + +pat cmi zlt $1==4 call cmx4zxx("jl", "jb", "jg", "ja") +pat cmi zle $1==4 call cmx4zxx("jl", "jbe", "jg", "jae") +pat cmi zgt $1==4 call cmx4zxx("jg", "ja", "jl", "jb") +pat cmi zge $1==4 call cmx4zxx("jg", "jae", "jl", "jbe") + +pat cmu zlt $1==4 call cmx4zxx("jb", "jb", "ja", "ja") +pat cmu zle $1==4 call cmx4zxx("jb", "jbe", "ja", "jae") +pat cmu zgt $1==4 call cmx4zxx("ja", "ja", "jb", "jb") +pat cmu zge $1==4 call cmx4zxx("ja", "jae", "jb", "jbe") + pat ldc cmi zlt highw($1)==0 && loww($1)==0 && $2==4 with rmorconst rmorconst yields %2 leaving zlt $3 @@ -2483,16 +2526,6 @@ with rmorconst rmorconst yields %2 leaving zge $3 pat ldc cmi tge highw($1)==0 && loww($1)==0 && $2==4 with rmorconst rmorconst yields %2 leaving tge $3 -pat ldc cmi zle highw($1)==0 && loww($1)==0 && $2==4 -with rmorconst rmorconst -uses REG = {ANYCON, 0} - gen cmp %a,%2 - jg {label,$3} - jl {label,1f} - cmp %a,%1 - je {label,$3} - 1: - pat ldc cmi tle highw($1)==0 && loww($1)==0 && $2==4 with rmorconst rmorconst uses REG = {ANYCON, 0} @@ -2505,16 +2538,6 @@ uses REG = {ANYCON, 0} inc %a 1: yields %a -pat ldc cmi zgt highw($1)==0 && loww($1)==0 && $2==4 -with rmorconst rmorconst -uses REG = {ANYCON, 0} - gen cmp %a,%2 - jl {label,$3} - jg {label,1f} - cmp %a,%1 - jne {label,$3} - 1: - pat ldc cmi tgt highw($1)==0 && loww($1)==0 && $2==4 with rmorconst rmorconst uses REG = {ANYCON, 0} @@ -2527,16 +2550,6 @@ uses REG = {ANYCON, 0} inc %a 1: yields %a -pat ldc cmu zgt highw($1)==0 && loww($1)==0 && $2==4 -with rmorconst rmorconst -uses REG = {ANYCON, 0} - gen cmp %a,%2 - jl {label,$3} - jg {label,1f} - cmp %a,%1 - jne {label,$3} - 1: - pat ldc cmu tgt highw($1)==0 && loww($1)==0 && $2==4 with rmorconst rmorconst uses REG = {ANYCON, 0} @@ -2565,6 +2578,32 @@ with REG rmorconst STACK gen or %1,%2 jne {label,$3} +pat ldc cms teq $2==4 && loww($1)==0 && highw($1)==0 +with rmorconst REG STACK +uses REG = {ANYCON, 0} + gen or %2,%1 + jne {label,1f} + inc %a + 1: yields %a +with REG rmorconst STACK +uses REG = {ANYCON, 0} + gen or %1,%2 + jne {label,1f} + inc %a + 1: yields %a + +pat ldc cms tne $2==4 && loww($1)==0 && highw($1)==0 +with rmorconst REG STACK + gen or %2,%1 + je {label,1f} + inc %2 + 1: yields %2 +with REG rmorconst STACK + gen or %1,%2 + je {label,1f} + inc %1 + 1: yields %1 + pat ldc cms zeq $2==4 && loww($1)==65535 && highw($1)==(0-1) with rmorconst REG STACK gen and %2,%1 @@ -2585,21 +2624,6 @@ with REG rmorconst STACK cmp %1,{ANYCON,0-1} jne {label,$3} -pat ldc cms zeq $2==4 -with rm rm STACK - gen cmp %1, {ANYCON, loww($1)} - jne {label,1f} - cmp %2, {ANYCON, highw($1)} - je {label,$3} - 1: - -pat ldc cms zne $2==4 -with rm rm STACK - gen cmp %1, {ANYCON, loww($1)} - jne {label,$3} - cmp %2, {ANYCON, highw($1)} - jne {label,$3} - pat cms zne $1==4 with regorconst regorconst rm rm STACK gen cmp %3,%1 @@ -2607,7 +2631,6 @@ with regorconst regorconst rm rm STACK cmp %4,%2 jne {label,$2} with rm rm regorconst regorconst STACK -kills ALL gen cmp %1,%3 jne {label,$2} cmp %2,%4 @@ -2621,7 +2644,6 @@ with regorconst regorconst rm rm STACK je {label,$2} 1: with rm rm regorconst regorconst STACK -kills ALL gen cmp %1,%3 jne {label,1f} cmp %2,%4 -- 2.34.1