Problem in microcode optimizer
Hello Everyone, I found a problem in microcode optimizer in the Developer Workbench, so I thought to send it through in the mailing list so that you can turn off the code optimizer is your optomized code has similar problem. The problem is when we use "alu" instruction with operation "+ifsign". Probably, optimizer does not account for the fact the resulf of alu with +ifsign depends on the condition code. For example the following code is optimized incorrectly .local num den res diff alu[num, num, -, den] ; instr 1 alu[--,--, B, num] ; instr 2 alu[res, 1, +IFSIGN, res, <<1] ; instr 3 alu[num, den, +IFSIGN, num] ; instr 4 alu[den, --, B, den, >>1] ; instr 5 alu[diff, diff, -, 1] ; instr 6 br<0[header_stored#] ; instr 7 .endlocal The optimizer expands it as: .local num den res diff alu[l000!num, l000!num, -, l000!den] ; instr 1 alu[--,--, b, l000!num] ; instr 2 alu_shf[l000!res, 1, +ifsign, l000!res, <<1] ; instr 3 alu_shf[l000!diff, l000!diff, -, 1, 0] ; instr 6 br<0[header_stored#], ; instr 7 defer[2] ; BRANCH LATENCY FILL OPTIMIZATION: the uword below was "pushed" down 2 positions alu[l000!num, l000!den, +ifsign, l000!num] ; instr 4 ; BRANCH LATENCY FILL OPTIMIZATION: the uword below was "pushed" down 2 positions alu_shf[l000!den, --, b, l000!den, >>1] ; instr 5 .endlocal Here semantics of instr 4 changes in optimized code and it works on condition code set by instr 6 instead of condition code set by instr 2 as it should. Using +carry in alu instruction also has similar problem. I think optimizer assumes that alu instruction does not depend on any condition codes. Please, turn off optimizer if you are using +ifsing or +carry. Thanks Alok _______________________________________________________________________________ Alok Kumar Residence: 3401 Red River St #201 Austin, TX 78705 Office: Dept of Computer Science ACES Building University of Texas Austin, TX 78712 Ph: Home - (512) 472-6443 Office - (512) 232-7883 Fax: (401) 679 8171 Homepage: http://www.cs.utexas.edu/~alok _______________________________________________________________________________
participants (1)
-
Alok Kumar