@@ -286,6 +286,66 @@ start:
286286}
287287declare {<2 x i64 >, i1 } @__rust_u128_mulo (<2 x i64 >, <2 x i64 >) #0
288288
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+
289349; Required because we need to explicitly generate { i32, i1 } for the following intrinsics
290350; except rustc will not generate them (it will make { i32, i8 }) which libnvvm rejects.
291351
0 commit comments