<html>
<head>
<base href="http://llvm.org/bugs/" />
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW --- - "Do not know how to scalarize this operator's operand!" when compiling for arm"
href="http://llvm.org/bugs/show_bug.cgi?id=17388">17388</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>"Do not know how to scalarize this operator's operand!" when compiling for arm
</td>
</tr>
<tr>
<th>Product</th>
<td>clang
</td>
</tr>
<tr>
<th>Version</th>
<td>trunk
</td>
</tr>
<tr>
<th>Hardware</th>
<td>Other
</td>
</tr>
<tr>
<th>OS</th>
<td>other
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>release blocker
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>-New Bugs
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedclangbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>justincohen@google.com
</td>
</tr>
<tr>
<th>CC</th>
<td>llvmbugs@cs.uiuc.edu
</td>
</tr>
<tr>
<th>Classification</th>
<td>Unclassified
</td>
</tr></table>
<p>
<div>
<pre>/* Filename: SkDraw.cpp
* File simplified used multidelta, originally @
<a href="https://code.google.com/p/skia/source/browse/trunk/src/core/SkDraw.cpp">https://code.google.com/p/skia/source/browse/trunk/src/core/SkDraw.cpp</a>
*
* Compiles with
* llvm-build/Release+Asserts/bin/clang -cc1 -triple thumbv7-apple-ios6.0.0
-emit-obj -target-abi apcs-gnu -mfloat-abi soft -target-feature
+soft-float-abi -Os -vectorize-slp -x c++ SkDraw.cpp
*
* Fails with:
* ScalarizeVectorOperand Op #0: 0x1028b3c10: v1i64 = truncate 0x1028b0b10
[ORD=24] [ID=0]
* Do not know how to scalarize this operator's operand!
* UNREACHABLE executed at
<snip>/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp:366!
*/
typedef int int32_t;
extern "C" {
extern float ceilf(float);
extern float floorf(float);
}
typedef float SkScalar;
struct SkIRect {
int32_t fLeft, fTop, fRight, fBottom;
bool isEmpty() const {
return fLeft >= fRight || fTop >= fBottom;
}
void set(int32_t left, int32_t top, int32_t right, int32_t bottom) {
fLeft = left;
fTop = top;
fRight = right;
fBottom = bottom;
}
void inset(int32_t dx, int32_t dy) {
fLeft += dx;
fTop += dy;
fRight -= dx;
fBottom -= dy;
}
static bool Intersects(const SkIRect& a, const SkIRect& b) {
return !a.isEmpty();
}
};
struct SkRect {
SkScalar fLeft, fTop, fRight, fBottom;
void roundOut(SkIRect* dst) const {
dst->set((int)floorf(fLeft), (int)floorf(fTop),
(int)ceilf(fRight), (int)ceilf(fBottom));
}
};
class SkPaint {
public: SkPaint();
enum Style { kFill_Style };
Style getStyle() const {
return (Style)fStyle;
}
unsigned fStyle : 2;
};
class SkRasterClip;
class SkDraw {
void drawRect(const SkRect&, const SkPaint&) const;
const SkRasterClip* fRC;
};
class SkRasterClip {
public:
SkRasterClip();
bool isEmpty() const {
return fIsEmpty;
}
const SkIRect& getBounds() const;
bool quickReject(const SkIRect& rect) const {
return rect.isEmpty() || !SkIRect::Intersects(this->getBounds(), rect);
}
bool fIsEmpty;
};
void SkDraw::drawRect(const SkRect& rect, const SkPaint& paint) const {
SkRect devRect;
SkIRect ir;
devRect.roundOut(&ir);
if (paint.getStyle() != SkPaint::kFill_Style) {
ir.inset(-1, -1);
}
if (fRC->quickReject(ir)) {
}
}</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>