[InstCombine] relax masking requirement for truncated funnel/rotate match
I was investigating a seemingly unrelated improvement in demanded bits for shift-left, but that caused regressions on these tests because we were able to look through/eliminate the mask. https://alive2.llvm.org/ce/z/Ztdr22 define i8 @src(i32 %x, i32 %y, i32 %shift) { %and = and i32 %shift, 3 %conv = and i32 %x, 255 %shr = lshr i32 %conv, %and %sub = sub i32 8, %and %shl = shl i32 %y, %sub %or = or i32 %shr, %shl %conv2 = trunc i32 %or to i8 ret i8 %conv2 } define i8 @tgt(i32 %x, i32 %y, i32 %shift) { %x8 = trunc i32 %x to i8 %y8 = trunc i32 %y to i8 %shift8 = trunc i32 %shift to i8 %and = and i8 %shift8, 3 %conv2 = call i8 @llvm.fshr.i8(i8 %y8, i8 %x8, i8 %and) ret i8 %conv2 } declare i8 @llvm.fshr.i8(i8,i8,i8)
Loading
Please register or sign in to comment