Instruction Selection on SSA Graphs Sebastian Hack, Sebastian - - PowerPoint PPT Presentation

instruction selection on ssa graphs
SMART_READER_LITE
LIVE PREVIEW

Instruction Selection on SSA Graphs Sebastian Hack, Sebastian - - PowerPoint PPT Presentation

Instruction Selection on SSA Graphs Sebastian Hack, Sebastian Buchwald, Andreas Zwinkau Compiler Construction Course W2015 Instruction Selection Const Const Const Add Const Load Const Add ia32 Add 2 Instruction Selection on SSA


slide-1
SLIDE 1

Instruction Selection on SSA Graphs

Sebastian Hack, Sebastian Buchwald, Andreas Zwinkau Compiler Construction Course W2015

slide-2
SLIDE 2

Instruction Selection

Add Const Load Add Const Const ia32 Add Const Const

2

slide-3
SLIDE 3

Instruction Selection on SSA

“Optimal” instruction selection on trees is polynomial SSA programs are directed graphs = ⇒ Data dependence graphs Translating back from SSA graphs to trees is not satisfactory “Optimal” instruction selection is NP-complete on DAGs The problem is common subexpressions Doing it on graphs provides more opportunities for complex instructions:

◮ Patterns with multiple results ◮ DAG-like patterns 3

slide-4
SLIDE 4

Instruction Selection on SSA

Graph Rewriting For every machine instruction specify:

◮ A set of graphs (patterns) of IR nodes ◮ Every pattern has associated costs

1 Find all matchings of the patterns in the IR graph 2 Pick a correct and optimal matching 3 Replace each pattern by corresponding machine instruction

= ⇒ Result is an SSA graph with machine nodes

4

slide-5
SLIDE 5

Graphs

Let G = (V , E) be a directed acyclic graph (DAG) Let Op be a set of operators Every node has a degree deg v : V → N0 Every node v ∈ V has an operator: op : V → Op Every operator o ∈ Op has an arity # : Op → N0 Let ∈ Op be an operator with # = 0 Nodes with operator denote “glue” points in the patterns (later) Every node’s degree must match the operator’s arity: # op v = deg v

Definition (Program Graph)

A graph G is a program graph if it is acyclic and ∀v ∈ V : op v =

5

slide-6
SLIDE 6

Patterns

A graph P = (V , E) is rooted if there exists a node v ∈ VP such that there is a path from v to every node v′ in P If P is rooted, denote the root by rt P

Definition (Pattern Graph, Pattern)

A graph P is a pattern if it is acyclic and rooted

  • p rt P =

Note that we explicitly allow nodes with operator in patterns

6

slide-7
SLIDE 7

Equivalence of Nodes in Patterns

Complex patterns often have common sub-patterns Store Load Add Const Add Shall be treated as equivalent Selecting the common sub-pattern at the Add node shall enable selecting the complex instruction at Store and Load

7

slide-8
SLIDE 8

Equivalence of Nodes in Patterns

Definition (Equivalence of nodes)

Consider two patterns P and Q and two nodes v ∈ P, w ∈ Q: v ∼ w : ⇐ ⇒ v = w ∨ (span v ∼ = span w ∧ rt P = v ∧ rt Q = w) Either the two nodes are identical v, w are no pattern roots and their spanned subgraphs are isomorphic span v: induced subgraph that contains all nodes reachable from v

8

slide-9
SLIDE 9

Matching of a Node

Let P = {P1, P2, . . . } be a set of patterns Let G be some program graph

Definition (Matching)

A matching Mv of a node v ∈ VG with a set of patterns P is a family of pairs Mv =

  • (Pi, ıi)
  • i∈I

I ⊆ {1, . . . , |P|}

  • f patterns and injective graph morphisms ıi : Pi → G satisfying

v ∈ ran ıi and

  • p w = =

⇒ op w = op ıi(w) ∀w ∈ Pi

9

slide-10
SLIDE 10

Matchings

Example

Pattern PA Program Graph Pattern PB

Add

  • Shl
  • Const

Load Add

  • Shl
  • Const

Load Add Shl Const 10

slide-11
SLIDE 11

Selection

We have computed a covering of the graph i.e. instruction selection possibilities Now, find a subset of the covering that leads to good and correct code Cast the problem as a mathematical optimization problem: Partitioned Boolean Quadratic Programming (PBQP)

11

slide-12
SLIDE 12

PBQP

Let R∞ = R+ ∪ {∞} and

  • ci ∈ Rki

∞ be cost vectors

Cij ∈ Rki

∞ × Rkj ∞ be cost matrices

Definition (PBQP)

Minimize

  • 1≤i<j≤n
  • x⊤

i · Cij ·

