Skip to content

Commit 0b8a9c3

Browse files
committed
Use update_llc_test_checks.py with new test
1 parent f2901b3 commit 0b8a9c3

File tree

1 file changed

+92
-11
lines changed

1 file changed

+92
-11
lines changed

llvm/test/CodeGen/WebAssembly/wide-arithmetic.ll

Lines changed: 92 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,95 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
12
; RUN: llc -mattr=+wide-arithmetic < %s | FileCheck %s
23

34
target triple = "wasm32-unknown-unknown"
45

56
define i128 @add_i128(i128 %a, i128 %b) {
6-
; CHECK-LABEL: add_i128:
7-
; CHECK: i64.add128
7+
; CHECK-LABEL: add_i128:
8+
; CHECK: .functype add_i128 (i32, i64, i64, i64, i64) -> ()
9+
; CHECK-NEXT: # %bb.0:
10+
; CHECK-NEXT: local.get 1
11+
; CHECK-NEXT: local.get 2
12+
; CHECK-NEXT: local.get 3
13+
; CHECK-NEXT: local.get 4
14+
; CHECK-NEXT: i64.add128
15+
; CHECK-NEXT: local.set 3
16+
; CHECK-NEXT: local.set 4
17+
; CHECK-NEXT: local.get 0
18+
; CHECK-NEXT: local.get 3
19+
; CHECK-NEXT: i64.store 8
20+
; CHECK-NEXT: local.get 0
21+
; CHECK-NEXT: local.get 4
22+
; CHECK-NEXT: i64.store 0
23+
; CHECK-NEXT: # fallthrough-return
824
%c = add i128 %a, %b
925
ret i128 %c
1026
}
1127

1228
define i128 @sub_i128(i128 %a, i128 %b) {
13-
; CHECK-LABEL: sub_i128:
14-
; CHECK: i64.sub128
29+
; CHECK-LABEL: sub_i128:
30+
; CHECK: .functype sub_i128 (i32, i64, i64, i64, i64) -> ()
31+
; CHECK-NEXT: # %bb.0:
32+
; CHECK-NEXT: local.get 1
33+
; CHECK-NEXT: local.get 2
34+
; CHECK-NEXT: local.get 3
35+
; CHECK-NEXT: local.get 4
36+
; CHECK-NEXT: i64.sub128
37+
; CHECK-NEXT: local.set 3
38+
; CHECK-NEXT: local.set 4
39+
; CHECK-NEXT: local.get 0
40+
; CHECK-NEXT: local.get 3
41+
; CHECK-NEXT: i64.store 8
42+
; CHECK-NEXT: local.get 0
43+
; CHECK-NEXT: local.get 4
44+
; CHECK-NEXT: i64.store 0
45+
; CHECK-NEXT: # fallthrough-return
1546
%c = sub i128 %a, %b
1647
ret i128 %c
1748
}
1849

1950
define i128 @mul_i128(i128 %a, i128 %b) {
20-
; CHECK-LABEL: mul_i128:
21-
; CHECK: i64.mul_wide_u
51+
; CHECK-LABEL: mul_i128:
52+
; CHECK: .functype mul_i128 (i32, i64, i64, i64, i64) -> ()
53+
; CHECK-NEXT: .local i64
54+
; CHECK-NEXT: # %bb.0:
55+
; CHECK-NEXT: local.get 0
56+
; CHECK-NEXT: local.get 1
57+
; CHECK-NEXT: local.get 3
58+
; CHECK-NEXT: i64.mul_wide_u
59+
; CHECK-NEXT: local.set 5
60+
; CHECK-NEXT: i64.store 0
61+
; CHECK-NEXT: local.get 0
62+
; CHECK-NEXT: local.get 5
63+
; CHECK-NEXT: local.get 1
64+
; CHECK-NEXT: local.get 4
65+
; CHECK-NEXT: i64.mul
66+
; CHECK-NEXT: i64.add
67+
; CHECK-NEXT: local.get 2
68+
; CHECK-NEXT: local.get 3
69+
; CHECK-NEXT: i64.mul
70+
; CHECK-NEXT: i64.add
71+
; CHECK-NEXT: i64.store 8
72+
; CHECK-NEXT: # fallthrough-return
2273
%c = mul i128 %a, %b
2374
ret i128 %c
2475
}
2576

2677
define i128 @i64_mul_wide_s(i64 %a, i64 %b) {
2778
; CHECK-LABEL: i64_mul_wide_s:
28-
; CHECK: i64.mul_wide_s
79+
; CHECK: .functype i64_mul_wide_s (i32, i64, i64) -> ()
80+
; CHECK-NEXT: # %bb.0:
81+
; CHECK-NEXT: local.get 1
82+
; CHECK-NEXT: local.get 2
83+
; CHECK-NEXT: i64.mul_wide_s
84+
; CHECK-NEXT: local.set 1
85+
; CHECK-NEXT: local.set 2
86+
; CHECK-NEXT: local.get 0
87+
; CHECK-NEXT: local.get 1
88+
; CHECK-NEXT: i64.store 8
89+
; CHECK-NEXT: local.get 0
90+
; CHECK-NEXT: local.get 2
91+
; CHECK-NEXT: i64.store 0
92+
; CHECK-NEXT: # fallthrough-return
2993
%a128 = sext i64 %a to i128
3094
%b128 = sext i64 %b to i128
3195
%c = mul i128 %a128, %b128
@@ -34,17 +98,34 @@ define i128 @i64_mul_wide_s(i64 %a, i64 %b) {
3498

3599
define i128 @i64_mul_wide_u(i64 %a, i64 %b) {
36100
; CHECK-LABEL: i64_mul_wide_u:
37-
; CHECK: i64.mul_wide_u
101+
; CHECK: .functype i64_mul_wide_u (i32, i64, i64) -> ()
102+
; CHECK-NEXT: # %bb.0:
103+
; CHECK-NEXT: local.get 1
104+
; CHECK-NEXT: local.get 2
105+
; CHECK-NEXT: i64.mul_wide_u
106+
; CHECK-NEXT: local.set 1
107+
; CHECK-NEXT: local.set 2
108+
; CHECK-NEXT: local.get 0
109+
; CHECK-NEXT: local.get 1
110+
; CHECK-NEXT: i64.store 8
111+
; CHECK-NEXT: local.get 0
112+
; CHECK-NEXT: local.get 2
113+
; CHECK-NEXT: i64.store 0
114+
; CHECK-NEXT: # fallthrough-return
38115
%a128 = zext i64 %a to i128
39116
%b128 = zext i64 %b to i128
40117
%c = mul i128 %a128, %b128
41118
ret i128 %c
42119
}
43120

44121
define i64 @mul_i128_only_lo(i128 %a, i128 %b) {
45-
; CHECK-LABEL: mul_i128_only_lo:
46-
; CHECK-NOT: i64.mul128
47-
; CHECK: i64.mul
122+
; CHECK-LABEL: mul_i128_only_lo:
123+
; CHECK: .functype mul_i128_only_lo (i64, i64, i64, i64) -> (i64)
124+
; CHECK-NEXT: # %bb.0:
125+
; CHECK-NEXT: local.get 0
126+
; CHECK-NEXT: local.get 2
127+
; CHECK-NEXT: i64.mul
128+
; CHECK-NEXT: # fallthrough-return
48129
%c = mul i128 %a, %b
49130
%d = trunc i128 %c to i64
50131
ret i64 %d

0 commit comments

Comments
 (0)