Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose...

36
Basic Block DAG Peephole Optimization Thanks! HACS Q&A Introduction to Optimization 1 Kristoffer H. Rose [email protected] Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December 5, 2013 1 ALSU §§8.5,7 Introduction to Optimization Kris Rose

Transcript of Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose...

Page 1: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Introduction to Optimization1

Kristoffer H. [email protected]

Compiler ConstructionCSCI-GA.2130-001/Fall 2013

NYU Courant Institute

December 5, 2013

1ALSU §§8.5,7Introduction to Optimization Kris Rose

Page 2: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Context

sourceprogram

FrontEnd// Code

OptimizerIR// Code

GeneratorIR// target

program//

Introduction to Optimization Kris Rose

Page 3: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

1 Basic Block DAG

2 Peephole Optimization

3 Thanks!

4 HACS Q&A

Introduction to Optimization Kris Rose

Page 4: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

DAG – Directed Acyclic Graph

I One node per initial value.I One node per statement, with an edge to last node

observing every parameter.I Node labeled by operator and list of variables not used

further.I Output nodes are those with live exit variables.

Introduction to Optimization Kris Rose

Page 5: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

DAG uses

I Local common subexpressions.I Dead code elimination.I Apply albegraic simplifications.I Reorder statements to reduce variable count.

Introduction to Optimization Kris Rose

Page 6: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Local Common Subexpressions

1 a = b + c2 b = a - d3 c = b + c4 d = a - d

b0 c0

+

�� ��

a d0

�� ��

b,d

+

��

qq

c

Introduction to Optimization Kris Rose

Page 7: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Local Common Subexpressions

1 a = b + c2 b = a - d3 c = b + c4 d = a - d

b0 c0

+

�� ��

a d0

�� ��

b,d

+

��

qq

c

Introduction to Optimization Kris Rose

Page 8: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Dead Code Elimination

Inputs: b,c,d1 a = b + c2 b = b - c3 c = c + d4 e = b + c

Outputs: a,bb0 c0 d0

+

�� ##

a −

