summaryrefslogtreecommitdiff
path: root/src/pdk/peeph.def
blob: bac385a8cbebbcf4b31fa6fd36f4d3974c1b1dc8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// peeph.def - PDK peephole rules

replace restart {
	mov	%1, %2
} by {
	; peephole 0 removed dead load into %1 from %2.
} if notUsed(%1)

replace restart {
	mov	%1, a
	mov	a, %1
} by {
	mov	%1, a
	; peephole 1 removed redundant load from %1 into a.
} if notVolatile(%1)


replace restart {
	mov	a, #%1
	ret
} by {
	; peephole 2 moved load to ret.
	ret	#%1
}

replace restart {
	xch	a, %1
	xch	a, %1
} by {
	; peephole 3 removed redundant double exchange between a and %1.
} if notVolatile(%1)

replace restart {
	mov	a, #0x00
	slc	a
	and	a, #0x01
} by {
	mov	a, #0x00
	slc	a
	; peephole 4 removed redundant and.
}

replace restart {
%1:
} by {
	; peephole j0 removed unused label %1.
} if labelRefCount(%1 0)

replace restart {
	ret	%1
	ret
} by {
	ret	%1
	; peephole j1 removed redundant ret after ret k.
}