forked from OSchip/llvm-project
Get the type of a shift from the shift, not from its shift
count operand. These should be the same but apparently are not always, and this is cleaner anyway. This improves the code in an existing test. llvm-svn: 122354
This commit is contained in:
parent
d64931df77
commit
fa5dc82fda
|
@ -3178,7 +3178,7 @@ SDValue DAGCombiner::visitSRL(SDNode *N) {
|
|||
uint64_t c1 =
|
||||
cast<ConstantSDNode>(N0.getOperand(0)->getOperand(1))->getZExtValue();
|
||||
uint64_t c2 = N1C->getZExtValue();
|
||||
EVT InnerShiftVT = N0.getOperand(0)->getOperand(1).getValueType();
|
||||
EVT InnerShiftVT = N0.getOperand(0).getValueType();
|
||||
uint64_t InnerShiftSize = InnerShiftVT.getScalarType().getSizeInBits();
|
||||
// This is only valid if the OpSizeInBits + c1 = size of inner shift.
|
||||
if (c1 + OpSizeInBits == InnerShiftSize) {
|
||||
|
|
|
@ -29,9 +29,9 @@ entry:
|
|||
ret i8 %div
|
||||
|
||||
; CHECK: test3:
|
||||
; CHECK: imull $171, %eax, %eax
|
||||
; CHECK-NEXT: shrb %ah
|
||||
; CHECK-NEXT: movzbl %ah, %eax
|
||||
; CHECK: movzbl 8(%esp), %eax
|
||||
; CHECK-NEXT: imull $171, %eax, %eax
|
||||
; CHECK-NEXT: shrl $9, %eax
|
||||
; CHECK-NEXT: ret
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue