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;
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;
}
; 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() {
; 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() {
; 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() {
; 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() {
}
; 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()
; 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) {
; 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) {
; 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()
; 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) {
}
; 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()
}
; 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()
; 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) {
; 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) {
; 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) {
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
; 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) {
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
; 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) {
; 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) {
; 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) {
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
; 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) {
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
; 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) {
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
; 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) {
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
}
; 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
}
; 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
}
; 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
}
; 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)
}
; 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
}
; 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)
}
; 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)
}
; 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)
}
; 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)
}
; 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)
}
; 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)
}
; 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)
; 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) {
}
; 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
}
; 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
}
; 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
}
; 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)
}
; 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
}
; 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)
}
; 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)
}
; 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)
}
; 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)
}
; 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)
}
; 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)
}
; 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)
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
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
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
}
; 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
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) {
}
; 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) {
}
; 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) {
}
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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) {
; 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
; 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
; 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
; 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