| OLD | NEW |
| 1 import os | 1 import os |
| 2 import sys | 2 import sys |
| 3 | 3 |
| 4 class RegAliases(object): | 4 class RegAliases(object): |
| 5 def __init__(self, AliasesStr): | 5 def __init__(self, AliasesStr): |
| 6 self.Aliases = list(Alias.strip() for Alias in AliasesStr.split(',')) | 6 self.Aliases = list(Alias.strip() for Alias in AliasesStr.split(',')) |
| 7 | 7 |
| 8 def __str__(self): | 8 def __str__(self): |
| 9 return 'REGLIST{AliasCount}(RegARM32, {Aliases})'.format( | 9 return 'REGLIST{AliasCount}(RegARM32, {Aliases})'.format( |
| 10 AliasCount=len(self.Aliases), Aliases=', '.join(self.Aliases)) | 10 AliasCount=len(self.Aliases), Aliases=', '.join(self.Aliases)) |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 self.Encode = Encode | 58 self.Encode = Encode |
| 59 if not AsmStr: | 59 if not AsmStr: |
| 60 AsmStr = '%s' % Name | 60 AsmStr = '%s' % Name |
| 61 self.Features = RegFeatures(AsmStr=AsmStr, **Features) | 61 self.Features = RegFeatures(AsmStr=AsmStr, **Features) |
| 62 | 62 |
| 63 def __str__(self): | 63 def __str__(self): |
| 64 return 'Reg_{Name}, {Encode}, {Features}'.format(Name=self.Name, | 64 return 'Reg_{Name}, {Encode}, {Features}'.format(Name=self.Name, |
| 65 Encode=self.Encode, Features=self.Features) | 65 Encode=self.Encode, Features=self.Features) |
| 66 | 66 |
| 67 def IsAnAliasOf(self, Other): | 67 def IsAnAliasOf(self, Other): |
| 68 return self.Name in self.Features.Aliases().Aliases | 68 return Other.Name in self.Features.Aliases().Aliases |
| 69 | 69 |
| 70 # Note: The following tables break the usual 80-col on purpose -- it is easier | 70 # Note: The following tables break the usual 80-col on purpose -- it is easier |
| 71 # to read the register tables if each register entry is contained on a single | 71 # to read the register tables if each register entry is contained on a single |
| 72 # line. | 72 # line. |
| 73 GPRs = [ | 73 GPRs = [ |
| 74 Reg( 'r0', 0, IsScratch=1, CCArg=1, IsInt=1, Aliases= 'r0, r
0r1'), | 74 Reg( 'r0', 0, IsScratch=1, CCArg=1, IsInt=1, Aliases= 'r0, r
0r1'), |
| 75 Reg( 'r1', 1, IsScratch=1, CCArg=2, IsInt=1, Aliases= 'r1, r
0r1'), | 75 Reg( 'r1', 1, IsScratch=1, CCArg=2, IsInt=1, Aliases= 'r1, r
0r1'), |
| 76 Reg( 'r2', 2, IsScratch=1, CCArg=3, IsInt=1, Aliases= 'r2, r
2r3'), | 76 Reg( 'r2', 2, IsScratch=1, CCArg=3, IsInt=1, Aliases= 'r2, r
2r3'), |
| 77 Reg( 'r3', 3, IsScratch=1, CCArg=4, IsInt=1, Aliases= 'r3, r
2r3'), | 77 Reg( 'r3', 3, IsScratch=1, CCArg=4, IsInt=1, Aliases= 'r3, r
2r3'), |
| 78 Reg( 'r4', 4, IsPreserved=1, IsInt=1, Aliases= 'r4, r
4r5'), | 78 Reg( 'r4', 4, IsPreserved=1, IsInt=1, Aliases= 'r4, r
4r5'), |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 Reg('s21', 21, IsPreserved=1, IsFP32=1, Aliases='s21, d10, q5'), | 123 Reg('s21', 21, IsPreserved=1, IsFP32=1, Aliases='s21, d10, q5'), |
| 124 Reg('s22', 22, IsPreserved=1, IsFP32=1, Aliases='s22, d11, q5'), | 124 Reg('s22', 22, IsPreserved=1, IsFP32=1, Aliases='s22, d11, q5'), |
| 125 Reg('s23', 23, IsPreserved=1, IsFP32=1, Aliases='s23, d11, q5'), | 125 Reg('s23', 23, IsPreserved=1, IsFP32=1, Aliases='s23, d11, q5'), |
| 126 Reg('s24', 24, IsPreserved=1, IsFP32=1, Aliases='s24, d12, q6'), | 126 Reg('s24', 24, IsPreserved=1, IsFP32=1, Aliases='s24, d12, q6'), |
| 127 Reg('s25', 25, IsPreserved=1, IsFP32=1, Aliases='s25, d12, q6'), | 127 Reg('s25', 25, IsPreserved=1, IsFP32=1, Aliases='s25, d12, q6'), |
| 128 Reg('s26', 26, IsPreserved=1, IsFP32=1, Aliases='s26, d13, q6'), | 128 Reg('s26', 26, IsPreserved=1, IsFP32=1, Aliases='s26, d13, q6'), |
| 129 Reg('s27', 27, IsPreserved=1, IsFP32=1, Aliases='s27, d13, q6'), | 129 Reg('s27', 27, IsPreserved=1, IsFP32=1, Aliases='s27, d13, q6'), |
| 130 Reg('s28', 28, IsPreserved=1, IsFP32=1, Aliases='s28, d14, q7'), | 130 Reg('s28', 28, IsPreserved=1, IsFP32=1, Aliases='s28, d14, q7'), |
| 131 Reg('s29', 29, IsPreserved=1, IsFP32=1, Aliases='s29, d14, q7'), | 131 Reg('s29', 29, IsPreserved=1, IsFP32=1, Aliases='s29, d14, q7'), |
| 132 Reg('s30', 30, IsPreserved=1, IsFP32=1, Aliases='s30, d15, q7'), | 132 Reg('s30', 30, IsPreserved=1, IsFP32=1, Aliases='s30, d15, q7'), |
| 133 Reg('s31', 31, IsPreserved=1, IsFP32=1, Aliases='s31, d14, q7'), | 133 Reg('s31', 31, IsPreserved=1, IsFP32=1, Aliases='s31, d15, q7'), |
| 134 ] | 134 ] |
| 135 | 135 |
| 136 FP64 = [ | 136 FP64 = [ |
| 137 Reg( 'd0', 0, IsScratch=1, CCArg=1, IsFP64=1, Aliases= 'd0, q0, s0, s1')
, | 137 Reg( 'd0', 0, IsScratch=1, CCArg=1, IsFP64=1, Aliases= 'd0, q0, s0, s1')
, |
| 138 Reg( 'd1', 1, IsScratch=1, CCArg=2, IsFP64=1, Aliases= 'd1, q0, s2, s3')
, | 138 Reg( 'd1', 1, IsScratch=1, CCArg=2, IsFP64=1, Aliases= 'd1, q0, s2, s3')
, |
| 139 Reg( 'd2', 2, IsScratch=1, CCArg=3, IsFP64=1, Aliases= 'd2, q1, s4, s5')
, | 139 Reg( 'd2', 2, IsScratch=1, CCArg=3, IsFP64=1, Aliases= 'd2, q1, s4, s5')
, |
| 140 Reg( 'd3', 3, IsScratch=1, CCArg=4, IsFP64=1, Aliases= 'd3, q1, s6, s7')
, | 140 Reg( 'd3', 3, IsScratch=1, CCArg=4, IsFP64=1, Aliases= 'd3, q1, s6, s7')
, |
| 141 Reg( 'd4', 4, IsScratch=1, CCArg=5, IsFP64=1, Aliases= 'd4, q2, s8, s9')
, | 141 Reg( 'd4', 4, IsScratch=1, CCArg=5, IsFP64=1, Aliases= 'd4, q2, s8, s9')
, |
| 142 Reg( 'd5', 5, IsScratch=1, CCArg=6, IsFP64=1, Aliases= 'd5, q2, s10, s11')
, | 142 Reg( 'd5', 5, IsScratch=1, CCArg=6, IsFP64=1, Aliases= 'd5, q2, s10, s11')
, |
| 143 Reg( 'd6', 6, IsScratch=1, CCArg=7, IsFP64=1, Aliases= 'd6, q3, s12, s13')
, | 143 Reg( 'd6', 6, IsScratch=1, CCArg=7, IsFP64=1, Aliases= 'd6, q3, s12, s13')
, |
| 144 Reg( 'd7', 7, IsScratch=1, CCArg=8, IsFP64=1, Aliases= 'd7, q3, s14, s15')
, | 144 Reg( 'd7', 7, IsScratch=1, CCArg=8, IsFP64=1, Aliases= 'd7, q3, s14, s15')
, |
| 145 Reg( 'd8', 8, IsPreserved=1, IsFP64=1, Aliases= 'd8, q4, s16, s17')
, | 145 Reg( 'd8', 8, IsPreserved=1, IsFP64=1, Aliases= 'd8, q4, s16, s17')
, |
| 146 Reg( 'd9', 9, IsPreserved=1, IsFP64=1, Aliases= 'd9, q4, s18, s19')
, | 146 Reg( 'd9', 9, IsPreserved=1, IsFP64=1, Aliases= 'd9, q4, s18, s19')
, |
| 147 Reg('d10', 10, IsPreserved=1, IsFP64=1, Aliases='d10, q5, s20, s21')
, | 147 Reg('d10', 10, IsPreserved=1, IsFP64=1, Aliases='d10, q5, s20, s21')
, |
| 148 Reg('d11', 11, IsPreserved=1, IsFP64=1, Aliases='d11, q5, s22, s24')
, | 148 Reg('d11', 11, IsPreserved=1, IsFP64=1, Aliases='d11, q5, s22, s23')
, |
| 149 Reg('d12', 12, IsPreserved=1, IsFP64=1, Aliases='d12, q6, s24, s25')
, | 149 Reg('d12', 12, IsPreserved=1, IsFP64=1, Aliases='d12, q6, s24, s25')
, |
| 150 Reg('d13', 13, IsPreserved=1, IsFP64=1, Aliases='d13, q6, s26, s27')
, | 150 Reg('d13', 13, IsPreserved=1, IsFP64=1, Aliases='d13, q6, s26, s27')
, |
| 151 Reg('d14', 14, IsPreserved=1, IsFP64=1, Aliases='d14, q7, s28, s28')
, | 151 Reg('d14', 14, IsPreserved=1, IsFP64=1, Aliases='d14, q7, s28, s29')
, |
| 152 Reg('d15', 15, IsPreserved=1, IsFP64=1, Aliases='d15, q7, s30, s31')
, | 152 Reg('d15', 15, IsPreserved=1, IsFP64=1, Aliases='d15, q7, s30, s31')
, |
| 153 Reg('d16', 16, IsScratch=1, IsFP64=1, Aliases='d16, q8'), | 153 Reg('d16', 16, IsScratch=1, IsFP64=1, Aliases='d16, q8'), |
| 154 Reg('d17', 17, IsScratch=1, IsFP64=1, Aliases='d17, q8'), | 154 Reg('d17', 17, IsScratch=1, IsFP64=1, Aliases='d17, q8'), |
| 155 Reg('d18', 18, IsScratch=1, IsFP64=1, Aliases='d18, q9'), | 155 Reg('d18', 18, IsScratch=1, IsFP64=1, Aliases='d18, q9'), |
| 156 Reg('d19', 19, IsScratch=1, IsFP64=1, Aliases='d19, q9'), | 156 Reg('d19', 19, IsScratch=1, IsFP64=1, Aliases='d19, q9'), |
| 157 Reg('d20', 20, IsScratch=1, IsFP64=1, Aliases='d20, q10'), | 157 Reg('d20', 20, IsScratch=1, IsFP64=1, Aliases='d20, q10'), |
| 158 Reg('d21', 21, IsScratch=1, IsFP64=1, Aliases='d21, q10'), | 158 Reg('d21', 21, IsScratch=1, IsFP64=1, Aliases='d21, q10'), |
| 159 Reg('d22', 22, IsScratch=1, IsFP64=1, Aliases='d22, q11'), | 159 Reg('d22', 22, IsScratch=1, IsFP64=1, Aliases='d22, q11'), |
| 160 Reg('d23', 23, IsScratch=1, IsFP64=1, Aliases='d23, q11'), | 160 Reg('d23', 23, IsScratch=1, IsFP64=1, Aliases='d23, q11'), |
| 161 Reg('d24', 24, IsScratch=1, IsFP64=1, Aliases='d24, q12'), | 161 Reg('d24', 24, IsScratch=1, IsFP64=1, Aliases='d24, q12'), |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 AllRegs = {} | 196 AllRegs = {} |
| 197 for _, RegClass in RegClasses: | 197 for _, RegClass in RegClasses: |
| 198 for Reg in RegClass: | 198 for Reg in RegClass: |
| 199 assert Reg.Name not in AllRegs | 199 assert Reg.Name not in AllRegs |
| 200 AllRegs[Reg.Name] = Reg | 200 AllRegs[Reg.Name] = Reg |
| 201 | 201 |
| 202 for _, RegClass in RegClasses: | 202 for _, RegClass in RegClasses: |
| 203 for Reg in RegClass: | 203 for Reg in RegClass: |
| 204 for Alias in AllRegs[Reg.Name].Features.Aliases().Aliases: | 204 for Alias in AllRegs[Reg.Name].Features.Aliases().Aliases: |
| 205 assert AllRegs[Alias].IsAnAliasOf(Reg), '%s VS %s' % (Reg, AllRegs[Alias]) | 205 assert AllRegs[Alias].IsAnAliasOf(Reg), '%s VS %s' % (Reg, AllRegs[Alias]) |
| 206 assert AllRegs[Alias].IsAnAliasOf(Reg), '%s VS %s' % (Reg, AllRegs[Alias]) | |
| 207 assert (AllRegs[Alias].Features.LivesInGPR() == | 206 assert (AllRegs[Alias].Features.LivesInGPR() == |
| 208 Reg.Features.LivesInGPR()), '%s VS %s' % (Reg, AllRegs[Alias]) | 207 Reg.Features.LivesInGPR()), '%s VS %s' % (Reg, AllRegs[Alias]) |
| 209 assert (AllRegs[Alias].Features.LivesInVFP() == | 208 assert (AllRegs[Alias].Features.LivesInVFP() == |
| 210 Reg.Features.LivesInVFP()), '%s VS %s' % (Reg, AllRegs[Alias]) | 209 Reg.Features.LivesInVFP()), '%s VS %s' % (Reg, AllRegs[Alias]) |
| 211 | 210 |
| 212 print ("// This file was auto generated by the {script} script.\n" | 211 print ("// This file was auto generated by the {script} script.\n" |
| 213 "// Do not modify it: modify the script instead.\n" | 212 "// Do not modify it: modify the script instead.\n" |
| 214 "\n" | 213 "\n" |
| 215 "#ifndef SUBZERO_SRC_ICEREGISTERSARM32_DEF\n" | 214 "#ifndef SUBZERO_SRC_ICEREGISTERSARM32_DEF\n" |
| 216 "#define SUBZERO_SRC_ICEREGISTERSARM32_DEF\n".format(script=os.path.basen
ame(sys.argv[0]))) | 215 "#define SUBZERO_SRC_ICEREGISTERSARM32_DEF\n".format(script=os.path.basen
ame(sys.argv[0]))) |
| 217 | 216 |
| 218 for Name, RegClass in RegClasses: | 217 for Name, RegClass in RegClasses: |
| 219 print "#define REGARM32_%s_TABLE" % Name, | 218 print "#define REGARM32_%s_TABLE" % Name, |
| 220 for Reg in RegClass: | 219 for Reg in RegClass: |
| 221 print '\\\n X({Reg})'.format(Reg=Reg), | 220 print '\\\n X({Reg})'.format(Reg=Reg), |
| 222 print '\n' | 221 print '\n' |
| 223 print "#endif // SUBZERO_SRC_ICEREGISTERSARM32_DEF", | 222 print "#endif // SUBZERO_SRC_ICEREGISTERSARM32_DEF", |
| OLD | NEW |