mirror of
https://codeberg.org/ziglang/zig.git
synced 2026-04-27 19:09:47 +03:00
+3616
-2
@@ -2418,7 +2418,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
|
||||
}
|
||||
|
||||
fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
|
||||
@setEvalBranchQuota(14_200);
|
||||
@setEvalBranchQuota(15_100);
|
||||
const pt = cg.pt;
|
||||
const zcu = pt.zcu;
|
||||
const ip = &zcu.intern_pool;
|
||||
@@ -2459,7 +2459,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
|
||||
.mul_sat => try cg.airMulSat(inst),
|
||||
.shl_sat => try cg.airShlSat(inst),
|
||||
|
||||
.mul_with_overflow => try cg.airMulWithOverflow(inst),
|
||||
.shl_with_overflow => try cg.airShlWithOverflow(inst),
|
||||
|
||||
.bitcast => try cg.airBitCast(inst),
|
||||
@@ -29774,6 +29773,3620 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
|
||||
try res[0].withOverflow(&res[1], cg);
|
||||
try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
|
||||
},
|
||||
.mul_with_overflow => |air_tag| if (use_old) try cg.airMulWithOverflow(inst) else fallback: {
|
||||
const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
|
||||
const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
|
||||
if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airMulWithOverflow(inst);
|
||||
var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
|
||||
var res: [2]Temp = undefined;
|
||||
cg.select(&res, &.{ ty_pl.ty.toType(), .u1 }, &ops, comptime &.{ .{
|
||||
.src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .exact_signed_int = 8 }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .al }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .al }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .al }, .to_gpr, .none } },
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, .i_, .mul, .src1b, ._, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .exact_unsigned_int = 8 }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .al }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .al }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .al }, .to_gpr, .none } },
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mul, .src1b, ._, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .al }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .al }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .al }, .to_gpr, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .ne } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, .i_, .mul, .src1b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
|
||||
.{ ._, ._l, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
|
||||
.{ ._, ._r, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
|
||||
.{ ._, ._, .cmp, .dst0w, .tmp0w, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .al }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .al }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .al }, .to_gpr, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .nbe } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mul, .src1b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
|
||||
.{ ._, ._, .@"and", .dst0b, .ua(.src0, .add_umax), ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp0w, .ua(.src0, .add_umax), ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 16 }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .mem, .imm16, .none } },
|
||||
.{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .to_gpr, .imm16, .none } },
|
||||
.{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } },
|
||||
},
|
||||
.dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .{ .cc = .c } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, .i_, .mul, .dst0w, .src0w, .src1w, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 16 }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mut_gpr, .mem, .none } },
|
||||
.{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, .i_, .mul, .dst0w, .src1w, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.src_constraints = .{ .{ .exact_unsigned_int = 16 }, .{ .exact_unsigned_int = 16 }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .u16, .kind = .{ .reg = .dx } },
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .mul, .src1w, ._, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .i32, .kind = .{ .reg = .edx } },
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .ne } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
|
||||
.{ ._, .i_, .mul, .src1w, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp0d, .ui(16), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0w, .dst0w, ._, ._ },
|
||||
.{ ._, ._l, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
|
||||
.{ ._, ._r, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
|
||||
.{ ._, ._, .cmp, .dst0d, .tmp0d, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .fast_imm16, null, null, null },
|
||||
.src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .u16, .kind = .{ .reg = .dx } },
|
||||
.{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .mul, .src1w, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ },
|
||||
.{ ._, ._, .@"and", .dst0w, .ua(.src0, .add_umax), ._, ._ },
|
||||
.{ ._, ._, .@"and", .tmp1w, .uia(std.math.maxInt(u16), .src0, .sub_umax), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp1w, .tmp0w, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .u16, .kind = .{ .reg = .dx } },
|
||||
.{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .mul, .src1w, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ },
|
||||
.{ ._, ._, .@"and", .dst0d, .ua(.src0, .add_umax), ._, ._ },
|
||||
.{ ._, ._, .@"and", .tmp1d, .uia(std.math.maxInt(u16), .src0, .sub_umax), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp1d, .tmp0d, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .exact_signed_int = 32 }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .mem, .imm32, .none } },
|
||||
.{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .to_gpr, .imm32, .none } },
|
||||
.{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
|
||||
},
|
||||
.dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .{ .cc = .c } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, .i_, .mul, .dst0d, .src0d, .src1d, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .exact_signed_int = 32 }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mut_gpr, .mem, .none } },
|
||||
.{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, .i_, .mul, .dst0d, .src1d, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.src_constraints = .{ .{ .exact_unsigned_int = 32 }, .{ .exact_unsigned_int = 32 }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .eax }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .eax }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .eax }, .to_gpr, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .u32, .kind = .{ .reg = .edx } },
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mul, .src1d, ._, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", null, null, null },
|
||||
.src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .eax }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .eax }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .eax }, .to_gpr, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .i32, .kind = .{ .reg = .edx } },
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .ne } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, .i_, .mul, .src1d, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp0q, .ui(32), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp0q, .dst0q, ._, ._ },
|
||||
.{ ._, ._l, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
|
||||
.{ ._, ._r, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
|
||||
.{ ._, ._, .cmp, .dst0q, .tmp0q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .eax }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .eax }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .eax }, .to_gpr, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .u32, .kind = .{ .ref = .src0 } },
|
||||
.{ .type = .u32, .kind = .{ .reg = .edx } },
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } }, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mul, .src1d, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._r, .sh, .tmp0d, .sa(.src0, .add_bit_size), ._, ._ },
|
||||
.{ ._, ._, .@"and", .dst0d, .ua(.src0, .add_umax), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp0d, .tmp1d, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", null, null, null },
|
||||
.src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .exact_signed_int = 64 }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .mem, .simm32, .none } },
|
||||
.{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .to_gpr, .simm32, .none } },
|
||||
.{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } },
|
||||
},
|
||||
.dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .{ .cc = .c } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, .i_, .mul, .dst0q, .src0q, .src1d, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", null, null, null },
|
||||
.src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .exact_signed_int = 64 }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mut_gpr, .mem, .none } },
|
||||
.{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, .i_, .mul, .dst0q, .src1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", null, null, null },
|
||||
.src_constraints = .{ .{ .exact_unsigned_int = 64 }, .{ .exact_unsigned_int = 64 }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .eax }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .eax }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .eax }, .to_gpr, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .c } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mul, .src1q, ._, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", null, null, null },
|
||||
.src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .rax }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .rax }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .rax }, .to_gpr, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .i64, .kind = .{ .reg = .rdx } },
|
||||
.{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .{ .ref = .src0 }, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, .i_, .mul, .src1q, ._, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp0d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .dst0q, ._, ._ },
|
||||
.{ ._, ._l, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
|
||||
.{ ._, ._r, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .dst0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp1q, .tmp0q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .bmi2, null, null },
|
||||
.src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .rax }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .rax }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .rax }, .to_gpr, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .u64, .kind = .{ .ref = .src0 } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } }, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mul, .src1q, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .dst0d, .ua(.src0, .add_bit_size), ._, ._ },
|
||||
.{ ._, ._, .bzhi, .dst0q, .tmp0q, .dst0q, ._ },
|
||||
.{ ._, ._, .xor, .tmp0q, .dst0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp0q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", null, null, null },
|
||||
.src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .{ .to_reg = .rax }, .mem, .none } },
|
||||
.{ .src = .{ .mem, .{ .to_reg = .rax }, .none }, .commute = .{ 0, 1 } },
|
||||
.{ .src = .{ .{ .to_reg = .rax }, .to_gpr, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .u64, .kind = .{ .ref = .src0 } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } }, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mul, .src1q, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ },
|
||||
.{ ._, ._, .@"and", .dst0q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp0q, .dst0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp0q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .cmov, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .slow_incdec, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"0f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", null, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"0f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .cmov, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .slow_incdec, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"0f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", null, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"0f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .cmov, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .slow_incdec, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"0f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", null, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"0f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .cmov, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .slow_incdec, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"0f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", null, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
|
||||
.{ ._, ._e, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"0f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
|
||||
.{ ._, ._z, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._c, .st, ._, ._, ._, ._ },
|
||||
.{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
|
||||
.{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
|
||||
.{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
|
||||
.{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
|
||||
.{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
|
||||
.{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
|
||||
.{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .bmi2, .adx, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.{ .type = .isize, .kind = .{ .reg = .rcx } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
|
||||
.{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
|
||||
.{ ._, ._z, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
|
||||
.{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_src0_size, -8), .tmp7q, ._, ._ },
|
||||
.{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp8q, .leaid(.tmp1q, .tmp4, 8), ._, ._ },
|
||||
.{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .bmi2, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .slow_incdec, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
|
||||
.{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", null, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
|
||||
.{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .bmi2, .adx, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.{ .type = .isize, .kind = .{ .reg = .rcx } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
|
||||
.{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
|
||||
.{ ._, ._z, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
|
||||
.{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_src0_size, -8), .tmp7q, ._, ._ },
|
||||
.{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp8q, .leai(.tmp1q, .tmp4), ._, ._ },
|
||||
.{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .bmi2, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .slow_incdec, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
|
||||
.{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", null, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
|
||||
.{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .bmi2, .adx, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.{ .type = .isize, .kind = .{ .reg = .rcx } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
|
||||
.{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
|
||||
.{ ._, ._z, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
|
||||
.{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_src0_size, -8), .tmp7q, ._, ._ },
|
||||
.{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp8q, .leai(.tmp1q, .tmp4), ._, ._ },
|
||||
.{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
|
||||
.{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
|
||||
.{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .bmi2, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
|
||||
.{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .slow_incdec, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
|
||||
.{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", null, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
|
||||
.{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -16), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .ui(0), ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .bmi2, .adx, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.{ .type = .isize, .kind = .{ .reg = .rcx } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
|
||||
.{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
|
||||
.{ ._, ._z, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
|
||||
.{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_src0_size, -8), .tmp7q, ._, ._ },
|
||||
.{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
|
||||
.{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp8q, .leai(.tmp1q, .tmp4), ._, ._ },
|
||||
.{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
|
||||
.{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
|
||||
.{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .bmi2, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .bzhi, .tmp0q, .tmp1q, .tmp0q, ._ },
|
||||
.{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", .slow_incdec, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
|
||||
.{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
|
||||
.{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
}, .{
|
||||
.required_features = .{ .@"64bit", null, null, null },
|
||||
.src_constraints = .{
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
|
||||
.any,
|
||||
},
|
||||
.patterns = &.{
|
||||
.{ .src = .{ .to_mem, .to_mem, .none } },
|
||||
},
|
||||
.extra_temps = .{
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .usize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .isize, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u8, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .rc = .general_purpose } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rax } },
|
||||
.{ .type = .u64, .kind = .{ .reg = .rdx } },
|
||||
.unused,
|
||||
.unused,
|
||||
},
|
||||
.dst_temps = .{ .mem, .{ .cc = .nz } },
|
||||
.clobbers = .{ .eflags = true },
|
||||
.each = .{ .once = &.{
|
||||
.{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
|
||||
.{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
|
||||
.{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
|
||||
.{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
|
||||
.{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
|
||||
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
|
||||
.{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_src0_size), .tmp7q, ._, ._ },
|
||||
.{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
|
||||
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
|
||||
.{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
|
||||
.{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
|
||||
.{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
|
||||
.{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
|
||||
.{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
|
||||
.{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
|
||||
.{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
|
||||
.{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
|
||||
.{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
|
||||
.{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
|
||||
.{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
|
||||
.{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
|
||||
} },
|
||||
} }) catch |err| switch (err) {
|
||||
error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
|
||||
@tagName(air_tag),
|
||||
ty_pl.ty.toType().fmt(pt),
|
||||
ops[0].tracking(cg),
|
||||
ops[1].tracking(cg),
|
||||
}),
|
||||
else => |e| return e,
|
||||
};
|
||||
try res[0].withOverflow(&res[1], cg);
|
||||
try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
|
||||
},
|
||||
.alloc => if (use_old) try cg.airAlloc(inst) else {
|
||||
const ty = air_datas[@intFromEnum(inst)].ty;
|
||||
const slot = try cg.tempInit(ty, .{ .lea_frame = .{
|
||||
@@ -112826,6 +116439,7 @@ const Select = struct {
|
||||
const add_smin: Adjust = .{ .sign = .pos, .lhs = .smin, .op = .mul, .rhs = .@"1" };
|
||||
const sub_smin: Adjust = .{ .sign = .neg, .lhs = .smin, .op = .mul, .rhs = .@"1" };
|
||||
const add_umax: Adjust = .{ .sign = .pos, .lhs = .umax, .op = .mul, .rhs = .@"1" };
|
||||
const sub_umax: Adjust = .{ .sign = .neg, .lhs = .umax, .op = .mul, .rhs = .@"1" };
|
||||
const repeat: Adjust = .{ .sign = .pos, .lhs = .repeat, .op = .mul, .rhs = .@"1" };
|
||||
};
|
||||
const Ref = enum(u5) {
|
||||
|
||||
+12
-3
@@ -787,7 +787,6 @@ fn should_not_be_zero(x: f128) !void {
|
||||
|
||||
test "umax wrapped squaring" {
|
||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||
|
||||
{
|
||||
@@ -1050,13 +1049,13 @@ test "@mulWithOverflow bitsize > 32" {
|
||||
}
|
||||
|
||||
test "@mulWithOverflow bitsize 128 bits" {
|
||||
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||
|
||||
try testMulWithOverflow(u128, 3, 0x5555555555555555_5555555555555555, 0xffffffffffffffff_ffffffffffffffff, 0);
|
||||
try testMulWithOverflow(u128, 3, 0x5555555555555555_5555555555555556, 2, 1);
|
||||
@@ -1070,13 +1069,19 @@ test "@mulWithOverflow bitsize 128 bits" {
|
||||
try testMulWithOverflow(i128, 3, -0x2aaaaaaaaaaaaaaa_aaaaaaaaaaaaaaab, 0x7fffffffffffffff_ffffffffffffffff, 1);
|
||||
try testMulWithOverflow(i128, -1, -1, 1, 0);
|
||||
try testMulWithOverflow(i128, minInt(i128), minInt(i128), 0, 1);
|
||||
|
||||
try testMulWithOverflow(i128, 1 << 126, 1 << 1, -1 << 127, 1);
|
||||
try testMulWithOverflow(i128, -1 << 105, 1 << 22, -1 << 127, 0);
|
||||
try testMulWithOverflow(i128, 1 << 84, -1 << 43, -1 << 127, 0);
|
||||
try testMulWithOverflow(i128, -1 << 63, -1 << 64, -1 << 127, 1);
|
||||
}
|
||||
|
||||
test "@mulWithOverflow u256" {
|
||||
test "@mulWithOverflow bitsize 256 bits" {
|
||||
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||
|
||||
{
|
||||
const const_lhs: u256 = 8035709466408580321693645878924206181189;
|
||||
@@ -1106,6 +1111,10 @@ test "@mulWithOverflow u256" {
|
||||
try std.testing.expect(var_result[0] == const_result[0]);
|
||||
try std.testing.expect(var_result[1] == const_result[1]);
|
||||
}
|
||||
try testMulWithOverflow(i256, 1 << 254, 1 << 1, -1 << 255, 1);
|
||||
try testMulWithOverflow(i256, -1 << 212, 1 << 43, -1 << 255, 0);
|
||||
try testMulWithOverflow(i256, 1 << 170, -1 << 85, -1 << 255, 0);
|
||||
try testMulWithOverflow(i256, -1 << 128, -1 << 127, -1 << 255, 1);
|
||||
}
|
||||
|
||||
fn testSubWithOverflow(comptime T: type, a: T, b: T, sub: T, bit: u1) !void {
|
||||
|
||||
@@ -5338,6 +5338,15 @@ test mulUnsafe {
|
||||
try test_mul_unsafe.testIntVectors();
|
||||
}
|
||||
|
||||
inline fn mulSafe(comptime Type: type, lhs: Type, rhs: Type) DoubleBits(Type) {
|
||||
@setRuntimeSafety(true);
|
||||
return @as(DoubleBits(Type), lhs) * rhs;
|
||||
}
|
||||
test mulSafe {
|
||||
const test_mul_safe = binary(mulSafe, .{});
|
||||
try test_mul_safe.testInts();
|
||||
}
|
||||
|
||||
inline fn mulWrap(comptime Type: type, lhs: Type, rhs: Type) Type {
|
||||
return lhs *% rhs;
|
||||
}
|
||||
@@ -5460,6 +5469,14 @@ test subWithOverflow {
|
||||
try test_sub_with_overflow.testInts();
|
||||
}
|
||||
|
||||
inline fn mulWithOverflow(comptime Type: type, lhs: Type, rhs: Type) struct { Type, u1 } {
|
||||
return @mulWithOverflow(lhs, rhs);
|
||||
}
|
||||
test mulWithOverflow {
|
||||
const test_mul_with_overflow = binary(mulWithOverflow, .{});
|
||||
try test_mul_with_overflow.testInts();
|
||||
}
|
||||
|
||||
inline fn equal(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs == rhs) {
|
||||
return lhs == rhs;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user