@@ -907,7 +907,7 @@ private ImmediateOperandDescriptor ProcessImmediate(Instruction instruction, Ope
907
907
if ( symbol . BitValues . Count != 0 )
908
908
{
909
909
var kind = $ "[{ string . Join ( "," , symbol . BitValues . Select ( bitValue => $ "{ bitValue . BitFields [ 0 ] } = { bitValue . Value } ") ) } ]";
910
- if ( immediate . Size == 7 && immediate . Encoding [ 0 ] == new BitRange ( 22 , 7 ) && symbol . BitValues . Count == 4 && symbol . BitValueNames . Count == 1 && symbol . BitValueNames [ 0 ] == "immh" )
910
+ if ( immediate . Size == 7 && immediate . Encoding [ 0 ] == new BitRange ( 16 , 7 ) && symbol . BitValues . Count == 4 && symbol . BitValueNames . Count == 1 && symbol . BitValueNames [ 0 ] == "immh" )
911
911
{
912
912
switch ( kind )
913
913
{
@@ -946,7 +946,7 @@ private ImmediateOperandDescriptor ProcessImmediate(Instruction instruction, Ope
946
946
}
947
947
else if ( symbol . BitValueNames . Count == 1 && symbol . BitValueNames [ 0 ] == "cmode<0>" && immediate . Encoding . Count == 1 )
948
948
{
949
- Debug . Assert ( immediate . Encoding [ 0 ] == new BitRange ( 15 , 4 ) ) ;
949
+ Debug . Assert ( immediate . Encoding [ 0 ] == new BitRange ( 12 , 4 ) ) ;
950
950
immediate . ImmediateKind = Arm64ImmediateEncodingKind . EnumAmount8Or16 ;
951
951
immediate . Size = 1 ;
952
952
immediate . Encoding [ 0 ] = new BitRange ( 12 , 1 ) ;
@@ -1213,10 +1213,10 @@ private static int CollectEncodingForSymbol(Instruction instruction, List<string
1213
1213
if ( encoding . Count > 0 )
1214
1214
{
1215
1215
var previousEncoding = encoding [ ^ 1 ] ;
1216
- if ( previousEncoding . HiBit - previousEncoding . Width == bitRangeInfo . HiBit )
1216
+ if ( previousEncoding . LowBit - 1 == bitRangeInfo . HiBit )
1217
1217
{
1218
1218
// Merge with previous encoding
1219
- encoding [ ^ 1 ] = new ( previousEncoding . HiBit , previousEncoding . Width + bitRangeInfo . Width ) ;
1219
+ encoding [ ^ 1 ] = new ( bitRangeInfo . HiBit - bitRangeInfo . Width + 1 , previousEncoding . Width + bitRangeInfo . Width ) ;
1220
1220
size += bitRangeInfo . Width ;
1221
1221
continue ;
1222
1222
}
@@ -1245,10 +1245,10 @@ private static int CollectEncodingForSymbol(Instruction instruction, EncodingSym
1245
1245
if ( encoding . Count > 0 )
1246
1246
{
1247
1247
var previousEncoding = encoding [ ^ 1 ] ;
1248
- if ( previousEncoding . HiBit - previousEncoding . Width == bitRangeInfo . HiBit )
1248
+ if ( previousEncoding . LowBit - 1 == bitRangeInfo . HiBit )
1249
1249
{
1250
1250
// Merge with previous encoding
1251
- encoding [ ^ 1 ] = new ( previousEncoding . HiBit , previousEncoding . Width + bitRangeInfo . Width ) ;
1251
+ encoding [ ^ 1 ] = new ( bitRangeInfo . HiBit - bitRangeInfo . Width + 1 , previousEncoding . Width + bitRangeInfo . Width ) ;
1252
1252
size += bitRangeInfo . Width ;
1253
1253
continue ;
1254
1254
}
0 commit comments