Review Board 2.0.15


ARM: Further break up condition code into NZ, C, V bits.

Review Request #681 - Created May 4, 2011 and submitted

Information
Ali Saidi
gem5
Reviewers
Default
ali, gblack, nate, stever
ARM: Further break up condition code into NZ, C, V bits.

Break up the condition code bits into NZ, C, V registers. These are individually
written and this removes some incorrect dependencies between instructions.

   
Posted (May 8, 2011, 5:04 p.m.)



  
src/arch/arm/faults.cc (Diff revision 1)
 
 
The CPSR type has elements for some of these. You could add one for nz. That would eliminate the need for the shifts, and is a large part of what the bitunion types are for. Also be careful of order of operations.
src/arch/arm/isa/formats/pred.isa (Diff revision 1)
 
 
Watch order of operations. Even if it's technically correct, it's not immediately obvious. You might want to throw in parenthesis just to be clearer to a reader.
src/arch/arm/isa/formats/pred.isa (Diff revision 1)
 
 
It's not part of your change, but there should be a space around the :, I think.
src/arch/arm/isa/insts/data.isa (Diff revision 1)
 
 
Parenthesis, bitfields.
src/arch/arm/isa/insts/fp.isa (Diff revision 1)
 
 
Doesn't this change the behavior of this instruction? It used to write to a gpr, now it writes to the condition codes. Is that on purpose?
src/arch/arm/isa/insts/ldr.isa (Diff revision 1)
 
 
Parenthesis, bitfields.
src/arch/arm/isa/insts/macromem.isa (Diff revision 1)
 
 
Parenthesis, bitfields.
src/arch/arm/isa/insts/macromem.isa (Diff revision 1)
 
 
Bitfields.
src/arch/arm/isa/insts/macromem.isa (Diff revision 1)
 
 
Bitfields.
src/arch/arm/isa/templates/pred.isa (Diff revision 1)
 
 
Spaces after commas.
src/arch/arm/nativetrace.cc (Diff revision 1)
 
 
Why the shift up above but not here?
src/arch/arm/utility.hh (Diff revision 1)
 
 
The == 0x2 isn't needed since (nz & 0x2) will either be 0x2 or 0. That maps to true and false naturally.
Posted (May 9, 2011, 12:02 a.m.)



  
src/arch/arm/faults.cc (Diff revision 1)
 
 
will switch to the bit fields.
src/arch/arm/isa/formats/pred.isa (Diff revision 1)
 
 
ok
src/arch/arm/isa/insts/data.isa (Diff revision 1)
 
 
yup
src/arch/arm/isa/insts/fp.isa (Diff revision 1)
 
 
It used to write IntRegCondCodes, it just did it with the cond code register being passed in to the constructor instead of just using CondCodes.
src/arch/arm/isa/insts/ldr.isa (Diff revision 1)
 
 
yup
src/arch/arm/isa/insts/macromem.isa (Diff revision 1)
 
 
yup
src/arch/arm/isa/insts/macromem.isa (Diff revision 1)
 
 
yup
src/arch/arm/isa/insts/macromem.isa (Diff revision 1)
 
 
yup
src/arch/arm/isa/templates/pred.isa (Diff revision 1)
 
 
yup
src/arch/arm/nativetrace.cc (Diff revision 1)
 
 
yup
src/arch/arm/utility.hh (Diff revision 1)
 
 
ok