[LLVMbugs] [Bug 6335] New: TargetLowering:: SimplifyDemandedBits incorrectly handles vector types on Truncate
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Wed Feb 17 16:04:12 PST 2010
http://llvm.org/bugs/show_bug.cgi?id=6335
Summary: TargetLowering::SimplifyDemandedBits incorrectly handles
vector types on Truncate
Product: libraries
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Common Code Generator Code
AssignedTo: unassignedbugs at nondot.org
ReportedBy: micah.villmow at amd.com
CC: llvmbugs at cs.uiuc.edu
the code at lines 1394 and 1405 only get value ValueSize in bits instead of the
scalar size.
This was fixed in the sign extension instructions but not truncate.
TargetLowering:1394
APInt TruncMask = NewMask;
TruncMask.zext(Op.getOperand(0).getValueSizeInBits());
if (SimplifyDemandedBits(Op.getOperand(0), TruncMask,
KnownZero, KnownOne, TLO, Depth+1))
Needs to be:
unsigned OperandBitWidth =
Op.getOperand(0).getValueType().getScalarType().getSizeInBits();
APInt TruncMask = NewMask;
TruncMask.zext(OperandBitWidth);
if (SimplifyDemandedBits(Op.getOperand(0), TruncMask,
KnownZero, KnownOne, TLO, Depth+1))
Again:
if (Op.getOperand(0).getNode()->hasOneUse()) {
SDValue In = Op.getOperand(0);
unsigned InBitWidth = In.getValueSizeInBits();
switch (In.getOpcode()) {
Needs to be:
if (Op.getOperand(0).getNode()->hasOneUse()) {
SDValue In = Op.getOperand(0);
unsigned InBitWidth = In.getValueType().getScalarType().getSizeInBits();
switch (In.getOpcode()) {
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list