[packages/Mesa] upstream patch to fix build with llvm 7

atler atler at pld-linux.org
Sun Oct 28 14:27:07 CET 2018


commit 9238f0c4901dede828865c75d5f32d5fba3e0459
Author: Jan Palus <atler at pld-linux.org>
Date:   Sun Oct 28 14:26:35 2018 +0100

    upstream patch to fix build with llvm 7

 Mesa.spec   |   2 ++
 llvm7.patch | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 118 insertions(+)
---
diff --git a/Mesa.spec b/Mesa.spec
index b57960b..2767d15 100644
--- a/Mesa.spec
+++ b/Mesa.spec
@@ -69,6 +69,7 @@ Group:		X11/Libraries
 Source0:	https://gitlab.freedesktop.org/mesa/mesa/-/archive/mesa-%{version}/mesa-mesa-%{version}.tar.bz2
 # Source0-md5:	68f253f5825ee9ebac2f5506d364e114
 Patch0:		%{name}-link.patch
+Patch1:		llvm7.patch
 URL:		http://www.mesa3d.org/
 BuildRequires:	autoconf >= 2.60
 BuildRequires:	automake
@@ -1254,6 +1255,7 @@ radv - eksperymentalny sterownik Vulkan dla GPU firmy AMD.
 %prep
 %setup -q -n mesa-mesa-%{version}
 %patch0 -p1
+%patch1 -p1
 
 %build
 %{__libtoolize}
