Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Autobackout][FuncReg]Revert of change: 6a9e9d9
Add GEP Loop Strength Reduction pass Adds new optimization pass reducing strength of GEP instructions in loop. Xe architecture doesn't have native support for access from "base pointer plus offset". Codegen must translate GEP instruction "getelementptr %constantPointer, %variableOffset" to "(long long)pointer + offset*sizeof(*pointer)", generating additional mov/add/shl instructions. If GEP is inside a loop and offset is incremented in constant steps, it is beneficial to change GEP into induction variable "getelementptr %variablePointer, %constantOffset". This change adds new pass translating code: int id = get_global_id(0); for (int i = 32; i < n_iters - 32; i += 32) { output[id + i] = output[id + i + 32] * output[id + i - 32]; } Into: int id = get_global_id(0); global float* outputm32 = output + id; for (int i = 32; i < n_iters - 32; i += 32, outputm32 += 32) { *(outputm32 + 32) = *(outputm32 + 64) * *outputm32; }
- Loading branch information