From 5df5a22d1a098961edebac59fbddcab045fddd29 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Sat, 15 Jan 2011 21:19:37 +0000 Subject: Add an assert so we don't silently miscompile ctpop for bit widths > 128. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123549 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lib/CodeGen/SelectionDAG/LegalizeDAG.cpp') diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 3a29424..477cf09 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -2389,6 +2389,7 @@ SDValue SelectionDAGLegalize::ExpandBSWAP(SDValue Op, DebugLoc dl) { } /// SplatByte - Distribute ByteVal over NumBits bits. +// FIXME: Move this helper to a common place. static APInt SplatByte(unsigned NumBits, uint8_t ByteVal) { APInt Val = APInt(NumBits, ByteVal); unsigned Shift = 8; @@ -2410,6 +2411,9 @@ SDValue SelectionDAGLegalize::ExpandBitCount(unsigned Opc, SDValue Op, EVT ShVT = TLI.getShiftAmountTy(); unsigned Len = VT.getSizeInBits(); + assert(VT.isInteger() && Len <= 128 && Len % 8 == 0 && + "CTPOP not implemented for this type."); + // This is the "best" algorithm from // http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel -- cgit v1.1