summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/WebAssembly
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/WebAssembly')
-rw-r--r--llvm/test/CodeGen/WebAssembly/reg-stackify.ll67
-rw-r--r--llvm/test/CodeGen/WebAssembly/varargs.ll36
2 files changed, 73 insertions, 30 deletions
diff --git a/llvm/test/CodeGen/WebAssembly/reg-stackify.ll b/llvm/test/CodeGen/WebAssembly/reg-stackify.ll
index c18a74e9a1d..7cc467cc9cd 100644
--- a/llvm/test/CodeGen/WebAssembly/reg-stackify.ll
+++ b/llvm/test/CodeGen/WebAssembly/reg-stackify.ll
@@ -96,12 +96,12 @@ false:
; CHECK-NEXT: .param i32, i32, i32{{$}}
; CHECK-NEXT: .local i32{{$}}
; CHECK-NEXT: block{{$}}
-; CHECK-NEXT: i32.load $push0=, 0($2){{$}}
-; CHECK-NEXT: tee_local $push3=, $3=, $pop0{{$}}
-; CHECK-NEXT: i32.ge_u $push1=, $pop3, $1{{$}}
-; CHECK-NEXT: br_if 0, $pop1{{$}}
-; CHECK-NEXT: i32.lt_u $push2=, $3, $0{{$}}
-; CHECK-NEXT: br_if 0, $pop2{{$}}
+; CHECK-NEXT: i32.load $push[[NUM0:[0-9]+]]=, 0($2){{$}}
+; CHECK-NEXT: tee_local $push[[NUM1:[0-9]+]]=, $3=, $pop[[NUM0]]{{$}}
+; CHECK-NEXT: i32.ge_u $push[[NUM2:[0-9]+]]=, $pop[[NUM1]], $1{{$}}
+; CHECK-NEXT: br_if 0, $pop[[NUM2]]{{$}}
+; CHECK-NEXT: i32.lt_u $push[[NUM3:[0-9]+]]=, $3, $0{{$}}
+; CHECK-NEXT: br_if 0, $pop[[NUM3]]{{$}}
; CHECK-NEXT: i32.store $discard=, 0($2), $3{{$}}
; CHECK-NEXT: .LBB5_3:
; CHECK-NEXT: end_block{{$}}
@@ -193,9 +193,9 @@ entry:
; CHECK-LABEL: simple_multiple_use:
; CHECK-NEXT: .param i32, i32{{$}}
-; CHECK-NEXT: i32.mul $push0=, $1, $0{{$}}
-; CHECK-NEXT: tee_local $push1=, $0=, $pop0{{$}}
-; CHECK-NEXT: call use_a@FUNCTION, $pop1{{$}}
+; CHECK-NEXT: i32.mul $push[[NUM0:[0-9]+]]=, $1, $0{{$}}
+; CHECK-NEXT: tee_local $push[[NUM1:[0-9]+]]=, $0=, $pop[[NUM0]]{{$}}
+; CHECK-NEXT: call use_a@FUNCTION, $pop[[NUM1]]{{$}}
; CHECK-NEXT: call use_b@FUNCTION, $0{{$}}
; CHECK-NEXT: return{{$}}
declare void @use_a(i32)
@@ -211,9 +211,9 @@ define void @simple_multiple_use(i32 %x, i32 %y) {
; CHECK-LABEL: multiple_uses_in_same_insn:
; CHECK-NEXT: .param i32, i32{{$}}
-; CHECK-NEXT: i32.mul $push0=, $1, $0{{$}}
-; CHECK-NEXT: tee_local $push1=, $0=, $pop0{{$}}
-; CHECK-NEXT: call use_2@FUNCTION, $pop1, $0{{$}}
+; CHECK-NEXT: i32.mul $push[[NUM0:[0-9]+]]=, $1, $0{{$}}
+; CHECK-NEXT: tee_local $push[[NUM1:[0-9]+]]=, $0=, $pop[[NUM0]]{{$}}
+; CHECK-NEXT: call use_2@FUNCTION, $pop[[NUM1]], $0{{$}}
; CHECK-NEXT: return{{$}}
declare void @use_2(i32, i32)
define void @multiple_uses_in_same_insn(i32 %x, i32 %y) {
@@ -265,4 +265,47 @@ define i32 @no_stackify_past_use(i32 %arg) {
ret i32 %tmp6
}
+; Stackify individual defs of virtual registers with multiple defs.
+
+; CHECK-LABEL: multiple_defs:
+; CHECK: f64.add $push[[NUM0:[0-9]+]]=, ${{[0-9]+}}, $pop{{[0-9]+}}{{$}}
+; CHECK-NEXT: tee_local $push[[NUM1:[0-9]+]]=, $[[NUM2:[0-9]+]]=, $pop[[NUM0]]{{$}}
+; CHECK-NEXT: f64.select $push{{[0-9]+}}=, $pop{{[0-9]+}}, $pop[[NUM1]], ${{[0-9]+}}{{$}}
+; CHECK: $[[NUM2]]=,
+; CHECK: $[[NUM2]]=,
+define void @multiple_defs(i32 %arg, i32 %arg1, i1 %arg2, i1 %arg3, i1 %arg4) {
+bb:
+ br label %bb5
+
+bb5: ; preds = %bb21, %bb
+ %tmp = phi double [ 0.000000e+00, %bb ], [ %tmp22, %bb21 ]
+ %tmp6 = phi double [ 0.000000e+00, %bb ], [ %tmp23, %bb21 ]
+ %tmp7 = fcmp olt double %tmp6, 2.323450e+01
+ br i1 %tmp7, label %bb8, label %bb21
+
+bb8: ; preds = %bb17, %bb5
+ %tmp9 = phi double [ %tmp19, %bb17 ], [ %tmp, %bb5 ]
+ %tmp10 = fadd double %tmp6, -1.000000e+00
+ %tmp11 = select i1 %arg2, double -1.135357e+04, double %tmp10
+ %tmp12 = fadd double %tmp11, %tmp9
+ br i1 %arg3, label %bb17, label %bb13
+
+bb13: ; preds = %bb8
+ %tmp14 = or i32 %arg1, 2
+ %tmp15 = icmp eq i32 %tmp14, 14
+ %tmp16 = select i1 %tmp15, double -1.135357e+04, double 0xBFCE147AE147B000
+ br label %bb17
+
+bb17: ; preds = %bb13, %bb8
+ %tmp18 = phi double [ %tmp16, %bb13 ], [ %tmp10, %bb8 ]
+ %tmp19 = fadd double %tmp18, %tmp12
+ %tmp20 = fcmp olt double %tmp6, 2.323450e+01
+ br i1 %tmp20, label %bb8, label %bb21
+
+bb21: ; preds = %bb17, %bb5
+ %tmp22 = phi double [ %tmp, %bb5 ], [ %tmp9, %bb17 ]
+ %tmp23 = fadd double %tmp6, 1.000000e+00
+ br label %bb5
+}
+
!0 = !{}
diff --git a/llvm/test/CodeGen/WebAssembly/varargs.ll b/llvm/test/CodeGen/WebAssembly/varargs.ll
index 078691a292e..b9cda851a3f 100644
--- a/llvm/test/CodeGen/WebAssembly/varargs.ll
+++ b/llvm/test/CodeGen/WebAssembly/varargs.ll
@@ -53,13 +53,13 @@ entry:
; CHECK-NEXT: .param i32{{$}}
; CHECK-NEXT: .result i32{{$}}
; CHECK-NEXT: .local i32{{$}}
-; CHECK-NEXT: i32.load $push0=, 0($0){{$}}
-; CHECK-NEXT: tee_local $push4=, $1=, $pop0{{$}}
-; CHECK-NEXT: i32.const $push1=, 4{{$}}
-; CHECK-NEXT: i32.add $push2=, $pop4, $pop1{{$}}
-; CHECK-NEXT: i32.store $discard=, 0($0), $pop2{{$}}
-; CHECK-NEXT: i32.load $push3=, 0($1){{$}}
-; CHECK-NEXT: return $pop3{{$}}
+; CHECK-NEXT: i32.load $push[[NUM0:[0-9]+]]=, 0($0){{$}}
+; CHECK-NEXT: tee_local $push[[NUM1:[0-9]+]]=, $1=, $pop[[NUM0]]{{$}}
+; CHECK-NEXT: i32.const $push[[NUM2:[0-9]+]]=, 4{{$}}
+; CHECK-NEXT: i32.add $push[[NUM3:[0-9]+]]=, $pop[[NUM1]], $pop[[NUM2]]{{$}}
+; CHECK-NEXT: i32.store $discard=, 0($0), $pop[[NUM3]]{{$}}
+; CHECK-NEXT: i32.load $push[[NUM4:[0-9]+]]=, 0($1){{$}}
+; CHECK-NEXT: return $pop[[NUM4]]{{$}}
define i8 @arg_i8(i8** %ap) {
entry:
%t = va_arg i8** %ap, i8
@@ -72,17 +72,17 @@ entry:
; CHECK-NEXT: .param i32{{$}}
; CHECK-NEXT: .result i32{{$}}
; CHECK-NEXT: .local i32{{$}}
-; CHECK-NEXT: i32.load $push0=, 0($0){{$}}
-; CHECK-NEXT: i32.const $push1=, 3{{$}}
-; CHECK-NEXT: i32.add $push2=, $pop0, $pop1{{$}}
-; CHECK-NEXT: i32.const $push3=, -4{{$}}
-; CHECK-NEXT: i32.and $push4=, $pop2, $pop3{{$}}
-; CHECK-NEXT: tee_local $push8=, $1=, $pop4{{$}}
-; CHECK-NEXT: i32.const $push5=, 4{{$}}
-; CHECK-NEXT: i32.add $push6=, $pop8, $pop5{{$}}
-; CHECK-NEXT: i32.store $discard=, 0($0), $pop6{{$}}
-; CHECK-NEXT: i32.load $push7=, 0($1){{$}}
-; CHECK-NEXT: return $pop7{{$}}
+; CHECK-NEXT: i32.load $push[[NUM0:[0-9]+]]=, 0($0){{$}}
+; CHECK-NEXT: i32.const $push[[NUM1:[0-9]+]]=, 3{{$}}
+; CHECK-NEXT: i32.add $push[[NUM2:[0-9]+]]=, $pop[[NUM0]], $pop[[NUM1]]{{$}}
+; CHECK-NEXT: i32.const $push[[NUM3:[0-9]+]]=, -4{{$}}
+; CHECK-NEXT: i32.and $push[[NUM4:[0-9]+]]=, $pop[[NUM2]], $pop[[NUM3]]{{$}}
+; CHECK-NEXT: tee_local $push[[NUM5:[0-9]+]]=, $1=, $pop[[NUM4]]{{$}}
+; CHECK-NEXT: i32.const $push[[NUM6:[0-9]+]]=, 4{{$}}
+; CHECK-NEXT: i32.add $push[[NUM7:[0-9]+]]=, $pop[[NUM5]], $pop[[NUM6]]{{$}}
+; CHECK-NEXT: i32.store $discard=, 0($0), $pop[[NUM7]]{{$}}
+; CHECK-NEXT: i32.load $push[[NUM8:[0-9]+]]=, 0($1){{$}}
+; CHECK-NEXT: return $pop[[NUM8]]{{$}}
define i32 @arg_i32(i8** %ap) {
entry:
%t = va_arg i8** %ap, i32
OpenPOWER on IntegriCloud