{{ ##

b +

{{ ��

c

+

�� ��

e

Introduction to Optimization Kris Rose

Page 9: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Dead Code Elimination

Inputs: b,c,d1 a = b + c2 b = b - c3 c = c + d4 e = b + c

Outputs: a,bb0 c0 d0

+

�� ##

a −

{{ ##

b +

{{ ��

c

+

�� ��

e

Introduction to Optimization Kris Rose

Page 10: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Algebraic Identities

x + 0 = 0 + x = x x − 0 = xx × 1 = 1× x = x x/1 = x

EXPENSIVE CHEAPER

x2 = x × x2× x = x + x

x/2 = x × 0.5

Introduction to Optimization Kris Rose

Page 11: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Algebraic Identities

x + 0 = 0 + x = x x − 0 = xx × 1 = 1× x = x x/1 = x

EXPENSIVE CHEAPER

x2 = x × x2× x = x + x

x/2 = x × 0.5

Introduction to Optimization Kris Rose

Page 12: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Algebraic Identities

I Constant foldingI Commutativity with Local Common SubexpressionsI Associativity with composite expressions

1 a = c + b2 e = c + d + b

b0 c0

+

�� ��

a d0

+

�� ��

e

Introduction to Optimization Kris Rose

Page 13: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Algebraic Identities

I Constant foldingI Commutativity with Local Common SubexpressionsI Associativity with composite expressions

1 a = c + b2 e = c + d + b

b0 c0

+

�� ��

a d0

+

�� ��

e

Introduction to Optimization Kris Rose

Page 14: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Algebraic Identities

I Constant foldingI Commutativity with Local Common SubexpressionsI Associativity with composite expressions

1 a = c + b2 e = c + d + b

b0 c0

+

�� ��

a d0

+

�� ��

e

Introduction to Optimization Kris Rose

Page 15: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Array References

1 x = a[i]2 a[j] = y3 z = a[i]

a0 i0 j0 y0

=[]

�� ��

xKilled!

[]=

tt�� ��

=[]

�� ��

z

Introduction to Optimization Kris Rose

Page 16: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Array References

1 x = a[i]2 a[j] = y3 z = a[i]

a0 i0 j0 y0

=[]

�� ��

xKilled!

[]=

tt�� ��

=[]

�� ��

z

Introduction to Optimization Kris Rose

Page 17: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

No Pointing!

1 x = *p2 *q = y

Needs pointer (“points-to”) analysis!

Introduction to Optimization Kris Rose

Page 18: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

No Pointing!

1 x = *p2 *q = y

Needs pointer (“points-to”) analysis!

Introduction to Optimization Kris Rose

Page 19: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Back to Code

b0 c0

+

�� ��

a d0

�� ��

b,d

+

��

qq

c

1 a = b + c2 b = a - d3 c = b + c4 d = b

Respect ordering, pay special attention to overlapping sideeffects!

Introduction to Optimization Kris Rose

Page 20: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Back to Code

b0 c0

+

�� ��

a d0

�� ��

b,d

+

��

qq

c

1 a = b + c2 b = a - d3 c = b + c4 d = b

Respect ordering, pay special attention to overlapping sideeffects!

Introduction to Optimization Kris Rose

Page 21: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Back to Code

b0 c0

+

�� ��

a d0

�� ��

b,d

+

��

qq

c

1 a = b + c2 b = a - d3 c = b + c4 d = b

Respect ordering, pay special attention to overlapping sideeffects!

Introduction to Optimization Kris Rose

Page 22: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

1 Basic Block DAG

2 Peephole Optimization

3 Thanks!

4 HACS Q&A

Introduction to Optimization Kris Rose

Page 23: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Redundant Load&Store

1 LD R0, a2 ST a, R0

1 LD R0, a

Introduction to Optimization Kris Rose

Page 24: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Redundant Load&Store

1 LD R0, a2 ST a, R0

1 LD R0, a

Introduction to Optimization Kris Rose

Page 25: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Unreachable Code

1 if debug == 1 goto L12 goto L23 L1: compute-and-print-really-big-expensive-stuff4 L2:

1 if debug != 1 goto L22 L1: compute-and-print-really-big-expensive-stuff3 L2:

With debug = 0,1 L2:

Introduction to Optimization Kris Rose

Page 26: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Unreachable Code

1 if debug == 1 goto L12 goto L23 L1: compute-and-print-really-big-expensive-stuff4 L2:

1 if debug != 1 goto L22 L1: compute-and-print-really-big-expensive-stuff3 L2:

With debug = 0,1 L2:

Introduction to Optimization Kris Rose

Page 27: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Unreachable Code

1 if debug == 1 goto L12 goto L23 L1: compute-and-print-really-big-expensive-stuff4 L2:

1 if debug != 1 goto L22 L1: compute-and-print-really-big-expensive-stuff3 L2:

With debug = 0,1 L2:

Introduction to Optimization Kris Rose

Page 28: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Flow of Control

1 goto L12 . . .3 L1: goto L2

1 goto L22 . . .3 L1: goto L2

Introduction to Optimization Kris Rose

Page 29: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Flow of Control

1 goto L12 . . .3 L1: goto L2

1 goto L22 . . .3 L1: goto L2

Introduction to Optimization Kris Rose

Page 30: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Flow of Control

1 goto L12 . . .3 L1: if a < b goto L24 L3:

1 if a < b goto L22 goto L33 . . .4 L3:

Introduction to Optimization Kris Rose

Page 31: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Flow of Control

1 goto L12 . . .3 L1: if a < b goto L24 L3:

1 if a < b goto L22 goto L33 . . .4 L3:

Introduction to Optimization Kris Rose

Page 32: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Just the Beginning. . .

I Peephole vs Good Code GeneratorI Everything above has better analysis-based solutions

Introduction to Optimization Kris Rose

Page 33: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

1 Basic Block DAG

2 Peephole Optimization

3 Thanks!

4 HACS Q&A

Introduction to Optimization Kris Rose

Page 34: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

Finally. . .

I Evaluations!I Project Milestone 3 on Sunday.I Exam:

I 5:10 pm–7:00 pm, December 12, 2013, Room WWH 312.I Closed book.I All ALSU sections quoted on class web page.

Introduction to Optimization Kris Rose

Page 35: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

1 Basic Block DAG

2 Peephole Optimization

3 Thanks!

4 HACS Q&A

Introduction to Optimization Kris Rose

Page 36: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December

Basic Block DAG Peephole Optimization Thanks! HACS Q&A

The End

Introduction to Optimization Kris Rose