Hello All: Looks like Live range splitting and rematerialization are connected to each other. If the boundary of Live range Splitting is in the high frequency of the region then the move connected to splitted live ranges are inside the High frequency region which is the performance bottleneck for many benchmarks.
Live range splitting based on the frequency of the region should be considered. The Live range splitting in the High frequency region is beneficial if the splitted live range is assigned the color(hard registers) which is better Spilling inside the high frequency region, although there will be move instruction or shuffle code which is still Better. If one of the splitted live range does not have any use points and all the partner live ranges gets the Hard register, then the move instruction due to splitting will be costly for the high frequency region. In such Case the split point should be move up at the boundary of the transition from low frequency region to high Frequency region, and the splitted live ranges still get hard registers. This require increment check of colorabity which increases the compile time but beneficial with respect to run time. The above heuristic should be incorporated on top of the below Live range splitting Algorithm. Live range splitting algorithm should consider the blocks in the decreasing order of frequency with the first block should be taken from the high frequency region and incrementally updates till it become colorable. Thus split points should be at the edge of the transition from high frequency to low frequency region or from low frequency region to high frequency region. The above Live range splitting should be incorporated for all the flavors of Graph Coloring. Regarding the rematerialization the Chaitin's Rematerialization try to recalculate the expression at all the Use points of the Live ranges and Simpson based approach for Rematerialized try to move the arithmetic Instruction lower to use points or the basic blocks considering the operands of Arithmetic instructions is Not touched along the blocks of the Live range. Considering all the effects of rematerialization, The remat point or the recalculation should be done at the split points instead of Chaitin's approach of remat at every use points and the Simpson approach of operands not being touched upon and the movement of arithmetic instruction later at the use points. The above approaches looks feasible to implement consider the high frequency region into consideration. Thoughts Please ? Thanks & Regards Ajit