Generierung lokaler Optimierungen - IPD Snelting
Generierung lokaler Optimierungen - IPD Snelting
Generierung lokaler Optimierungen - IPD Snelting
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
4 Implementierung<br />
Variablen von m, wie in der Abbildung gezeigt, kann ein semantisch äquivalentes Muster<br />
zu l in Form von m ′ gefunden und damit eine neue Regel erzeugt werden.<br />
Um zu garantieren, dass alle Ersetzungsregeln gefunden werden können, müssen neben<br />
dem eigentlichen Muster m auch alle Varianten von m berücksichtigt werden, die eine<br />
Permutation der Variablen von m darstellen. Zu diesem Zweck wird zunächst m durch<br />
den Vorabtest (Abschnitt 4.3.2) und den Erfüllbarkeitstest (Abschnitt 4.3.3) untersucht<br />
und anschließend nacheinander jede weitere Variante m ′ , bis ein äquivalentes Muster<br />
gefunden oder alle Varianten untersucht wurden. In Listing 4.1 wird dieser Vorgang als<br />
Codeausschnitt dargestellt. Die vollständige Prozedur zeigt Listing 4.7 in Abschnitt 4.4.<br />
Listing 4.1 Suche nach einem semantisch äquivalenten Muster<br />
1: . . .<br />
2: p ← m ⊲ Beginne Suche mit m<br />
3: m ′ ←⊥<br />
4: while p �=⊥ ∧ m ′ =⊥ do ⊲ Solange eine Permutation existiert und kein semantisch<br />
äquivalentes Muster gefunden wurde<br />
5: MCand ← Vorabtest(m, MOpt) ⊲ Kandidaten ermitteln<br />
6: m ′ ← ErfüllbarkeitsTest(m, MCand) ⊲ äquivalentes Muster suchen<br />
7: if m ′ =⊥ then<br />
8: p ← GetNextPermutation(p) ⊲ nächste Permutation erzeugen<br />
9: end if<br />
10: end while<br />
11: . . .<br />
Normalisierung bezüglich unterschiedlicher Operandentypen<br />
Viele Muster sind aufgrund algebraischer Eigenschaften wie der Kommutativität semantisch<br />
äquivalent, unterscheiden sich aber in ihrer syntaktischen Struktur wie Abbildung<br />
4.8 zeigt.<br />
var0 1<br />
add<br />
m<br />
Abbildung 4.8: Abbildung zweier semantisch äquivalenter aber syntaktisch verschiedener<br />
Muster.<br />
1<br />
add<br />
m ′<br />
var0<br />
31