diff --git a/llvm7.patch b/llvm7.patch
new file mode 100644
index 0000000..2c7f240
--- /dev/null
+++ b/llvm7.patch
@@ -0,0 +1,116 @@
+From 8c872ac2e39affb2df3586a596e44a029535949d Mon Sep 17 00:00:00 2001
+From: Alok Hota <alok.hota at intel.com>
+Date: Wed, 19 Sep 2018 12:42:57 -0500
+Subject: swr/rast: fix intrinsic/function for LLVM 7 compatibility
+
+Converted from x86 VFMADDPS intrinsic to generic LLVM intrinsic, and
+removed createInstructionSimplifierPass, which were both removed in LLVM
+7.0.0
+
+These changes combine patches we received from the community and our own
+internal patches
+
+Reviewed-by: Bruce Cherniak <bruce.cherniak at intel.com>
+Tested-by: Chuck Atkins <chuck.atkins at kitware.com>
+---
+ .../drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py      |  2 +-
+ src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp       |  1 -
+ src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp    | 11 ++---------
+ src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp       |  1 -
+ .../swr/rasterizer/jitter/functionpasses/lower_x86.cpp        |  1 -
+ src/gallium/drivers/swr/rasterizer/jitter/streamout_jit.cpp   |  1 -
+ 6 files changed, 3 insertions(+), 14 deletions(-)
+
+diff --git a/src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py b/src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py
+index 2e7f1a8..d34e88d 100644
+--- a/src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py
++++ b/src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py
+@@ -57,7 +57,6 @@ intrinsics = [
+     ['VHSUBPS',     ['a', 'b'], 'a'],
+     ['VPTESTC',     ['a', 'b'], 'mInt32Ty'],
+     ['VPTESTZ',     ['a', 'b'], 'mInt32Ty'],
+-    ['VFMADDPS',    ['a', 'b', 'c'], 'a'],
+     ['VPHADDD',     ['a', 'b'], 'a'],
+     ['PDEP32',      ['a', 'b'], 'a'],
+     ['RDTSC',       [], 'mInt64Ty'],
+@@ -71,6 +70,7 @@ llvm_intrinsics = [
+     ['STACKRESTORE', 'stackrestore', ['a'], []],
+     ['VMINPS', 'minnum', ['a', 'b'], ['a']],
+     ['VMAXPS', 'maxnum', ['a', 'b'], ['a']],
++    ['VFMADDPS', 'fmuladd', ['a', 'b', 'c'], ['a']],
+     ['DEBUGTRAP', 'debugtrap', [], []],
+     ['POPCNT', 'ctpop', ['a'], ['a']],
+     ['LOG2', 'log2', ['a'], ['a']],
+diff --git a/src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp b/src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp
+index f89c502..d5328c8 100644
+--- a/src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp
++++ b/src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp
+@@ -870,7 +870,6 @@ struct BlendJit : public Builder
+         passes.add(createCFGSimplificationPass());
+         passes.add(createEarlyCSEPass());
+         passes.add(createInstructionCombiningPass());
+-        passes.add(createInstructionSimplifierPass());
+         passes.add(createConstantPropagationPass());
+         passes.add(createSCCPPass());
+         passes.add(createAggressiveDCEPass());
+diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
+index 4116dad..26d8688 100644
+--- a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
++++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
+@@ -755,15 +755,8 @@ namespace SwrJit
+     Value* Builder::FMADDPS(Value* a, Value* b, Value* c)
+     {
+         Value* vOut;
+-        // use FMADs if available
+-        if (JM()->mArch.AVX2())
+-        {
+-            vOut = VFMADDPS(a, b, c);
+-        }
+-        else
+-        {
+-            vOut = FADD(FMUL(a, b), c);
+-        }
++        // This maps to LLVM fmuladd intrinsic
++        vOut = VFMADDPS(a, b, c);
+         return vOut;
+     }
+ 
+diff --git a/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp b/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp
+index b4d326e..3ad0fab 100644
+--- a/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp
++++ b/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp
+@@ -294,7 +294,6 @@ Function* FetchJit::Create(const FETCH_COMPILE_STATE& fetchState)
+     optPasses.add(createCFGSimplificationPass());
+     optPasses.add(createEarlyCSEPass());
+     optPasses.add(createInstructionCombiningPass());
+-    optPasses.add(createInstructionSimplifierPass());
+     optPasses.add(createConstantPropagationPass());
+     optPasses.add(createSCCPPass());
+     optPasses.add(createAggressiveDCEPass());
+diff --git a/src/gallium/drivers/swr/rasterizer/jitter/functionpasses/lower_x86.cpp b/src/gallium/drivers/swr/rasterizer/jitter/functionpasses/lower_x86.cpp
+index 7605823..c34959d 100644
+--- a/src/gallium/drivers/swr/rasterizer/jitter/functionpasses/lower_x86.cpp
++++ b/src/gallium/drivers/swr/rasterizer/jitter/functionpasses/lower_x86.cpp
+@@ -76,7 +76,6 @@ namespace SwrJit
+         {"meta.intrinsic.VCVTPS2PH", Intrinsic::x86_vcvtps2ph_256},
+         {"meta.intrinsic.VPTESTC", Intrinsic::x86_avx_ptestc_256},
+         {"meta.intrinsic.VPTESTZ", Intrinsic::x86_avx_ptestz_256},
+-        {"meta.intrinsic.VFMADDPS", Intrinsic::x86_fma_vfmadd_ps_256},
+         {"meta.intrinsic.VPHADDD", Intrinsic::x86_avx2_phadd_d},
+         {"meta.intrinsic.PDEP32", Intrinsic::x86_bmi_pdep_32},
+         {"meta.intrinsic.RDTSC", Intrinsic::x86_rdtsc},
+diff --git a/src/gallium/drivers/swr/rasterizer/jitter/streamout_jit.cpp b/src/gallium/drivers/swr/rasterizer/jitter/streamout_jit.cpp
+index 8f86af2..11ad365 100644
+--- a/src/gallium/drivers/swr/rasterizer/jitter/streamout_jit.cpp
++++ b/src/gallium/drivers/swr/rasterizer/jitter/streamout_jit.cpp
+@@ -306,7 +306,6 @@ struct StreamOutJit : public Builder
+         passes.add(createCFGSimplificationPass());
+         passes.add(createEarlyCSEPass());
+         passes.add(createInstructionCombiningPass());
+-        passes.add(createInstructionSimplifierPass());
+         passes.add(createConstantPropagationPass());
+         passes.add(createSCCPPass());
+         passes.add(createAggressiveDCEPass());
+-- 
+cgit v1.1
+
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/Mesa.git/commitdiff/9238f0c4901dede828865c75d5f32d5fba3e0459



More information about the pld-cvs-commit mailing list