@@ -85,11 +85,16 @@ impl AbiMap {
85
85
( ExternAbi :: System { .. } , _) => CanonAbi :: C ,
86
86
87
87
// fallible lowerings
88
+ /* multi-platform */
89
+ // always and forever
90
+ ( ExternAbi :: RustInvalid , _) => return AbiMapping :: Invalid ,
91
+
88
92
( ExternAbi :: EfiApi , Arch :: Arm ( ..) ) => CanonAbi :: Arm ( ArmCall :: Aapcs ) ,
89
93
( ExternAbi :: EfiApi , Arch :: X86_64 ) => CanonAbi :: X86 ( X86Call :: Win64 ) ,
90
94
( ExternAbi :: EfiApi , Arch :: Aarch64 | Arch :: Riscv | Arch :: X86 ) => CanonAbi :: C ,
91
95
( ExternAbi :: EfiApi , _) => return AbiMapping :: Invalid ,
92
96
97
+ /* arm */
93
98
( ExternAbi :: Aapcs { .. } , Arch :: Arm ( ..) ) => CanonAbi :: Arm ( ArmCall :: Aapcs ) ,
94
99
( ExternAbi :: Aapcs { .. } , _) => return AbiMapping :: Invalid ,
95
100
@@ -103,6 +108,12 @@ impl AbiMap {
103
108
return AbiMapping :: Invalid ;
104
109
}
105
110
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 */
106
117
( ExternAbi :: Cdecl { .. } , Arch :: X86 ) => CanonAbi :: C ,
107
118
( ExternAbi :: Cdecl { .. } , _) => return AbiMapping :: Deprecated ( CanonAbi :: C ) ,
108
119
@@ -130,10 +141,7 @@ impl AbiMap {
130
141
( ExternAbi :: Win64 { .. } , Arch :: X86_64 ) => CanonAbi :: X86 ( X86Call :: Win64 ) ,
131
142
( ExternAbi :: SysV64 { .. } | ExternAbi :: Win64 { .. } , _) => return AbiMapping :: Invalid ,
132
143
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 */
137
145
( ExternAbi :: AvrInterrupt , Arch :: Avr ) => CanonAbi :: Interrupt ( InterruptKind :: Avr ) ,
138
146
( ExternAbi :: AvrNonBlockingInterrupt , Arch :: Avr ) => {
139
147
CanonAbi :: Interrupt ( InterruptKind :: AvrNonBlocking )
@@ -156,8 +164,7 @@ impl AbiMap {
156
164
| ExternAbi :: Msp430Interrupt
157
165
| ExternAbi :: RiscvInterruptM
158
166
| ExternAbi :: RiscvInterruptS
159
- | ExternAbi :: X86Interrupt
160
- | ExternAbi :: RustInvalid ,
167
+ | ExternAbi :: X86Interrupt ,
161
168
_,
162
169
) => return AbiMapping :: Invalid ,
163
170
} ;
0 commit comments