brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · e61658e Raw
40 lines · plain
1; RUN: llc < %s2 3define void @test_add(i64 %AL, i64 %AH, i64 %BL, i64 %BH, ptr %RL, ptr %RH) {4entry:5	%tmp1 = zext i64 %AL to i128		; <i128> [#uses=1]6	%tmp23 = zext i64 %AH to i128		; <i128> [#uses=1]7	%tmp4 = shl i128 %tmp23, 64		; <i128> [#uses=1]8	%tmp5 = or i128 %tmp4, %tmp1		; <i128> [#uses=1]9	%tmp67 = zext i64 %BL to i128		; <i128> [#uses=1]10	%tmp89 = zext i64 %BH to i128		; <i128> [#uses=1]11	%tmp11 = shl i128 %tmp89, 64		; <i128> [#uses=1]12	%tmp12 = or i128 %tmp11, %tmp67		; <i128> [#uses=1]13	%tmp15 = add i128 %tmp12, %tmp5		; <i128> [#uses=2]14	%tmp1617 = trunc i128 %tmp15 to i64		; <i64> [#uses=1]15	store i64 %tmp1617, ptr %RL16	%tmp21 = lshr i128 %tmp15, 64		; <i128> [#uses=1]17	%tmp2122 = trunc i128 %tmp21 to i64		; <i64> [#uses=1]18	store i64 %tmp2122, ptr %RH19	ret void20}21 22define void @test_sub(i64 %AL, i64 %AH, i64 %BL, i64 %BH, ptr %RL, ptr %RH) {23entry:24	%tmp1 = zext i64 %AL to i128		; <i128> [#uses=1]25	%tmp23 = zext i64 %AH to i128		; <i128> [#uses=1]26	%tmp4 = shl i128 %tmp23, 64		; <i128> [#uses=1]27	%tmp5 = or i128 %tmp4, %tmp1		; <i128> [#uses=1]28	%tmp67 = zext i64 %BL to i128		; <i128> [#uses=1]29	%tmp89 = zext i64 %BH to i128		; <i128> [#uses=1]30	%tmp11 = shl i128 %tmp89, 64		; <i128> [#uses=1]31	%tmp12 = or i128 %tmp11, %tmp67		; <i128> [#uses=1]32	%tmp15 = sub i128 %tmp5, %tmp12		; <i128> [#uses=2]33	%tmp1617 = trunc i128 %tmp15 to i64		; <i64> [#uses=1]34	store i64 %tmp1617, ptr %RL35	%tmp21 = lshr i128 %tmp15, 64		; <i128> [#uses=1]36	%tmp2122 = trunc i128 %tmp21 to i64		; <i64> [#uses=1]37	store i64 %tmp2122, ptr %RH38	ret void39}40