summaryrefslogtreecommitdiff
path: root/src/arch/arm/isa/operands.isa
diff options
context:
space:
mode:
authorAli Saidi <Ali.Saidi@ARM.com>2011-05-13 17:27:01 -0500
committerAli Saidi <Ali.Saidi@ARM.com>2011-05-13 17:27:01 -0500
commit401165c778108ab22aeeee55c4f4451ca93bcffb (patch)
treef525ba64108f6ebe208a04d2dee7b77621cafd96 /src/arch/arm/isa/operands.isa
parente097c4fb188fafc9cd2253500ab2d056da886c9c (diff)
downloadgem5-401165c778108ab22aeeee55c4f4451ca93bcffb.tar.xz
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.
Diffstat (limited to 'src/arch/arm/isa/operands.isa')
-rw-r--r--src/arch/arm/isa/operands.isa21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/arch/arm/isa/operands.isa b/src/arch/arm/isa/operands.isa
index ead058b4c..058cc94f3 100644
--- a/src/arch/arm/isa/operands.isa
+++ b/src/arch/arm/isa/operands.isa
@@ -156,11 +156,24 @@ def operands {{
'R3': intRegNPC('3'),
#Pseudo integer condition code registers
- 'CondCodesF': intRegCC('INTREG_CONDCODES_F'),
+ 'CondCodesNZ': intRegCC('INTREG_CONDCODES_NZ'),
+ 'CondCodesC': intRegCC('INTREG_CONDCODES_C'),
+ 'CondCodesV': intRegCC('INTREG_CONDCODES_V'),
'CondCodesGE': intRegCC('INTREG_CONDCODES_GE'),
- 'OptCondCodesF': intRegCC(
- '''(condCode == COND_AL || condCode == COND_UC) ?
- INTREG_ZERO : INTREG_CONDCODES_F'''),
+ 'OptCondCodesNZ': intRegCC(
+ '''(condCode == COND_AL || condCode == COND_UC ||
+ condCode == COND_CC || condCode == COND_CS ||
+ condCode == COND_VS || condCode == COND_VC) ?
+ INTREG_ZERO : INTREG_CONDCODES_NZ'''),
+ 'OptCondCodesC': intRegCC(
+ '''(condCode == COND_HI || condCode == COND_LS ||
+ condCode == COND_CS || condCode == COND_CC) ?
+ INTREG_CONDCODES_C : INTREG_ZERO'''),
+ 'OptCondCodesV': intRegCC(
+ '''(condCode == COND_VS || condCode == COND_VC ||
+ condCode == COND_GE || condCode == COND_LT ||
+ condCode == COND_GT || condCode == COND_LE) ?
+ INTREG_CONDCODES_V : INTREG_ZERO'''),
'FpCondCodes': intRegCC('INTREG_FPCONDCODES'),
#Abstracted floating point reg operands