Re: [Mesa-dev] [PATCH] amd: remove support for LLVM 6.0

2018-11-06 Thread Marek Olšák
On Tue, Nov 6, 2018, 2:47 AM Samuel Pitoiset 
>
> On 11/5/18 10:52 PM, Marek Olšák wrote:
> > On Fri, Nov 2, 2018 at 5:21 AM Samuel Pitoiset
> > mailto:samuel.pitoi...@gmail.com>> wrote:
> >
> > User are encouraged to switch to LLVM 7.0 released in September 2018.
> >
> > Signed-off-by: Samuel Pitoiset  > >
> > ---
> > configure.ac 
> > |   4 +-
> >   meson.build   |   2 +-
> >   src/amd/common/ac_llvm_build.c| 270
> +-
> >   src/amd/common/ac_llvm_build.h|   8 +-
> >   src/amd/common/ac_llvm_helper.cpp |   7 -
> >   src/amd/common/ac_llvm_util.c |  19 +-
> >   src/amd/common/ac_nir_to_llvm.c   |  24 +-
> >   src/amd/vulkan/radv_cmd_buffer.c  |  15 +-
> >   src/amd/vulkan/radv_device.c  |   4 +-
> >   src/amd/vulkan/radv_extensions.py |   2 +-
> >   src/amd/vulkan/radv_nir_to_llvm.c |  13 +-
> >   src/amd/vulkan/radv_private.h |   2 +-
> >   src/gallium/drivers/radeonsi/si_descriptors.c |  49 +---
> >   src/gallium/drivers/radeonsi/si_get.c |   9 -
> >   src/gallium/drivers/radeonsi/si_shader.c  |  92 +-
> >   src/gallium/drivers/radeonsi/si_shader.h  |  27 --
> >   .../drivers/radeonsi/si_shader_tgsi_alu.c |  47 ++-
> >   .../drivers/radeonsi/si_state_shaders.c   |   7 +-
> >   18 files changed, 86 insertions(+), 515 deletions(-)
> >
> > diff --git a/configure.ac  b/configure.ac
> > 
> > index d782f56205..fe63044293 100644
> > --- a/configure.ac 
> > +++ b/configure.ac 
> > @@ -107,8 +107,8 @@ dnl LLVM versions
> >   LLVM_REQUIRED_GALLIUM=3.3.0
> >   LLVM_REQUIRED_OPENCL=3.9.0
> >   LLVM_REQUIRED_R600=3.9.0
> > -LLVM_REQUIRED_RADEONSI=6.0.0
> > -LLVM_REQUIRED_RADV=6.0.0
> > +LLVM_REQUIRED_RADEONSI=7.0.0
> > +LLVM_REQUIRED_RADV=7.0.0
> >   LLVM_REQUIRED_SWR=6.0.0
> >
> >   dnl Check for progs
> > diff --git a/meson.build b/meson.build
> > index 18667988ba..22a9c7bd9a 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -1176,7 +1176,7 @@ if with_gallium_opencl
> >   endif
> >
> >   if with_amd_vk or with_gallium_radeonsi
> > -  _llvm_version = '>= 6.0.0'
> > +  _llvm_version = '>= 7.0.0'
> >   elif with_gallium_swr
> > _llvm_version = '>= 6.0.0'
> >   elif with_gallium_opencl or with_gallium_r600
> > diff --git a/src/amd/common/ac_llvm_build.c
> > b/src/amd/common/ac_llvm_build.c
> > index 1392ec0f23..108e37a3e7 100644
> > --- a/src/amd/common/ac_llvm_build.c
> > +++ b/src/amd/common/ac_llvm_build.c
> > @@ -75,7 +75,7 @@ ac_llvm_context_init(struct ac_llvm_context *ctx,
> >  ctx->i16 = LLVMIntTypeInContext(ctx->context, 16);
> >  ctx->i32 = LLVMIntTypeInContext(ctx->context, 32);
> >  ctx->i64 = LLVMIntTypeInContext(ctx->context, 64);
> > -   ctx->intptr = HAVE_32BIT_POINTERS ? ctx->i32 : ctx->i64;
> > +   ctx->intptr = ctx->i32;
> >  ctx->f16 = LLVMHalfTypeInContext(ctx->context);
> >  ctx->f32 = LLVMFloatTypeInContext(ctx->context);
> >  ctx->f64 = LLVMDoubleTypeInContext(ctx->context);
> > @@ -1342,99 +1342,28 @@ ac_build_ddxy(struct ac_llvm_context *ctx,
> >int idx,
> >LLVMValueRef val)
> >   {
> > +   unsigned tl_lanes[4], trbl_lanes[4];
> >  LLVMValueRef tl, trbl, args[2];
> >  LLVMValueRef result;
> >
> > -   if (HAVE_LLVM >= 0x0700) {
> > -   unsigned tl_lanes[4], trbl_lanes[4];
> > -
> > -   for (unsigned i = 0; i < 4; ++i) {
> > -   tl_lanes[i] = i & mask;
> > -   trbl_lanes[i] = (i & mask) + idx;
> > -   }
> > -
> > -   tl = ac_build_quad_swizzle(ctx, val,
> > -  tl_lanes[0], tl_lanes[1],
> > -  tl_lanes[2], tl_lanes[3]);
> > -   trbl = ac_build_quad_swizzle(ctx, val,
> > -trbl_lanes[0],
> > trbl_lanes[1],
> > -trbl_lanes[2],
> > trbl_lanes[3]);
> > -   } else if (ctx->chip_class >= VI) {
> > -   LLVMValueRef thread_id, tl_tid, trbl_tid;
> > -   thread_id = ac_get_thread_id(ctx);
> > -
> > -   tl_tid = LLVMBuildAnd(ctx->builder, thread_id,
> > - LLVMConstInt(ctx->i32, mask,
> > false), "");
> > -
> > - 

Re: [Mesa-dev] [PATCH] amd: remove support for LLVM 6.0

2018-11-05 Thread Samuel Pitoiset



On 11/5/18 10:52 PM, Marek Olšák wrote:
On Fri, Nov 2, 2018 at 5:21 AM Samuel Pitoiset 
mailto:samuel.pitoi...@gmail.com>> wrote:


User are encouraged to switch to LLVM 7.0 released in September 2018.

Signed-off-by: Samuel Pitoiset mailto:samuel.pitoi...@gmail.com>>
---
configure.ac  
|   4 +-

  meson.build                                   |   2 +-
  src/amd/common/ac_llvm_build.c                | 270 +-
  src/amd/common/ac_llvm_build.h                |   8 +-
  src/amd/common/ac_llvm_helper.cpp             |   7 -
  src/amd/common/ac_llvm_util.c                 |  19 +-
  src/amd/common/ac_nir_to_llvm.c               |  24 +-
  src/amd/vulkan/radv_cmd_buffer.c              |  15 +-
  src/amd/vulkan/radv_device.c                  |   4 +-
  src/amd/vulkan/radv_extensions.py             |   2 +-
  src/amd/vulkan/radv_nir_to_llvm.c             |  13 +-
  src/amd/vulkan/radv_private.h                 |   2 +-
  src/gallium/drivers/radeonsi/si_descriptors.c |  49 +---
  src/gallium/drivers/radeonsi/si_get.c         |   9 -
  src/gallium/drivers/radeonsi/si_shader.c      |  92 +-
  src/gallium/drivers/radeonsi/si_shader.h      |  27 --
  .../drivers/radeonsi/si_shader_tgsi_alu.c     |  47 ++-
  .../drivers/radeonsi/si_state_shaders.c       |   7 +-
  18 files changed, 86 insertions(+), 515 deletions(-)

diff --git a/configure.ac  b/configure.ac

index d782f56205..fe63044293 100644
--- a/configure.ac 
+++ b/configure.ac 
@@ -107,8 +107,8 @@ dnl LLVM versions
  LLVM_REQUIRED_GALLIUM=3.3.0
  LLVM_REQUIRED_OPENCL=3.9.0
  LLVM_REQUIRED_R600=3.9.0
-LLVM_REQUIRED_RADEONSI=6.0.0
-LLVM_REQUIRED_RADV=6.0.0
+LLVM_REQUIRED_RADEONSI=7.0.0
+LLVM_REQUIRED_RADV=7.0.0
  LLVM_REQUIRED_SWR=6.0.0

  dnl Check for progs
diff --git a/meson.build b/meson.build
index 18667988ba..22a9c7bd9a 100644
--- a/meson.build
+++ b/meson.build
@@ -1176,7 +1176,7 @@ if with_gallium_opencl
  endif

  if with_amd_vk or with_gallium_radeonsi
-  _llvm_version = '>= 6.0.0'
+  _llvm_version = '>= 7.0.0'
  elif with_gallium_swr
    _llvm_version = '>= 6.0.0'
  elif with_gallium_opencl or with_gallium_r600
diff --git a/src/amd/common/ac_llvm_build.c
b/src/amd/common/ac_llvm_build.c
index 1392ec0f23..108e37a3e7 100644
--- a/src/amd/common/ac_llvm_build.c
+++ b/src/amd/common/ac_llvm_build.c
@@ -75,7 +75,7 @@ ac_llvm_context_init(struct ac_llvm_context *ctx,
         ctx->i16 = LLVMIntTypeInContext(ctx->context, 16);
         ctx->i32 = LLVMIntTypeInContext(ctx->context, 32);
         ctx->i64 = LLVMIntTypeInContext(ctx->context, 64);
-       ctx->intptr = HAVE_32BIT_POINTERS ? ctx->i32 : ctx->i64;
+       ctx->intptr = ctx->i32;
         ctx->f16 = LLVMHalfTypeInContext(ctx->context);
         ctx->f32 = LLVMFloatTypeInContext(ctx->context);
         ctx->f64 = LLVMDoubleTypeInContext(ctx->context);
@@ -1342,99 +1342,28 @@ ac_build_ddxy(struct ac_llvm_context *ctx,
               int idx,
               LLVMValueRef val)
  {
+       unsigned tl_lanes[4], trbl_lanes[4];
         LLVMValueRef tl, trbl, args[2];
         LLVMValueRef result;

-       if (HAVE_LLVM >= 0x0700) {
-               unsigned tl_lanes[4], trbl_lanes[4];
-
-               for (unsigned i = 0; i < 4; ++i) {
-                       tl_lanes[i] = i & mask;
-                       trbl_lanes[i] = (i & mask) + idx;
-               }
-
-               tl = ac_build_quad_swizzle(ctx, val,
-                                          tl_lanes[0], tl_lanes[1],
-                                          tl_lanes[2], tl_lanes[3]);
-               trbl = ac_build_quad_swizzle(ctx, val,
-                                            trbl_lanes[0],
trbl_lanes[1],
-                                            trbl_lanes[2],
trbl_lanes[3]);
-       } else if (ctx->chip_class >= VI) {
-               LLVMValueRef thread_id, tl_tid, trbl_tid;
-               thread_id = ac_get_thread_id(ctx);
-
-               tl_tid = LLVMBuildAnd(ctx->builder, thread_id,
-                                     LLVMConstInt(ctx->i32, mask,
false), "");
-
-               trbl_tid = LLVMBuildAdd(ctx->builder, tl_tid,
-                                       LLVMConstInt(ctx->i32, idx,
false), "");
-
-               args[0] = LLVMBuildMul(ctx->builder, tl_tid,
-                                      LLVMConstInt(ctx->i32, 4,
false), "");
-               args[1] = val;
-               tl = ac_build_intrinsic(ctx,
-                                       

Re: [Mesa-dev] [PATCH] amd: remove support for LLVM 6.0

2018-11-05 Thread Marek Olšák
On Fri, Nov 2, 2018 at 5:21 AM Samuel Pitoiset 
wrote:

> User are encouraged to switch to LLVM 7.0 released in September 2018.
>
> Signed-off-by: Samuel Pitoiset 
> ---
>  configure.ac  |   4 +-
>  meson.build   |   2 +-
>  src/amd/common/ac_llvm_build.c| 270 +-
>  src/amd/common/ac_llvm_build.h|   8 +-
>  src/amd/common/ac_llvm_helper.cpp |   7 -
>  src/amd/common/ac_llvm_util.c |  19 +-
>  src/amd/common/ac_nir_to_llvm.c   |  24 +-
>  src/amd/vulkan/radv_cmd_buffer.c  |  15 +-
>  src/amd/vulkan/radv_device.c  |   4 +-
>  src/amd/vulkan/radv_extensions.py |   2 +-
>  src/amd/vulkan/radv_nir_to_llvm.c |  13 +-
>  src/amd/vulkan/radv_private.h |   2 +-
>  src/gallium/drivers/radeonsi/si_descriptors.c |  49 +---
>  src/gallium/drivers/radeonsi/si_get.c |   9 -
>  src/gallium/drivers/radeonsi/si_shader.c  |  92 +-
>  src/gallium/drivers/radeonsi/si_shader.h  |  27 --
>  .../drivers/radeonsi/si_shader_tgsi_alu.c |  47 ++-
>  .../drivers/radeonsi/si_state_shaders.c   |   7 +-
>  18 files changed, 86 insertions(+), 515 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index d782f56205..fe63044293 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -107,8 +107,8 @@ dnl LLVM versions
>  LLVM_REQUIRED_GALLIUM=3.3.0
>  LLVM_REQUIRED_OPENCL=3.9.0
>  LLVM_REQUIRED_R600=3.9.0
> -LLVM_REQUIRED_RADEONSI=6.0.0
> -LLVM_REQUIRED_RADV=6.0.0
> +LLVM_REQUIRED_RADEONSI=7.0.0
> +LLVM_REQUIRED_RADV=7.0.0
>  LLVM_REQUIRED_SWR=6.0.0
>
>  dnl Check for progs
> diff --git a/meson.build b/meson.build
> index 18667988ba..22a9c7bd9a 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1176,7 +1176,7 @@ if with_gallium_opencl
>  endif
>
>  if with_amd_vk or with_gallium_radeonsi
> -  _llvm_version = '>= 6.0.0'
> +  _llvm_version = '>= 7.0.0'
>  elif with_gallium_swr
>_llvm_version = '>= 6.0.0'
>  elif with_gallium_opencl or with_gallium_r600
> diff --git a/src/amd/common/ac_llvm_build.c
> b/src/amd/common/ac_llvm_build.c
> index 1392ec0f23..108e37a3e7 100644
> --- a/src/amd/common/ac_llvm_build.c
> +++ b/src/amd/common/ac_llvm_build.c
> @@ -75,7 +75,7 @@ ac_llvm_context_init(struct ac_llvm_context *ctx,
> ctx->i16 = LLVMIntTypeInContext(ctx->context, 16);
> ctx->i32 = LLVMIntTypeInContext(ctx->context, 32);
> ctx->i64 = LLVMIntTypeInContext(ctx->context, 64);
> -   ctx->intptr = HAVE_32BIT_POINTERS ? ctx->i32 : ctx->i64;
> +   ctx->intptr = ctx->i32;
> ctx->f16 = LLVMHalfTypeInContext(ctx->context);
> ctx->f32 = LLVMFloatTypeInContext(ctx->context);
> ctx->f64 = LLVMDoubleTypeInContext(ctx->context);
> @@ -1342,99 +1342,28 @@ ac_build_ddxy(struct ac_llvm_context *ctx,
>   int idx,
>   LLVMValueRef val)
>  {
> +   unsigned tl_lanes[4], trbl_lanes[4];
> LLVMValueRef tl, trbl, args[2];
> LLVMValueRef result;
>
> -   if (HAVE_LLVM >= 0x0700) {
> -   unsigned tl_lanes[4], trbl_lanes[4];
> -
> -   for (unsigned i = 0; i < 4; ++i) {
> -   tl_lanes[i] = i & mask;
> -   trbl_lanes[i] = (i & mask) + idx;
> -   }
> -
> -   tl = ac_build_quad_swizzle(ctx, val,
> -  tl_lanes[0], tl_lanes[1],
> -  tl_lanes[2], tl_lanes[3]);
> -   trbl = ac_build_quad_swizzle(ctx, val,
> -trbl_lanes[0], trbl_lanes[1],
> -trbl_lanes[2], trbl_lanes[3]);
> -   } else if (ctx->chip_class >= VI) {
> -   LLVMValueRef thread_id, tl_tid, trbl_tid;
> -   thread_id = ac_get_thread_id(ctx);
> -
> -   tl_tid = LLVMBuildAnd(ctx->builder, thread_id,
> - LLVMConstInt(ctx->i32, mask, false),
> "");
> -
> -   trbl_tid = LLVMBuildAdd(ctx->builder, tl_tid,
> -   LLVMConstInt(ctx->i32, idx,
> false), "");
> -
> -   args[0] = LLVMBuildMul(ctx->builder, tl_tid,
> -  LLVMConstInt(ctx->i32, 4, false),
> "");
> -   args[1] = val;
> -   tl = ac_build_intrinsic(ctx,
> -   "llvm.amdgcn.ds.bpermute",
> ctx->i32,
> -   args, 2,
> -   AC_FUNC_ATTR_READNONE |
> -   AC_FUNC_ATTR_CONVERGENT);
> -
> -   args[0] = LLVMBuildMul(ctx->builder, trbl_tid,
> -  LLVMConstInt(ctx->i32, 4, false),
> "");
> -   trbl = ac_build_intrinsic(ctx,
> - 

Re: [Mesa-dev] [PATCH] amd: remove support for LLVM 6.0

2018-11-05 Thread Michel Dänzer
On 2018-11-04 4:12 a.m., Marek Olšák wrote:
> On Fri, Nov 2, 2018 at 10:58 AM Michel Dänzer  wrote:
> 
>> On 2018-11-02 10:23 a.m., Samuel Pitoiset wrote:
>>> User are encouraged to switch to LLVM 7.0 released in September 2018.
>>
>> At least two major releases of LLVM should always be supported,
>> otherwise we force our downstreams and users to upgrade LLVM and Mesa in
>> lockstep.
> 
> There are no concerns from distro vendors. We are good to go:
> https://lists.freedesktop.org/archives/mesa-maintainers/2018-July/thread.html

Ah, thanks for reaching out to them. No more concerns from me then.


> Having users upgrade to LLVM 7.0 can be a good thing (for quality &
> performance).

I agree.


-- 
Earthling Michel Dänzer   |   http://www.amd.com
Libre software enthusiast | Mesa and X developer
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] amd: remove support for LLVM 6.0

2018-11-03 Thread Marek Olšák
On Fri, Nov 2, 2018 at 10:58 AM Michel Dänzer  wrote:

> On 2018-11-02 10:23 a.m., Samuel Pitoiset wrote:
> > User are encouraged to switch to LLVM 7.0 released in September 2018.
>
> At least two major releases of LLVM should always be supported,
> otherwise we force our downstreams and users to upgrade LLVM and Mesa in
> lockstep.
>

There are no concerns from distro vendors. We are good to go:
https://lists.freedesktop.org/archives/mesa-maintainers/2018-July/thread.html

Having users upgrade to LLVM 7.0 can be a good thing (for quality &
performance).

Marek
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] amd: remove support for LLVM 6.0

2018-11-02 Thread Samuel Pitoiset



On 11/2/18 3:58 PM, Michel Dänzer wrote:

On 2018-11-02 10:23 a.m., Samuel Pitoiset wrote:

User are encouraged to switch to LLVM 7.0 released in September 2018.


At least two major releases of LLVM should always be supported,
otherwise we force our downstreams and users to upgrade LLVM and Mesa in
lockstep.


The main problem is that LLVM 6 is buggy in many ways (GPU hangs, 
rendering issues). We have encouraged people to not use it since months, 
at least for RADV and DXVK users.


Also, I assume LLVM 8 to be released in March 2019 like mesa 19.0, so 
two major releases will be supported.






___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] amd: remove support for LLVM 6.0

2018-11-02 Thread Michel Dänzer
On 2018-11-02 10:23 a.m., Samuel Pitoiset wrote:
> User are encouraged to switch to LLVM 7.0 released in September 2018.

At least two major releases of LLVM should always be supported,
otherwise we force our downstreams and users to upgrade LLVM and Mesa in
lockstep.


-- 
Earthling Michel Dänzer   |   http://www.amd.com
Libre software enthusiast | Mesa and X developer
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH] amd: remove support for LLVM 6.0

2018-11-02 Thread Samuel Pitoiset
User are encouraged to switch to LLVM 7.0 released in September 2018.

Signed-off-by: Samuel Pitoiset 
---
 configure.ac  |   4 +-
 meson.build   |   2 +-
 src/amd/common/ac_llvm_build.c| 270 +-
 src/amd/common/ac_llvm_build.h|   8 +-
 src/amd/common/ac_llvm_helper.cpp |   7 -
 src/amd/common/ac_llvm_util.c |  19 +-
 src/amd/common/ac_nir_to_llvm.c   |  24 +-
 src/amd/vulkan/radv_cmd_buffer.c  |  15 +-
 src/amd/vulkan/radv_device.c  |   4 +-
 src/amd/vulkan/radv_extensions.py |   2 +-
 src/amd/vulkan/radv_nir_to_llvm.c |  13 +-
 src/amd/vulkan/radv_private.h |   2 +-
 src/gallium/drivers/radeonsi/si_descriptors.c |  49 +---
 src/gallium/drivers/radeonsi/si_get.c |   9 -
 src/gallium/drivers/radeonsi/si_shader.c  |  92 +-
 src/gallium/drivers/radeonsi/si_shader.h  |  27 --
 .../drivers/radeonsi/si_shader_tgsi_alu.c |  47 ++-
 .../drivers/radeonsi/si_state_shaders.c   |   7 +-
 18 files changed, 86 insertions(+), 515 deletions(-)

diff --git a/configure.ac b/configure.ac
index d782f56205..fe63044293 100644
--- a/configure.ac
+++ b/configure.ac
@@ -107,8 +107,8 @@ dnl LLVM versions
 LLVM_REQUIRED_GALLIUM=3.3.0
 LLVM_REQUIRED_OPENCL=3.9.0
 LLVM_REQUIRED_R600=3.9.0
-LLVM_REQUIRED_RADEONSI=6.0.0
-LLVM_REQUIRED_RADV=6.0.0
+LLVM_REQUIRED_RADEONSI=7.0.0
+LLVM_REQUIRED_RADV=7.0.0
 LLVM_REQUIRED_SWR=6.0.0
 
 dnl Check for progs
diff --git a/meson.build b/meson.build
index 18667988ba..22a9c7bd9a 100644
--- a/meson.build
+++ b/meson.build
@@ -1176,7 +1176,7 @@ if with_gallium_opencl
 endif
 
 if with_amd_vk or with_gallium_radeonsi
-  _llvm_version = '>= 6.0.0'
+  _llvm_version = '>= 7.0.0'
 elif with_gallium_swr
   _llvm_version = '>= 6.0.0'
 elif with_gallium_opencl or with_gallium_r600
diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c
index 1392ec0f23..108e37a3e7 100644
--- a/src/amd/common/ac_llvm_build.c
+++ b/src/amd/common/ac_llvm_build.c
@@ -75,7 +75,7 @@ ac_llvm_context_init(struct ac_llvm_context *ctx,
ctx->i16 = LLVMIntTypeInContext(ctx->context, 16);
ctx->i32 = LLVMIntTypeInContext(ctx->context, 32);
ctx->i64 = LLVMIntTypeInContext(ctx->context, 64);
-   ctx->intptr = HAVE_32BIT_POINTERS ? ctx->i32 : ctx->i64;
+   ctx->intptr = ctx->i32;
ctx->f16 = LLVMHalfTypeInContext(ctx->context);
ctx->f32 = LLVMFloatTypeInContext(ctx->context);
ctx->f64 = LLVMDoubleTypeInContext(ctx->context);
@@ -1342,99 +1342,28 @@ ac_build_ddxy(struct ac_llvm_context *ctx,
  int idx,
  LLVMValueRef val)
 {
+   unsigned tl_lanes[4], trbl_lanes[4];
LLVMValueRef tl, trbl, args[2];
LLVMValueRef result;
 
-   if (HAVE_LLVM >= 0x0700) {
-   unsigned tl_lanes[4], trbl_lanes[4];
-
-   for (unsigned i = 0; i < 4; ++i) {
-   tl_lanes[i] = i & mask;
-   trbl_lanes[i] = (i & mask) + idx;
-   }
-
-   tl = ac_build_quad_swizzle(ctx, val,
-  tl_lanes[0], tl_lanes[1],
-  tl_lanes[2], tl_lanes[3]);
-   trbl = ac_build_quad_swizzle(ctx, val,
-trbl_lanes[0], trbl_lanes[1],
-trbl_lanes[2], trbl_lanes[3]);
-   } else if (ctx->chip_class >= VI) {
-   LLVMValueRef thread_id, tl_tid, trbl_tid;
-   thread_id = ac_get_thread_id(ctx);
-
-   tl_tid = LLVMBuildAnd(ctx->builder, thread_id,
- LLVMConstInt(ctx->i32, mask, false), "");
-
-   trbl_tid = LLVMBuildAdd(ctx->builder, tl_tid,
-   LLVMConstInt(ctx->i32, idx, false), "");
-
-   args[0] = LLVMBuildMul(ctx->builder, tl_tid,
-  LLVMConstInt(ctx->i32, 4, false), "");
-   args[1] = val;
-   tl = ac_build_intrinsic(ctx,
-   "llvm.amdgcn.ds.bpermute", ctx->i32,
-   args, 2,
-   AC_FUNC_ATTR_READNONE |
-   AC_FUNC_ATTR_CONVERGENT);
-
-   args[0] = LLVMBuildMul(ctx->builder, trbl_tid,
-  LLVMConstInt(ctx->i32, 4, false), "");
-   trbl = ac_build_intrinsic(ctx,
- "llvm.amdgcn.ds.bpermute", ctx->i32,
- args, 2,
- AC_FUNC_ATTR_READNONE |
- AC_FUNC_ATTR_CONVERGENT);
-   } else {
-   uint32_t masks[2] = {};
-
-