@@ -85,11 +85,16 @@ impl AbiMap {
8585 ( ExternAbi :: System { .. } , _) => CanonAbi :: C ,
8686
8787 // fallible lowerings
88+ /* multi-platform */
89+ // always and forever
90+ ( ExternAbi :: RustInvalid , _) => return AbiMapping :: Invalid ,
91+
8892 ( ExternAbi :: EfiApi , Arch :: Arm ( ..) ) => CanonAbi :: Arm ( ArmCall :: Aapcs ) ,
8993 ( ExternAbi :: EfiApi , Arch :: X86_64 ) => CanonAbi :: X86 ( X86Call :: Win64 ) ,
9094 ( ExternAbi :: EfiApi , Arch :: Aarch64 | Arch :: Riscv | Arch :: X86 ) => CanonAbi :: C ,
9195 ( ExternAbi :: EfiApi , _) => return AbiMapping :: Invalid ,
9296
97+ /* arm */
9398 ( ExternAbi :: Aapcs { .. } , Arch :: Arm ( ..) ) => CanonAbi :: Arm ( ArmCall :: Aapcs ) ,
9499 ( ExternAbi :: Aapcs { .. } , _) => return AbiMapping :: Invalid ,
95100
@@ -103,6 +108,12 @@ impl AbiMap {
103108 return AbiMapping :: Invalid ;
104109 }
105110
111+ /* gpu */
112+ ( ExternAbi :: PtxKernel , Arch :: Nvptx ) => CanonAbi :: GpuKernel ,
113+ ( ExternAbi :: GpuKernel , Arch :: Amdgpu | Arch :: Nvptx ) => CanonAbi :: GpuKernel ,
114+ ( ExternAbi :: PtxKernel | ExternAbi :: GpuKernel , _) => return AbiMapping :: Invalid ,
115+
116+ /* x86 */
106117 ( ExternAbi :: Cdecl { .. } , Arch :: X86 ) => CanonAbi :: C ,
107118 ( ExternAbi :: Cdecl { .. } , _) => return AbiMapping :: Deprecated ( CanonAbi :: C ) ,
108119
@@ -130,10 +141,7 @@ impl AbiMap {
130141 ( ExternAbi :: Win64 { .. } , Arch :: X86_64 ) => CanonAbi :: X86 ( X86Call :: Win64 ) ,
131142 ( ExternAbi :: SysV64 { .. } | ExternAbi :: Win64 { .. } , _) => return AbiMapping :: Invalid ,
132143
133- ( ExternAbi :: PtxKernel , Arch :: Nvptx ) => CanonAbi :: GpuKernel ,
134- ( ExternAbi :: GpuKernel , Arch :: Amdgpu | Arch :: Nvptx ) => CanonAbi :: GpuKernel ,
135- ( ExternAbi :: PtxKernel | ExternAbi :: GpuKernel , _) => return AbiMapping :: Invalid ,
136-
144+ /* interrupts */
137145 ( ExternAbi :: AvrInterrupt , Arch :: Avr ) => CanonAbi :: Interrupt ( InterruptKind :: Avr ) ,
138146 ( ExternAbi :: AvrNonBlockingInterrupt , Arch :: Avr ) => {
139147 CanonAbi :: Interrupt ( InterruptKind :: AvrNonBlocking )
@@ -156,8 +164,7 @@ impl AbiMap {
156164 | ExternAbi :: Msp430Interrupt
157165 | ExternAbi :: RiscvInterruptM
158166 | ExternAbi :: RiscvInterruptS
159- | ExternAbi :: X86Interrupt
160- | ExternAbi :: RustInvalid ,
167+ | ExternAbi :: X86Interrupt ,
161168 _,
162169 ) => return AbiMapping :: Invalid ,
163170 } ;
0 commit comments