The DirectX backend knows how to lower `Intrinsic::pow`. It does not know how to lower `Intrinsic::powi` This optimization replaces `Intrinsic::pow` with `Intrinsic::powi`. https://github.com/llvm/llvm-project/blob/cd56666d7b6fa0b3214c226b2ae8a473537a009e/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp#L2397-L2401 We need a change in the backend to handle `Intrinsic::powi` so we can legalize it to the right thing.