Samuel Pitoiset
fd4041987b
ac: add ac_build_load_helper_invocation() helper
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
2019-04-12 17:30:55 +02:00
Samuel Pitoiset
590a4c8981
ac: add ac_build_ddxy_interp() helper
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
2019-04-12 17:30:55 +02:00
Samuel Pitoiset
4cb13e9462
ac: add ac_build_umax() and use it where possible
...
This changes the predicate from LessThan to Equal.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
2019-04-12 17:30:55 +02:00
Samuel Pitoiset
52c02d921f
ac: add ac_build_frex_exp() helper ans 16-bit/32-bit support
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-03-28 13:02:48 +01:00
Samuel Pitoiset
1bf9311c59
ac: add ac_build_frexp_mant() helper and 16-bit/32-bit support
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-03-28 13:02:46 +01:00
Samuel Pitoiset
d6a07732c9
ac: use llvm.amdgcn.fmed3 intrinsic for nir_op_fmed3
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-03-27 14:45:52 +01:00
Samuel Pitoiset
ff11c9dcc7
ac: add f16_0 and f16_1 constants
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-03-21 12:13:05 +01:00
Samuel Pitoiset
b235d77e18
ac: add ac_build_tbuffer_store_byte() helper
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-03-21 09:02:18 +01:00
Samuel Pitoiset
104dbc64a5
ac: add ac_build_tbuffer_load_byte() helper
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-03-21 09:02:14 +01:00
Samuel Pitoiset
6e632eb24b
ac: add various int8 definitions
...
Original patch by Rhys Perry.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-03-21 09:02:10 +01:00
Samuel Pitoiset
9d960c17a8
ac: use new LLVM 8 intrinsic when storing 16-bit values
...
vindex is always 0.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-03-20 22:19:14 +01:00
Samuel Pitoiset
2a9d331898
ac: add ac_build_{struct,raw}_tbuffer_store() helpers
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-03-20 22:19:12 +01:00
Samuel Pitoiset
a2073f49f1
ac: add ac_build_buffer_store_format() helper
...
Similar to ac_build_buffer_load_format().
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-03-20 22:18:50 +01:00
Samuel Pitoiset
cbf022cb31
ac: use the raw tbuffer version for 16-bit SSBO loads
...
vindex is always 0.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-03-13 14:16:14 +01:00
Samuel Pitoiset
045fae0f73
ac: add ac_build_{struct,raw}_tbuffer_load() helpers
...
The struct version sets IDXEN=1, while the raw version sets IDXEN=0.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-03-13 14:15:05 +01:00
Samuel Pitoiset
489dac0d21
ac: rework typed buffers loads for LLVM 7
...
Be more generic, this will be used by an upcoming series.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-03-13 13:31:06 +01:00
Bas Nieuwenhuizen
a1fdd4a4a7
radv: Fix float16 interpolation set up.
...
float16 types can have non-flat interpolation so set up the HW
correctly for that.
Fixes: 62024fa775
"radv: enable VK_KHR_16bit_storage extension / 16bit storage features"
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-02-22 17:06:55 +01:00
Samuel Pitoiset
f0223143a8
ac: add ac_build_llvm8_tbuffer_load() helper
...
It uses the new LLVM intrinsics.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-02-18 12:14:17 +01:00
Samuel Pitoiset
2154fac6f3
ac: make use of ac_build_expand_to_vec4() in visit_image_store()
...
And make ac_build_expand() a static function.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2019-02-14 09:09:48 +01:00
Bas Nieuwenhuizen
e00d9a9a72
amd/common: Add gep helper for pointer increment.
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2019-02-06 22:35:36 +01:00
Nicolai Hähnle
300876a9a7
amd/common: scan/reduce across waves of a workgroup
...
Order-aware scan/reduce can trade-off LDS traffic for external atomics
memory traffic in producer/consumer compute shaders.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
2018-12-19 12:01:17 +01:00
Nicolai Hähnle
3963402fd3
amd/common: add ac_build_ifcc
...
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
2018-12-19 12:01:15 +01:00
Samuel Pitoiset
3fbdcd942f
amd: remove support for LLVM 6.0
...
User are encouraged to switch to LLVM 7.0 released in September 2018.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
2018-12-06 14:02:56 +01:00
Dave Airlie
ec9fe8abc7
ac: avoid casting pointers on bcsel and stores
...
For variable pointers we really don't want to case the pointers to int
without a good reason, just add a wrapper for bcsel loading and result
storing.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2018-11-21 08:54:25 +10:00
Connor Abbott
59535b05cf
ac: Introduce ac_build_expand()
...
And implement ac_bulid_expand_to_vec4() on top of it.
Fixes: 7e7ee82698
("ac: add support for 16bit buffer loads")
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2018-10-22 09:44:51 +02:00
Marek Olšák
bfc795670e
ac: add helpers for fast integer division by a constant
2018-10-16 17:23:25 -04:00
Samuel Pitoiset
416013b4f5
radv: emit the GLC bit for SSBO loads/stores when needed
...
This fixes some new memory model tests:
dEQP-VK.memory_model.message_passing.core11.u32.coherent.fence_fence.atomicwrite.device.*
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108112
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2018-10-12 08:42:08 +02:00
Marek Olšák
77903c8cfb
ac: add ac_build_round
2018-10-06 21:50:09 -04:00
Marek Olšák
a668c8d6ba
ac: define all address spaces properly
2018-10-06 21:50:09 -04:00
Samuel Pitoiset
cfd6314cfe
ac: add 16-bit constant values for zero and one
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2018-09-17 15:18:26 +02:00
Samuel Pitoiset
074e29183c
ac: add ac_build_bifield_reverse() helper
...
Are we missing 64-bit support?
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2018-09-17 15:18:23 +02:00
Samuel Pitoiset
371c35e5bb
ac: add ac_build_bit_count() helper
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2018-09-17 15:18:20 +02:00
Marek Olšák
be0bd95abf
radeonsi: fix GPU hangs with bindless textures and LLVM 7.0
...
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de >
2018-09-10 15:19:56 -04:00
Marek Olšák
e80e8d7adc
ac: fix WAITCNT flags for GFX9
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2018-08-22 14:34:43 -04:00
Marek Olšák
659f2e0fcb
ac: add imad & fmad helpers
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2018-08-21 20:50:37 -04:00
Marek Olšák
2276f8f064
ac: add ac_build_s_barrier
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2018-08-21 20:50:37 -04:00
Daniel Schürmann
a6a21e651d
ac: add support for 16bit UBO loads
...
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2018-07-23 23:16:25 +02:00
Marek Olšák
4695984dbc
ac: fold LLVMContext creation into ac_llvm_context_init
...
Reviewed-by: Dave Airlie <airlied@redhat.com >
2018-07-04 15:48:18 -04:00
Nicolai Hähnle
24fb3e6aa1
ac/nir: use ac_build_image_opcode for image intrinsics
...
So that we'll use the dimension-aware intrinsics in the future.
Acked-by: Marek Olšák <marek.olsak@amd.com >
2018-04-20 09:30:07 +02:00
Nicolai Hähnle
74063431f1
radeonsi: generate image load/store/atomic ops using ac_build_image_opcode
...
In preparation of dimension-aware LLVM image intrinsics.
Acked-by: Marek Olšák <marek.olsak@amd.com >
2018-04-20 09:29:57 +02:00
Nicolai Hähnle
625dcbbc45
amd/common: pass address components individually to ac_build_image_intrinsic
...
This is in preparation for the new image intrinsics.
Acked-by: Marek Olšák <marek.olsak@amd.com >
2018-04-20 09:23:52 +02:00
Nicolai Hähnle
f931583828
amd/common: pass new enum ac_image_dim to ac_build_image_opcode
...
This is in preparation for the new, dimension-aware LLVM image
intrinsics.
Acked-by: Marek Olšák <marek.olsak@amd.com >
2018-04-20 09:23:40 +02:00
Daniel Schürmann
d5f7ebda3e
ac: add LLVM build functions for subgroup instrinsics
...
Co-authored-by: Connor Abbott <cwabbott0@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2018-04-14 01:03:09 +02:00
Marek Olšák
dc04e4bba2
radeonsi: move FMASK shader logic to shared code
...
We'll need it for FBFETCH in both TGSI and NIR paths.
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de >
2018-04-02 13:55:22 -04:00
Bas Nieuwenhuizen
4503ff760c
ac/nir: Add workaround for GFX9 buffer views.
...
On GFX9 whether the buffer size is interpreted as elements or bytes
depends on whether IDXEN is enabled in the instruction. If the index
is a constant zero, LLVM optimizes IDXEN to 0.
Now the size in elements is interpreted in bytes which of course
results in out of bounds accesses.
The correct fix is most likely to disable the LLVM optimization,
but we need something to work with LLVM <= 6.0.
radeonsi does the max between stride and element count on the CPU
but that results in the size intrinsics returning the wrong size
for the buffer. This would cause CTS errors for radv.
v2: Also include the store changes.
Fixes: e38685cc62
'Revert "radv: disable support for VEGA for now."'
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
2018-03-29 00:03:03 +02:00
Samuel Pitoiset
61a91ca3f5
ac/nir: move unpack_param() to ac_llvm_build.c
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2018-03-13 14:05:06 +01:00
Samuel Pitoiset
28bb6873ec
ac/nir: move trim_vector to ac_llvm_build.c
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2018-03-13 14:05:06 +01:00
Samuel Pitoiset
895632baef
ac/nir: move cast_ptr() to ac_llvm_build.c
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2018-03-13 14:05:06 +01:00
Samuel Pitoiset
bf6368297b
ac/nir: move ac_build_alloca() to ac_llvm_build.c
...
As well as si_build_alloca_undef() and drop the si prefix.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
2018-03-13 14:05:06 +01:00
Timothy Arceri
42627dabb4
ac: add if/loop build helpers
...
These have been ported over from radeonsi.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
2018-03-08 10:12:34 +11:00