1*9880d681SAndroid Build Coastguard Worker; RUN: opt -instcombine -S < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; PR12541 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine i32 @foo(i32 %x) { 5*9880d681SAndroid Build Coastguard Worker %y = xor i32 %x, 3 6*9880d681SAndroid Build Coastguard Worker %z = srem i32 1656690544, %y 7*9880d681SAndroid Build Coastguard Worker %sext = shl i32 %z, 24 8*9880d681SAndroid Build Coastguard Worker %s = ashr exact i32 %sext, 24 9*9880d681SAndroid Build Coastguard Worker ret i32 %s 10*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: and 11*9880d681SAndroid Build Coastguard Worker; The shifts were wrongly being turned into an and with 112 12*9880d681SAndroid Build Coastguard Worker} 13