@@ -239,113 +239,6 @@ start:
239239}
240240declare {i16 , i1 } @llvm.umul.with.overflow.i16 (i16 , i16 ) #0
241241
242- ; This is a bit weird, we need to use functions defined in rust crates (compiler_builtins)
243- ; as intrinsics in the codegen, but we can't directly use their name, otherwise we will have
244- ; really odd and incorrect behavior in the crate theyre defined in. So we need to make a wrapper for them that is opaque
245- ; to the codegen, which is what this is doing.
246-
247- define {<2 x i64 >, i1 } @__nvvm_i128_addo (<2 x i64 >, <2 x i64 >) #0 {
248- start:
249- %2 = call {<2 x i64 >, i1 } @__rust_i128_addo (<2 x i64 > %0 , <2 x i64 > %1 )
250- ret {<2 x i64 >, i1 } %2
251- }
252- declare {<2 x i64 >, i1 } @__rust_i128_addo (<2 x i64 >, <2 x i64 >) #0
253-
254- define {<2 x i64 >, i1 } @__nvvm_u128_addo (<2 x i64 >, <2 x i64 >) #0 {
255- start:
256- %2 = call {<2 x i64 >, i1 } @__rust_u128_addo (<2 x i64 > %0 , <2 x i64 > %1 )
257- ret {<2 x i64 >, i1 } %2
258- }
259- declare {<2 x i64 >, i1 } @__rust_u128_addo (<2 x i64 >, <2 x i64 >) #0
260-
261- define {<2 x i64 >, i1 } @__nvvm_i128_subo (<2 x i64 >, <2 x i64 >) #0 {
262- start:
263- %2 = call {<2 x i64 >, i1 } @__rust_i128_subo (<2 x i64 > %0 , <2 x i64 > %1 )
264- ret {<2 x i64 >, i1 } %2
265- }
266- declare {<2 x i64 >, i1 } @__rust_i128_subo (<2 x i64 >, <2 x i64 >) #0
267-
268- define {<2 x i64 >, i1 } @__nvvm_u128_subo (<2 x i64 >, <2 x i64 >) #0 {
269- start:
270- %2 = call {<2 x i64 >, i1 } @__rust_u128_subo (<2 x i64 > %0 , <2 x i64 > %1 )
271- ret {<2 x i64 >, i1 } %2
272- }
273- declare {<2 x i64 >, i1 } @__rust_u128_subo (<2 x i64 >, <2 x i64 >) #0
274-
275- define {<2 x i64 >, i1 } @__nvvm_i128_mulo (<2 x i64 >, <2 x i64 >) #0 {
276- start:
277- %2 = call {<2 x i64 >, i1 } @__rust_i128_mulo (<2 x i64 > %0 , <2 x i64 > %1 )
278- ret {<2 x i64 >, i1 } %2
279- }
280- declare {<2 x i64 >, i1 } @__rust_i128_mulo (<2 x i64 >, <2 x i64 >) #0
281-
282- define {<2 x i64 >, i1 } @__nvvm_u128_mulo (<2 x i64 >, <2 x i64 >) #0 {
283- start:
284- %2 = call {<2 x i64 >, i1 } @__rust_u128_mulo (<2 x i64 > %0 , <2 x i64 > %1 )
285- ret {<2 x i64 >, i1 } %2
286- }
287- declare {<2 x i64 >, i1 } @__rust_u128_mulo (<2 x i64 >, <2 x i64 >) #0
288-
289- ; Division operations from compiler-builtins
290- define <2 x i64 > @__nvvm_divti3 (<2 x i64 >, <2 x i64 >) #0 {
291- start:
292- %2 = call <2 x i64 > @__divti3 (<2 x i64 > %0 , <2 x i64 > %1 )
293- ret <2 x i64 > %2
294- }
295- declare <2 x i64 > @__divti3 (<2 x i64 >, <2 x i64 >) #0
296-
297- define <2 x i64 > @__nvvm_udivti3 (<2 x i64 >, <2 x i64 >) #0 {
298- start:
299- %2 = call <2 x i64 > @__udivti3 (<2 x i64 > %0 , <2 x i64 > %1 )
300- ret <2 x i64 > %2
301- }
302- declare <2 x i64 > @__udivti3 (<2 x i64 >, <2 x i64 >) #0
303-
304- ; Remainder operations from compiler-builtins
305- define <2 x i64 > @__nvvm_modti3 (<2 x i64 >, <2 x i64 >) #0 {
306- start:
307- %2 = call <2 x i64 > @__modti3 (<2 x i64 > %0 , <2 x i64 > %1 )
308- ret <2 x i64 > %2
309- }
310- declare <2 x i64 > @__modti3 (<2 x i64 >, <2 x i64 >) #0
311-
312- define <2 x i64 > @__nvvm_umodti3 (<2 x i64 >, <2 x i64 >) #0 {
313- start:
314- %2 = call <2 x i64 > @__umodti3 (<2 x i64 > %0 , <2 x i64 > %1 )
315- ret <2 x i64 > %2
316- }
317- declare <2 x i64 > @__umodti3 (<2 x i64 >, <2 x i64 >) #0
318-
319- ; Multiplication from compiler-builtins
320- define <2 x i64 > @__nvvm_multi3 (<2 x i64 >, <2 x i64 >) #0 {
321- start:
322- %2 = call <2 x i64 > @__multi3 (<2 x i64 > %0 , <2 x i64 > %1 )
323- ret <2 x i64 > %2
324- }
325- declare <2 x i64 > @__multi3 (<2 x i64 >, <2 x i64 >) #0
326-
327- ; Shift operations from compiler-builtins
328- define <2 x i64 > @__nvvm_ashlti3 (<2 x i64 >, i32 ) #0 {
329- start:
330- %2 = call <2 x i64 > @__ashlti3 (<2 x i64 > %0 , i32 %1 )
331- ret <2 x i64 > %2
332- }
333- declare <2 x i64 > @__ashlti3 (<2 x i64 >, i32 ) #0
334-
335- define <2 x i64 > @__nvvm_ashrti3 (<2 x i64 >, i32 ) #0 {
336- start:
337- %2 = call <2 x i64 > @__ashrti3 (<2 x i64 > %0 , i32 %1 )
338- ret <2 x i64 > %2
339- }
340- declare <2 x i64 > @__ashrti3 (<2 x i64 >, i32 ) #0
341-
342- define <2 x i64 > @__nvvm_lshrti3 (<2 x i64 >, i32 ) #0 {
343- start:
344- %2 = call <2 x i64 > @__lshrti3 (<2 x i64 > %0 , i32 %1 )
345- ret <2 x i64 > %2
346- }
347- declare <2 x i64 > @__lshrti3 (<2 x i64 >, i32 ) #0
348-
349242; Required because we need to explicitly generate { i32, i1 } for the following intrinsics
350243; except rustc will not generate them (it will make { i32, i8 }) which libnvvm rejects.
351244
0 commit comments