xj +

  • 1≤i≤n
  • x⊤

i ·

ci with respect to

  • xi ∈ {0, 1}ki
  • x⊤

i ·

1 = 1, 1 ≤ i ≤ n

  • x⊤

i · Cij ·

xj < ∞, 1 ≤ i < j ≤ n

12

slide-13
SLIDE 13

PBQP

  • xi are selection vectors

Exactly one component is 1 This selects the component Cost matrices relate selection of made in different selection vectors Can be modelled as a graph:

◮ cost vectors are nodes ◮ matrices are edges ◮ only draw non-null matrix edges 13

slide-14
SLIDE 14

PBQP as a Graph

  • ci
  • cj

  3 1 8  

  • 2

4

 4 5 3 6 1 2  

Cij

Colors indicate selection vectors xi = (0 1 0)⊤ and xj = (1 0)⊤ This selection contributes the cost of 6 to the global costs Edge direction solely to indicate order of ij in the matrix subscript

14

slide-15
SLIDE 15

Mapping Instruction Selection to PBQP

Add Const u v Const

  • 50
  • Add

Add+Const 100 100

  • 0 ∞

∞ 0

  • Add
  • Add

Add Const

  • Add+Const

Const Const

15

slide-16
SLIDE 16

Mapping Instruction Selection to PBQP

Cost vectors are defined by node coverings: Let Mv be a node matching of v The alternatives of the node are given by partitioning the matchings by equivalence: Mv /∼ Common sub-patterns have to result in the same choice Costs come from an external specification

16

slide-17
SLIDE 17

Mapping Instruction Selection to PBQP

Matrices have to maintain selection correctness Consider two alternatives Au = (Pu, ıu) Av = (Pv, ıv) at two nodes u, v connected by an edge u → v. The matrix entry for those alternatives is c(Au, Av) =      ∞

  • p ı−1

u (v) = and ı−1 v (v) = rt Pv

  • p ı−1

u (v) = and ı−1 u (v) ∼ ı−1 v (v)

else Id est: If Au selects a leaf at v, Av has to select a root If Au does not select a leaf, both subpatters have to be equivalent

17

slide-18
SLIDE 18

Example

Program Graph

Load Load Add Phi Const

18

slide-19
SLIDE 19

Example

Patterns

Const C (Const) Phi P (Phi) Load

  • L (Load)

Add

  • A (Add)

Load Add Const

  • LAC (Load+Add+Const)

Load Add

  • LA (Load+Add)

Add Const

  • AC (Add+Const)

19

slide-20
SLIDE 20

Example

Matchings

Load Load Add Phi Const L1, LA1, LAC1 L2, LA2, LAC2 A, AC, LA1, LAC1, LA2, LAC2 C, AC, LAC1, LAC2 P

20

slide-21
SLIDE 21

Example

PBQP Instance

  L1 LA1 LAC1     L2 LA2 LAC2       A AC LA1, LA2 LAC1, LAC2    

  • C

AC, LAC1, LAC2

  • P

 0 0 ∞ ∞ ∞ ∞ 0 ∞ ∞ ∞ ∞ 0     0 0 ∞ ∞ ∞ ∞ 0 ∞ ∞ ∞ ∞ 0               0 ∞ ∞ 0 0 ∞ ∞ 0    

21

slide-22
SLIDE 22

Reducing the Problem

Optimality-preserving reductions of the problem: Independent edges (e.g. matrix of zeroes): Nodes of degree 1: Nodes of degree 2:

22

slide-23
SLIDE 23

Reducing the Problem

Heuristic Reduction: Chose the local minimum at a node Leads to a linear algorithm Each reduction eliminates at least one edge If all edges are reduced, minimizing nodes separately is easy

23

slide-24
SLIDE 24

Summary

Map instruction selection to an optimization problem SSA graphs are sparse = ⇒ reductions often applied In practice: heuristic reduction rarely happens Efficiently solvable Convenient mechanism:

◮ Implementor specifies patterns and costs ◮ maps each pattern to an machine node ◮ Rest is automatic

Criteria for pattern sets that allow for correct selections in every program not discussed here!

24

slide-25
SLIDE 25

Literature

Sebastian Buchwald and Andreas Zwinkau. Befehlsauswahl auf expliziten Abh¨ angigkeitsgraphen. Master’s thesis, Universit¨ at Karlsruhe (TH), Dec 2008. Erik Eckstein, Oliver K¨

  • nig, and Bernhard Scholz.

Code Instruction Selection Based on SSA-Graphs. In SCOPES, pages 49–65, 2003. Hannes Jakschitsch. Befehlsauswahl auf SSA-Graphen. Master’s thesis, Universit¨ at Karlsruhe, November 2004.

25