use crate::InstructionSet;
impl InstructionSet {
pub const MSH_I64_CLZ: u32 = 3;
pub const MSH_I64_CTZ: u32 = 3;
pub const MSH_I64_POPCNT: u32 = 1;
pub const MSH_I64_AND: u32 = 1;
pub const MSH_I64_OR: u32 = 1;
pub const MSH_I64_XOR: u32 = 1;
pub const MSH_I64_SHL: u32 = 9;
pub const MSH_I64_SHR_S: u32 = 21;
pub const MSH_I64_SHR_U: u32 = 21;
pub const MSH_I64_ROTL: u32 = 16;
pub const MSH_I64_ROTR: u32 = 16;
pub fn op_i64_clz(&mut self) {
self.op_i32_clz();
self.op_local_get(1);
self.op_i32_const(32);
self.op_i32_eq();
self.op_br_if_eqz(4);
self.op_local_get(2);
self.op_i32_clz();
self.op_i32_add();
self.op_local_set(1);
self.op_i32_const(0);
}
pub fn op_i64_ctz(&mut self) {
self.op_local_get(2);
self.op_i32_ctz();
self.op_local_get(1);
self.op_i32_const(32);
self.op_i32_eq();
self.op_br_if_eqz(5);
self.op_local_set(2);
self.op_i32_ctz();
self.op_i32_add();
self.op_br(3);
self.op_local_set(2);
self.op_drop();
self.op_i32_const(0);
}
pub fn op_i64_popcnt(&mut self) {
self.op_i32_popcnt();
self.op_local_get(2);
self.op_i32_popcnt();
self.op_local_set(2);
self.op_i32_add();
self.op_i32_const(0);
}
pub fn op_i64_and(&mut self) {
self.op_local_get(3);
self.op_i32_and();
self.op_local_set(2);
self.op_local_get(3);
self.op_i32_and();
self.op_local_set(2);
}
pub fn op_i64_or(&mut self) {
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
}
pub fn op_i64_xor(&mut self) {
self.op_local_get(3);
self.op_i32_xor();
self.op_local_set(2);
self.op_local_get(3);
self.op_i32_xor();
self.op_local_set(2);
}
pub fn op_i64_shl(&mut self) {
self.op_i32_const(0);
self.op_i32_const(0);
self.op_local_get(4);
self.op_i32_const(63);
self.op_i32_and();
self.op_local_tee(3);
self.op_br_if_nez(4);
self.op_local_get(6);
self.op_local_set(1);
self.op_br(44);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_eq();
self.op_br_if_nez(36);
self.op_local_get(2);
self.op_i32_const(-1);
self.op_i32_add();
self.op_i32_const(31);
self.op_i32_lt_u();
self.op_br_if_nez(10);
self.op_i32_const(0);
self.op_local_set(1);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_gt_u();
self.op_br_if_nez(19);
self.op_i32_const(0);
self.op_local_set(5);
self.op_br(25);
self.op_local_get(5);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_get(7);
self.op_i32_const(0);
self.op_local_get(7);
self.op_i32_sub();
self.op_i32_shr_u();
self.op_i32_or();
self.op_local_set(5);
self.op_local_get(6);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_set(1);
self.op_br(10);
self.op_local_get(6);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_set(5);
self.op_br(5);
self.op_i32_const(0);
self.op_local_set(1);
self.op_local_get(6);
self.op_local_set(5);
self.op_local_get(5);
self.op_i32_const(0);
self.op_i32_const(32);
self.op_i32_const(0);
self.op_local_get(2);
self.op_i32_const(63);
self.op_i32_and();
self.op_local_set(2);
self.op_local_get(2);
self.op_br_if_eqz(32);
self.op_local_get(2);
self.op_i32_const(31);
self.op_i32_gt_u();
self.op_br_if_eqz(10);
self.op_local_get(4);
self.op_local_get(3);
self.op_i32_const(32);
self.op_i32_sub();
self.op_i32_shl();
self.op_local_set(3);
self.op_i32_const(0);
self.op_local_set(4);
self.op_br(19);
self.op_local_get(4);
self.op_local_get(3);
self.op_i32_shl();
self.op_local_set(4);
self.op_local_get(3);
self.op_local_get(3);
self.op_i32_shl();
self.op_local_set(3);
self.op_local_get(4);
self.op_i32_const(32);
self.op_local_get(4);
self.op_i32_const(31);
self.op_i32_and();
self.op_i32_sub();
self.op_i32_shr_u();
self.op_local_get(4);
self.op_i32_or();
self.op_local_set(3);
self.op_drop();
self.op_drop();
self.op_local_get(3);
self.op_i32_const(0);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_set(6);
self.op_local_set(6);
self.op_drop();
self.op_drop();
self.op_drop();
self.op_drop();
}
pub fn op_i64_shr_s(&mut self) {
self.op_i32_const(0);
self.op_i32_const(0);
self.op_local_get(4);
self.op_i32_const(63);
self.op_i32_and();
self.op_local_tee(3);
self.op_br_if_nez(4);
self.op_local_get(5);
self.op_local_set(1);
self.op_br(49);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_eq();
self.op_br_if_nez(24);
self.op_local_get(2);
self.op_i32_const(-1);
self.op_i32_add();
self.op_i32_const(31);
self.op_i32_lt_u();
self.op_br_if_nez(25);
self.op_i32_const(0);
self.op_local_set(1);
self.op_i32_const(0);
self.op_local_set(6);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_le_u();
self.op_br_if_nez(31);
self.op_local_get(5);
self.op_local_get(5);
self.op_i32_shr_s();
self.op_local_set(6);
self.op_local_get(5);
self.op_i32_const(31);
self.op_i32_shr_s();
self.op_local_set(1);
self.op_br(22);
self.op_local_get(5);
self.op_i32_const(31);
self.op_i32_shr_s();
self.op_local_set(1);
self.op_local_get(5);
self.op_local_set(6);
self.op_br(15);
self.op_local_get(6);
self.op_local_get(5);
self.op_i32_shr_u();
self.op_local_get(6);
self.op_i32_const(0);
self.op_local_get(7);
self.op_i32_sub();
self.op_i32_shl();
self.op_i32_or();
self.op_local_set(6);
self.op_local_get(5);
self.op_local_get(5);
self.op_i32_shr_s();
self.op_local_set(1);
self.op_local_get(1);
self.op_i32_const(0);
self.op_i32_const(32);
self.op_i32_const(0);
self.op_i32_const(0);
self.op_i32_const(0);
self.op_local_get(4);
self.op_i32_const(63);
self.op_i32_and();
self.op_local_tee(3);
self.op_br_if_nez(4);
self.op_local_get(6);
self.op_local_set(1);
self.op_br(44);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_eq();
self.op_br_if_nez(36);
self.op_local_get(2);
self.op_i32_const(-1);
self.op_i32_add();
self.op_i32_const(31);
self.op_i32_lt_u();
self.op_br_if_nez(10);
self.op_i32_const(0);
self.op_local_set(1);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_gt_u();
self.op_br_if_nez(19);
self.op_i32_const(0);
self.op_local_set(5);
self.op_br(25);
self.op_local_get(5);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_get(7);
self.op_i32_const(0);
self.op_local_get(7);
self.op_i32_sub();
self.op_i32_shr_u();
self.op_i32_or();
self.op_local_set(5);
self.op_local_get(6);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_set(1);
self.op_br(10);
self.op_local_get(6);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_set(5);
self.op_br(5);
self.op_i32_const(0);
self.op_local_set(1);
self.op_local_get(6);
self.op_local_set(5);
self.op_local_get(5);
self.op_i32_const(0);
self.op_i32_const(32);
self.op_i32_const(0);
self.op_local_get(2);
self.op_i32_const(63);
self.op_i32_and();
self.op_local_set(2);
self.op_local_get(2);
self.op_br_if_eqz(32);
self.op_local_get(2);
self.op_i32_const(31);
self.op_i32_gt_u();
self.op_br_if_eqz(10);
self.op_local_get(4);
self.op_local_get(3);
self.op_i32_const(32);
self.op_i32_sub();
self.op_i32_shl();
self.op_local_set(3);
self.op_i32_const(0);
self.op_local_set(4);
self.op_br(19);
self.op_local_get(4);
self.op_local_get(3);
self.op_i32_shl();
self.op_local_set(4);
self.op_local_get(3);
self.op_local_get(3);
self.op_i32_shl();
self.op_local_set(3);
self.op_local_get(4);
self.op_i32_const(32);
self.op_local_get(4);
self.op_i32_const(31);
self.op_i32_and();
self.op_i32_sub();
self.op_i32_shr_u();
self.op_local_get(4);
self.op_i32_or();
self.op_local_set(3);
self.op_drop();
self.op_drop();
self.op_local_get(3);
self.op_i32_const(0);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_set(6);
self.op_local_set(6);
self.op_drop();
self.op_drop();
self.op_drop();
self.op_drop();
self.op_local_get(8);
self.op_i32_const(0);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_set(6);
self.op_local_set(6);
self.op_drop();
self.op_drop();
self.op_drop();
self.op_drop();
}
pub fn op_i64_shr_u(&mut self) {
self.op_i32_const(0);
self.op_i32_const(0);
self.op_local_get(4);
self.op_i32_const(63);
self.op_i32_and();
self.op_local_tee(3);
self.op_br_if_nez(6);
self.op_local_get(5);
self.op_local_set(1);
self.op_local_get(6);
self.op_local_set(5);
self.op_br(42);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_eq();
self.op_br_if_nez(36);
self.op_local_get(2);
self.op_i32_const(-1);
self.op_i32_add();
self.op_i32_const(31);
self.op_i32_lt_u();
self.op_br_if_nez(10);
self.op_i32_const(0);
self.op_local_set(1);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_gt_u();
self.op_br_if_nez(19);
self.op_i32_const(0);
self.op_local_set(5);
self.op_br(23);
self.op_local_get(5);
self.op_local_get(5);
self.op_i32_shr_u();
self.op_local_set(1);
self.op_local_get(6);
self.op_local_get(5);
self.op_i32_shr_u();
self.op_local_get(6);
self.op_i32_const(0);
self.op_local_get(7);
self.op_i32_sub();
self.op_i32_shl();
self.op_i32_or();
self.op_local_set(5);
self.op_br(8);
self.op_local_get(5);
self.op_local_get(5);
self.op_i32_shr_u();
self.op_local_set(5);
self.op_br(3);
self.op_i32_const(0);
self.op_local_set(1);
self.op_local_get(1);
self.op_i32_const(0);
self.op_i32_const(32);
self.op_i32_const(0);
self.op_local_get(2);
self.op_i32_const(63);
self.op_i32_and();
self.op_local_set(2);
self.op_local_get(2);
self.op_br_if_eqz(32);
self.op_local_get(2);
self.op_i32_const(31);
self.op_i32_gt_u();
self.op_br_if_eqz(10);
self.op_local_get(4);
self.op_local_get(3);
self.op_i32_const(32);
self.op_i32_sub();
self.op_i32_shl();
self.op_local_set(3);
self.op_i32_const(0);
self.op_local_set(4);
self.op_br(19);
self.op_local_get(4);
self.op_local_get(3);
self.op_i32_shl();
self.op_local_set(4);
self.op_local_get(3);
self.op_local_get(3);
self.op_i32_shl();
self.op_local_set(3);
self.op_local_get(4);
self.op_i32_const(32);
self.op_local_get(4);
self.op_i32_const(31);
self.op_i32_and();
self.op_i32_sub();
self.op_i32_shr_u();
self.op_local_get(4);
self.op_i32_or();
self.op_local_set(3);
self.op_drop();
self.op_drop();
self.op_local_get(7);
self.op_i32_const(0);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_set(6);
self.op_local_set(6);
self.op_drop();
self.op_drop();
self.op_drop();
self.op_drop();
}
pub fn op_i64_rotl(&mut self) {
self.op_i32_const(0);
self.op_i32_const(0);
self.op_local_get(4);
self.op_i32_const(63);
self.op_i32_and();
self.op_local_tee(3);
self.op_br_if_nez(4);
self.op_local_get(5);
self.op_local_set(2);
self.op_br(53);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_lt_u();
self.op_br_if_nez(10);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_ne();
self.op_br_if_nez(26);
self.op_local_get(6);
self.op_local_set(2);
self.op_local_get(5);
self.op_local_set(6);
self.op_br(40);
self.op_local_get(5);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_get(7);
self.op_i32_const(0);
self.op_local_get(7);
self.op_i32_sub();
self.op_local_tee(4);
self.op_i32_shr_u();
self.op_i32_or();
self.op_local_set(2);
self.op_local_get(6);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_get(6);
self.op_local_get(3);
self.op_i32_shr_u();
self.op_i32_or();
self.op_local_set(6);
self.op_br(20);
self.op_local_get(6);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_get(6);
self.op_i32_const(0);
self.op_local_get(7);
self.op_i32_sub();
self.op_local_tee(4);
self.op_i32_shr_u();
self.op_i32_or();
self.op_local_set(2);
self.op_local_get(5);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_get(7);
self.op_local_get(3);
self.op_i32_shr_u();
self.op_i32_or();
self.op_local_set(6);
self.op_local_get(2);
self.op_i32_const(0);
self.op_i32_const(32);
self.op_i32_const(0);
self.op_i32_const(0);
self.op_i32_const(0);
self.op_local_get(4);
self.op_i32_const(63);
self.op_i32_and();
self.op_local_tee(3);
self.op_br_if_nez(4);
self.op_local_get(6);
self.op_local_set(1);
self.op_br(44);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_eq();
self.op_br_if_nez(36);
self.op_local_get(2);
self.op_i32_const(-1);
self.op_i32_add();
self.op_i32_const(31);
self.op_i32_lt_u();
self.op_br_if_nez(10);
self.op_i32_const(0);
self.op_local_set(1);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_gt_u();
self.op_br_if_nez(19);
self.op_i32_const(0);
self.op_local_set(5);
self.op_br(25);
self.op_local_get(5);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_get(7);
self.op_i32_const(0);
self.op_local_get(7);
self.op_i32_sub();
self.op_i32_shr_u();
self.op_i32_or();
self.op_local_set(5);
self.op_local_get(6);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_set(1);
self.op_br(10);
self.op_local_get(6);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_set(5);
self.op_br(5);
self.op_i32_const(0);
self.op_local_set(1);
self.op_local_get(6);
self.op_local_set(5);
self.op_local_get(5);
self.op_i32_const(0);
self.op_i32_const(32);
self.op_i32_const(0);
self.op_local_get(2);
self.op_i32_const(63);
self.op_i32_and();
self.op_local_set(2);
self.op_local_get(2);
self.op_br_if_eqz(32);
self.op_local_get(2);
self.op_i32_const(31);
self.op_i32_gt_u();
self.op_br_if_eqz(10);
self.op_local_get(4);
self.op_local_get(3);
self.op_i32_const(32);
self.op_i32_sub();
self.op_i32_shl();
self.op_local_set(3);
self.op_i32_const(0);
self.op_local_set(4);
self.op_br(19);
self.op_local_get(4);
self.op_local_get(3);
self.op_i32_shl();
self.op_local_set(4);
self.op_local_get(3);
self.op_local_get(3);
self.op_i32_shl();
self.op_local_set(3);
self.op_local_get(4);
self.op_i32_const(32);
self.op_local_get(4);
self.op_i32_const(31);
self.op_i32_and();
self.op_i32_sub();
self.op_i32_shr_u();
self.op_local_get(4);
self.op_i32_or();
self.op_local_set(3);
self.op_drop();
self.op_drop();
self.op_local_get(3);
self.op_i32_const(0);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_set(6);
self.op_local_set(6);
self.op_drop();
self.op_drop();
self.op_drop();
self.op_drop();
self.op_local_get(8);
self.op_i32_const(0);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_set(6);
self.op_local_set(6);
self.op_drop();
self.op_drop();
self.op_drop();
self.op_drop();
}
pub fn op_i64_rotr(&mut self) {
self.op_i32_const(0);
self.op_i32_const(0);
self.op_local_get(4);
self.op_i32_const(63);
self.op_i32_and();
self.op_local_tee(3);
self.op_br_if_nez(4);
self.op_local_get(5);
self.op_local_set(2);
self.op_br(55);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_ne();
self.op_br_if_nez(6);
self.op_local_get(6);
self.op_local_set(2);
self.op_local_get(5);
self.op_local_set(6);
self.op_br(46);
self.op_local_get(2);
self.op_i32_const(-1);
self.op_i32_add();
self.op_i32_const(31);
self.op_i32_lt_u();
self.op_br_if_nez(21);
self.op_local_get(6);
self.op_local_get(5);
self.op_i32_shr_u();
self.op_local_get(6);
self.op_i32_const(0);
self.op_local_get(7);
self.op_i32_sub();
self.op_local_tee(4);
self.op_i32_shl();
self.op_i32_or();
self.op_local_set(2);
self.op_local_get(5);
self.op_local_get(5);
self.op_i32_shr_u();
self.op_local_get(7);
self.op_local_get(3);
self.op_i32_shl();
self.op_i32_or();
self.op_local_set(6);
self.op_br(20);
self.op_local_get(5);
self.op_local_get(5);
self.op_i32_shr_u();
self.op_local_get(7);
self.op_i32_const(0);
self.op_local_get(7);
self.op_i32_sub();
self.op_local_tee(4);
self.op_i32_shl();
self.op_i32_or();
self.op_local_set(2);
self.op_local_get(6);
self.op_local_get(5);
self.op_i32_shr_u();
self.op_local_get(6);
self.op_local_get(3);
self.op_i32_shl();
self.op_i32_or();
self.op_local_set(6);
self.op_local_get(2);
self.op_i32_const(0);
self.op_i32_const(32);
self.op_i32_const(0);
self.op_i32_const(0);
self.op_i32_const(0);
self.op_local_get(4);
self.op_i32_const(63);
self.op_i32_and();
self.op_local_tee(3);
self.op_br_if_nez(4);
self.op_local_get(6);
self.op_local_set(1);
self.op_br(44);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_eq();
self.op_br_if_nez(36);
self.op_local_get(2);
self.op_i32_const(-1);
self.op_i32_add();
self.op_i32_const(31);
self.op_i32_lt_u();
self.op_br_if_nez(10);
self.op_i32_const(0);
self.op_local_set(1);
self.op_local_get(2);
self.op_i32_const(32);
self.op_i32_gt_u();
self.op_br_if_nez(19);
self.op_i32_const(0);
self.op_local_set(5);
self.op_br(25);
self.op_local_get(5);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_get(7);
self.op_i32_const(0);
self.op_local_get(7);
self.op_i32_sub();
self.op_i32_shr_u();
self.op_i32_or();
self.op_local_set(5);
self.op_local_get(6);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_set(1);
self.op_br(10);
self.op_local_get(6);
self.op_local_get(5);
self.op_i32_shl();
self.op_local_set(5);
self.op_br(5);
self.op_i32_const(0);
self.op_local_set(1);
self.op_local_get(6);
self.op_local_set(5);
self.op_local_get(5);
self.op_i32_const(0);
self.op_i32_const(32);
self.op_i32_const(0);
self.op_local_get(2);
self.op_i32_const(63);
self.op_i32_and();
self.op_local_set(2);
self.op_local_get(2);
self.op_br_if_eqz(32);
self.op_local_get(2);
self.op_i32_const(31);
self.op_i32_gt_u();
self.op_br_if_eqz(10);
self.op_local_get(4);
self.op_local_get(3);
self.op_i32_const(32);
self.op_i32_sub();
self.op_i32_shl();
self.op_local_set(3);
self.op_i32_const(0);
self.op_local_set(4);
self.op_br(19);
self.op_local_get(4);
self.op_local_get(3);
self.op_i32_shl();
self.op_local_set(4);
self.op_local_get(3);
self.op_local_get(3);
self.op_i32_shl();
self.op_local_set(3);
self.op_local_get(4);
self.op_i32_const(32);
self.op_local_get(4);
self.op_i32_const(31);
self.op_i32_and();
self.op_i32_sub();
self.op_i32_shr_u();
self.op_local_get(4);
self.op_i32_or();
self.op_local_set(3);
self.op_drop();
self.op_drop();
self.op_local_get(3);
self.op_i32_const(0);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_set(6);
self.op_local_set(6);
self.op_drop();
self.op_drop();
self.op_drop();
self.op_drop();
self.op_local_get(8);
self.op_i32_const(0);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_get(3);
self.op_i32_or();
self.op_local_set(2);
self.op_local_set(6);
self.op_local_set(6);
self.op_drop();
self.op_drop();
self.op_drop();
self.op_drop();
}
}