llvm / llvm/llvm-project

[DirectX][longvec] Use DXILIntrinsicExpansion.cpp as our custom vector splitter for SM 6.8 and older

Open
#216,202 0 comments 0 reactions 0 assignees View on GitHub
backend:DirectX
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

The following is a list of DirectX backend intrinsics that do not have the property IntrTriviallyScalarizable. We need to investigate each of these and see if they need vector spliting:

- [ ] int_dx_thread_id
- [ ] int_dx_group_id
- [ ] int_dx_thread_id_in_group
- [ ] int_dx_flattened_thread_id_in_group
- [ ] int_dx_resource_handlefrombinding
- [ ] int_dx_resource_handlefromimplicitbinding
- [ ] int_dx_resource_getpointer
- [ ] int_dx_resource_getbasepointer
- [ ] int_dx_resource_nonuniformindex
- [ ] int_dx_resource_load_typedbuffer
- [ ] int_dx_resource_store_typedbuffer
- [ ] int_dx_resource_load_rawbuffer
- [ ] int_dx_resource_store_rawbuffer
- [ ] int_dx_resource_atomic_binop
- [ ] int_dx_resource_load_cbufferrow_8
- [ ] int_dx_resource_load_cbufferrow_4
- [ ] int_dx_resource_load_cbufferrow_2
- [ ] int_dx_resource_updatecounter
- [ ] int_dx_resource_getdimensions_x
- [ ] int_dx_resource_getdimensions_xy
- [ ] int_dx_resource_getdimensions_levels_xy
- [ ] int_dx_resource_sample
- [ ] int_dx_resource_sample_clamp
- [ ] int_dx_resource_samplebias
- [ ] int_dx_resource_samplebias_clamp
- [ ] int_dx_resource_samplegrad
- [ ] int_dx_resource_samplegrad_clamp
- [ ] int_dx_resource_samplelevel
- [ ] int_dx_resource_load_level
- [ ] int_dx_resource_calculate_lod
- [ ] int_dx_resource_calculate_lod_unclamped
- [ ] int_dx_resource_samplecmp
- [ ] int_dx_resource_samplecmp_clamp
- [ ] int_dx_resource_samplecmplevelzero
- [ ] int_dx_resource_gather
- [ ] int_dx_resource_gather_cmp
- [ ] int_dx_resource_casthandle
- [ ] int_dx_all
- [ ] int_dx_any
- [ ] int_dx_uclamp
- [ ] int_dx_sclamp
- [ ] int_dx_nclamp
- [ ] int_dx_dot2
- [ ] int_dx_dot3
- [ ] int_dx_dot4
- [ ] int_dx_fdot
- [ ] int_dx_sdot
- [ ] int_dx_udot
- [ ] int_dx_dot2add
- [ ] int_dx_dot4add_i8packed
- [ ] int_dx_dot4add_u8packed
- [ ] int_dx_normalize
- [ ] int_dx_wave_prefix_bit_count
- [ ] int_dx_wave_active_countbits
- [ ] int_dx_wave_all
- [ ] int_dx_wave_any
- [ ] int_dx_wave_ballot
- [ ] int_dx_wave_getlaneindex
- [ ] int_dx_wave_is_first_lane
- [ ] int_dx_wave_get_lane_count
- [ ] int_dx_sign
- [ ] int_dx_discard
- [ ] int_dx_all_memory_barrier
- [ ] int_dx_all_memory_barrier_with_group_sync
- [ ] int_dx_device_memory_barrier
- [ ] int_dx_device_memory_barrier_with_group_sync
- [ ] int_dx_group_memory_barrier
- [ ] int_dx_group_memory_barrier_with_group_sync
- [ ] int_dx_load_input
- [ ] int_dx_store_output

Contributor guide

Open the contributing guide

Research direction

Start by reading DXILIntrinsicExpansion.cpp and the listed DirectX backend intrinsics. Investigate each intrinsic for vector-splitting behavior for shader model 6.8 and older, using the checklist to track progress. Done means determining which intrinsics need splitting and applying the required updates in the custom vector splitter.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.