<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<br class="">
<div>
<blockquote type="cite" class="">
<div class="">On Jan 18, 2018, at 1:10 PM, Roland Scheidegger <<a href="mailto:sroland@vmware.com" class="">sroland@vmware.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Am
17.01.2018 um 23:33 schrieb George Kyriazis:</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">
The texture swizzle was not doing the right thing for avx512-style<br class="">
16-wide loads.<br class="">
<br class="">
Special-case the post-load swizzle operations for avx512 so that we move<br class="">
the xyzw components correctly to the outputs.<br class="">
<br class="">
cc: Jose Fonseca <<a href="mailto:jfonseca@vmware.com" class="">jfonseca@vmware.com</a>><br class="">
---<br class="">
src/gallium/auxiliary/gallivm/lp_bld_pack.c | 40 +++++++++++++++++++++++++++--<br class="">
1 file changed, 38 insertions(+), 2 deletions(-)<br class="">
<br class="">
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_pack.c b/src/gallium/auxiliary/gallivm/lp_bld_pack.c<br class="">
index e8d4fcd..7879826 100644<br class="">
--- a/src/gallium/auxiliary/gallivm/lp_bld_pack.c<br class="">
+++ b/src/gallium/auxiliary/gallivm/lp_bld_pack.c<br class="">
@@ -129,6 +129,31 @@ lp_build_const_unpack_shuffle_half(struct gallivm_state *gallivm,<br class="">
}<br class="">
<br class="">
/**<br class="">
+ * Similar to lp_build_const_unpack_shuffle_half, but for AVX512<br class="">
+ * See comment above lp_build_interleave2_half for more details.<br class="">
+ */<br class="">
+static LLVMValueRef<br class="">
+lp_build_const_unpack_shuffle_16wide(struct gallivm_state *gallivm,<br class="">
+ unsigned lo_hi)<br class="">
+{<br class="">
+ LLVMValueRef elems[LP_MAX_VECTOR_LENGTH];<br class="">
+ unsigned i, j;<br class="">
+<br class="">
+ assert(lo_hi < 2);<br class="">
+<br class="">
+ // for the following lo_hi setting, convert 0 -> f to:<br class="">
+ // 0: 0 16 4 20 8 24 12 28 1 17 5 21 9 25 13 29<br class="">
+ // 1: 2 18 6 22 10 26 14 30 3 19 7 23 11 27 15 31<br class="">
+ for (i = 0; i < 16; i++) {<br class="">
+ j = ((i&0x06)<<1) + ((i&1)<<4) + (i>>3) + (lo_hi<<1);<br class="">
+<br class="">
+ elems[i] = lp_build_const_int32(gallivm, j);<br class="">
+ }<br class="">
+<br class="">
+ return LLVMConstVector(elems, 16);<br class="">
+}<br class="">
+<br class="">
+/**<br class="">
* Build shuffle vectors that match PACKxx (SSE) instructions or<br class="">
* VPERM (Altivec).<br class="">
*/<br class="">
@@ -325,8 +350,8 @@ lp_build_interleave2(struct gallivm_state *gallivm,<br class="">
}<br class="">
<br class="">
/**<br class="">
- * Interleave vector elements but with 256 bit,<br class="">
- * treats it as interleave with 2 concatenated 128 bit vectors.<br class="">
+ * Interleave vector elements but with 256 (or 512) bit,<br class="">
+ * treats it as interleave with 2 concatenated 128 (or 256) bit vectors.<br class="">
*<br class="">
* This differs to lp_build_interleave2 as that function would do the following (for lo):<br class="">
* a0 b0 a1 b1 a2 b2 a3 b3, and this does not compile into an AVX unpack instruction.<br class="">
@@ -343,6 +368,14 @@ lp_build_interleave2(struct gallivm_state *gallivm,<br class="">
*<br class="">
* And interleave-hi would result in:<br class="">
* a2 b2 a3 b3 a6 b6 a7 b7<br class="">
+ *<br class="">
+ * For 512 bits, the following are true:<br class="">
+ *<br class="">
+ * Interleave-lo would result in (capital letters denote hex indices):<br class="">
+ * a0 b0 a1 b1 a4 b4 a5 b5 a8 b8 a9 b9 aC bC aD bD<br class="">
+ *<br class="">
+ * Interleave-hi would result in:<br class="">
+ * a2 b2 a3 b3 a6 b6 a7 b7 aA bA aB bB aE bE aF bF<br class="">
*/<br class="">
LLVMValueRef<br class="">
lp_build_interleave2_half(struct gallivm_state *gallivm,<br class="">
@@ -354,6 +387,9 @@ lp_build_interleave2_half(struct gallivm_state *gallivm,<br class="">
if (type.length * type.width == 256) {<br class="">
LLVMValueRef shuffle = lp_build_const_unpack_shuffle_half(gallivm, type.length, lo_hi);<br class="">
return LLVMBuildShuffleVector(gallivm->builder, a, b, shuffle, "");<br class="">
+ } else if ((type.length == 16) && (type.width == 32)) {<br class="">
+ LLVMValueRef shuffle = lp_build_const_unpack_shuffle_16wide(gallivm, lo_hi);<br class="">
+ return LLVMBuildShuffleVector(gallivm->builder, a, b, shuffle, "");<br class="">
</blockquote>
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">This
is not really "interleave_half", more like "interleave_quarter"...</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">That
said, avx512 certainly follows the same rules as avx256, so 128bit</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">pieces
are treated independently. So maybe this should be renamed like</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">"interleave_native"
or something like that.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Also,
I believe it is definitely a mistake to restrict this to dword</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">interleaves
here. You should handle all type widths, just like the</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">256bit
case can handle all widths.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">And
I'm not sure through which paths you reach this, but I'm not sure</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">why
you don't need the corresponding unpack2_native and pack2_native</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">adjustments
- it should not really be a special case, avx512 should</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">generally
handle things like this (if you'd want to extend the gallivm</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">code
to use avx512...). For that matter, the commit log and shortlog is</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">confusing,
because this isn't directly related to texture fetching.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Roland</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
</div>
</blockquote>
Roland,</div>
<div><br class="">
</div>
<div>The stack trace that I am seeing is the following:</div>
<div><br class="">
</div>
<div>
<div>(gdb) bt</div>
<div>#0 lp_build_const_unpack_shuffle_16wide (gallivm=0x168b690, lo_hi=0)</div>
<div> at ../../../../src/gallium/auxiliary/gallivm/lp_bld_pack.c:138</div>
<div>#1 0x00007ffff62786de in lp_build_interleave2_half (gallivm=0x168b690, </div>
<div> type=..., a=0x16a7378, b=0x16a7d38, lo_hi=0)</div>
<div> at ../../../../src/gallium/auxiliary/gallivm/lp_bld_pack.c:391</div>
<div>#2 0x00007ffff629585f in lp_build_transpose_aos (gallivm=0x168b690, </div>
<div> single_type_lp=..., src=0x7fffffff32e0, dst=0x7fffffff3300)</div>
<div> at ../../../../src/gallium/auxiliary/gallivm/lp_bld_swizzle.c:664</div>
<div>#3 0x00007ffff626a887 in lp_build_fetch_rgba_soa (gallivm=0x168b690, </div>
<div> format_desc=0x7ffff67fe9a0 <util_format_r32g32b32a32_sint_description>, </div>
<div> type=..., aligned=1 '\001', base_ptr=0x16a3218, offset=0x16a6890, </div>
<div> i=0xf87a90, j=0xf87a90, cache=0x0, rgba_out=0x7fffffff4280)</div>
<div> at ../../../../src/gallium/auxiliary/gallivm/lp_bld_format_soa.c:635</div>
<div>#4 0x00007ffff628f899 in lp_build_fetch_texel (bld=0x7fffffff3680, </div>
<div> texture_unit=0, coords=0x7fffffff4060, explicit_lod=0x16a2bf0, </div>
<div> offsets=0x7fffffff4260, colors_out=0x7fffffff4280)</div>
<div> at ../../../../src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c:2682</div>
<div>#5 0x00007ffff6290a6b in lp_build_sample_soa_code (gallivm=0x168b690, </div>
<div> static_texture_state=0x7fffffffc61c, static_sampler_state=0x7fffffffc618, </div>
<div> dynamic_state=0x1696d18, type=..., sample_key=100, texture_index=0, </div>
<div> sampler_index=0, context_ptr=0x16a2b70, thread_data_ptr=0x0, </div>
<div> coords=0x7fffffff42a0, offsets=0x7fffffff4260, derivs=0x0, lod=0x16a2bf0, </div>
<div> texel_out=0x7fffffff4280)</div>
<div> at ../../../../src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c:3092</div>
<div>#6 0x00007ffff629202d in lp_build_sample_gen_func (gallivm=0x168b690, </div>
<div> static_texture_state=0x7fffffffc61c, static_sampler_state=0x7fffffffc618, </div>
<div> dynamic_state=0x1696d18, type=..., texture_index=0, sampler_index=0, </div>
<div> function=0x16a2aa8, num_args=3, sample_key=100)</div>
<div> at ../../../../src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c:3483</div>
<div>#7 0x00007ffff629286d in lp_build_sample_soa_func (gallivm=0x168b690, </div>
<div> static_texture_state=0x7fffffffc61c, static_sampler_state=0x7fffffffc618, </div>
<div> dynamic_state=0x1696d18, params=0x7fffffff46b0)</div>
<div> at ../../../../src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c:3629</div>
<div>---Type <return> to continue, or q <return> to quit---</div>
<div>#8 0x00007ffff6292cdb in lp_build_sample_soa (</div>
<div> static_texture_state=0x7fffffffc61c, static_sampler_state=0x7fffffffc618, </div>
<div> dynamic_state=0x1696d18, gallivm=0x168b690, params=0x7fffffff46b0)</div>
<div> at ../../../../src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c:3734</div>
<div>#9 0x00007ffff630fd71 in swr_sampler_soa_emit_fetch_texel (base=0x1696d00, </div>
<div> gallivm=0x168b690, params=0x7fffffff46b0)</div>
<div> at ../../../../../src/gallium/drivers/swr/swr_tex_sample.cpp:302</div>
<div>#10 0x00007ffff62a3fc0 in emit_fetch_texels (bld=0x7fffffff4a40, </div>
<div> inst=0x1698b20, texel=0x7fffffff4868, is_samplei=0 '\000')</div>
<div> at ../../../../src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c:2523</div>
<div>#11 0x00007ffff62a584d in txf_emit (action=0x7fffffff54c0, </div>
<div> bld_base=0x7fffffff4a40, emit_data=0x7fffffff47f0)</div>
<div> at ../../../../src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c:3178</div>
<div>#12 0x00007ffff629bcaa in lp_build_tgsi_inst_llvm (bld_base=0x7fffffff4a40, </div>
<div> inst=0x1698b20)</div>
<div> at ../../../../src/gallium/auxiliary/gallivm/lp_bld_tgsi.c:309</div>
<div>#13 0x00007ffff629c650 in lp_build_tgsi_llvm (bld_base=0x7fffffff4a40, </div>
<div> tokens=0x168a5e0)</div>
<div> at ../../../../src/gallium/auxiliary/gallivm/lp_bld_tgsi.c:546</div>
<div>#14 0x00007ffff62a7255 in lp_build_tgsi_soa (gallivm=0x168b690, </div>
<div> tokens=0x168a5e0, type=..., mask=0x0, consts_ptr=0x16913e8, </div>
<div> const_sizes_ptr=0x16914a8, system_values=0x7fffffffac30, </div>
<div> inputs=0x7fffffffacd0, outputs=0x7fffffffb6d0, context_ptr=0x1691300, </div>
<div> thread_data_ptr=0x0, sampler=0x1696d00, info=0x1688ab8, gs_iface=0x0)</div>
<div> at ../../../../src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c:3945</div>
<div>#15 0x00007ffff6315cfe in BuilderSWR::CompileVS (this=0x7fffffffc130, </div>
<div> ctx=0x645300, key=...)</div>
<div> at ../../../../../src/gallium/drivers/swr/swr_shader.cpp:836</div>
<div class=""><br class="">
</div>
</div>
<div><br class="">
<blockquote type="cite" class="">
<div class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">
} else {<br class="">
return lp_build_interleave2(gallivm, type, a, b, lo_hi);<br class="">
}<br class="">
<br class="">
</blockquote>
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">mesa-dev
mailing list</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<a href="mailto:mesa-dev@lists.freedesktop.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">mesa-dev@lists.freedesktop.org</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a></div>
</blockquote>
</div>
<br class="">
</body>
</html>