[DirectX][longvec] Use DXILIntrinsicExpansion.cpp as our custom vector splitter for SM 6.8 and older
- 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
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