From 11228e360ea9fa8ff50df4f965f5cb52133a43a9 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Fri, 6 Nov 2015 19:45:01 +0000 Subject: [PATCH] [WebAssembly] Make expression-stack pushing explicit Modelling of the expression stack is evolving. This patch takes another step by making pushes explicit. Differential Revision: http://reviews.llvm.org/D14338 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252334 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../WebAssembly/WebAssemblyAsmPrinter.cpp | 26 ++++++++--- test/CodeGen/WebAssembly/call.ll | 22 +++++----- test/CodeGen/WebAssembly/comparisons_f32.ll | 44 +++++++++---------- test/CodeGen/WebAssembly/comparisons_f64.ll | 44 +++++++++---------- test/CodeGen/WebAssembly/comparisons_i32.ll | 20 ++++----- test/CodeGen/WebAssembly/comparisons_i64.ll | 20 ++++----- test/CodeGen/WebAssembly/conv.ll | 42 +++++++++--------- test/CodeGen/WebAssembly/f32.ll | 26 +++++------ test/CodeGen/WebAssembly/f64.ll | 26 +++++------ test/CodeGen/WebAssembly/i32.ll | 36 +++++++-------- test/CodeGen/WebAssembly/i64.ll | 36 +++++++-------- test/CodeGen/WebAssembly/load-ext.ll | 20 ++++----- test/CodeGen/WebAssembly/load-store-i1.ll | 20 ++++----- test/CodeGen/WebAssembly/load.ll | 8 ++-- test/CodeGen/WebAssembly/phi.ll | 2 +- test/CodeGen/WebAssembly/select.ll | 16 +++---- 16 files changed, 210 insertions(+), 198 deletions(-) diff --git a/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp b/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp index 5a6f4354b22..7034892de8e 100644 --- a/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp +++ b/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp @@ -269,33 +269,39 @@ void WebAssemblyAsmPrinter::EmitInstruction(const MachineInstr *MI) { switch (MI->getOpcode()) { case TargetOpcode::COPY: - OS << "get_local " << regToString(MI->getOperand(1)); + OS << "get_local push, " << regToString(MI->getOperand(1)); break; case WebAssembly::GLOBAL: // TODO: wasm64 - OS << "i32.const " << toSymbol(MI->getOperand(1).getGlobal()->getName()); + OS << "i32.const push, " << toSymbol(MI->getOperand(1).getGlobal()->getName()); break; case WebAssembly::ARGUMENT_I32: case WebAssembly::ARGUMENT_I64: case WebAssembly::ARGUMENT_F32: case WebAssembly::ARGUMENT_F64: - OS << "get_local " << argToString(MI->getOperand(1)); + OS << "get_local push, " << argToString(MI->getOperand(1)); break; case WebAssembly::Const_I32: - OS << "i32.const " << MI->getOperand(1).getImm(); + OS << "i32.const push, " << MI->getOperand(1).getImm(); break; case WebAssembly::Const_I64: - OS << "i64.const " << MI->getOperand(1).getImm(); + OS << "i64.const push, " << MI->getOperand(1).getImm(); break; case WebAssembly::Const_F32: - OS << "f32.const " << toString(MI->getOperand(1).getFPImm()->getValueAPF()); + OS << "f32.const push, " << toString(MI->getOperand(1).getFPImm()->getValueAPF()); break; case WebAssembly::Const_F64: - OS << "f64.const " << toString(MI->getOperand(1).getFPImm()->getValueAPF()); + OS << "f64.const push, " << toString(MI->getOperand(1).getFPImm()->getValueAPF()); break; default: { OS << OpcodeName(TII, MI); bool NeedComma = false; + bool DefsPushed = false; + if (NumDefs != 0 && !MI->isCall()) { + OS << " push"; + NeedComma = true; + DefsPushed = true; + } for (const MachineOperand &MO : MI->uses()) { if (MO.isReg() && MO.isImplicit()) continue; @@ -322,6 +328,12 @@ void WebAssemblyAsmPrinter::EmitInstruction(const MachineInstr *MI) { OS << toSymbol(MO.getMBB()->getSymbol()->getName()); break; } + if (NumDefs != 0 && !DefsPushed) { + // Special-case for calls; print the push after the callee. + assert(MI->isCall()); + OS << ", push"; + DefsPushed = true; + } } break; } diff --git a/test/CodeGen/WebAssembly/call.ll b/test/CodeGen/WebAssembly/call.ll index 8cd53710759..560d93eda1c 100644 --- a/test/CodeGen/WebAssembly/call.ll +++ b/test/CodeGen/WebAssembly/call.ll @@ -16,7 +16,7 @@ declare void @void_nullary() ; CHECK-LABEL: call_i32_nullary: ; CHECK-NEXT: .result i32 ; CHECK-NEXT: .local i32 -; CHECK-NEXT: call $i32_nullary +; CHECK-NEXT: call $i32_nullary, push{{$}} ; CHECK-NEXT: set_local 0, pop ; CHECK-NEXT: return (get_local 0) define i32 @call_i32_nullary() { @@ -27,7 +27,7 @@ define i32 @call_i32_nullary() { ; CHECK-LABEL: call_i64_nullary: ; CHECK-NEXT: .result i64 ; CHECK-NEXT: .local i64 -; CHECK-NEXT: call $i64_nullary +; CHECK-NEXT: call $i64_nullary, push{{$}} ; CHECK-NEXT: set_local 0, pop ; CHECK-NEXT: return (get_local 0) define i64 @call_i64_nullary() { @@ -38,7 +38,7 @@ define i64 @call_i64_nullary() { ; CHECK-LABEL: call_float_nullary: ; CHECK-NEXT: .result f32 ; CHECK-NEXT: .local f32 -; CHECK-NEXT: call $float_nullary +; CHECK-NEXT: call $float_nullary, push{{$}} ; CHECK-NEXT: set_local 0, pop ; CHECK-NEXT: return (get_local 0) define float @call_float_nullary() { @@ -49,7 +49,7 @@ define float @call_float_nullary() { ; CHECK-LABEL: call_double_nullary: ; CHECK-NEXT: .result f64 ; CHECK-NEXT: .local f64 -; CHECK-NEXT: call $double_nullary +; CHECK-NEXT: call $double_nullary, push{{$}} ; CHECK-NEXT: set_local 0, pop ; CHECK-NEXT: return (get_local 0) define double @call_double_nullary() { @@ -58,7 +58,7 @@ define double @call_double_nullary() { } ; CHECK-LABEL: call_void_nullary: -; CHECK-NEXT: call $void_nullary +; CHECK-NEXT: call $void_nullary{{$}} ; CHECK-NEXT: return define void @call_void_nullary() { call void @void_nullary() @@ -71,7 +71,7 @@ define void @call_void_nullary() { ; CHECK-NEXT: .local i32, i32 ; CHECK-NEXT: get_local 0 ; CHECK-NEXT: set_local 1, pop -; CHECK-NEXT: call $i32_unary, (get_local 1) +; CHECK-NEXT: call $i32_unary, push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop ; CHECK-NEXT: return (get_local 2) define i32 @call_i32_unary(i32 %a) { @@ -88,7 +88,7 @@ define i32 @call_i32_unary(i32 %a) { ; CHECK-NEXT: set_local 2, pop ; CHECK-NEXT: get_local 0 ; CHECK-NEXT: set_local 3, pop -; CHECK-NEXT: call $i32_binary, (get_local 3), (get_local 2) +; CHECK-NEXT: call $i32_binary, push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop ; CHECK-NEXT: return (get_local 4) define i32 @call_i32_binary(i32 %a, i32 %b) { @@ -101,7 +101,7 @@ define i32 @call_i32_binary(i32 %a, i32 %b) { ; CHECK-NEXT: .local i32 ; CHECK-NEXT: get_local 0 ; CHECK-NEXT: set_local 1, pop -; CHECK-NEXT: call_indirect (get_local 1) +; CHECK-NEXT: call_indirect (get_local 1){{$}} ; CHECK-NEXT: return define void @call_indirect_void(void ()* %callee) { call void %callee() @@ -114,7 +114,7 @@ define void @call_indirect_void(void ()* %callee) { ; CHECK-NEXT: .local i32, i32 ; CHECK-NEXT: get_local 0 ; CHECK-NEXT: set_local 1, pop -; CHECK-NEXT: call_indirect (get_local 1) +; CHECK-NEXT: call_indirect (get_local 1), push{{$}} ; CHECK-NEXT: set_local 2, pop ; CHECK-NEXT: return (get_local 2) define i32 @call_indirect_i32(i32 ()* %callee) { @@ -123,7 +123,7 @@ define i32 @call_indirect_i32(i32 ()* %callee) { } ; CHECK-LABEL: tail_call_void_nullary: -; CHECK-NEXT: call $void_nullary +; CHECK-NEXT: call $void_nullary{{$}} ; CHECK-NEXT: return{{$}} define void @tail_call_void_nullary() { tail call void @void_nullary() @@ -131,7 +131,7 @@ define void @tail_call_void_nullary() { } ; CHECK-LABEL: fastcc_tail_call_void_nullary: -; CHECK-NEXT: call $void_nullary +; CHECK-NEXT: call $void_nullary{{$}} ; CHECK-NEXT: return{{$}} define void @fastcc_tail_call_void_nullary() { tail call fastcc void @void_nullary() diff --git a/test/CodeGen/WebAssembly/comparisons_f32.ll b/test/CodeGen/WebAssembly/comparisons_f32.ll index c700b05b514..09e5b9acf0b 100644 --- a/test/CodeGen/WebAssembly/comparisons_f32.ll +++ b/test/CodeGen/WebAssembly/comparisons_f32.ll @@ -15,11 +15,11 @@ target triple = "wasm32-unknown-unknown" ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 1{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: eq (get_local 3), (get_local 3){{$}} +; CHECK-NEXT: eq push, (get_local 3), (get_local 3){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} -; CHECK-NEXT: eq (get_local 2), (get_local 2){{$}} +; CHECK-NEXT: eq push, (get_local 2), (get_local 2){{$}} ; CHECK-NEXT: set_local 5, pop{{$}} -; CHECK-NEXT: and (get_local 5), (get_local 4){{$}} +; CHECK-NEXT: and push, (get_local 5), (get_local 4){{$}} ; CHECK-NEXT: set_local 6, pop{{$}} ; CHECK-NEXT: return (get_local 6){{$}} define i32 @ord_f32(float %x, float %y) { @@ -37,11 +37,11 @@ define i32 @ord_f32(float %x, float %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 1{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: ne (get_local 3), (get_local 3){{$}} +; CHECK-NEXT: ne push, (get_local 3), (get_local 3){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} -; CHECK-NEXT: ne (get_local 2), (get_local 2){{$}} +; CHECK-NEXT: ne push, (get_local 2), (get_local 2){{$}} ; CHECK-NEXT: set_local 5, pop{{$}} -; CHECK-NEXT: or (get_local 5), (get_local 4){{$}} +; CHECK-NEXT: or push, (get_local 5), (get_local 4){{$}} ; CHECK-NEXT: set_local 6, pop{{$}} ; CHECK-NEXT: return (get_local 6){{$}} define i32 @uno_f32(float %x, float %y) { @@ -59,7 +59,7 @@ define i32 @uno_f32(float %x, float %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: eq (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: eq push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @oeq_f32(float %x, float %y) { @@ -69,7 +69,7 @@ define i32 @oeq_f32(float %x, float %y) { } ; CHECK-LABEL: une_f32: -; CHECK: ne (get_local 3), (get_local 2){{$}} +; CHECK: ne push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @une_f32(float %x, float %y) { %a = fcmp une float %x, %y @@ -78,7 +78,7 @@ define i32 @une_f32(float %x, float %y) { } ; CHECK-LABEL: olt_f32: -; CHECK: lt (get_local 3), (get_local 2){{$}} +; CHECK: lt push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @olt_f32(float %x, float %y) { %a = fcmp olt float %x, %y @@ -87,7 +87,7 @@ define i32 @olt_f32(float %x, float %y) { } ; CHECK-LABEL: ole_f32: -; CHECK: le (get_local 3), (get_local 2){{$}} +; CHECK: le push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ole_f32(float %x, float %y) { %a = fcmp ole float %x, %y @@ -96,7 +96,7 @@ define i32 @ole_f32(float %x, float %y) { } ; CHECK-LABEL: ogt_f32: -; CHECK: gt (get_local 3), (get_local 2){{$}} +; CHECK: gt push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ogt_f32(float %x, float %y) { %a = fcmp ogt float %x, %y @@ -105,7 +105,7 @@ define i32 @ogt_f32(float %x, float %y) { } ; CHECK-LABEL: oge_f32: -; CHECK: ge (get_local 3), (get_local 2){{$}} +; CHECK: ge push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @oge_f32(float %x, float %y) { %a = fcmp oge float %x, %y @@ -124,15 +124,15 @@ define i32 @oge_f32(float %x, float %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: eq (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: eq push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} -; CHECK-NEXT: ne (get_local 2), (get_local 2){{$}} +; CHECK-NEXT: ne push, (get_local 2), (get_local 2){{$}} ; CHECK-NEXT: set_local 5, pop{{$}} -; CHECK-NEXT: ne (get_local 3), (get_local 3){{$}} +; CHECK-NEXT: ne push, (get_local 3), (get_local 3){{$}} ; CHECK-NEXT: set_local 6, pop{{$}} -; CHECK-NEXT: or (get_local 6), (get_local 5){{$}} +; CHECK-NEXT: or push, (get_local 6), (get_local 5){{$}} ; CHECK-NEXT: set_local 7, pop{{$}} -; CHECK-NEXT: or (get_local 4), (get_local 7){{$}} +; CHECK-NEXT: or push, (get_local 4), (get_local 7){{$}} ; CHECK-NEXT: set_local 8, pop{{$}} ; CHECK-NEXT: return (get_local 8){{$}} define i32 @ueq_f32(float %x, float %y) { @@ -142,7 +142,7 @@ define i32 @ueq_f32(float %x, float %y) { } ; CHECK-LABEL: one_f32: -; CHECK: ne (get_local 3), (get_local 2){{$}} +; CHECK: ne push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @one_f32(float %x, float %y) { %a = fcmp one float %x, %y @@ -151,7 +151,7 @@ define i32 @one_f32(float %x, float %y) { } ; CHECK-LABEL: ult_f32: -; CHECK: lt (get_local 3), (get_local 2){{$}} +; CHECK: lt push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ult_f32(float %x, float %y) { %a = fcmp ult float %x, %y @@ -160,7 +160,7 @@ define i32 @ult_f32(float %x, float %y) { } ; CHECK-LABEL: ule_f32: -; CHECK: le (get_local 3), (get_local 2){{$}} +; CHECK: le push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ule_f32(float %x, float %y) { %a = fcmp ule float %x, %y @@ -169,7 +169,7 @@ define i32 @ule_f32(float %x, float %y) { } ; CHECK-LABEL: ugt_f32: -; CHECK: gt (get_local 3), (get_local 2){{$}} +; CHECK: gt push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ugt_f32(float %x, float %y) { %a = fcmp ugt float %x, %y @@ -178,7 +178,7 @@ define i32 @ugt_f32(float %x, float %y) { } ; CHECK-LABEL: uge_f32: -; CHECK: ge (get_local 3), (get_local 2){{$}} +; CHECK: ge push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @uge_f32(float %x, float %y) { %a = fcmp uge float %x, %y diff --git a/test/CodeGen/WebAssembly/comparisons_f64.ll b/test/CodeGen/WebAssembly/comparisons_f64.ll index ae0236bd819..b2e2d053afa 100644 --- a/test/CodeGen/WebAssembly/comparisons_f64.ll +++ b/test/CodeGen/WebAssembly/comparisons_f64.ll @@ -15,11 +15,11 @@ target triple = "wasm32-unknown-unknown" ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 1{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: eq (get_local 3), (get_local 3){{$}} +; CHECK-NEXT: eq push, (get_local 3), (get_local 3){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} -; CHECK-NEXT: eq (get_local 2), (get_local 2){{$}} +; CHECK-NEXT: eq push, (get_local 2), (get_local 2){{$}} ; CHECK-NEXT: set_local 5, pop{{$}} -; CHECK-NEXT: and (get_local 5), (get_local 4){{$}} +; CHECK-NEXT: and push, (get_local 5), (get_local 4){{$}} ; CHECK-NEXT: set_local 6, pop{{$}} ; CHECK-NEXT: return (get_local 6){{$}} define i32 @ord_f64(double %x, double %y) { @@ -37,11 +37,11 @@ define i32 @ord_f64(double %x, double %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 1{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: ne (get_local 3), (get_local 3){{$}} +; CHECK-NEXT: ne push, (get_local 3), (get_local 3){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} -; CHECK-NEXT: ne (get_local 2), (get_local 2){{$}} +; CHECK-NEXT: ne push, (get_local 2), (get_local 2){{$}} ; CHECK-NEXT: set_local 5, pop{{$}} -; CHECK-NEXT: or (get_local 5), (get_local 4){{$}} +; CHECK-NEXT: or push, (get_local 5), (get_local 4){{$}} ; CHECK-NEXT: set_local 6, pop{{$}} ; CHECK-NEXT: return (get_local 6){{$}} define i32 @uno_f64(double %x, double %y) { @@ -59,7 +59,7 @@ define i32 @uno_f64(double %x, double %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: eq (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: eq push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @oeq_f64(double %x, double %y) { @@ -69,7 +69,7 @@ define i32 @oeq_f64(double %x, double %y) { } ; CHECK-LABEL: une_f64: -; CHECK: ne (get_local 3), (get_local 2){{$}} +; CHECK: ne push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @une_f64(double %x, double %y) { %a = fcmp une double %x, %y @@ -78,7 +78,7 @@ define i32 @une_f64(double %x, double %y) { } ; CHECK-LABEL: olt_f64: -; CHECK: lt (get_local 3), (get_local 2){{$}} +; CHECK: lt push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @olt_f64(double %x, double %y) { %a = fcmp olt double %x, %y @@ -87,7 +87,7 @@ define i32 @olt_f64(double %x, double %y) { } ; CHECK-LABEL: ole_f64: -; CHECK: le (get_local 3), (get_local 2){{$}} +; CHECK: le push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ole_f64(double %x, double %y) { %a = fcmp ole double %x, %y @@ -96,7 +96,7 @@ define i32 @ole_f64(double %x, double %y) { } ; CHECK-LABEL: ogt_f64: -; CHECK: gt (get_local 3), (get_local 2){{$}} +; CHECK: gt push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ogt_f64(double %x, double %y) { %a = fcmp ogt double %x, %y @@ -105,7 +105,7 @@ define i32 @ogt_f64(double %x, double %y) { } ; CHECK-LABEL: oge_f64: -; CHECK: ge (get_local 3), (get_local 2){{$}} +; CHECK: ge push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @oge_f64(double %x, double %y) { %a = fcmp oge double %x, %y @@ -124,15 +124,15 @@ define i32 @oge_f64(double %x, double %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: eq (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: eq push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} -; CHECK-NEXT: ne (get_local 2), (get_local 2){{$}} +; CHECK-NEXT: ne push, (get_local 2), (get_local 2){{$}} ; CHECK-NEXT: set_local 5, pop{{$}} -; CHECK-NEXT: ne (get_local 3), (get_local 3){{$}} +; CHECK-NEXT: ne push, (get_local 3), (get_local 3){{$}} ; CHECK-NEXT: set_local 6, pop{{$}} -; CHECK-NEXT: or (get_local 6), (get_local 5){{$}} +; CHECK-NEXT: or push, (get_local 6), (get_local 5){{$}} ; CHECK-NEXT: set_local 7, pop{{$}} -; CHECK-NEXT: or (get_local 4), (get_local 7){{$}} +; CHECK-NEXT: or push, (get_local 4), (get_local 7){{$}} ; CHECK-NEXT: set_local 8, pop{{$}} ; CHECK-NEXT: return (get_local 8){{$}} define i32 @ueq_f64(double %x, double %y) { @@ -142,7 +142,7 @@ define i32 @ueq_f64(double %x, double %y) { } ; CHECK-LABEL: one_f64: -; CHECK: ne (get_local 3), (get_local 2){{$}} +; CHECK: ne push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @one_f64(double %x, double %y) { %a = fcmp one double %x, %y @@ -151,7 +151,7 @@ define i32 @one_f64(double %x, double %y) { } ; CHECK-LABEL: ult_f64: -; CHECK: lt (get_local 3), (get_local 2){{$}} +; CHECK: lt push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ult_f64(double %x, double %y) { %a = fcmp ult double %x, %y @@ -160,7 +160,7 @@ define i32 @ult_f64(double %x, double %y) { } ; CHECK-LABEL: ule_f64: -; CHECK: le (get_local 3), (get_local 2){{$}} +; CHECK: le push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ule_f64(double %x, double %y) { %a = fcmp ule double %x, %y @@ -169,7 +169,7 @@ define i32 @ule_f64(double %x, double %y) { } ; CHECK-LABEL: ugt_f64: -; CHECK: gt (get_local 3), (get_local 2){{$}} +; CHECK: gt push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ugt_f64(double %x, double %y) { %a = fcmp ugt double %x, %y @@ -178,7 +178,7 @@ define i32 @ugt_f64(double %x, double %y) { } ; CHECK-LABEL: uge_f64: -; CHECK: ge (get_local 3), (get_local 2){{$}} +; CHECK: ge push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @uge_f64(double %x, double %y) { %a = fcmp uge double %x, %y diff --git a/test/CodeGen/WebAssembly/comparisons_i32.ll b/test/CodeGen/WebAssembly/comparisons_i32.ll index c47bcdf0176..1cf43de99ec 100644 --- a/test/CodeGen/WebAssembly/comparisons_i32.ll +++ b/test/CodeGen/WebAssembly/comparisons_i32.ll @@ -14,7 +14,7 @@ target triple = "wasm32-unknown-unknown" ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: eq (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: eq push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @eq_i32(i32 %x, i32 %y) { @@ -24,7 +24,7 @@ define i32 @eq_i32(i32 %x, i32 %y) { } ; CHECK-LABEL: ne_i32: -; CHECK: ne (get_local 3), (get_local 2){{$}} +; CHECK: ne push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ne_i32(i32 %x, i32 %y) { %a = icmp ne i32 %x, %y @@ -33,7 +33,7 @@ define i32 @ne_i32(i32 %x, i32 %y) { } ; CHECK-LABEL: slt_i32: -; CHECK: i32.lt_s (get_local 3), (get_local 2){{$}} +; CHECK: i32.lt_s push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @slt_i32(i32 %x, i32 %y) { %a = icmp slt i32 %x, %y @@ -42,7 +42,7 @@ define i32 @slt_i32(i32 %x, i32 %y) { } ; CHECK-LABEL: sle_i32: -; CHECK: i32.le_s (get_local 3), (get_local 2){{$}} +; CHECK: i32.le_s push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @sle_i32(i32 %x, i32 %y) { %a = icmp sle i32 %x, %y @@ -51,7 +51,7 @@ define i32 @sle_i32(i32 %x, i32 %y) { } ; CHECK-LABEL: ult_i32: -; CHECK: i32.lt_u (get_local 3), (get_local 2){{$}} +; CHECK: i32.lt_u push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ult_i32(i32 %x, i32 %y) { %a = icmp ult i32 %x, %y @@ -60,7 +60,7 @@ define i32 @ult_i32(i32 %x, i32 %y) { } ; CHECK-LABEL: ule_i32: -; CHECK: i32.le_u (get_local 3), (get_local 2){{$}} +; CHECK: i32.le_u push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ule_i32(i32 %x, i32 %y) { %a = icmp ule i32 %x, %y @@ -69,7 +69,7 @@ define i32 @ule_i32(i32 %x, i32 %y) { } ; CHECK-LABEL: sgt_i32: -; CHECK: i32.gt_s (get_local 3), (get_local 2){{$}} +; CHECK: i32.gt_s push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @sgt_i32(i32 %x, i32 %y) { %a = icmp sgt i32 %x, %y @@ -78,7 +78,7 @@ define i32 @sgt_i32(i32 %x, i32 %y) { } ; CHECK-LABEL: sge_i32: -; CHECK: i32.ge_s (get_local 3), (get_local 2){{$}} +; CHECK: i32.ge_s push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @sge_i32(i32 %x, i32 %y) { %a = icmp sge i32 %x, %y @@ -87,7 +87,7 @@ define i32 @sge_i32(i32 %x, i32 %y) { } ; CHECK-LABEL: ugt_i32: -; CHECK: i32.gt_u (get_local 3), (get_local 2){{$}} +; CHECK: i32.gt_u push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ugt_i32(i32 %x, i32 %y) { %a = icmp ugt i32 %x, %y @@ -96,7 +96,7 @@ define i32 @ugt_i32(i32 %x, i32 %y) { } ; CHECK-LABEL: uge_i32: -; CHECK: i32.ge_u (get_local 3), (get_local 2){{$}} +; CHECK: i32.ge_u push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @uge_i32(i32 %x, i32 %y) { %a = icmp uge i32 %x, %y diff --git a/test/CodeGen/WebAssembly/comparisons_i64.ll b/test/CodeGen/WebAssembly/comparisons_i64.ll index d8d9a295e65..871794eef34 100644 --- a/test/CodeGen/WebAssembly/comparisons_i64.ll +++ b/test/CodeGen/WebAssembly/comparisons_i64.ll @@ -14,7 +14,7 @@ target triple = "wasm32-unknown-unknown" ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: eq (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: eq push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @eq_i64(i64 %x, i64 %y) { @@ -24,7 +24,7 @@ define i32 @eq_i64(i64 %x, i64 %y) { } ; CHECK-LABEL: ne_i64: -; CHECK: ne (get_local 3), (get_local 2){{$}} +; CHECK: ne push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ne_i64(i64 %x, i64 %y) { %a = icmp ne i64 %x, %y @@ -33,7 +33,7 @@ define i32 @ne_i64(i64 %x, i64 %y) { } ; CHECK-LABEL: slt_i64: -; CHECK: i64.lt_s (get_local 3), (get_local 2){{$}} +; CHECK: i64.lt_s push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @slt_i64(i64 %x, i64 %y) { %a = icmp slt i64 %x, %y @@ -42,7 +42,7 @@ define i32 @slt_i64(i64 %x, i64 %y) { } ; CHECK-LABEL: sle_i64: -; CHECK: i64.le_s (get_local 3), (get_local 2){{$}} +; CHECK: i64.le_s push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @sle_i64(i64 %x, i64 %y) { %a = icmp sle i64 %x, %y @@ -51,7 +51,7 @@ define i32 @sle_i64(i64 %x, i64 %y) { } ; CHECK-LABEL: ult_i64: -; CHECK: i64.lt_u (get_local 3), (get_local 2){{$}} +; CHECK: i64.lt_u push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ult_i64(i64 %x, i64 %y) { %a = icmp ult i64 %x, %y @@ -60,7 +60,7 @@ define i32 @ult_i64(i64 %x, i64 %y) { } ; CHECK-LABEL: ule_i64: -; CHECK: i64.le_u (get_local 3), (get_local 2){{$}} +; CHECK: i64.le_u push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ule_i64(i64 %x, i64 %y) { %a = icmp ule i64 %x, %y @@ -69,7 +69,7 @@ define i32 @ule_i64(i64 %x, i64 %y) { } ; CHECK-LABEL: sgt_i64: -; CHECK: i64.gt_s (get_local 3), (get_local 2){{$}} +; CHECK: i64.gt_s push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @sgt_i64(i64 %x, i64 %y) { %a = icmp sgt i64 %x, %y @@ -78,7 +78,7 @@ define i32 @sgt_i64(i64 %x, i64 %y) { } ; CHECK-LABEL: sge_i64: -; CHECK: i64.ge_s (get_local 3), (get_local 2){{$}} +; CHECK: i64.ge_s push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @sge_i64(i64 %x, i64 %y) { %a = icmp sge i64 %x, %y @@ -87,7 +87,7 @@ define i32 @sge_i64(i64 %x, i64 %y) { } ; CHECK-LABEL: ugt_i64: -; CHECK: i64.gt_u (get_local 3), (get_local 2){{$}} +; CHECK: i64.gt_u push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @ugt_i64(i64 %x, i64 %y) { %a = icmp ugt i64 %x, %y @@ -96,7 +96,7 @@ define i32 @ugt_i64(i64 %x, i64 %y) { } ; CHECK-LABEL: uge_i64: -; CHECK: i64.ge_u (get_local 3), (get_local 2){{$}} +; CHECK: i64.ge_u push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define i32 @uge_i64(i64 %x, i64 %y) { %a = icmp uge i64 %x, %y diff --git a/test/CodeGen/WebAssembly/conv.ll b/test/CodeGen/WebAssembly/conv.ll index b719f8fbaf4..0ef02eaf02c 100644 --- a/test/CodeGen/WebAssembly/conv.ll +++ b/test/CodeGen/WebAssembly/conv.ll @@ -11,7 +11,7 @@ target triple = "wasm32-unknown-unknown" ; CHECK-NEXT: .local i64, i32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: i32.wrap/i64 (get_local 1){{$}} +; CHECK-NEXT: i32.wrap/i64 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i32 @i32_wrap_i64(i64 %x) { @@ -25,7 +25,7 @@ define i32 @i32_wrap_i64(i64 %x) { ; CHECK-NEXT: .local i32, i64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: i64.extend_s/i32 (get_local 1){{$}} +; CHECK-NEXT: i64.extend_s/i32 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i64 @i64_extend_s_i32(i32 %x) { @@ -39,7 +39,7 @@ define i64 @i64_extend_s_i32(i32 %x) { ; CHECK-NEXT: .local i32, i64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: i64.extend_u/i32 (get_local 1){{$}} +; CHECK-NEXT: i64.extend_u/i32 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i64 @i64_extend_u_i32(i32 %x) { @@ -53,7 +53,7 @@ define i64 @i64_extend_u_i32(i32 %x) { ; CHECK-NEXT: .local f32, i32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: i32.trunc_s/f32 (get_local 1){{$}} +; CHECK-NEXT: i32.trunc_s/f32 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i32 @i32_trunc_s_f32(float %x) { @@ -67,7 +67,7 @@ define i32 @i32_trunc_s_f32(float %x) { ; CHECK-NEXT: .local f32, i32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: i32.trunc_u/f32 (get_local 1){{$}} +; CHECK-NEXT: i32.trunc_u/f32 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i32 @i32_trunc_u_f32(float %x) { @@ -81,7 +81,7 @@ define i32 @i32_trunc_u_f32(float %x) { ; CHECK-NEXT: .local f64, i32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: i32.trunc_s/f64 (get_local 1){{$}} +; CHECK-NEXT: i32.trunc_s/f64 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i32 @i32_trunc_s_f64(double %x) { @@ -95,7 +95,7 @@ define i32 @i32_trunc_s_f64(double %x) { ; CHECK-NEXT: .local f64, i32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: i32.trunc_u/f64 (get_local 1){{$}} +; CHECK-NEXT: i32.trunc_u/f64 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i32 @i32_trunc_u_f64(double %x) { @@ -109,7 +109,7 @@ define i32 @i32_trunc_u_f64(double %x) { ; CHECK-NEXT: .local f32, i64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: i64.trunc_s/f32 (get_local 1){{$}} +; CHECK-NEXT: i64.trunc_s/f32 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i64 @i64_trunc_s_f32(float %x) { @@ -123,7 +123,7 @@ define i64 @i64_trunc_s_f32(float %x) { ; CHECK-NEXT: .local f32, i64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: i64.trunc_u/f32 (get_local 1){{$}} +; CHECK-NEXT: i64.trunc_u/f32 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i64 @i64_trunc_u_f32(float %x) { @@ -137,7 +137,7 @@ define i64 @i64_trunc_u_f32(float %x) { ; CHECK-NEXT: .local f64, i64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: i64.trunc_s/f64 (get_local 1){{$}} +; CHECK-NEXT: i64.trunc_s/f64 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i64 @i64_trunc_s_f64(double %x) { @@ -151,7 +151,7 @@ define i64 @i64_trunc_s_f64(double %x) { ; CHECK-NEXT: .local f64, i64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: i64.trunc_u/f64 (get_local 1){{$}} +; CHECK-NEXT: i64.trunc_u/f64 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i64 @i64_trunc_u_f64(double %x) { @@ -165,7 +165,7 @@ define i64 @i64_trunc_u_f64(double %x) { ; CHECK-NEXT: .local i32, f32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: f32.convert_s/i32 (get_local 1){{$}} +; CHECK-NEXT: f32.convert_s/i32 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define float @f32_convert_s_i32(i32 %x) { @@ -179,7 +179,7 @@ define float @f32_convert_s_i32(i32 %x) { ; CHECK-NEXT: .local i32, f32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: f32.convert_u/i32 (get_local 1){{$}} +; CHECK-NEXT: f32.convert_u/i32 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define float @f32_convert_u_i32(i32 %x) { @@ -193,7 +193,7 @@ define float @f32_convert_u_i32(i32 %x) { ; CHECK-NEXT: .local i32, f64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: f64.convert_s/i32 (get_local 1){{$}} +; CHECK-NEXT: f64.convert_s/i32 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define double @f64_convert_s_i32(i32 %x) { @@ -207,7 +207,7 @@ define double @f64_convert_s_i32(i32 %x) { ; CHECK-NEXT: .local i32, f64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: f64.convert_u/i32 (get_local 1){{$}} +; CHECK-NEXT: f64.convert_u/i32 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define double @f64_convert_u_i32(i32 %x) { @@ -221,7 +221,7 @@ define double @f64_convert_u_i32(i32 %x) { ; CHECK-NEXT: .local i64, f32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: f32.convert_s/i64 (get_local 1){{$}} +; CHECK-NEXT: f32.convert_s/i64 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define float @f32_convert_s_i64(i64 %x) { @@ -235,7 +235,7 @@ define float @f32_convert_s_i64(i64 %x) { ; CHECK-NEXT: .local i64, f32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: f32.convert_u/i64 (get_local 1){{$}} +; CHECK-NEXT: f32.convert_u/i64 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define float @f32_convert_u_i64(i64 %x) { @@ -249,7 +249,7 @@ define float @f32_convert_u_i64(i64 %x) { ; CHECK-NEXT: .local i64, f64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: f64.convert_s/i64 (get_local 1){{$}} +; CHECK-NEXT: f64.convert_s/i64 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define double @f64_convert_s_i64(i64 %x) { @@ -263,7 +263,7 @@ define double @f64_convert_s_i64(i64 %x) { ; CHECK-NEXT: .local i64, f64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: f64.convert_u/i64 (get_local 1){{$}} +; CHECK-NEXT: f64.convert_u/i64 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define double @f64_convert_u_i64(i64 %x) { @@ -277,7 +277,7 @@ define double @f64_convert_u_i64(i64 %x) { ; CHECK-NEXT: .local f32, f64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: f64.promote/f32 (get_local 1){{$}} +; CHECK-NEXT: f64.promote/f32 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define double @f64_promote_f32(float %x) { @@ -291,7 +291,7 @@ define double @f64_promote_f32(float %x) { ; CHECK-NEXT: .local f64, f32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: f32.demote/f64 (get_local 1){{$}} +; CHECK-NEXT: f32.demote/f64 push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define float @f32_demote_f64(double %x) { diff --git a/test/CodeGen/WebAssembly/f32.ll b/test/CodeGen/WebAssembly/f32.ll index ec3d5aebcea..4fb36017802 100644 --- a/test/CodeGen/WebAssembly/f32.ll +++ b/test/CodeGen/WebAssembly/f32.ll @@ -23,7 +23,7 @@ declare float @llvm.rint.f32(float) ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: add (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: add push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define float @fadd32(float %x, float %y) { @@ -32,7 +32,7 @@ define float @fadd32(float %x, float %y) { } ; CHECK-LABEL: fsub32: -; CHECK: sub (get_local 3), (get_local 2){{$}} +; CHECK: sub push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define float @fsub32(float %x, float %y) { %a = fsub float %x, %y @@ -40,7 +40,7 @@ define float @fsub32(float %x, float %y) { } ; CHECK-LABEL: fmul32: -; CHECK: mul (get_local 3), (get_local 2){{$}} +; CHECK: mul push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define float @fmul32(float %x, float %y) { %a = fmul float %x, %y @@ -48,7 +48,7 @@ define float @fmul32(float %x, float %y) { } ; CHECK-LABEL: fdiv32: -; CHECK: div (get_local 3), (get_local 2){{$}} +; CHECK: div push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define float @fdiv32(float %x, float %y) { %a = fdiv float %x, %y @@ -56,7 +56,7 @@ define float @fdiv32(float %x, float %y) { } ; CHECK-LABEL: fabs32: -; CHECK: abs (get_local 1){{$}} +; CHECK: abs push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define float @fabs32(float %x) { %a = call float @llvm.fabs.f32(float %x) @@ -64,7 +64,7 @@ define float @fabs32(float %x) { } ; CHECK-LABEL: fneg32: -; CHECK: neg (get_local 1){{$}} +; CHECK: neg push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define float @fneg32(float %x) { %a = fsub float -0., %x @@ -72,7 +72,7 @@ define float @fneg32(float %x) { } ; CHECK-LABEL: copysign32: -; CHECK: copysign (get_local 3), (get_local 2){{$}} +; CHECK: copysign push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define float @copysign32(float %x, float %y) { %a = call float @llvm.copysign.f32(float %x, float %y) @@ -80,7 +80,7 @@ define float @copysign32(float %x, float %y) { } ; CHECK-LABEL: sqrt32: -; CHECK: sqrt (get_local 1){{$}} +; CHECK: sqrt push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define float @sqrt32(float %x) { %a = call float @llvm.sqrt.f32(float %x) @@ -88,7 +88,7 @@ define float @sqrt32(float %x) { } ; CHECK-LABEL: ceil32: -; CHECK: ceil (get_local 1){{$}} +; CHECK: ceil push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define float @ceil32(float %x) { %a = call float @llvm.ceil.f32(float %x) @@ -96,7 +96,7 @@ define float @ceil32(float %x) { } ; CHECK-LABEL: floor32: -; CHECK: floor (get_local 1){{$}} +; CHECK: floor push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define float @floor32(float %x) { %a = call float @llvm.floor.f32(float %x) @@ -104,7 +104,7 @@ define float @floor32(float %x) { } ; CHECK-LABEL: trunc32: -; CHECK: trunc (get_local 1){{$}} +; CHECK: trunc push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define float @trunc32(float %x) { %a = call float @llvm.trunc.f32(float %x) @@ -112,7 +112,7 @@ define float @trunc32(float %x) { } ; CHECK-LABEL: nearest32: -; CHECK: nearest (get_local 1){{$}} +; CHECK: nearest push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define float @nearest32(float %x) { %a = call float @llvm.nearbyint.f32(float %x) @@ -120,7 +120,7 @@ define float @nearest32(float %x) { } ; CHECK-LABEL: nearest32_via_rint: -; CHECK: nearest (get_local 1){{$}} +; CHECK: nearest push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define float @nearest32_via_rint(float %x) { %a = call float @llvm.rint.f32(float %x) diff --git a/test/CodeGen/WebAssembly/f64.ll b/test/CodeGen/WebAssembly/f64.ll index 04d26c48d98..5cc6e8711a7 100644 --- a/test/CodeGen/WebAssembly/f64.ll +++ b/test/CodeGen/WebAssembly/f64.ll @@ -23,7 +23,7 @@ declare double @llvm.rint.f64(double) ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: add (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: add push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define double @fadd64(double %x, double %y) { @@ -32,7 +32,7 @@ define double @fadd64(double %x, double %y) { } ; CHECK-LABEL: fsub64: -; CHECK: sub (get_local 3), (get_local 2){{$}} +; CHECK: sub push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define double @fsub64(double %x, double %y) { %a = fsub double %x, %y @@ -40,7 +40,7 @@ define double @fsub64(double %x, double %y) { } ; CHECK-LABEL: fmul64: -; CHECK: mul (get_local 3), (get_local 2){{$}} +; CHECK: mul push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define double @fmul64(double %x, double %y) { %a = fmul double %x, %y @@ -48,7 +48,7 @@ define double @fmul64(double %x, double %y) { } ; CHECK-LABEL: fdiv64: -; CHECK: div (get_local 3), (get_local 2){{$}} +; CHECK: div push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define double @fdiv64(double %x, double %y) { %a = fdiv double %x, %y @@ -56,7 +56,7 @@ define double @fdiv64(double %x, double %y) { } ; CHECK-LABEL: fabs64: -; CHECK: abs (get_local 1){{$}} +; CHECK: abs push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define double @fabs64(double %x) { %a = call double @llvm.fabs.f64(double %x) @@ -64,7 +64,7 @@ define double @fabs64(double %x) { } ; CHECK-LABEL: fneg64: -; CHECK: neg (get_local 1){{$}} +; CHECK: neg push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define double @fneg64(double %x) { %a = fsub double -0., %x @@ -72,7 +72,7 @@ define double @fneg64(double %x) { } ; CHECK-LABEL: copysign64: -; CHECK: copysign (get_local 3), (get_local 2){{$}} +; CHECK: copysign push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} define double @copysign64(double %x, double %y) { %a = call double @llvm.copysign.f64(double %x, double %y) @@ -80,7 +80,7 @@ define double @copysign64(double %x, double %y) { } ; CHECK-LABEL: sqrt64: -; CHECK: sqrt (get_local 1){{$}} +; CHECK: sqrt push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define double @sqrt64(double %x) { %a = call double @llvm.sqrt.f64(double %x) @@ -88,7 +88,7 @@ define double @sqrt64(double %x) { } ; CHECK-LABEL: ceil64: -; CHECK: ceil (get_local 1){{$}} +; CHECK: ceil push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define double @ceil64(double %x) { %a = call double @llvm.ceil.f64(double %x) @@ -96,7 +96,7 @@ define double @ceil64(double %x) { } ; CHECK-LABEL: floor64: -; CHECK: floor (get_local 1){{$}} +; CHECK: floor push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define double @floor64(double %x) { %a = call double @llvm.floor.f64(double %x) @@ -104,7 +104,7 @@ define double @floor64(double %x) { } ; CHECK-LABEL: trunc64: -; CHECK: trunc (get_local 1){{$}} +; CHECK: trunc push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define double @trunc64(double %x) { %a = call double @llvm.trunc.f64(double %x) @@ -112,7 +112,7 @@ define double @trunc64(double %x) { } ; CHECK-LABEL: nearest64: -; CHECK: nearest (get_local 1){{$}} +; CHECK: nearest push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define double @nearest64(double %x) { %a = call double @llvm.nearbyint.f64(double %x) @@ -120,7 +120,7 @@ define double @nearest64(double %x) { } ; CHECK-LABEL: nearest64_via_rint: -; CHECK: nearest (get_local 1){{$}} +; CHECK: nearest push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define double @nearest64_via_rint(double %x) { %a = call double @llvm.rint.f64(double %x) diff --git a/test/CodeGen/WebAssembly/i32.ll b/test/CodeGen/WebAssembly/i32.ll index d958dba6136..0d143195d1d 100644 --- a/test/CodeGen/WebAssembly/i32.ll +++ b/test/CodeGen/WebAssembly/i32.ll @@ -18,7 +18,7 @@ declare i32 @llvm.ctpop.i32(i32) ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: add (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: add push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @add32(i32 %x, i32 %y) { @@ -35,7 +35,7 @@ define i32 @add32(i32 %x, i32 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: sub (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: sub push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @sub32(i32 %x, i32 %y) { @@ -52,7 +52,7 @@ define i32 @sub32(i32 %x, i32 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: mul (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: mul push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @mul32(i32 %x, i32 %y) { @@ -69,7 +69,7 @@ define i32 @mul32(i32 %x, i32 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: div_s (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: div_s push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @sdiv32(i32 %x, i32 %y) { @@ -86,7 +86,7 @@ define i32 @sdiv32(i32 %x, i32 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: div_u (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: div_u push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @udiv32(i32 %x, i32 %y) { @@ -103,7 +103,7 @@ define i32 @udiv32(i32 %x, i32 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: rem_s (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: rem_s push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @srem32(i32 %x, i32 %y) { @@ -120,7 +120,7 @@ define i32 @srem32(i32 %x, i32 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: rem_u (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: rem_u push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @urem32(i32 %x, i32 %y) { @@ -137,7 +137,7 @@ define i32 @urem32(i32 %x, i32 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: and (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: and push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @and32(i32 %x, i32 %y) { @@ -154,7 +154,7 @@ define i32 @and32(i32 %x, i32 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: or (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: or push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @or32(i32 %x, i32 %y) { @@ -171,7 +171,7 @@ define i32 @or32(i32 %x, i32 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: xor (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: xor push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @xor32(i32 %x, i32 %y) { @@ -188,7 +188,7 @@ define i32 @xor32(i32 %x, i32 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: shl (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: shl push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @shl32(i32 %x, i32 %y) { @@ -205,7 +205,7 @@ define i32 @shl32(i32 %x, i32 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: shr_u (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: shr_u push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @shr32(i32 %x, i32 %y) { @@ -222,7 +222,7 @@ define i32 @shr32(i32 %x, i32 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: shr_s (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: shr_s push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i32 @sar32(i32 %x, i32 %y) { @@ -236,7 +236,7 @@ define i32 @sar32(i32 %x, i32 %y) { ; CHECK-NEXT: .local i32, i32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: clz (get_local 1){{$}} +; CHECK-NEXT: clz push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i32 @clz32(i32 %x) { @@ -250,7 +250,7 @@ define i32 @clz32(i32 %x) { ; CHECK-NEXT: .local i32, i32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: clz (get_local 1){{$}} +; CHECK-NEXT: clz push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i32 @clz32_zero_undef(i32 %x) { @@ -264,7 +264,7 @@ define i32 @clz32_zero_undef(i32 %x) { ; CHECK-NEXT: .local i32, i32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: ctz (get_local 1){{$}} +; CHECK-NEXT: ctz push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i32 @ctz32(i32 %x) { @@ -278,7 +278,7 @@ define i32 @ctz32(i32 %x) { ; CHECK-NEXT: .local i32, i32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: ctz (get_local 1){{$}} +; CHECK-NEXT: ctz push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i32 @ctz32_zero_undef(i32 %x) { @@ -292,7 +292,7 @@ define i32 @ctz32_zero_undef(i32 %x) { ; CHECK-NEXT: .local i32, i32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: popcnt (get_local 1){{$}} +; CHECK-NEXT: popcnt push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i32 @popcnt32(i32 %x) { diff --git a/test/CodeGen/WebAssembly/i64.ll b/test/CodeGen/WebAssembly/i64.ll index 28d1ef98678..0d39d6f5e9c 100644 --- a/test/CodeGen/WebAssembly/i64.ll +++ b/test/CodeGen/WebAssembly/i64.ll @@ -18,7 +18,7 @@ declare i64 @llvm.ctpop.i64(i64) ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: add (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: add push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i64 @add64(i64 %x, i64 %y) { @@ -35,7 +35,7 @@ define i64 @add64(i64 %x, i64 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: sub (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: sub push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i64 @sub64(i64 %x, i64 %y) { @@ -52,7 +52,7 @@ define i64 @sub64(i64 %x, i64 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: mul (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: mul push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i64 @mul64(i64 %x, i64 %y) { @@ -69,7 +69,7 @@ define i64 @mul64(i64 %x, i64 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: div_s (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: div_s push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i64 @sdiv64(i64 %x, i64 %y) { @@ -86,7 +86,7 @@ define i64 @sdiv64(i64 %x, i64 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: div_u (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: div_u push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i64 @udiv64(i64 %x, i64 %y) { @@ -103,7 +103,7 @@ define i64 @udiv64(i64 %x, i64 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: rem_s (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: rem_s push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i64 @srem64(i64 %x, i64 %y) { @@ -120,7 +120,7 @@ define i64 @srem64(i64 %x, i64 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: rem_u (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: rem_u push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i64 @urem64(i64 %x, i64 %y) { @@ -137,7 +137,7 @@ define i64 @urem64(i64 %x, i64 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: and (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: and push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i64 @and64(i64 %x, i64 %y) { @@ -154,7 +154,7 @@ define i64 @and64(i64 %x, i64 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: or (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: or push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i64 @or64(i64 %x, i64 %y) { @@ -171,7 +171,7 @@ define i64 @or64(i64 %x, i64 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: xor (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: xor push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i64 @xor64(i64 %x, i64 %y) { @@ -188,7 +188,7 @@ define i64 @xor64(i64 %x, i64 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: shl (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: shl push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i64 @shl64(i64 %x, i64 %y) { @@ -205,7 +205,7 @@ define i64 @shl64(i64 %x, i64 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: shr_u (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: shr_u push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i64 @shr64(i64 %x, i64 %y) { @@ -222,7 +222,7 @@ define i64 @shr64(i64 %x, i64 %y) { ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: shr_s (get_local 3), (get_local 2){{$}} +; CHECK-NEXT: shr_s push, (get_local 3), (get_local 2){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} ; CHECK-NEXT: return (get_local 4){{$}} define i64 @sar64(i64 %x, i64 %y) { @@ -236,7 +236,7 @@ define i64 @sar64(i64 %x, i64 %y) { ; CHECK-NEXT: .local i64, i64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: clz (get_local 1){{$}} +; CHECK-NEXT: clz push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i64 @clz64(i64 %x) { @@ -250,7 +250,7 @@ define i64 @clz64(i64 %x) { ; CHECK-NEXT: .local i64, i64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: clz (get_local 1){{$}} +; CHECK-NEXT: clz push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i64 @clz64_zero_undef(i64 %x) { @@ -264,7 +264,7 @@ define i64 @clz64_zero_undef(i64 %x) { ; CHECK-NEXT: .local i64, i64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: ctz (get_local 1){{$}} +; CHECK-NEXT: ctz push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i64 @ctz64(i64 %x) { @@ -278,7 +278,7 @@ define i64 @ctz64(i64 %x) { ; CHECK-NEXT: .local i64, i64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: ctz (get_local 1){{$}} +; CHECK-NEXT: ctz push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i64 @ctz64_zero_undef(i64 %x) { @@ -292,7 +292,7 @@ define i64 @ctz64_zero_undef(i64 %x) { ; CHECK-NEXT: .local i64, i64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: popcnt (get_local 1){{$}} +; CHECK-NEXT: popcnt push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i64 @popcnt64(i64 %x) { diff --git a/test/CodeGen/WebAssembly/load-ext.ll b/test/CodeGen/WebAssembly/load-ext.ll index deff7e44491..e6fb59c0493 100644 --- a/test/CodeGen/WebAssembly/load-ext.ll +++ b/test/CodeGen/WebAssembly/load-ext.ll @@ -6,7 +6,7 @@ target datalayout = "e-p:32:32-i64:64-n32:64-S128" target triple = "wasm32-unknown-unknown" ; CHECK-LABEL: sext_i8_i32: -; CHECK: i32.load8_s (get_local 1){{$}} +; CHECK: i32.load8_s push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define i32 @sext_i8_i32(i8 *%p) { %v = load i8, i8* %p @@ -15,7 +15,7 @@ define i32 @sext_i8_i32(i8 *%p) { } ; CHECK-LABEL: zext_i8_i32: -; CHECK: i32.load8_u (get_local 1){{$}} +; CHECK: i32.load8_u push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define i32 @zext_i8_i32(i8 *%p) { %v = load i8, i8* %p @@ -24,7 +24,7 @@ define i32 @zext_i8_i32(i8 *%p) { } ; CHECK-LABEL: sext_i16_i32: -; CHECK: i32.load16_s (get_local 1){{$}} +; CHECK: i32.load16_s push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define i32 @sext_i16_i32(i16 *%p) { %v = load i16, i16* %p @@ -33,7 +33,7 @@ define i32 @sext_i16_i32(i16 *%p) { } ; CHECK-LABEL: zext_i16_i32: -; CHECK: i32.load16_u (get_local 1){{$}} +; CHECK: i32.load16_u push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define i32 @zext_i16_i32(i16 *%p) { %v = load i16, i16* %p @@ -42,7 +42,7 @@ define i32 @zext_i16_i32(i16 *%p) { } ; CHECK-LABEL: sext_i8_i64: -; CHECK: i64.load8_s (get_local 1){{$}} +; CHECK: i64.load8_s push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define i64 @sext_i8_i64(i8 *%p) { %v = load i8, i8* %p @@ -51,7 +51,7 @@ define i64 @sext_i8_i64(i8 *%p) { } ; CHECK-LABEL: zext_i8_i64: -; CHECK: i64.load8_u (get_local 1){{$}} +; CHECK: i64.load8_u push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define i64 @zext_i8_i64(i8 *%p) { %v = load i8, i8* %p @@ -60,7 +60,7 @@ define i64 @zext_i8_i64(i8 *%p) { } ; CHECK-LABEL: sext_i16_i64: -; CHECK: i64.load16_s (get_local 1){{$}} +; CHECK: i64.load16_s push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define i64 @sext_i16_i64(i16 *%p) { %v = load i16, i16* %p @@ -69,7 +69,7 @@ define i64 @sext_i16_i64(i16 *%p) { } ; CHECK-LABEL: zext_i16_i64: -; CHECK: i64.load16_u (get_local 1){{$}} +; CHECK: i64.load16_u push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define i64 @zext_i16_i64(i16 *%p) { %v = load i16, i16* %p @@ -78,7 +78,7 @@ define i64 @zext_i16_i64(i16 *%p) { } ; CHECK-LABEL: sext_i32_i64: -; CHECK: i64.load32_s (get_local 1){{$}} +; CHECK: i64.load32_s push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} define i64 @sext_i32_i64(i32 *%p) { %v = load i32, i32* %p @@ -87,7 +87,7 @@ define i64 @sext_i32_i64(i32 *%p) { } ; CHECK-LABEL: zext_i32_i64: -; CHECK: i64.load32_u (get_local 1){{$}} +; CHECK: i64.load32_u push, (get_local 1){{$}} ; CHECK: set_local 2, pop{{$}} define i64 @zext_i32_i64(i32 *%p) { %v = load i32, i32* %p diff --git a/test/CodeGen/WebAssembly/load-store-i1.ll b/test/CodeGen/WebAssembly/load-store-i1.ll index 8436af82f2e..18b8c7d42c7 100644 --- a/test/CodeGen/WebAssembly/load-store-i1.ll +++ b/test/CodeGen/WebAssembly/load-store-i1.ll @@ -6,7 +6,7 @@ target datalayout = "e-p:32:32-i64:64-n32:64-S128" target triple = "wasm32-unknown-unknown" ; CHECK-LABEL: load_u_i1_i32: -; CHECK: i32.load8_u (get_local 1){{$}} +; CHECK: i32.load8_u push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i32 @load_u_i1_i32(i1* %p) { @@ -16,13 +16,13 @@ define i32 @load_u_i1_i32(i1* %p) { } ; CHECK-LABEL: load_s_i1_i32: -; CHECK: i32.load8_u (get_local 1){{$}} +; CHECK: i32.load8_u push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: i32.const 31{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: shl (get_local 2), (get_local 3){{$}} +; CHECK-NEXT: shl push, (get_local 2), (get_local 3){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} -; CHECK-NEXT: shr_s (get_local 4), (get_local 3){{$}} +; CHECK-NEXT: shr_s push, (get_local 4), (get_local 3){{$}} ; CHECK-NEXT: set_local 5, pop{{$}} ; CHECK-NEXT: return (get_local 5){{$}} define i32 @load_s_i1_i32(i1* %p) { @@ -32,7 +32,7 @@ define i32 @load_s_i1_i32(i1* %p) { } ; CHECK-LABEL: load_u_i1_i64: -; CHECK: i64.load8_u (get_local 1){{$}} +; CHECK: i64.load8_u push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i64 @load_u_i1_i64(i1* %p) { @@ -42,13 +42,13 @@ define i64 @load_u_i1_i64(i1* %p) { } ; CHECK-LABEL: load_s_i1_i64: -; CHECK: i64.load8_u (get_local 1){{$}} +; CHECK: i64.load8_u push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: i64.const 63{{$}} ; CHECK-NEXT: set_local 3, pop{{$}} -; CHECK-NEXT: shl (get_local 2), (get_local 3){{$}} +; CHECK-NEXT: shl push, (get_local 2), (get_local 3){{$}} ; CHECK-NEXT: set_local 4, pop{{$}} -; CHECK-NEXT: shr_s (get_local 4), (get_local 3){{$}} +; CHECK-NEXT: shr_s push, (get_local 4), (get_local 3){{$}} ; CHECK-NEXT: set_local 5, pop{{$}} ; CHECK-NEXT: return (get_local 5){{$}} define i64 @load_s_i1_i64(i1* %p) { @@ -60,7 +60,7 @@ define i64 @load_s_i1_i64(i1* %p) { ; CHECK-LABEL: store_i32_i1: ; CHECK: i32.const 1{{$}} ; CHECK-NEXT: set_local 4, pop{{$}} -; CHECK-NEXT: and (get_local 3), (get_local 4){{$}} +; CHECK-NEXT: and push, (get_local 3), (get_local 4){{$}} ; CHECK-NEXT: set_local 5, pop{{$}} ; CHECK-NEXT: i32.store8 (get_local 2), (get_local 5){{$}} define void @store_i32_i1(i1* %p, i32 %v) { @@ -72,7 +72,7 @@ define void @store_i32_i1(i1* %p, i32 %v) { ; CHECK-LABEL: store_i64_i1: ; CHECK: i64.const 1{{$}} ; CHECK-NEXT: set_local 4, pop{{$}} -; CHECK-NEXT: and (get_local 3), (get_local 4){{$}} +; CHECK-NEXT: and push, (get_local 3), (get_local 4){{$}} ; CHECK-NEXT: set_local 5, pop{{$}} ; CHECK-NEXT: i64.store8 (get_local 2), (get_local 5){{$}} define void @store_i64_i1(i1* %p, i64 %v) { diff --git a/test/CodeGen/WebAssembly/load.ll b/test/CodeGen/WebAssembly/load.ll index e1eb67fffce..45bae71dd58 100644 --- a/test/CodeGen/WebAssembly/load.ll +++ b/test/CodeGen/WebAssembly/load.ll @@ -11,7 +11,7 @@ target triple = "wasm32-unknown-unknown" ; CHECK-NEXT: .local i32, i32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: i32.load (get_local 1){{$}} +; CHECK-NEXT: i32.load push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i32 @ldi32(i32 *%p) { @@ -25,7 +25,7 @@ define i32 @ldi32(i32 *%p) { ; CHECK-NEXT: .local i32, i64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: i64.load (get_local 1){{$}} +; CHECK-NEXT: i64.load push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define i64 @ldi64(i64 *%p) { @@ -39,7 +39,7 @@ define i64 @ldi64(i64 *%p) { ; CHECK-NEXT: .local i32, f32{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: f32.load (get_local 1){{$}} +; CHECK-NEXT: f32.load push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define float @ldf32(float *%p) { @@ -53,7 +53,7 @@ define float @ldf32(float *%p) { ; CHECK-NEXT: .local i32, f64{{$}} ; CHECK-NEXT: get_local 0{{$}} ; CHECK-NEXT: set_local 1, pop{{$}} -; CHECK-NEXT: f64.load (get_local 1){{$}} +; CHECK-NEXT: f64.load push, (get_local 1){{$}} ; CHECK-NEXT: set_local 2, pop{{$}} ; CHECK-NEXT: return (get_local 2){{$}} define double @ldf64(double *%p) { diff --git a/test/CodeGen/WebAssembly/phi.ll b/test/CodeGen/WebAssembly/phi.ll index 5ef2da350e3..d5274c05548 100644 --- a/test/CodeGen/WebAssembly/phi.ll +++ b/test/CodeGen/WebAssembly/phi.ll @@ -10,7 +10,7 @@ target triple = "wasm32-unknown-unknown" ; CHECK-LABEL: test0: ; CHECK: get_local 0{{$}} ; CHECK: set_local [[REG:.*]], pop -; CHECK: div_s (get_local [[REG]]), {{.*}} +; CHECK: div_s push, (get_local [[REG]]), {{.*}} ; CHECK: set_local [[REG]], pop ; CHECK: return (get_local [[REG]]) define i32 @test0(i32 %p) { diff --git a/test/CodeGen/WebAssembly/select.ll b/test/CodeGen/WebAssembly/select.ll index 83b4d13e74b..42dc3848946 100644 --- a/test/CodeGen/WebAssembly/select.ll +++ b/test/CodeGen/WebAssembly/select.ll @@ -11,9 +11,9 @@ target triple = "wasm32-unknown-unknown" ; CHECK: set_local [[LOCAL_B:[0-9]]] ; CHECK: get_local 0 ; CHECK: set_local [[LOCAL_A:[0-9]]] -; CHECK: i32.eq (get_local 5), (get_local 6) +; CHECK: i32.eq push, (get_local 5), (get_local 6) ; CHECK: set_local 7, pop -; CHECK: i32.select (get_local 7), (get_local [[LOCAL_A]]), (get_local [[LOCAL_B]]) +; CHECK: i32.select push, (get_local 7), (get_local [[LOCAL_A]]), (get_local [[LOCAL_B]]) define i32 @select_i32(i32 %a, i32 %b, i32 %cond) { %cc = icmp eq i32 %cond, 0 %result = select i1 %cc, i32 %a, i32 %b @@ -25,9 +25,9 @@ define i32 @select_i32(i32 %a, i32 %b, i32 %cond) { ; CHECK: set_local [[LOCAL_B:[0-9]]] ; CHECK: get_local 0 ; CHECK: set_local [[LOCAL_A:[0-9]]] -; CHECK: i32.eq (get_local 5), (get_local 6) +; CHECK: i32.eq push, (get_local 5), (get_local 6) ; CHECK: set_local 7, pop -; CHECK: i64.select (get_local 7), (get_local [[LOCAL_A]]), (get_local [[LOCAL_B]]) +; CHECK: i64.select push, (get_local 7), (get_local [[LOCAL_A]]), (get_local [[LOCAL_B]]) define i64 @select_i64(i64 %a, i64 %b, i32 %cond) { %cc = icmp eq i32 %cond, 0 %result = select i1 %cc, i64 %a, i64 %b @@ -39,9 +39,9 @@ define i64 @select_i64(i64 %a, i64 %b, i32 %cond) { ; CHECK: set_local [[LOCAL_B:[0-9]]] ; CHECK: get_local 0 ; CHECK: set_local [[LOCAL_A:[0-9]]] -; CHECK: i32.eq (get_local 5), (get_local 6) +; CHECK: i32.eq push, (get_local 5), (get_local 6) ; CHECK: set_local 7, pop -; CHECK: f32.select (get_local 7), (get_local [[LOCAL_A]]), (get_local [[LOCAL_B]]) +; CHECK: f32.select push, (get_local 7), (get_local [[LOCAL_A]]), (get_local [[LOCAL_B]]) define float @select_f32(float %a, float %b, i32 %cond) { %cc = icmp eq i32 %cond, 0 %result = select i1 %cc, float %a, float %b @@ -53,9 +53,9 @@ define float @select_f32(float %a, float %b, i32 %cond) { ; CHECK: set_local [[LOCAL_B:[0-9]]] ; CHECK: get_local 0 ; CHECK: set_local [[LOCAL_A:[0-9]]] -; CHECK: i32.eq (get_local 5), (get_local 6) +; CHECK: i32.eq push, (get_local 5), (get_local 6) ; CHECK: set_local 7, pop -; CHECK: f64.select (get_local 7), (get_local [[LOCAL_A]]), (get_local [[LOCAL_B]]) +; CHECK: f64.select push, (get_local 7), (get_local [[LOCAL_A]]), (get_local [[LOCAL_B]]) define double @select_f64(double %a, double %b, i32 %cond) { %cc = icmp eq i32 %cond, 0 %result = select i1 %cc, double %a, double %b -- 2.34.1