diff options
author | Chris Lattner <sabre@nondot.org> | 2003-07-24 17:35:25 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-07-24 17:35:25 +0000 |
commit | 24c8e38455539103a3f5e48564fce8acb62550f6 (patch) | |
tree | e33d31305c2bd9d72c536cdbfe5b332cd3cbc33d /tools/bugpoint/CodeGeneratorBug.cpp | |
parent | 8baa92ef0bc7a412c166a5d2ca0c7d31a2f0bd9a (diff) |
Allow folding several instructions into casts, which can simplify a lot
of codes. For example,
short kernel (short t1) {
t1 >>= 8; t1 <<= 8;
return t1;
}
became:
short %kernel(short %t1.1) {
%tmp.3 = shr short %t1.1, ubyte 8 ; <short> [#uses=1]
%tmp.5 = cast short %tmp.3 to int ; <int> [#uses=1]
%tmp.7 = shl int %tmp.5, ubyte 8 ; <int> [#uses=1]
%tmp.8 = cast int %tmp.7 to short ; <short> [#uses=1]
ret short %tmp.8
}
before, now it becomes:
short %kernel(short %t1.1) {
%tmp.3 = shr short %t1.1, ubyte 8 ; <short> [#uses=1]
%tmp.8 = shl short %tmp.3, ubyte 8 ; <short> [#uses=1]
ret short %tmp.8
}
which will become:
short %kernel(short %t1.1) {
%tmp.3 = and short %t1.1, 0xFF00
ret short %tmp.3
}
This implements cast-set.ll:test4 and test5
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7290 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/bugpoint/CodeGeneratorBug.cpp')
0 files changed, 0 insertions, 0 deletions