On 05/07/2018 09:45 PM, Matt Turner wrote:
On Mon, May 7, 2018 at 8:02 PM, Brian Paul <bri...@vmware.com> wrote:
I don't know when this started happening (I'll try bisecting tomorrow) but
we're seeing a crash in ast_type_qualifier::validate_in_qualifier() in -O3
builds with gcc 5.4.0 on Ubuntu 16.04.
Specifically, at ast_type.cpp:654:
if ((this->flags.i & ~valid_in_mask.flags.i) != 0) {
It seems to be the ~ operator/function which is implemented with an SSE pxor
instruction.
I found that this patch avoids the issue:
diff --git a/src/compiler/glsl/ast.h b/src/compiler/glsl/ast.h
index a1ec0d5..2e518ce 100644
--- a/src/compiler/glsl/ast.h
+++ b/src/compiler/glsl/ast.h
@@ -474,7 +474,7 @@ enum {
struct ast_type_qualifier {
DECLARE_RALLOC_CXX_OPERATORS(ast_type_qualifier);
- DECLARE_BITSET_T(bitset_t, 128);
+ DECLARE_BITSET_T(bitset_t, 96);
union flags {
struct {
This probably prevents use of xmm instructions, but I haven't inspected the
code.
Is anyone else seeing this?
Yes, it's
https://urldefense.proofpoint.com/v2/url?u=https-3A__bugs.freedesktop.org_show-5Fbug.cgi-3Fid-3D105497&d=DwIBaQ&c=uilaK90D4TOVoH58JNXRgQ&r=Ie7_encNUsqxbSRbqbNgofw0ITcfE8JKfaUjIQhncGA&m=XjpUGeYdJc6dOmww18kR-siiyCXP1ik8Kmbf8WCZBTw&s=-k8yjJcyWTLYwu0GYXEVsgySdL1AgIW_SvYTKCbPNF8&e=
I was surprised that we decided it's not worth working around.
Yeah. Thanks for pointing me at that, Matt.
I think this is something we should deal with. I can't imagine not
using SSE in this one corner of the compiler would make a measurable
difference overall. AFAICT, the code is only hit once per shader input.
I'll post a patch soon.
-Brian
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev