Turn sdiv into udiv if both operands have a clear sign bit. This occurs
authorChris Lattner <sabre@nondot.org>
Sat, 5 Nov 2005 07:40:31 +0000 (07:40 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 5 Nov 2005 07:40:31 +0000 (07:40 +0000)
commitc812e5d6b87990ca5d882fbc759fd6f2e0d5b681
tree212452fd0f9d159a1ef4c71d72e39b6216a2c960
parent11a49f2c0d26751dc3639578d879955cbbfa1ec5
Turn sdiv into udiv if both operands have a clear sign bit.  This occurs
a few times in crafty:

OLD:    %tmp.36 = div int %tmp.35, 8            ; <int> [#uses=1]
NEW:    %tmp.36 = div uint %tmp.35, 8           ; <uint> [#uses=0]
OLD:    %tmp.19 = div int %tmp.18, 8            ; <int> [#uses=1]
NEW:    %tmp.19 = div uint %tmp.18, 8           ; <uint> [#uses=0]
OLD:    %tmp.117 = div int %tmp.116, 8          ; <int> [#uses=1]
NEW:    %tmp.117 = div uint %tmp.116, 8         ; <uint> [#uses=0]
OLD:    %tmp.92 = div int %tmp.91, 8            ; <int> [#uses=1]
NEW:    %tmp.92 = div uint %tmp.91, 8           ; <uint> [#uses=0]

Which all turn into shrs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24190 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/InstructionCombining.cpp