@@ -472,7 +472,7 @@ fn register_block(registers: &[Register], defs: &Defaults) -> Result<Tokens> {
472472 match * register {
473473 Register :: Single ( ref _into) => registers_expanded. push ( register. clone ( ) ) ,
474474 Register :: Array ( ref _into, ref array_info) => {
475- let array_convertable = if let Some ( ref indexes) = array_info. dim_index {
475+ let index_convertible = if let Some ( ref indexes) = array_info. dim_index {
476476 let mut index_iter = indexes. iter ( ) ;
477477 let mut previous = 0 ;
478478
@@ -483,15 +483,15 @@ fn register_block(registers: &[Register], defs: &Defaults) -> Result<Tokens> {
483483 } )
484484 } ;
485485
486- let mut array_convertable_temp = match get_number_option ( index_iter. next ( ) ) {
486+ let mut index_convertible_temp = match get_number_option ( index_iter. next ( ) ) {
487487 Some ( 0 ) => true ,
488488 _ => false ,
489489 } ;
490490
491491 for element in index_iter {
492- if !array_convertable_temp { break ; }
492+ if !index_convertible_temp { break ; }
493493
494- array_convertable_temp = match get_number_option ( Some ( element) ) {
494+ index_convertible_temp = match get_number_option ( Some ( element) ) {
495495 Some ( i) => i == previous+1 ,
496496 _ => false ,
497497 } ;
@@ -502,13 +502,16 @@ fn register_block(registers: &[Register], defs: &Defaults) -> Result<Tokens> {
502502 } ;
503503 }
504504
505- array_convertable_temp
505+ index_convertible_temp
506506 } else {
507507 false
508508 } ;
509+
510+ let packed_registers = array_info. dim_increment == 4 ;
509511
512+ let array_convertible = index_convertible && packed_registers;
510513
511- if array_convertable {
514+ if array_convertible {
512515 registers_expanded. push ( register. clone ( ) ) ;
513516 } else {
514517 registers_expanded. append ( & mut util:: expand ( register) ) ;
0 commit comments