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
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Fix Ordered/Unordered FP stuff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
improve bytezap opertunities
ulong %foo(ulong %y) {
entry:
%tmp = and ulong %y, 65535
%tmp2 = shr ulong %tmp, ubyte 3
ret ulong %tmp2
}
compiles to a 3 instruction sequence without instcombine
zapnot $16,3,$0
srl $0,3,$0
ret $31,($26),1
After instcombine you get
ulong %foo(ulong %y) {
entry:
%tmp = shr ulong %y, ubyte 3 ; <ulong> [#uses=1]
%tmp2 = and ulong %tmp, 8191 ; <ulong> [#uses=1]
ret ulong %tmp2
}
which compiles to
lda $0,8191($31)
srl $16,3,$1
and $1,$0,$0
ret $31,($26),1
|