@@ -195,6 +195,7 @@ mod sparc;
195195mod spirv;
196196mod wasm;
197197mod x86;
198+ mod xtensa;
198199
199200pub use aarch64:: { AArch64InlineAsmReg , AArch64InlineAsmRegClass } ;
200201pub use arm:: { ArmInlineAsmReg , ArmInlineAsmRegClass } ;
@@ -214,6 +215,7 @@ pub use sparc::{SparcInlineAsmReg, SparcInlineAsmRegClass};
214215pub use spirv:: { SpirVInlineAsmReg , SpirVInlineAsmRegClass } ;
215216pub use wasm:: { WasmInlineAsmReg , WasmInlineAsmRegClass } ;
216217pub use x86:: { X86InlineAsmReg , X86InlineAsmRegClass } ;
218+ pub use xtensa:: { XtensaInlineAsmReg , XtensaInlineAsmRegClass } ;
217219
218220#[ derive( Copy , Clone , Encodable , Decodable , Debug , Eq , PartialEq , Hash ) ]
219221pub enum InlineAsmArch {
@@ -238,6 +240,7 @@ pub enum InlineAsmArch {
238240 SpirV ,
239241 Wasm32 ,
240242 Wasm64 ,
243+ Xtensa ,
241244 Bpf ,
242245 Avr ,
243246 Msp430 ,
@@ -271,6 +274,7 @@ impl FromStr for InlineAsmArch {
271274 "spirv" => Ok ( Self :: SpirV ) ,
272275 "wasm32" => Ok ( Self :: Wasm32 ) ,
273276 "wasm64" => Ok ( Self :: Wasm64 ) ,
277+ "xtensa" => Ok ( Self :: Xtensa ) ,
274278 "bpf" => Ok ( Self :: Bpf ) ,
275279 "avr" => Ok ( Self :: Avr ) ,
276280 "msp430" => Ok ( Self :: Msp430 ) ,
@@ -297,6 +301,7 @@ pub enum InlineAsmReg {
297301 Sparc ( SparcInlineAsmReg ) ,
298302 SpirV ( SpirVInlineAsmReg ) ,
299303 Wasm ( WasmInlineAsmReg ) ,
304+ Xtensa ( XtensaInlineAsmReg ) ,
300305 Bpf ( BpfInlineAsmReg ) ,
301306 Avr ( AvrInlineAsmReg ) ,
302307 Msp430 ( Msp430InlineAsmReg ) ,
@@ -319,6 +324,7 @@ impl InlineAsmReg {
319324 Self :: Mips ( r) => r. name ( ) ,
320325 Self :: S390x ( r) => r. name ( ) ,
321326 Self :: Sparc ( r) => r. name ( ) ,
327+ Self :: Xtensa ( r) => r. name ( ) ,
322328 Self :: Bpf ( r) => r. name ( ) ,
323329 Self :: Avr ( r) => r. name ( ) ,
324330 Self :: Msp430 ( r) => r. name ( ) ,
@@ -340,6 +346,7 @@ impl InlineAsmReg {
340346 Self :: Mips ( r) => InlineAsmRegClass :: Mips ( r. reg_class ( ) ) ,
341347 Self :: S390x ( r) => InlineAsmRegClass :: S390x ( r. reg_class ( ) ) ,
342348 Self :: Sparc ( r) => InlineAsmRegClass :: Sparc ( r. reg_class ( ) ) ,
349+ Self :: Xtensa ( r) => InlineAsmRegClass :: Xtensa ( r. reg_class ( ) ) ,
343350 Self :: Bpf ( r) => InlineAsmRegClass :: Bpf ( r. reg_class ( ) ) ,
344351 Self :: Avr ( r) => InlineAsmRegClass :: Avr ( r. reg_class ( ) ) ,
345352 Self :: Msp430 ( r) => InlineAsmRegClass :: Msp430 ( r. reg_class ( ) ) ,
@@ -373,6 +380,7 @@ impl InlineAsmReg {
373380 InlineAsmArch :: Mips | InlineAsmArch :: Mips64 => {
374381 Self :: Mips ( MipsInlineAsmReg :: parse ( name) ?)
375382 }
383+ InlineAsmArch :: Xtensa => Self :: Xtensa ( XtensaInlineAsmReg :: parse ( name) ?) ,
376384 InlineAsmArch :: S390x => Self :: S390x ( S390xInlineAsmReg :: parse ( name) ?) ,
377385 InlineAsmArch :: Sparc | InlineAsmArch :: Sparc64 => {
378386 Self :: Sparc ( SparcInlineAsmReg :: parse ( name) ?)
@@ -412,6 +420,7 @@ impl InlineAsmReg {
412420 Self :: Sparc ( r) => r. validate ( arch, reloc_model, target_features, target, is_clobber) ,
413421 Self :: Bpf ( r) => r. validate ( arch, reloc_model, target_features, target, is_clobber) ,
414422 Self :: Avr ( r) => r. validate ( arch, reloc_model, target_features, target, is_clobber) ,
423+ Self :: Xtensa ( r) => r. validate ( arch, reloc_model, target_features, target, is_clobber) ,
415424 Self :: Msp430 ( r) => r. validate ( arch, reloc_model, target_features, target, is_clobber) ,
416425 Self :: M68k ( r) => r. validate ( arch, reloc_model, target_features, target, is_clobber) ,
417426 Self :: CSKY ( r) => r. validate ( arch, reloc_model, target_features, target, is_clobber) ,
@@ -438,6 +447,7 @@ impl InlineAsmReg {
438447 Self :: Mips ( r) => r. emit ( out, arch, modifier) ,
439448 Self :: S390x ( r) => r. emit ( out, arch, modifier) ,
440449 Self :: Sparc ( r) => r. emit ( out, arch, modifier) ,
450+ Self :: Xtensa ( r) => r. emit ( out, arch, modifier) ,
441451 Self :: Bpf ( r) => r. emit ( out, arch, modifier) ,
442452 Self :: Avr ( r) => r. emit ( out, arch, modifier) ,
443453 Self :: Msp430 ( r) => r. emit ( out, arch, modifier) ,
@@ -459,6 +469,7 @@ impl InlineAsmReg {
459469 Self :: Mips ( _) => cb ( self ) ,
460470 Self :: S390x ( r) => r. overlapping_regs ( |r| cb ( Self :: S390x ( r) ) ) ,
461471 Self :: Sparc ( _) => cb ( self ) ,
472+ Self :: Xtensa ( _) => cb ( self ) ,
462473 Self :: Bpf ( r) => r. overlapping_regs ( |r| cb ( Self :: Bpf ( r) ) ) ,
463474 Self :: Avr ( r) => r. overlapping_regs ( |r| cb ( Self :: Avr ( r) ) ) ,
464475 Self :: Msp430 ( _) => cb ( self ) ,
@@ -485,6 +496,7 @@ pub enum InlineAsmRegClass {
485496 Sparc ( SparcInlineAsmRegClass ) ,
486497 SpirV ( SpirVInlineAsmRegClass ) ,
487498 Wasm ( WasmInlineAsmRegClass ) ,
499+ Xtensa ( XtensaInlineAsmRegClass ) ,
488500 Bpf ( BpfInlineAsmRegClass ) ,
489501 Avr ( AvrInlineAsmRegClass ) ,
490502 Msp430 ( Msp430InlineAsmRegClass ) ,
@@ -510,6 +522,7 @@ impl InlineAsmRegClass {
510522 Self :: Sparc ( r) => r. name ( ) ,
511523 Self :: SpirV ( r) => r. name ( ) ,
512524 Self :: Wasm ( r) => r. name ( ) ,
525+ Self :: Xtensa ( r) => r. name ( ) ,
513526 Self :: Bpf ( r) => r. name ( ) ,
514527 Self :: Avr ( r) => r. name ( ) ,
515528 Self :: Msp430 ( r) => r. name ( ) ,
@@ -537,6 +550,7 @@ impl InlineAsmRegClass {
537550 Self :: Sparc ( r) => r. suggest_class ( arch, ty) . map ( InlineAsmRegClass :: Sparc ) ,
538551 Self :: SpirV ( r) => r. suggest_class ( arch, ty) . map ( InlineAsmRegClass :: SpirV ) ,
539552 Self :: Wasm ( r) => r. suggest_class ( arch, ty) . map ( InlineAsmRegClass :: Wasm ) ,
553+ Self :: Xtensa ( r) => r. suggest_class ( arch, ty) . map ( InlineAsmRegClass :: Xtensa ) ,
540554 Self :: Bpf ( r) => r. suggest_class ( arch, ty) . map ( InlineAsmRegClass :: Bpf ) ,
541555 Self :: Avr ( r) => r. suggest_class ( arch, ty) . map ( InlineAsmRegClass :: Avr ) ,
542556 Self :: Msp430 ( r) => r. suggest_class ( arch, ty) . map ( InlineAsmRegClass :: Msp430 ) ,
@@ -567,6 +581,7 @@ impl InlineAsmRegClass {
567581 Self :: Sparc ( r) => r. suggest_modifier ( arch, ty) ,
568582 Self :: SpirV ( r) => r. suggest_modifier ( arch, ty) ,
569583 Self :: Wasm ( r) => r. suggest_modifier ( arch, ty) ,
584+ Self :: Xtensa ( r) => r. suggest_modifier ( arch, ty) ,
570585 Self :: Bpf ( r) => r. suggest_modifier ( arch, ty) ,
571586 Self :: Avr ( r) => r. suggest_modifier ( arch, ty) ,
572587 Self :: Msp430 ( r) => r. suggest_modifier ( arch, ty) ,
@@ -597,6 +612,7 @@ impl InlineAsmRegClass {
597612 Self :: Sparc ( r) => r. default_modifier ( arch) ,
598613 Self :: SpirV ( r) => r. default_modifier ( arch) ,
599614 Self :: Wasm ( r) => r. default_modifier ( arch) ,
615+ Self :: Xtensa ( r) => r. default_modifier ( arch) ,
600616 Self :: Bpf ( r) => r. default_modifier ( arch) ,
601617 Self :: Avr ( r) => r. default_modifier ( arch) ,
602618 Self :: Msp430 ( r) => r. default_modifier ( arch) ,
@@ -630,6 +646,7 @@ impl InlineAsmRegClass {
630646 Self :: Sparc ( r) => r. supported_types ( arch) ,
631647 Self :: SpirV ( r) => r. supported_types ( arch) ,
632648 Self :: Wasm ( r) => r. supported_types ( arch) ,
649+ Self :: Xtensa ( r) => r. supported_types ( arch) ,
633650 Self :: Bpf ( r) => r. supported_types ( arch) ,
634651 Self :: Avr ( r) => r. supported_types ( arch) ,
635652 Self :: Msp430 ( r) => r. supported_types ( arch) ,
@@ -672,6 +689,7 @@ impl InlineAsmRegClass {
672689 }
673690 InlineAsmArch :: Bpf => Self :: Bpf ( BpfInlineAsmRegClass :: parse ( name) ?) ,
674691 InlineAsmArch :: Avr => Self :: Avr ( AvrInlineAsmRegClass :: parse ( name) ?) ,
692+ InlineAsmArch :: Xtensa => Self :: Xtensa ( XtensaInlineAsmRegClass :: parse ( name) ?) ,
675693 InlineAsmArch :: Msp430 => Self :: Msp430 ( Msp430InlineAsmRegClass :: parse ( name) ?) ,
676694 InlineAsmArch :: M68k => Self :: M68k ( M68kInlineAsmRegClass :: parse ( name) ?) ,
677695 InlineAsmArch :: CSKY => Self :: CSKY ( CSKYInlineAsmRegClass :: parse ( name) ?) ,
@@ -695,6 +713,7 @@ impl InlineAsmRegClass {
695713 Self :: Sparc ( r) => r. valid_modifiers ( arch) ,
696714 Self :: SpirV ( r) => r. valid_modifiers ( arch) ,
697715 Self :: Wasm ( r) => r. valid_modifiers ( arch) ,
716+ Self :: Xtensa ( r) => r. valid_modifiers ( arch) ,
698717 Self :: Bpf ( r) => r. valid_modifiers ( arch) ,
699718 Self :: Avr ( r) => r. valid_modifiers ( arch) ,
700719 Self :: Msp430 ( r) => r. valid_modifiers ( arch) ,
@@ -896,6 +915,11 @@ pub fn allocatable_registers(
896915 wasm:: fill_reg_map ( arch, reloc_model, target_features, target, & mut map) ;
897916 map
898917 }
918+ InlineAsmArch :: Xtensa => {
919+ let mut map = xtensa:: regclass_map ( ) ;
920+ xtensa:: fill_reg_map ( arch, reloc_model, target_features, target, & mut map) ;
921+ map
922+ }
899923 InlineAsmArch :: Bpf => {
900924 let mut map = bpf:: regclass_map ( ) ;
901925 bpf:: fill_reg_map ( arch, reloc_model, target_features, target, & mut map) ;
0 commit comments