source: icGREP/icgrep-devel/llvm-3.8.0.src/test/CodeGen/Generic/i128-addsub.ll @ 5027

Last change on this file since 5027 was 5027, checked in by cameron, 3 years ago

Upgrade to llvm 3.8

File size: 1.5 KB
Line 
1; RUN: llc < %s
2
3define void @test_add(i64 %AL, i64 %AH, i64 %BL, i64 %BH, i64* %RL, i64* %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, i64* %RL
16        %tmp21 = lshr i128 %tmp15, 64           ; <i128> [#uses=1]
17        %tmp2122 = trunc i128 %tmp21 to i64             ; <i64> [#uses=1]
18        store i64 %tmp2122, i64* %RH
19        ret void
20}
21
22define void @test_sub(i64 %AL, i64 %AH, i64 %BL, i64 %BH, i64* %RL, i64* %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, i64* %RL
35        %tmp21 = lshr i128 %tmp15, 64           ; <i128> [#uses=1]
36        %tmp2122 = trunc i128 %tmp21 to i64             ; <i64> [#uses=1]
37        store i64 %tmp2122, i64* %RH
38        ret void
39}
Note: See TracBrowser for help on using the repository browser.