[llvm] [SPIRV] Enable DCE in instruction selection and update tests (PR #168428)
Nathan Gauër via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 19 11:22:35 PST 2025
================
@@ -506,22 +509,195 @@ static bool isConstReg(MachineRegisterInfo *MRI, Register OpReg) {
return false;
}
+// TODO(168736): We should make this either a flag in tabelgen
+// or reduce our dependence on the global registery, so we can remove this
+// function. It can easily be missed when new intrinsics are added.
+static bool intrinsicHasSideEffects(Intrinsic::ID ID) {
+ switch (ID) {
+ // Intrinsics that do not have side effects.
+ // This is not an exhaustive list and may need to be updated.
+ case Intrinsic::spv_all:
+ case Intrinsic::spv_alloca:
+ case Intrinsic::spv_any:
+ case Intrinsic::spv_bitcast:
+ case Intrinsic::spv_const_composite:
+ case Intrinsic::spv_cross:
+ case Intrinsic::spv_degrees:
+ case Intrinsic::spv_distance:
+ case Intrinsic::spv_extractelt:
+ case Intrinsic::spv_extractv:
+ case Intrinsic::spv_faceforward:
+ case Intrinsic::spv_fdot:
+ case Intrinsic::spv_firstbitlow:
+ case Intrinsic::spv_firstbitshigh:
+ case Intrinsic::spv_firstbituhigh:
+ case Intrinsic::spv_frac:
+ case Intrinsic::spv_gep:
+ case Intrinsic::spv_global_offset:
+ case Intrinsic::spv_global_size:
+ case Intrinsic::spv_group_id:
+ case Intrinsic::spv_insertelt:
+ case Intrinsic::spv_insertv:
+ case Intrinsic::spv_isinf:
+ case Intrinsic::spv_isnan:
+ case Intrinsic::spv_lerp:
+ case Intrinsic::spv_length:
+ case Intrinsic::spv_normalize:
+ case Intrinsic::spv_num_subgroups:
+ case Intrinsic::spv_num_workgroups:
+ case Intrinsic::spv_ptrcast:
+ case Intrinsic::spv_radians:
+ case Intrinsic::spv_reflect:
+ case Intrinsic::spv_refract:
+ case Intrinsic::spv_resource_getpointer:
+ case Intrinsic::spv_resource_handlefrombinding:
+ case Intrinsic::spv_resource_handlefromimplicitbinding:
+ case Intrinsic::spv_resource_nonuniformindex:
+ case Intrinsic::spv_rsqrt:
+ case Intrinsic::spv_saturate:
+ case Intrinsic::spv_sdot:
+ case Intrinsic::spv_sign:
+ case Intrinsic::spv_smoothstep:
+ case Intrinsic::spv_step:
+ case Intrinsic::spv_subgroup_id:
+ case Intrinsic::spv_subgroup_local_invocation_id:
+ case Intrinsic::spv_subgroup_max_size:
+ case Intrinsic::spv_subgroup_size:
+ case Intrinsic::spv_thread_id:
+ case Intrinsic::spv_thread_id_in_group:
+ case Intrinsic::spv_udot:
+ case Intrinsic::spv_undef:
+ case Intrinsic::spv_value_md:
+ case Intrinsic::spv_workgroup_size:
+ return false;
+ default:
+ return true;
+ }
+}
+
+// TODO(168736): We should make this either a flag in tabelgen
+// or reduce our dependence on the global registery, so we can remove this
----------------
Keenuts wrote:
```suggestion
// or reduce our dependence on the global registry, so we can remove this
```
https://github.com/llvm/llvm-project/pull/168428
More information about the llvm-commits
mailing list