amd: Sort out the mess with subgroup_id and num_subgroups
We recently found out that subgroup_id
was broken in ACO on GFX10.3+, so this MR fixes that. Additionally, add a new NIR pass to lower subgroup_id
and num_subgroups
so that they can go through the same code path for both ACO and LLVM. This also allows NIR to optimize the bitfield extracts from the implementation of these intrinsics in the future.
(Note: more intrinsics can be added to the new pass in the future.)