WebAssembly: update syntax
Summary:
Follow the same syntax as for the spec repo. Both have evolved slightly
independently and need to converge again.
This, along with wasmate changes, allows me to do the following:
echo "int add(int a, int b) { return a + b; }" > add.c
./out/bin/clang -O2 -S --target=wasm32-unknown-unknown add.c -o add.wack
./experimental/prototype-wasmate/wasmate.py add.wack > add.wast
./sexpr-wasm-prototype/out/sexpr-wasm add.wast -o add.wasm
./sexpr-wasm-prototype/third_party/v8-native-prototype/v8/v8/out/Release/d8 -e "print(WASM.instantiateModule(readbuffer('add.wasm'), {print:print}).add(42, 1337));"
As you'd expect, the d8 shell prints out the right value.
Reviewers: sunfish
Subscribers: jfb, llvm-commits, dschuff
Differential Revision: http://reviews.llvm.org/D13712
llvm-svn: 250480
diff --git a/llvm/test/CodeGen/WebAssembly/cfg-stackify.ll b/llvm/test/CodeGen/WebAssembly/cfg-stackify.ll
index 1f9408c..900adfd 100644
--- a/llvm/test/CodeGen/WebAssembly/cfg-stackify.ll
+++ b/llvm/test/CodeGen/WebAssembly/cfg-stackify.ll
@@ -69,7 +69,7 @@
; CHECK: block $BB2_2{{$}}
; CHECK: brif $BB2_2, {{.*}}
; CHECK: BB2_1:
-; CHECK: brif $BB2_1, @16{{$}}
+; CHECK: brif $BB2_1, (get_local 16){{$}}
; CHECK: BB2_2:
; CHECK: return{{$}}
define void @test2(double* nocapture %p, i32 %n) {
@@ -101,14 +101,14 @@
; CHECK: block $BB3_5{{$}}
; CHECK: block $BB3_4{{$}}
; CHECK: block $BB3_2{{$}}
-; CHECK: brif $BB3_2, @7{{$}}
+; CHECK: brif $BB3_2, (get_local 7){{$}}
; CHECK: br $BB3_5{{$}}
; CHECK: BB3_2:
-; CHECK: brif $BB3_4, @10{{$}}
+; CHECK: brif $BB3_4, (get_local 10){{$}}
; CHECK: br $BB3_5{{$}}
; CHECK: BB3_4:
; CHECK: BB3_5:
-; CHECK: return @6{{$}}
+; CHECK: return (get_local 6){{$}}
define i32 @doublediamond(i32 %a, i32 %b, i32* %p) {
entry:
%c = icmp eq i32 %a, 0
@@ -134,9 +134,9 @@
; CHECK-LABEL: triangle:
; CHECK: block $BB4_2{{$}}
-; CHECK: brif $BB4_2, @5{{$}}
+; CHECK: brif $BB4_2, (get_local 5){{$}}
; CHECK: BB4_2:
-; CHECK: return @4{{$}}
+; CHECK: return (get_local 4){{$}}
define i32 @triangle(i32* %p, i32 %a) {
entry:
%c = icmp eq i32 %a, 0
@@ -153,11 +153,11 @@
; CHECK-LABEL: diamond:
; CHECK: block $BB5_3{{$}}
; CHECK: block $BB5_2{{$}}
-; CHECK: brif $BB5_2, @5{{$}}
+; CHECK: brif $BB5_2, (get_local 5){{$}}
; CHECK: br $BB5_3{{$}}
; CHECK: BB5_2:
; CHECK: BB5_3:
-; CHECK: return @4{{$}}
+; CHECK: return (get_local 4){{$}}
define i32 @diamond(i32* %p, i32 %a) {
entry:
%c = icmp eq i32 %a, 0
@@ -176,7 +176,7 @@
; CHECK-LABEL: single_block:
; CHECK-NOT: br
-; CHECK: return @2{{$}}
+; CHECK: return (get_local 2){{$}}
define i32 @single_block(i32* %p) {
entry:
store volatile i32 0, i32* %p
@@ -186,7 +186,7 @@
; CHECK-LABEL: minimal_loop:
; CHECK-NOT: br
; CHECK: BB7_1:
-; CHECK: store_i32 @1, @3{{$}}
+; CHECK: store_i32 (get_local 1), (get_local 3){{$}}
; CHECK: br $BB7_1{{$}}
define i32 @minimal_loop(i32* %p) {
entry:
@@ -201,8 +201,8 @@
; CHECK-NOT: br
; CHECK: BB8_1:
; CHECK: loop $BB8_2{{$}}
-; CHECK: brif $BB8_1, @6{{$}}
-; CHECK: return @4{{$}}
+; CHECK: brif $BB8_1, (get_local 6){{$}}
+; CHECK: return (get_local 4){{$}}
define i32 @simple_loop(i32* %p, i32 %a) {
entry:
%c = icmp eq i32 %a, 0
@@ -219,11 +219,11 @@
; CHECK-LABEL: doubletriangle:
; CHECK: block $BB9_4{{$}}
; CHECK: block $BB9_3{{$}}
-; CHECK: brif $BB9_4, @7{{$}}
-; CHECK: brif $BB9_3, @10{{$}}
+; CHECK: brif $BB9_4, (get_local 7){{$}}
+; CHECK: brif $BB9_3, (get_local 10){{$}}
; CHECK: BB9_3:
; CHECK: BB9_4:
-; CHECK: return @6{{$}}
+; CHECK: return (get_local 6){{$}}
define i32 @doubletriangle(i32 %a, i32 %b, i32* %p) {
entry:
%c = icmp eq i32 %a, 0
@@ -247,12 +247,12 @@
; CHECK-LABEL: ifelse_earlyexits:
; CHECK: block $BB10_4{{$}}
; CHECK: block $BB10_2{{$}}
-; CHECK: brif $BB10_2, @7{{$}}
+; CHECK: brif $BB10_2, (get_local 7){{$}}
; CHECK: br $BB10_4{{$}}
; CHECK: BB10_2:
-; CHECK: brif $BB10_4, @10{{$}}
+; CHECK: brif $BB10_4, (get_local 10){{$}}
; CHECK: BB10_4:
-; CHECK: return @6{{$}}
+; CHECK: return (get_local 6){{$}}
define i32 @ifelse_earlyexits(i32 %a, i32 %b, i32* %p) {
entry:
%c = icmp eq i32 %a, 0