@@ -297,7 +297,7 @@ impl X86InlineAsmReg {
297297 _ => unreachable ! ( ) ,
298298 }
299299 } else if self as u32 <= Self :: di as u32 {
300- let root = [ "si" , "di" ] [ self as usize - Self :: si as usize ] ;
300+ let root = self . name ( ) ;
301301 match modifier. unwrap_or ( reg_default_modifier) {
302302 'l' => write ! ( out, "{}l" , root) ,
303303 'x' => write ! ( out, "{}" , root) ,
@@ -306,12 +306,12 @@ impl X86InlineAsmReg {
306306 _ => unreachable ! ( ) ,
307307 }
308308 } else if self as u32 <= Self :: r15 as u32 {
309- let index = self as u32 - Self :: r8 as u32 + 8 ;
309+ let root = self . name ( ) ;
310310 match modifier. unwrap_or ( reg_default_modifier) {
311- 'l' => write ! ( out, "r {}b" , index ) ,
312- 'x' => write ! ( out, "r {}w" , index ) ,
313- 'e' => write ! ( out, "r {}d" , index ) ,
314- 'r' => write ! ( out, "r{}" , index ) ,
311+ 'l' => write ! ( out, "{}b" , root ) ,
312+ 'x' => write ! ( out, "{}w" , root ) ,
313+ 'e' => write ! ( out, "{}d" , root ) ,
314+ 'r' => out. write_str ( root ) ,
315315 _ => unreachable ! ( ) ,
316316 }
317317 } else if self as u32 <= Self :: r15b as u32 {
@@ -329,8 +329,7 @@ impl X86InlineAsmReg {
329329 let index = self as u32 - Self :: zmm0 as u32 ;
330330 write ! ( out, "{}{}" , prefix, index)
331331 } else {
332- let index = self as u32 - Self :: k1 as u32 + 1 ;
333- write ! ( out, "k{}" , index)
332+ out. write_str ( self . name ( ) )
334333 }
335334 }
336335
0 commit comments