| ... | ... | @@ -2454,9 +2454,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2454 | 2454 | try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1); |
| 2455 | 2455 | switch (air_tags[@intFromEnum(inst)]) { |
| 2456 | 2456 | // zig fmt: off |
| 2457 | | .add_wrap => try cg.airBinOp(inst, .add_wrap), |
| 2458 | | .sub_wrap => try cg.airBinOp(inst, .sub_wrap), |
| 2459 | | |
| 2460 | 2457 | .shr, .shr_exact => try cg.airShlShrBinOp(inst), |
| 2461 | 2458 | .shl, .shl_exact => try cg.airShlShrBinOp(inst), |
| 2462 | 2459 | |
| ... | ... | @@ -2497,7 +2494,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2497 | 2494 | if (arg != .none) break; |
| 2498 | 2495 | } else try cg.airDbgVarArgs(); |
| 2499 | 2496 | }, |
| 2500 | | .add, .add_optimized => |air_tag| if (use_old) try cg.airBinOp(inst, .add) else { |
| 2497 | .add, .add_optimized, .add_wrap => |air_tag| if (use_old) try cg.airBinOp(inst, switch (air_tag) { |
| 2498 | else => unreachable, |
| 2499 | .add, .add_optimized => .add, |
| 2500 | .add_wrap => .add_wrap, |
| 2501 | }) else { |
| 2501 | 2502 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| 2502 | 2503 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| 2503 | 2504 | var res: [1]Temp = undefined; |
| ... | ... | @@ -3399,10 +3400,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3399 | 3400 | }, |
| 3400 | 3401 | .dst_temps = .{ .mem, .unused }, |
| 3401 | 3402 | .each = .{ .once = &.{ |
| 3402 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 3403 | | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_add_elem_size), ._, ._ }, |
| 3404 | | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_add_elem_size), ._, ._ }, |
| 3405 | | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size_add_elem_size), ._, ._ }, |
| 3403 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3404 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 3405 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 3406 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 3406 | 3407 | .{ ._, ._, .mov, .tmp4p, .sa(.src0, .sub_elem_size_div_8), ._, ._ }, |
| 3407 | 3408 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 3408 | 3409 | .{ .@"1:", ._, .mov, .tmp5q, .leasi(.tmp1q, .@"8", .tmp4), ._, ._ }, |
| ... | ... | @@ -3437,10 +3438,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 3437 | 3438 | }, |
| 3438 | 3439 | .dst_temps = .{ .mem, .unused }, |
| 3439 | 3440 | .each = .{ .once = &.{ |
| 3440 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 3441 | | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_add_elem_size), ._, ._ }, |
| 3442 | | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_add_elem_size), ._, ._ }, |
| 3443 | | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size_add_elem_size), ._, ._ }, |
| 3441 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 3442 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 3443 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 3444 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 3444 | 3445 | .{ ._, ._, .mov, .tmp4p, .sa(.src0, .sub_elem_size_div_4), ._, ._ }, |
| 3445 | 3446 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 3446 | 3447 | .{ .@"1:", ._, .mov, .tmp5d, .leasi(.tmp1d, .@"4", .tmp4), ._, ._ }, |
| ... | ... | @@ -4352,10 +4353,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4352 | 4353 | }), |
| 4353 | 4354 | else => |e| return e, |
| 4354 | 4355 | }; |
| 4356 | switch (air_tag) { |
| 4357 | else => unreachable, |
| 4358 | .add, .add_optimized => {}, |
| 4359 | .add_wrap => res[0].wrapInt(cg) catch |err| switch (err) { |
| 4360 | error.SelectFailed => return cg.fail("failed to select wrap {} {} {}", .{ |
| 4361 | cg.typeOf(bin_op.lhs).fmt(pt), |
| 4362 | ops[0].tracking(cg), |
| 4363 | ops[1].tracking(cg), |
| 4364 | }), |
| 4365 | else => |e| return e, |
| 4366 | }, |
| 4367 | } |
| 4355 | 4368 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| 4356 | 4369 | }, |
| 4357 | 4370 | .add_safe => unreachable, |
| 4358 | | .sub, .sub_optimized => |air_tag| if (use_old) try cg.airBinOp(inst, .sub) else { |
| 4371 | .sub, .sub_optimized, .sub_wrap => |air_tag| if (use_old) try cg.airBinOp(inst, switch (air_tag) { |
| 4372 | else => unreachable, |
| 4373 | .sub, .sub_optimized => .sub, |
| 4374 | .sub_wrap => .sub_wrap, |
| 4375 | }) else { |
| 4359 | 4376 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| 4360 | 4377 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| 4361 | 4378 | var res: [1]Temp = undefined; |
| ... | ... | @@ -5229,10 +5246,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5229 | 5246 | }, |
| 5230 | 5247 | .dst_temps = .{ .mem, .unused }, |
| 5231 | 5248 | .each = .{ .once = &.{ |
| 5232 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5233 | | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_add_elem_size), ._, ._ }, |
| 5234 | | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_add_elem_size), ._, ._ }, |
| 5235 | | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size_add_elem_size), ._, ._ }, |
| 5249 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5250 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 5251 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 5252 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 5236 | 5253 | .{ ._, ._, .mov, .tmp4p, .sa(.src0, .sub_elem_size_div_8), ._, ._ }, |
| 5237 | 5254 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 5238 | 5255 | .{ .@"1:", ._, .mov, .tmp5q, .leasi(.tmp1q, .@"8", .tmp4), ._, ._ }, |
| ... | ... | @@ -5267,10 +5284,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5267 | 5284 | }, |
| 5268 | 5285 | .dst_temps = .{ .mem, .unused }, |
| 5269 | 5286 | .each = .{ .once = &.{ |
| 5270 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 5271 | | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_add_elem_size), ._, ._ }, |
| 5272 | | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_add_elem_size), ._, ._ }, |
| 5273 | | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_size_add_elem_size), ._, ._ }, |
| 5287 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 5288 | .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 5289 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 5290 | .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size_add_elem_size), ._, ._ }, |
| 5274 | 5291 | .{ ._, ._, .mov, .tmp4p, .sa(.src0, .sub_elem_size_div_4), ._, ._ }, |
| 5275 | 5292 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 5276 | 5293 | .{ .@"1:", ._, .mov, .tmp5d, .leasi(.tmp1d, .@"4", .tmp4), ._, ._ }, |
| ... | ... | @@ -6200,6 +6217,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 6200 | 6217 | }), |
| 6201 | 6218 | else => |e| return e, |
| 6202 | 6219 | }; |
| 6220 | switch (air_tag) { |
| 6221 | else => unreachable, |
| 6222 | .sub, .sub_optimized => {}, |
| 6223 | .sub_wrap => res[0].wrapInt(cg) catch |err| switch (err) { |
| 6224 | error.SelectFailed => return cg.fail("failed to select wrap {} {} {}", .{ |
| 6225 | cg.typeOf(bin_op.lhs).fmt(pt), |
| 6226 | ops[0].tracking(cg), |
| 6227 | ops[1].tracking(cg), |
| 6228 | }), |
| 6229 | else => |e| return e, |
| 6230 | }, |
| 6231 | } |
| 6203 | 6232 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| 6204 | 6233 | }, |
| 6205 | 6234 | .sub_safe => unreachable, |
| ... | ... | @@ -18547,8 +18576,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18547 | 18576 | }, .{ |
| 18548 | 18577 | .required_features = .{ .sse2, null, null, null }, |
| 18549 | 18578 | .src_constraints = .{ |
| 18550 | | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| 18551 | | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| 18579 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 18580 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 18552 | 18581 | .any, |
| 18553 | 18582 | }, |
| 18554 | 18583 | .patterns = &.{ |
| ... | ... | @@ -18682,8 +18711,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18682 | 18711 | }, .{ |
| 18683 | 18712 | .required_features = .{ .sse2, null, null, null }, |
| 18684 | 18713 | .src_constraints = .{ |
| 18685 | | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| 18686 | | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| 18714 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 18715 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 18687 | 18716 | .any, |
| 18688 | 18717 | }, |
| 18689 | 18718 | .patterns = &.{ |
| ... | ... | @@ -18819,8 +18848,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18819 | 18848 | }, .{ |
| 18820 | 18849 | .required_features = .{ .sse2, null, null, null }, |
| 18821 | 18850 | .src_constraints = .{ |
| 18822 | | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| 18823 | | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| 18851 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 18852 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 18824 | 18853 | .any, |
| 18825 | 18854 | }, |
| 18826 | 18855 | .patterns = &.{ |
| ... | ... | @@ -18971,8 +19000,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 18971 | 19000 | }, .{ |
| 18972 | 19001 | .required_features = .{ .sse2, null, null, null }, |
| 18973 | 19002 | .src_constraints = .{ |
| 18974 | | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| 18975 | | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| 19003 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 19004 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 18976 | 19005 | .any, |
| 18977 | 19006 | }, |
| 18978 | 19007 | .patterns = &.{ |
| ... | ... | @@ -19082,8 +19111,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19082 | 19111 | }, .{ |
| 19083 | 19112 | .required_features = .{ .avx, null, null, null }, |
| 19084 | 19113 | .src_constraints = .{ |
| 19085 | | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 19086 | | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 19114 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19115 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19087 | 19116 | .any, |
| 19088 | 19117 | }, |
| 19089 | 19118 | .patterns = &.{ |
| ... | ... | @@ -19097,8 +19126,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19097 | 19126 | }, .{ |
| 19098 | 19127 | .required_features = .{ .sse4_2, null, null, null }, |
| 19099 | 19128 | .src_constraints = .{ |
| 19100 | | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 19101 | | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 19129 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19130 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19102 | 19131 | .any, |
| 19103 | 19132 | }, |
| 19104 | 19133 | .patterns = &.{ |
| ... | ... | @@ -19128,8 +19157,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19128 | 19157 | }, .{ |
| 19129 | 19158 | .required_features = .{ .avx2, null, null, null }, |
| 19130 | 19159 | .src_constraints = .{ |
| 19131 | | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| 19132 | | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| 19160 | .{ .scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 19161 | .{ .scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 19133 | 19162 | .any, |
| 19134 | 19163 | }, |
| 19135 | 19164 | .patterns = &.{ |
| ... | ... | @@ -19143,8 +19172,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19143 | 19172 | }, .{ |
| 19144 | 19173 | .required_features = .{ .avx2, null, null, null }, |
| 19145 | 19174 | .src_constraints = .{ |
| 19146 | | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| 19147 | | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| 19175 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 19176 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 19148 | 19177 | .any, |
| 19149 | 19178 | }, |
| 19150 | 19179 | .patterns = &.{ |
| ... | ... | @@ -19178,8 +19207,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19178 | 19207 | }, .{ |
| 19179 | 19208 | .required_features = .{ .avx, null, null, null }, |
| 19180 | 19209 | .src_constraints = .{ |
| 19181 | | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 19182 | | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 19210 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19211 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19183 | 19212 | .any, |
| 19184 | 19213 | }, |
| 19185 | 19214 | .patterns = &.{ |
| ... | ... | @@ -19213,8 +19242,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19213 | 19242 | }, .{ |
| 19214 | 19243 | .required_features = .{ .sse4_2, null, null, null }, |
| 19215 | 19244 | .src_constraints = .{ |
| 19216 | | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 19217 | | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 19245 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19246 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 19218 | 19247 | .any, |
| 19219 | 19248 | }, |
| 19220 | 19249 | .patterns = &.{ |
| ... | ... | @@ -19318,8 +19347,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19318 | 19347 | }, .{ |
| 19319 | 19348 | .required_features = .{ .avx, null, null, null }, |
| 19320 | 19349 | .src_constraints = .{ |
| 19321 | | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 19322 | | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 19350 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19351 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19323 | 19352 | .any, |
| 19324 | 19353 | }, |
| 19325 | 19354 | .patterns = &.{ |
| ... | ... | @@ -19352,8 +19381,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19352 | 19381 | }, .{ |
| 19353 | 19382 | .required_features = .{ .sse4_2, null, null, null }, |
| 19354 | 19383 | .src_constraints = .{ |
| 19355 | | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 19356 | | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 19384 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19385 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19357 | 19386 | .any, |
| 19358 | 19387 | }, |
| 19359 | 19388 | .patterns = &.{ |
| ... | ... | @@ -19387,8 +19416,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19387 | 19416 | }, .{ |
| 19388 | 19417 | .required_features = .{ .avx2, null, null, null }, |
| 19389 | 19418 | .src_constraints = .{ |
| 19390 | | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| 19391 | | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| 19419 | .{ .scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 19420 | .{ .scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 19392 | 19421 | .any, |
| 19393 | 19422 | }, |
| 19394 | 19423 | .patterns = &.{ |
| ... | ... | @@ -19421,8 +19450,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19421 | 19450 | }, .{ |
| 19422 | 19451 | .required_features = .{ .avx2, null, null, null }, |
| 19423 | 19452 | .src_constraints = .{ |
| 19424 | | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| 19425 | | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| 19453 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 19454 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 19426 | 19455 | .any, |
| 19427 | 19456 | }, |
| 19428 | 19457 | .patterns = &.{ |
| ... | ... | @@ -19460,8 +19489,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19460 | 19489 | }, .{ |
| 19461 | 19490 | .required_features = .{ .avx, null, null, null }, |
| 19462 | 19491 | .src_constraints = .{ |
| 19463 | | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 19464 | | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 19492 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19493 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19465 | 19494 | .any, |
| 19466 | 19495 | }, |
| 19467 | 19496 | .patterns = &.{ |
| ... | ... | @@ -19499,8 +19528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19499 | 19528 | }, .{ |
| 19500 | 19529 | .required_features = .{ .sse4_2, null, null, null }, |
| 19501 | 19530 | .src_constraints = .{ |
| 19502 | | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 19503 | | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 19531 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19532 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 19504 | 19533 | .any, |
| 19505 | 19534 | }, |
| 19506 | 19535 | .patterns = &.{ |
| ... | ... | @@ -19628,20 +19657,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19628 | 19657 | .dst_temps = .{ .mem, .unused }, |
| 19629 | 19658 | .clobbers = .{ .eflags = true }, |
| 19630 | 19659 | .each = .{ .once = &.{ |
| 19631 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 19660 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 19632 | 19661 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19633 | 19662 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 19634 | | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 19635 | | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 19663 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19664 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19636 | 19665 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 19637 | 19666 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 19638 | 19667 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 19639 | | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 19640 | | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 19641 | | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| 19642 | | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| 19668 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19669 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19670 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 19671 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 19643 | 19672 | .{ ._, ._l, .cmov, .tmp1p, .tmp2p, ._, ._ }, |
| 19644 | | .{ ._, ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| 19673 | .{ ._, ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 19645 | 19674 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19646 | 19675 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 19647 | 19676 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| ... | ... | @@ -19669,20 +19698,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19669 | 19698 | .dst_temps = .{ .mem, .unused }, |
| 19670 | 19699 | .clobbers = .{ .eflags = true }, |
| 19671 | 19700 | .each = .{ .once = &.{ |
| 19672 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 19701 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 19673 | 19702 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19674 | 19703 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 19675 | | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 19676 | | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 19704 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19705 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19677 | 19706 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 19678 | 19707 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 19679 | 19708 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 19680 | | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 19681 | | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 19682 | | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| 19709 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19710 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19711 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 19683 | 19712 | .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, |
| 19684 | | .{ ._, ._, .lea, .tmp1p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| 19685 | | .{ .@"1:", ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| 19713 | .{ ._, ._, .lea, .tmp1p, .memiad(.src1, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 19714 | .{ .@"1:", ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 19686 | 19715 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19687 | 19716 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 19688 | 19717 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| ... | ... | @@ -19710,18 +19739,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19710 | 19739 | .dst_temps = .{ .mem, .unused }, |
| 19711 | 19740 | .clobbers = .{ .eflags = true }, |
| 19712 | 19741 | .each = .{ .once = &.{ |
| 19713 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 19742 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 19714 | 19743 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19715 | 19744 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 19716 | | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 19717 | | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 19745 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19746 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19718 | 19747 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 19719 | 19748 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 19720 | 19749 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 19721 | | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| 19722 | | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| 19750 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 19751 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 19723 | 19752 | .{ ._, ._b, .cmov, .tmp1p, .tmp2p, ._, ._ }, |
| 19724 | | .{ ._, ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| 19753 | .{ ._, ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 19725 | 19754 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19726 | 19755 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 19727 | 19756 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, |
| ... | ... | @@ -19749,18 +19778,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 19749 | 19778 | .dst_temps = .{ .mem, .unused }, |
| 19750 | 19779 | .clobbers = .{ .eflags = true }, |
| 19751 | 19780 | .each = .{ .once = &.{ |
| 19752 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 19781 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 19753 | 19782 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19754 | 19783 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 19755 | | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 19756 | | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 19784 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19785 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 19757 | 19786 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 19758 | 19787 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 19759 | 19788 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 19760 | | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| 19789 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 19761 | 19790 | .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, |
| 19762 | | .{ ._, ._, .lea, .tmp1p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| 19763 | | .{ .@"1:", ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| 19791 | .{ ._, ._, .lea, .tmp1p, .memia(.src1, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 19792 | .{ .@"1:", ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 19764 | 19793 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 19765 | 19794 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 19766 | 19795 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, |
| ... | ... | @@ -22702,8 +22731,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22702 | 22731 | }, .{ |
| 22703 | 22732 | .required_features = .{ .sse2, null, null, null }, |
| 22704 | 22733 | .src_constraints = .{ |
| 22705 | | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| 22706 | | .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| 22734 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 22735 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 22707 | 22736 | .any, |
| 22708 | 22737 | }, |
| 22709 | 22738 | .patterns = &.{ |
| ... | ... | @@ -22837,8 +22866,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22837 | 22866 | }, .{ |
| 22838 | 22867 | .required_features = .{ .sse2, null, null, null }, |
| 22839 | 22868 | .src_constraints = .{ |
| 22840 | | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| 22841 | | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, |
| 22869 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 22870 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .dword } }, |
| 22842 | 22871 | .any, |
| 22843 | 22872 | }, |
| 22844 | 22873 | .patterns = &.{ |
| ... | ... | @@ -22974,8 +23003,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 22974 | 23003 | }, .{ |
| 22975 | 23004 | .required_features = .{ .sse2, null, null, null }, |
| 22976 | 23005 | .src_constraints = .{ |
| 22977 | | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| 22978 | | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| 23006 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 23007 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 22979 | 23008 | .any, |
| 22980 | 23009 | }, |
| 22981 | 23010 | .patterns = &.{ |
| ... | ... | @@ -23126,8 +23155,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23126 | 23155 | }, .{ |
| 23127 | 23156 | .required_features = .{ .sse2, null, null, null }, |
| 23128 | 23157 | .src_constraints = .{ |
| 23129 | | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| 23130 | | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, |
| 23158 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 23159 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 32 } }, |
| 23131 | 23160 | .any, |
| 23132 | 23161 | }, |
| 23133 | 23162 | .patterns = &.{ |
| ... | ... | @@ -23237,8 +23266,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23237 | 23266 | }, .{ |
| 23238 | 23267 | .required_features = .{ .avx, null, null, null }, |
| 23239 | 23268 | .src_constraints = .{ |
| 23240 | | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 23241 | | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 23269 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23270 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23242 | 23271 | .any, |
| 23243 | 23272 | }, |
| 23244 | 23273 | .patterns = &.{ |
| ... | ... | @@ -23254,8 +23283,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23254 | 23283 | }, .{ |
| 23255 | 23284 | .required_features = .{ .sse4_2, null, null, null }, |
| 23256 | 23285 | .src_constraints = .{ |
| 23257 | | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 23258 | | .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 23286 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23287 | .{ .scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23259 | 23288 | .any, |
| 23260 | 23289 | }, |
| 23261 | 23290 | .patterns = &.{ |
| ... | ... | @@ -23285,8 +23314,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23285 | 23314 | }, .{ |
| 23286 | 23315 | .required_features = .{ .avx2, null, null, null }, |
| 23287 | 23316 | .src_constraints = .{ |
| 23288 | | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| 23289 | | .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| 23317 | .{ .scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 23318 | .{ .scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 23290 | 23319 | .any, |
| 23291 | 23320 | }, |
| 23292 | 23321 | .patterns = &.{ |
| ... | ... | @@ -23302,8 +23331,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23302 | 23331 | }, .{ |
| 23303 | 23332 | .required_features = .{ .avx2, null, null, null }, |
| 23304 | 23333 | .src_constraints = .{ |
| 23305 | | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| 23306 | | .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, |
| 23334 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 23335 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .yword, .is = .qword } }, |
| 23307 | 23336 | .any, |
| 23308 | 23337 | }, |
| 23309 | 23338 | .patterns = &.{ |
| ... | ... | @@ -23337,8 +23366,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23337 | 23366 | }, .{ |
| 23338 | 23367 | .required_features = .{ .avx, null, null, null }, |
| 23339 | 23368 | .src_constraints = .{ |
| 23340 | | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 23341 | | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 23369 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23370 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23342 | 23371 | .any, |
| 23343 | 23372 | }, |
| 23344 | 23373 | .patterns = &.{ |
| ... | ... | @@ -23372,8 +23401,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23372 | 23401 | }, .{ |
| 23373 | 23402 | .required_features = .{ .sse4_2, null, null, null }, |
| 23374 | 23403 | .src_constraints = .{ |
| 23375 | | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 23376 | | .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, |
| 23404 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23405 | .{ .multiple_scalar_signed_or_exclusive_int = .{ .of = .xword, .is = .qword } }, |
| 23377 | 23406 | .any, |
| 23378 | 23407 | }, |
| 23379 | 23408 | .patterns = &.{ |
| ... | ... | @@ -23477,8 +23506,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23477 | 23506 | }, .{ |
| 23478 | 23507 | .required_features = .{ .avx, null, null, null }, |
| 23479 | 23508 | .src_constraints = .{ |
| 23480 | | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 23481 | | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 23509 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23510 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23482 | 23511 | .any, |
| 23483 | 23512 | }, |
| 23484 | 23513 | .patterns = &.{ |
| ... | ... | @@ -23511,8 +23540,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23511 | 23540 | }, .{ |
| 23512 | 23541 | .required_features = .{ .sse4_2, null, null, null }, |
| 23513 | 23542 | .src_constraints = .{ |
| 23514 | | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 23515 | | .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 23543 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23544 | .{ .scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23516 | 23545 | .any, |
| 23517 | 23546 | }, |
| 23518 | 23547 | .patterns = &.{ |
| ... | ... | @@ -23546,8 +23575,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23546 | 23575 | }, .{ |
| 23547 | 23576 | .required_features = .{ .avx2, null, null, null }, |
| 23548 | 23577 | .src_constraints = .{ |
| 23549 | | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| 23550 | | .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| 23578 | .{ .scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 23579 | .{ .scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 23551 | 23580 | .any, |
| 23552 | 23581 | }, |
| 23553 | 23582 | .patterns = &.{ |
| ... | ... | @@ -23580,8 +23609,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23580 | 23609 | }, .{ |
| 23581 | 23610 | .required_features = .{ .avx2, null, null, null }, |
| 23582 | 23611 | .src_constraints = .{ |
| 23583 | | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| 23584 | | .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, |
| 23612 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 23613 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .yword, .is = 64 } }, |
| 23585 | 23614 | .any, |
| 23586 | 23615 | }, |
| 23587 | 23616 | .patterns = &.{ |
| ... | ... | @@ -23619,8 +23648,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23619 | 23648 | }, .{ |
| 23620 | 23649 | .required_features = .{ .avx, null, null, null }, |
| 23621 | 23650 | .src_constraints = .{ |
| 23622 | | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 23623 | | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 23651 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23652 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23624 | 23653 | .any, |
| 23625 | 23654 | }, |
| 23626 | 23655 | .patterns = &.{ |
| ... | ... | @@ -23658,8 +23687,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23658 | 23687 | }, .{ |
| 23659 | 23688 | .required_features = .{ .sse4_2, null, null, null }, |
| 23660 | 23689 | .src_constraints = .{ |
| 23661 | | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 23662 | | .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 23690 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23691 | .{ .multiple_scalar_exact_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 23663 | 23692 | .any, |
| 23664 | 23693 | }, |
| 23665 | 23694 | .patterns = &.{ |
| ... | ... | @@ -23787,20 +23816,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23787 | 23816 | .dst_temps = .{ .mem, .unused }, |
| 23788 | 23817 | .clobbers = .{ .eflags = true }, |
| 23789 | 23818 | .each = .{ .once = &.{ |
| 23790 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 23819 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 23791 | 23820 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23792 | 23821 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 23793 | | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 23794 | | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 23822 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23823 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23795 | 23824 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 23796 | 23825 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 23797 | 23826 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 23798 | | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 23799 | | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 23800 | | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| 23801 | | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| 23827 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23828 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23829 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 23830 | .{ ._, ._, .lea, .tmp2p, .memiad(.src1, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 23802 | 23831 | .{ ._, ._ge, .cmov, .tmp1p, .tmp2p, ._, ._ }, |
| 23803 | | .{ ._, ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| 23832 | .{ ._, ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 23804 | 23833 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23805 | 23834 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 23806 | 23835 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| ... | ... | @@ -23828,20 +23857,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23828 | 23857 | .dst_temps = .{ .mem, .unused }, |
| 23829 | 23858 | .clobbers = .{ .eflags = true }, |
| 23830 | 23859 | .each = .{ .once = &.{ |
| 23831 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 23860 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 23832 | 23861 | .{ .@"0:", ._, .mov, .tmp1d, .sia(-1, .none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23833 | 23862 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 23834 | | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 23835 | | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 23863 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23864 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23836 | 23865 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 23837 | 23866 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 23838 | 23867 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 23839 | | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 23840 | | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 23841 | | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| 23868 | .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23869 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23870 | .{ ._, ._, .lea, .tmp1p, .memiad(.src0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 23842 | 23871 | .{ ._, ._nge, .j, .@"1f", ._, ._, ._ }, |
| 23843 | | .{ ._, ._, .lea, .tmp1p, .memiad(.src1, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| 23844 | | .{ .@"1:", ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_size_sub_elem_size, 8), ._, ._ }, |
| 23872 | .{ ._, ._, .lea, .tmp1p, .memiad(.src1, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 23873 | .{ .@"1:", ._, .lea, .tmp2p, .memiad(.dst0, .tmp0, .add_unaligned_size_sub_elem_size, 8), ._, ._ }, |
| 23845 | 23874 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23846 | 23875 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 23847 | 23876 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| ... | ... | @@ -23869,18 +23898,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23869 | 23898 | .dst_temps = .{ .mem, .unused }, |
| 23870 | 23899 | .clobbers = .{ .eflags = true }, |
| 23871 | 23900 | .each = .{ .once = &.{ |
| 23872 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 23901 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 23873 | 23902 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23874 | 23903 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 23875 | | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 23876 | | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 23904 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23905 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23877 | 23906 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 23878 | 23907 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 23879 | 23908 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 23880 | | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| 23881 | | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| 23909 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 23910 | .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 23882 | 23911 | .{ ._, ._ae, .cmov, .tmp1p, .tmp2p, ._, ._ }, |
| 23883 | | .{ ._, ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| 23912 | .{ ._, ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 23884 | 23913 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23885 | 23914 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 23886 | 23915 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, |
| ... | ... | @@ -23908,18 +23937,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 23908 | 23937 | .dst_temps = .{ .mem, .unused }, |
| 23909 | 23938 | .clobbers = .{ .eflags = true }, |
| 23910 | 23939 | .each = .{ .once = &.{ |
| 23911 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, |
| 23940 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, |
| 23912 | 23941 | .{ .@"0:", ._, .mov, .tmp1d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23913 | 23942 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 23914 | | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, |
| 23915 | | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, |
| 23943 | .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23944 | .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 23916 | 23945 | .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ }, |
| 23917 | 23946 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 23918 | 23947 | .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, |
| 23919 | | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| 23948 | .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 23920 | 23949 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| 23921 | | .{ ._, ._, .lea, .tmp1p, .memia(.src1, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| 23922 | | .{ .@"1:", ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_size_sub_elem_size), ._, ._ }, |
| 23950 | .{ ._, ._, .lea, .tmp1p, .memia(.src1, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 23951 | .{ .@"1:", ._, .lea, .tmp2p, .memia(.dst0, .tmp0, .add_unaligned_size_sub_elem_size), ._, ._ }, |
| 23923 | 23952 | .{ ._, ._, .mov, .tmp3d, .sa(.none, .add_src0_elem_size_div_8), ._, ._ }, |
| 23924 | 23953 | .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, |
| 23925 | 23954 | .{ ._, ._, .@"test", .tmp0p, .tmp0p, ._, ._ }, |
| ... | ... | @@ -39252,7 +39281,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 39252 | 39281 | .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ }, |
| 39253 | 39282 | .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ }, |
| 39254 | 39283 | .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ }, |
| 39255 | | .{ ._, ._b, .j, .@"1b", ._, ._, ._ }, |
| 39284 | .{ ._, ._a, .j, .@"1b", ._, ._, ._ }, |
| 39256 | 39285 | .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ }, |
| 39257 | 39286 | .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ }, |
| 39258 | 39287 | .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ }, |
| ... | ... | @@ -39434,7 +39463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 39434 | 39463 | .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ }, |
| 39435 | 39464 | .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ }, |
| 39436 | 39465 | .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ }, |
| 39437 | | .{ ._, ._b, .j, .@"1b", ._, ._, ._ }, |
| 39466 | .{ ._, ._a, .j, .@"1b", ._, ._, ._ }, |
| 39438 | 39467 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 39439 | 39468 | .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ }, |
| 39440 | 39469 | .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ }, |
| ... | ... | @@ -39620,7 +39649,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 39620 | 39649 | .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ }, |
| 39621 | 39650 | .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ }, |
| 39622 | 39651 | .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ }, |
| 39623 | | .{ ._, ._b, .j, .@"1b", ._, ._, ._ }, |
| 39652 | .{ ._, ._a, .j, .@"1b", ._, ._, ._ }, |
| 39624 | 39653 | .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, |
| 39625 | 39654 | .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ }, |
| 39626 | 39655 | .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ }, |
| ... | ... | @@ -59051,8 +59080,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 59051 | 59080 | .each = .{ .once = &.{ |
| 59052 | 59081 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 59053 | 59082 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 59054 | | .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 59055 | | .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 59083 | .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 59084 | .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 59056 | 59085 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| 59057 | 59086 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 59058 | 59087 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| ... | ... | @@ -59113,8 +59142,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 59113 | 59142 | .each = .{ .once = &.{ |
| 59114 | 59143 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 59115 | 59144 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 59116 | | .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 59117 | | .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 59145 | .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 59146 | .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 59118 | 59147 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 59119 | 59148 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 59120 | 59149 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| ... | ... | @@ -59175,8 +59204,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 59175 | 59204 | .each = .{ .once = &.{ |
| 59176 | 59205 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 59177 | 59206 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 59178 | | .{ ._, .p_d, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| 59179 | | .{ ._, .p_d, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| 59207 | .{ ._, .p_d, .sll, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 59208 | .{ ._, .p_d, .sra, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 59180 | 59209 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 59181 | 59210 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 59182 | 59211 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| ... | ... | @@ -60838,7 +60867,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 60838 | 60867 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| 60839 | 60868 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 60840 | 60869 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, |
| 60841 | | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 60870 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 60842 | 60871 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 60843 | 60872 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 60844 | 60873 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| ... | ... | @@ -60875,7 +60904,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 60875 | 60904 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| 60876 | 60905 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 60877 | 60906 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, |
| 60878 | | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 60907 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 60879 | 60908 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 60880 | 60909 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 60881 | 60910 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| ... | ... | @@ -60914,7 +60943,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 60914 | 60943 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| 60915 | 60944 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 60916 | 60945 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, |
| 60917 | | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 60946 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 60918 | 60947 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 60919 | 60948 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 60920 | 60949 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| ... | ... | @@ -60953,7 +60982,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 60953 | 60982 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| 60954 | 60983 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 60955 | 60984 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, |
| 60956 | | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 60985 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 60957 | 60986 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 60958 | 60987 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 60959 | 60988 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| ... | ... | @@ -61130,7 +61159,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 61130 | 61159 | .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ }, |
| 61131 | 61160 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ }, |
| 61132 | 61161 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, |
| 61133 | | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 61162 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 61134 | 61163 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 61135 | 61164 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 61136 | 61165 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| ... | ... | @@ -61167,7 +61196,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 61167 | 61196 | .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ }, |
| 61168 | 61197 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ }, |
| 61169 | 61198 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, |
| 61170 | | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 61199 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 61171 | 61200 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 61172 | 61201 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 61173 | 61202 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| ... | ... | @@ -61274,7 +61303,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 61274 | 61303 | .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ }, |
| 61275 | 61304 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| 61276 | 61305 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, |
| 61277 | | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 61306 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 61278 | 61307 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 61279 | 61308 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 61280 | 61309 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| ... | ... | @@ -61311,7 +61340,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 61311 | 61340 | .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ }, |
| 61312 | 61341 | .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, |
| 61313 | 61342 | .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, |
| 61314 | | .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 61343 | .{ ._, ._, .add, .tmp1p, .sia2(16, .src0, .dst0, .add_delta_elem_size), ._, ._ }, |
| 61315 | 61344 | .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, |
| 61316 | 61345 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 61317 | 61346 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| ... | ... | @@ -94747,7 +94776,7 @@ const MoveStrategy = union(enum) { |
| 94747 | 94776 | }); |
| 94748 | 94777 | }, |
| 94749 | 94778 | .load_store => |tag| { |
| 94750 | | if (tag[0] == ._ps and tag[1] == .movl) try cg.asmRegisterRegister(.{ .p_, .xor }, dst_reg, dst_reg); |
| 94779 | if (tag[0] == ._ps and tag[1] == .movl) try cg.asmRegisterRegister(.{ ._ps, .xor }, dst_reg, dst_reg); |
| 94751 | 94780 | try cg.asmRegisterMemory(tag, switch (tag[1]) { |
| 94752 | 94781 | else => dst_reg, |
| 94753 | 94782 | .lea => if (dst_reg.bitSize() >= 32) dst_reg else dst_reg.to32(), |
| ... | ... | @@ -101383,454 +101412,2823 @@ const Temp = struct { |
| 101383 | 101412 | try cg.asmOpOnly(.{ .@"rep _sb", .sto }); |
| 101384 | 101413 | } |
| 101385 | 101414 | |
| 101386 | | /// Supports any `op` using `cg.intInfo(lhs.typeOf(cg)).?.signedness` as the signedness. |
| 101387 | | /// Returns `error.SelectFailed` when `cg.intInfo(lhs.typeOf(cg)) == null`. |
| 101388 | | fn cmpInts(lhs: *Temp, op: std.math.CompareOperator, rhs: *Temp, cg: *CodeGen) Select.Error!Temp { |
| 101389 | | var ops: [2]Temp = .{ lhs.*, rhs.* }; |
| 101415 | fn wrapInt(temp: *Temp, cg: *CodeGen) Select.Error!void { |
| 101416 | var ops: [1]Temp = .{temp.*}; |
| 101390 | 101417 | var res: [1]Temp = undefined; |
| 101391 | | switch (op) { |
| 101392 | | .lt, .lte, .gte, .gt => { |
| 101393 | | const commute = switch (op) { |
| 101394 | | .lt, .gte => false, |
| 101395 | | .lte, .gt => true, |
| 101396 | | else => unreachable, |
| 101397 | | }; |
| 101398 | | if (commute) std.mem.swap(Temp, &ops[0], &ops[1]); |
| 101399 | | try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{ |
| 101400 | | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, |
| 101401 | | .patterns = &.{ |
| 101402 | | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, |
| 101403 | | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101404 | | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101405 | | }, |
| 101406 | | .dst_temps = .{ .{ .cc = .g }, .unused }, |
| 101407 | | .clobbers = .{ .eflags = true }, |
| 101408 | | .each = .{ .once = &.{ |
| 101409 | | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 101410 | | } }, |
| 101411 | | }, .{ |
| 101412 | | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, |
| 101413 | | .patterns = &.{ |
| 101414 | | .{ .src = .{ .mem, .imm8, .none } }, |
| 101415 | | .{ .src = .{ .to_gpr, .imm8, .none } }, |
| 101416 | | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 101417 | | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 101418 | | }, |
| 101419 | | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| 101420 | | .clobbers = .{ .eflags = true }, |
| 101421 | | .each = .{ .once = &.{ |
| 101422 | | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 101423 | | } }, |
| 101424 | | }, .{ |
| 101425 | | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| 101426 | | .patterns = &.{ |
| 101427 | | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, |
| 101428 | | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101429 | | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101430 | | }, |
| 101431 | | .dst_temps = .{ .{ .cc = .a }, .unused }, |
| 101432 | | .clobbers = .{ .eflags = true }, |
| 101433 | | .each = .{ .once = &.{ |
| 101434 | | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 101435 | | } }, |
| 101436 | | }, .{ |
| 101437 | | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| 101438 | | .patterns = &.{ |
| 101439 | | .{ .src = .{ .mem, .imm8, .none } }, |
| 101440 | | .{ .src = .{ .to_gpr, .imm8, .none } }, |
| 101441 | | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 101442 | | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 101443 | | }, |
| 101444 | | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| 101445 | | .clobbers = .{ .eflags = true }, |
| 101446 | | .each = .{ .once = &.{ |
| 101447 | | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 101448 | | } }, |
| 101449 | | }, .{ |
| 101450 | | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 101451 | | .patterns = &.{ |
| 101452 | | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, |
| 101453 | | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101454 | | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101455 | | }, |
| 101456 | | .dst_temps = .{ .{ .cc = .g }, .unused }, |
| 101457 | | .clobbers = .{ .eflags = true }, |
| 101458 | | .each = .{ .once = &.{ |
| 101459 | | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 101460 | | } }, |
| 101461 | | }, .{ |
| 101462 | | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 101463 | | .patterns = &.{ |
| 101464 | | .{ .src = .{ .mem, .imm16, .none } }, |
| 101465 | | .{ .src = .{ .to_gpr, .imm16, .none } }, |
| 101466 | | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 101467 | | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 101468 | | }, |
| 101469 | | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| 101470 | | .clobbers = .{ .eflags = true }, |
| 101471 | | .each = .{ .once = &.{ |
| 101472 | | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 101473 | | } }, |
| 101474 | | }, .{ |
| 101475 | | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, |
| 101476 | | .patterns = &.{ |
| 101477 | | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, |
| 101478 | | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101479 | | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101480 | | }, |
| 101481 | | .dst_temps = .{ .{ .cc = .a }, .unused }, |
| 101482 | | .clobbers = .{ .eflags = true }, |
| 101483 | | .each = .{ .once = &.{ |
| 101484 | | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 101485 | | } }, |
| 101486 | | }, .{ |
| 101487 | | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, |
| 101488 | | .patterns = &.{ |
| 101489 | | .{ .src = .{ .mem, .imm16, .none } }, |
| 101490 | | .{ .src = .{ .to_gpr, .imm16, .none } }, |
| 101491 | | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 101492 | | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 101493 | | }, |
| 101494 | | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| 101495 | | .clobbers = .{ .eflags = true }, |
| 101496 | | .each = .{ .once = &.{ |
| 101497 | | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 101498 | | } }, |
| 101499 | | }, .{ |
| 101500 | | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| 101501 | | .patterns = &.{ |
| 101502 | | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 101503 | | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101504 | | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101505 | | }, |
| 101506 | | .dst_temps = .{ .{ .cc = .g }, .unused }, |
| 101507 | | .clobbers = .{ .eflags = true }, |
| 101508 | | .each = .{ .once = &.{ |
| 101509 | | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| 101510 | | } }, |
| 101511 | | }, .{ |
| 101512 | | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| 101513 | | .patterns = &.{ |
| 101514 | | .{ .src = .{ .mem, .imm32, .none } }, |
| 101515 | | .{ .src = .{ .to_gpr, .imm32, .none } }, |
| 101516 | | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 101517 | | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 101518 | | }, |
| 101519 | | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| 101520 | | .clobbers = .{ .eflags = true }, |
| 101521 | | .each = .{ .once = &.{ |
| 101522 | | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| 101523 | | } }, |
| 101524 | | }, .{ |
| 101525 | | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, |
| 101526 | | .patterns = &.{ |
| 101527 | | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 101528 | | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101529 | | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101530 | | }, |
| 101531 | | .dst_temps = .{ .{ .cc = .a }, .unused }, |
| 101532 | | .clobbers = .{ .eflags = true }, |
| 101533 | | .each = .{ .once = &.{ |
| 101534 | | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| 101535 | | } }, |
| 101536 | | }, .{ |
| 101537 | | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, |
| 101538 | | .patterns = &.{ |
| 101539 | | .{ .src = .{ .mem, .imm32, .none } }, |
| 101540 | | .{ .src = .{ .to_gpr, .imm32, .none } }, |
| 101541 | | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 101542 | | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 101543 | | }, |
| 101544 | | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| 101545 | | .clobbers = .{ .eflags = true }, |
| 101546 | | .each = .{ .once = &.{ |
| 101547 | | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| 101548 | | } }, |
| 101549 | | }, .{ |
| 101550 | | .required_features = .{ .@"64bit", null, null, null }, |
| 101551 | | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| 101552 | | .patterns = &.{ |
| 101553 | | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 101554 | | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101555 | | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101556 | | }, |
| 101557 | | .dst_temps = .{ .{ .cc = .g }, .unused }, |
| 101558 | | .clobbers = .{ .eflags = true }, |
| 101559 | | .each = .{ .once = &.{ |
| 101560 | | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| 101561 | | } }, |
| 101562 | | }, .{ |
| 101563 | | .required_features = .{ .@"64bit", null, null, null }, |
| 101564 | | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| 101565 | | .patterns = &.{ |
| 101566 | | .{ .src = .{ .mem, .simm32, .none } }, |
| 101567 | | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| 101568 | | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 101569 | | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 101570 | | }, |
| 101571 | | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| 101572 | | .clobbers = .{ .eflags = true }, |
| 101573 | | .each = .{ .once = &.{ |
| 101574 | | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| 101575 | | } }, |
| 101576 | | }, .{ |
| 101577 | | .required_features = .{ .@"64bit", null, null, null }, |
| 101578 | | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, |
| 101579 | | .patterns = &.{ |
| 101580 | | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 101581 | | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101582 | | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101583 | | }, |
| 101584 | | .dst_temps = .{ .{ .cc = .a }, .unused }, |
| 101585 | | .clobbers = .{ .eflags = true }, |
| 101586 | | .each = .{ .once = &.{ |
| 101587 | | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| 101588 | | } }, |
| 101589 | | }, .{ |
| 101590 | | .required_features = .{ .@"64bit", null, null, null }, |
| 101591 | | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, |
| 101592 | | .patterns = &.{ |
| 101593 | | .{ .src = .{ .mem, .simm32, .none } }, |
| 101594 | | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| 101595 | | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 101596 | | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 101597 | | }, |
| 101598 | | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| 101599 | | .clobbers = .{ .eflags = true }, |
| 101600 | | .each = .{ .once = &.{ |
| 101601 | | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| 101602 | | } }, |
| 101603 | | }, .{ |
| 101604 | | .required_features = .{ .@"64bit", null, null, null }, |
| 101605 | | .src_constraints = .{ |
| 101606 | | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, |
| 101607 | | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, |
| 101608 | | .any, |
| 101609 | | }, |
| 101610 | | .patterns = &.{ |
| 101611 | | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 101612 | | }, |
| 101613 | | .extra_temps = .{ |
| 101614 | | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 101615 | | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 101616 | | .unused, |
| 101617 | | .unused, |
| 101618 | | .unused, |
| 101619 | | .unused, |
| 101620 | | .unused, |
| 101621 | | .unused, |
| 101622 | | .unused, |
| 101623 | | .unused, |
| 101624 | | .unused, |
| 101625 | | }, |
| 101626 | | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| 101627 | | .clobbers = .{ .eflags = true }, |
| 101628 | | .each = .{ .once = &.{ |
| 101629 | | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ }, |
| 101630 | | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 101631 | | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| 101632 | | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| 101633 | | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 101634 | | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 101635 | | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 101636 | | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ }, |
| 101637 | | } }, |
| 101638 | | }, .{ |
| 101639 | | .required_features = .{ .@"64bit", null, null, null }, |
| 101640 | | .src_constraints = .{ |
| 101641 | | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 101642 | | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 101643 | | .any, |
| 101644 | | }, |
| 101645 | | .patterns = &.{ |
| 101646 | | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 101647 | | }, |
| 101648 | | .extra_temps = .{ |
| 101649 | | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 101650 | | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 101651 | | .unused, |
| 101652 | | .unused, |
| 101653 | | .unused, |
| 101654 | | .unused, |
| 101655 | | .unused, |
| 101656 | | .unused, |
| 101657 | | .unused, |
| 101658 | | .unused, |
| 101659 | | .unused, |
| 101660 | | }, |
| 101661 | | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| 101662 | | .clobbers = .{ .eflags = true }, |
| 101663 | | .each = .{ .once = &.{ |
| 101664 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ }, |
| 101665 | | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 101666 | | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ }, |
| 101667 | | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ }, |
| 101668 | | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 101669 | | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 101670 | | } }, |
| 101671 | | }, .{ |
| 101672 | | .src_constraints = .{ |
| 101673 | | .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, |
| 101674 | | .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, |
| 101675 | | .any, |
| 101676 | | }, |
| 101677 | | .patterns = &.{ |
| 101678 | | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 101679 | | }, |
| 101680 | | .extra_temps = .{ |
| 101681 | | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 101682 | | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 101683 | | .unused, |
| 101684 | | .unused, |
| 101685 | | .unused, |
| 101686 | | .unused, |
| 101687 | | .unused, |
| 101688 | | .unused, |
| 101689 | | .unused, |
| 101690 | | .unused, |
| 101691 | | .unused, |
| 101692 | | }, |
| 101693 | | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| 101694 | | .clobbers = .{ .eflags = true }, |
| 101695 | | .each = .{ .once = &.{ |
| 101696 | | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_4), ._, ._ }, |
| 101697 | | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 101698 | | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"4", .tmp0, .add_size, -4), ._, ._ }, |
| 101699 | | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"4", .tmp0, .add_size, -4), ._, ._ }, |
| 101700 | | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 101701 | | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 101702 | | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -4), ._, ._ }, |
| 101703 | | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -4), ._, ._ }, |
| 101704 | | } }, |
| 101705 | | }, .{ |
| 101706 | | .src_constraints = .{ |
| 101707 | | .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| 101708 | | .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| 101709 | | .any, |
| 101710 | | }, |
| 101711 | | .patterns = &.{ |
| 101712 | | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 101713 | | }, |
| 101714 | | .extra_temps = .{ |
| 101715 | | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 101716 | | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 101717 | | .unused, |
| 101718 | | .unused, |
| 101719 | | .unused, |
| 101720 | | .unused, |
| 101721 | | .unused, |
| 101722 | | .unused, |
| 101723 | | .unused, |
| 101724 | | .unused, |
| 101725 | | .unused, |
| 101726 | | }, |
| 101727 | | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| 101728 | | .clobbers = .{ .eflags = true }, |
| 101729 | | .each = .{ .once = &.{ |
| 101730 | | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_4), ._, ._ }, |
| 101731 | | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 101732 | | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_size), ._, ._ }, |
| 101733 | | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"4", .tmp0, .add_size), ._, ._ }, |
| 101734 | | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 101735 | | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 101736 | | } }, |
| 101737 | | } }); |
| 101738 | | if (commute) std.mem.swap(Temp, &ops[0], &ops[1]); |
| 101418 | try cg.select(&res, &.{temp.typeOf(cg)}, &ops, comptime &.{ .{ |
| 101419 | .src_constraints = .{ .{ .exact_int = 8 }, .any, .any }, |
| 101420 | .patterns = &.{ |
| 101421 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101422 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101739 | 101423 | }, |
| 101740 | | .eq, .neq => { |
| 101741 | | try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{ |
| 101742 | | .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte }, .any }, |
| 101743 | | .patterns = &.{ |
| 101744 | | .{ .src = .{ .mem, .imm8, .none } }, |
| 101745 | | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, |
| 101746 | | .{ .src = .{ .to_gpr, .imm8, .none } }, |
| 101747 | | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101748 | | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 101749 | | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101750 | | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 101751 | | }, |
| 101752 | | .dst_temps = .{ .{ .cc = .e }, .unused }, |
| 101753 | | .clobbers = .{ .eflags = true }, |
| 101754 | | .each = .{ .once = &.{ |
| 101755 | | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 101756 | | } }, |
| 101757 | | }, .{ |
| 101758 | | .src_constraints = .{ .{ .int = .word }, .{ .int = .word }, .any }, |
| 101759 | | .patterns = &.{ |
| 101760 | | .{ .src = .{ .mem, .imm16, .none } }, |
| 101761 | | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, |
| 101762 | | .{ .src = .{ .to_gpr, .imm16, .none } }, |
| 101763 | | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101764 | | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 101765 | | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101766 | | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 101767 | | }, |
| 101768 | | .dst_temps = .{ .{ .cc = .e }, .unused }, |
| 101769 | | .clobbers = .{ .eflags = true }, |
| 101770 | | .each = .{ .once = &.{ |
| 101771 | | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 101772 | | } }, |
| 101773 | | }, .{ |
| 101774 | | .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword }, .any }, |
| 101775 | | .patterns = &.{ |
| 101776 | | .{ .src = .{ .mem, .imm32, .none } }, |
| 101777 | | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 101778 | | .{ .src = .{ .to_gpr, .imm32, .none } }, |
| 101779 | | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101780 | | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 101781 | | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101782 | | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 101783 | | }, |
| 101784 | | .dst_temps = .{ .{ .cc = .e }, .unused }, |
| 101785 | | .clobbers = .{ .eflags = true }, |
| 101786 | | .each = .{ .once = &.{ |
| 101787 | | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| 101788 | | } }, |
| 101789 | | }, .{ |
| 101790 | | .required_features = .{ .@"64bit", null, null, null }, |
| 101791 | | .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any }, |
| 101792 | | .patterns = &.{ |
| 101793 | | .{ .src = .{ .mem, .simm32, .none } }, |
| 101794 | | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 101795 | | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| 101796 | | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101797 | | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 101798 | | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 101799 | | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 101800 | | }, |
| 101801 | | .dst_temps = .{ .{ .cc = .e }, .unused }, |
| 101802 | | .clobbers = .{ .eflags = true }, |
| 101803 | | .each = .{ .once = &.{ |
| 101804 | | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| 101805 | | } }, |
| 101806 | | }, .{ |
| 101807 | | .required_features = .{ .sse, .mmx, null, null }, |
| 101808 | | .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any }, |
| 101809 | | .patterns = &.{ |
| 101810 | | .{ .src = .{ .to_mut_mm, .mem, .none } }, |
| 101811 | | .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, |
| 101812 | | .{ .src = .{ .to_mut_mm, .to_mm, .none } }, |
| 101813 | | }, |
| 101814 | | .extra_temps = .{ |
| 101815 | | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 101816 | | .{ .kind = .{ .rc = .mmx } }, |
| 101817 | | .unused, |
| 101818 | | .unused, |
| 101819 | | .unused, |
| 101820 | | .unused, |
| 101821 | | .unused, |
| 101822 | | .unused, |
| 101823 | | .unused, |
| 101824 | | .unused, |
| 101825 | | .unused, |
| 101826 | | }, |
| 101827 | | .dst_temps = .{ .{ .cc = .z }, .unused }, |
| 101828 | | .clobbers = .{ .eflags = true }, |
| 101829 | | .each = .{ .once = &.{ |
| 101830 | | .{ ._, .p_, .xor, .tmp1q, .tmp1q, ._, ._ }, |
| 101831 | | .{ ._, .p_, .xor, .src0q, .src1q, ._, ._ }, |
| 101832 | | .{ ._, .p_b, .cmpeq, .tmp1q, .src0q, ._, ._ }, |
| 101833 | | .{ ._, .p_b, .movmsk, .tmp0d, .tmp1q, ._, ._ }, |
| 101424 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101425 | .each = .{ .once = &.{} }, |
| 101426 | }, .{ |
| 101427 | .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, |
| 101428 | .patterns = &.{ |
| 101429 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101430 | }, |
| 101431 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101432 | .clobbers = .{ .eflags = true }, |
| 101433 | .each = .{ .once = &.{ |
| 101434 | .{ ._, ._l, .sa, .dst0b, .uia(8, .src0, .sub_bit_size), ._, ._ }, |
| 101435 | .{ ._, ._r, .sa, .dst0b, .uia(8, .src0, .sub_bit_size), ._, ._ }, |
| 101436 | } }, |
| 101437 | }, .{ |
| 101438 | .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, |
| 101439 | .patterns = &.{ |
| 101440 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101441 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101442 | }, |
| 101443 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101444 | .clobbers = .{ .eflags = true }, |
| 101445 | .each = .{ .once = &.{ |
| 101446 | .{ ._, ._, .@"and", .dst0b, .ua(.src0, .add_umax), ._, ._ }, |
| 101447 | } }, |
| 101448 | }, .{ |
| 101449 | .src_constraints = .{ .{ .exact_int = 16 }, .any, .any }, |
| 101450 | .patterns = &.{ |
| 101451 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101452 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101453 | }, |
| 101454 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101455 | .each = .{ .once = &.{} }, |
| 101456 | }, .{ |
| 101457 | .required_features = .{ .fast_imm16, null, null, null }, |
| 101458 | .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, |
| 101459 | .patterns = &.{ |
| 101460 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101461 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101462 | }, |
| 101463 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101464 | .clobbers = .{ .eflags = true }, |
| 101465 | .each = .{ .once = &.{ |
| 101466 | .{ ._, ._, .@"and", .dst0w, .ua(.src0, .add_umax), ._, ._ }, |
| 101467 | } }, |
| 101468 | }, .{ |
| 101469 | .src_constraints = .{ .{ .exact_int = 32 }, .any, .any }, |
| 101470 | .patterns = &.{ |
| 101471 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101472 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101473 | }, |
| 101474 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101475 | .each = .{ .once = &.{} }, |
| 101476 | }, .{ |
| 101477 | .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, |
| 101478 | .patterns = &.{ |
| 101479 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101480 | }, |
| 101481 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101482 | .clobbers = .{ .eflags = true }, |
| 101483 | .each = .{ .once = &.{ |
| 101484 | .{ ._, ._l, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ }, |
| 101485 | .{ ._, ._r, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ }, |
| 101486 | } }, |
| 101487 | }, .{ |
| 101488 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, |
| 101489 | .patterns = &.{ |
| 101490 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101491 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101492 | }, |
| 101493 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101494 | .clobbers = .{ .eflags = true }, |
| 101495 | .each = .{ .once = &.{ |
| 101496 | .{ ._, ._, .@"and", .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 101497 | } }, |
| 101498 | }, .{ |
| 101499 | .required_features = .{ .@"64bit", null, null, null }, |
| 101500 | .src_constraints = .{ .{ .exact_int = 64 }, .any, .any }, |
| 101501 | .patterns = &.{ |
| 101502 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101503 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101504 | }, |
| 101505 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101506 | .each = .{ .once = &.{} }, |
| 101507 | }, .{ |
| 101508 | .required_features = .{ .@"64bit", null, null, null }, |
| 101509 | .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, |
| 101510 | .patterns = &.{ |
| 101511 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101512 | }, |
| 101513 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101514 | .clobbers = .{ .eflags = true }, |
| 101515 | .each = .{ .once = &.{ |
| 101516 | .{ ._, ._l, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ }, |
| 101517 | .{ ._, ._r, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ }, |
| 101518 | } }, |
| 101519 | }, .{ |
| 101520 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| 101521 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, |
| 101522 | .patterns = &.{ |
| 101523 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 101524 | }, |
| 101525 | .extra_temps = .{ |
| 101526 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 101527 | .unused, |
| 101528 | .unused, |
| 101529 | .unused, |
| 101530 | .unused, |
| 101531 | .unused, |
| 101532 | .unused, |
| 101533 | .unused, |
| 101534 | .unused, |
| 101535 | .unused, |
| 101536 | .unused, |
| 101537 | }, |
| 101538 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused }, |
| 101539 | .clobbers = .{ .eflags = true }, |
| 101540 | .each = .{ .once = &.{ |
| 101541 | .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size), ._, ._ }, |
| 101542 | .{ ._, ._, .bzhi, .dst0q, .src0q, .tmp0q, ._ }, |
| 101543 | } }, |
| 101544 | }, .{ |
| 101545 | .required_features = .{ .@"64bit", null, null, null }, |
| 101546 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, |
| 101547 | .patterns = &.{ |
| 101548 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101549 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 101550 | }, |
| 101551 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101552 | .clobbers = .{ .eflags = true }, |
| 101553 | .each = .{ .once = &.{ |
| 101554 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ }, |
| 101555 | .{ ._, ._, .@"and", .dst0q, .tmp0q, ._, ._ }, |
| 101556 | } }, |
| 101557 | }, .{ |
| 101558 | .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 101559 | .patterns = &.{ |
| 101560 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101561 | }, |
| 101562 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101563 | .each = .{ .once = &.{} }, |
| 101564 | }, .{ |
| 101565 | .required_features = .{ .@"64bit", null, null, null }, |
| 101566 | .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 101567 | .patterns = &.{ |
| 101568 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101569 | }, |
| 101570 | .extra_temps = .{ |
| 101571 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 101572 | .unused, |
| 101573 | .unused, |
| 101574 | .unused, |
| 101575 | .unused, |
| 101576 | .unused, |
| 101577 | .unused, |
| 101578 | .unused, |
| 101579 | .unused, |
| 101580 | .unused, |
| 101581 | .unused, |
| 101582 | }, |
| 101583 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101584 | .clobbers = .{ .eflags = true }, |
| 101585 | .each = .{ .once = &.{ |
| 101586 | .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ }, |
| 101587 | .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 101588 | .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 101589 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ }, |
| 101590 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 101591 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ }, |
| 101592 | } }, |
| 101593 | }, .{ |
| 101594 | .required_features = .{ .@"64bit", null, null, null }, |
| 101595 | .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 101596 | .patterns = &.{ |
| 101597 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101598 | }, |
| 101599 | .extra_temps = .{ |
| 101600 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 101601 | .unused, |
| 101602 | .unused, |
| 101603 | .unused, |
| 101604 | .unused, |
| 101605 | .unused, |
| 101606 | .unused, |
| 101607 | .unused, |
| 101608 | .unused, |
| 101609 | .unused, |
| 101610 | .unused, |
| 101611 | }, |
| 101612 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101613 | .clobbers = .{ .eflags = true }, |
| 101614 | .each = .{ .once = &.{ |
| 101615 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ }, |
| 101616 | .{ ._, ._, .@"and", .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ }, |
| 101617 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ }, |
| 101618 | } }, |
| 101619 | }, .{ |
| 101620 | .required_features = .{ .@"64bit", null, null, null }, |
| 101621 | .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 101622 | .patterns = &.{ |
| 101623 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101624 | }, |
| 101625 | .extra_temps = .{ |
| 101626 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 101627 | .unused, |
| 101628 | .unused, |
| 101629 | .unused, |
| 101630 | .unused, |
| 101631 | .unused, |
| 101632 | .unused, |
| 101633 | .unused, |
| 101634 | .unused, |
| 101635 | .unused, |
| 101636 | .unused, |
| 101637 | }, |
| 101638 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101639 | .clobbers = .{ .eflags = true }, |
| 101640 | .each = .{ .once = &.{ |
| 101641 | .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 101642 | .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 101643 | .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 101644 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ }, |
| 101645 | } }, |
| 101646 | }, .{ |
| 101647 | .required_features = .{ .@"64bit", null, null, null }, |
| 101648 | .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 101649 | .patterns = &.{ |
| 101650 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101651 | }, |
| 101652 | .extra_temps = .{ |
| 101653 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 101654 | .unused, |
| 101655 | .unused, |
| 101656 | .unused, |
| 101657 | .unused, |
| 101658 | .unused, |
| 101659 | .unused, |
| 101660 | .unused, |
| 101661 | .unused, |
| 101662 | .unused, |
| 101663 | .unused, |
| 101664 | }, |
| 101665 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101666 | .clobbers = .{ .eflags = true }, |
| 101667 | .each = .{ .once = &.{ |
| 101668 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ }, |
| 101669 | .{ ._, ._, .@"and", .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ }, |
| 101670 | } }, |
| 101671 | }, .{ |
| 101672 | .required_features = .{ .sse, null, null, null }, |
| 101673 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .xword, .is = 8 } }, .any, .any }, |
| 101674 | .patterns = &.{ |
| 101675 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101676 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 101677 | }, |
| 101678 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101679 | .each = .{ .once = &.{} }, |
| 101680 | }, .{ |
| 101681 | .required_features = .{ .avx, null, null, null }, |
| 101682 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .yword, .is = 8 } }, .any, .any }, |
| 101683 | .patterns = &.{ |
| 101684 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 101685 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 101686 | }, |
| 101687 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101688 | .each = .{ .once = &.{} }, |
| 101689 | }, .{ |
| 101690 | .required_features = .{ .avx, null, null, null }, |
| 101691 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 101692 | .patterns = &.{ |
| 101693 | .{ .src = .{ .to_sse, .none, .none } }, |
| 101694 | }, |
| 101695 | .extra_temps = .{ |
| 101696 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 101697 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 101698 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 101699 | .unused, |
| 101700 | .unused, |
| 101701 | .unused, |
| 101702 | .unused, |
| 101703 | .unused, |
| 101704 | .unused, |
| 101705 | .unused, |
| 101706 | .unused, |
| 101707 | }, |
| 101708 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 101709 | .each = .{ .once = &.{ |
| 101710 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 101711 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 101712 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| 101713 | .{ ._, .vp_b, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ }, |
| 101714 | .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ }, |
| 101715 | } }, |
| 101716 | }, .{ |
| 101717 | .required_features = .{ .avx, null, null, null }, |
| 101718 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 101719 | .patterns = &.{ |
| 101720 | .{ .src = .{ .to_sse, .none, .none } }, |
| 101721 | }, |
| 101722 | .extra_temps = .{ |
| 101723 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 101724 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 101725 | .unused, |
| 101726 | .unused, |
| 101727 | .unused, |
| 101728 | .unused, |
| 101729 | .unused, |
| 101730 | .unused, |
| 101731 | .unused, |
| 101732 | .unused, |
| 101733 | .unused, |
| 101734 | }, |
| 101735 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 101736 | .each = .{ .once = &.{ |
| 101737 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 101738 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 101739 | } }, |
| 101740 | }, .{ |
| 101741 | .required_features = .{ .sse2, null, null, null }, |
| 101742 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 101743 | .patterns = &.{ |
| 101744 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 101745 | }, |
| 101746 | .extra_temps = .{ |
| 101747 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 101748 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 101749 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 101750 | .unused, |
| 101751 | .unused, |
| 101752 | .unused, |
| 101753 | .unused, |
| 101754 | .unused, |
| 101755 | .unused, |
| 101756 | .unused, |
| 101757 | .unused, |
| 101758 | }, |
| 101759 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101760 | .each = .{ .once = &.{ |
| 101761 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 101762 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 101763 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| 101764 | .{ ._, .p_b, .add, .dst0x, .lea(.tmp0x), ._, ._ }, |
| 101765 | .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, |
| 101766 | } }, |
| 101767 | }, .{ |
| 101768 | .required_features = .{ .sse2, null, null, null }, |
| 101769 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 101770 | .patterns = &.{ |
| 101771 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 101772 | }, |
| 101773 | .extra_temps = .{ |
| 101774 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 101775 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 101776 | .unused, |
| 101777 | .unused, |
| 101778 | .unused, |
| 101779 | .unused, |
| 101780 | .unused, |
| 101781 | .unused, |
| 101782 | .unused, |
| 101783 | .unused, |
| 101784 | .unused, |
| 101785 | }, |
| 101786 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101787 | .each = .{ .once = &.{ |
| 101788 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 101789 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 101790 | } }, |
| 101791 | }, .{ |
| 101792 | .required_features = .{ .sse, null, null, null }, |
| 101793 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 101794 | .patterns = &.{ |
| 101795 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 101796 | }, |
| 101797 | .extra_temps = .{ |
| 101798 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 101799 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 101800 | .unused, |
| 101801 | .unused, |
| 101802 | .unused, |
| 101803 | .unused, |
| 101804 | .unused, |
| 101805 | .unused, |
| 101806 | .unused, |
| 101807 | .unused, |
| 101808 | .unused, |
| 101809 | }, |
| 101810 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101811 | .each = .{ .once = &.{ |
| 101812 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 101813 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 101814 | } }, |
| 101815 | }, .{ |
| 101816 | .required_features = .{ .avx2, null, null, null }, |
| 101817 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| 101818 | .patterns = &.{ |
| 101819 | .{ .src = .{ .to_sse, .none, .none } }, |
| 101820 | }, |
| 101821 | .extra_temps = .{ |
| 101822 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 101823 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 101824 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 101825 | .unused, |
| 101826 | .unused, |
| 101827 | .unused, |
| 101828 | .unused, |
| 101829 | .unused, |
| 101830 | .unused, |
| 101831 | .unused, |
| 101832 | .unused, |
| 101833 | }, |
| 101834 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 101835 | .each = .{ .once = &.{ |
| 101836 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 101837 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 101838 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| 101839 | .{ ._, .vp_b, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ }, |
| 101840 | .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ }, |
| 101841 | } }, |
| 101842 | }, .{ |
| 101843 | .required_features = .{ .avx2, null, null, null }, |
| 101844 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| 101845 | .patterns = &.{ |
| 101846 | .{ .src = .{ .to_sse, .none, .none } }, |
| 101847 | }, |
| 101848 | .extra_temps = .{ |
| 101849 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 101850 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 101851 | .unused, |
| 101852 | .unused, |
| 101853 | .unused, |
| 101854 | .unused, |
| 101855 | .unused, |
| 101856 | .unused, |
| 101857 | .unused, |
| 101858 | .unused, |
| 101859 | .unused, |
| 101860 | }, |
| 101861 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 101862 | .each = .{ .once = &.{ |
| 101863 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 101864 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 101865 | } }, |
| 101866 | }, .{ |
| 101867 | .src_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any, .any }, |
| 101868 | .patterns = &.{ |
| 101869 | .{ .src = .{ .to_mut_mem, .none, .none } }, |
| 101870 | }, |
| 101871 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 101872 | .each = .{ .once = &.{} }, |
| 101873 | }, .{ |
| 101874 | .required_features = .{ .avx2, null, null, null }, |
| 101875 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| 101876 | .patterns = &.{ |
| 101877 | .{ .src = .{ .to_mem, .none, .none } }, |
| 101878 | }, |
| 101879 | .extra_temps = .{ |
| 101880 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 101881 | .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, |
| 101882 | .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, |
| 101883 | .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, |
| 101884 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 101885 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 101886 | .unused, |
| 101887 | .unused, |
| 101888 | .unused, |
| 101889 | .unused, |
| 101890 | .unused, |
| 101891 | }, |
| 101892 | .dst_temps = .{ .mem, .unused }, |
| 101893 | .clobbers = .{ .eflags = true }, |
| 101894 | .each = .{ .once = &.{ |
| 101895 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| 101896 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| 101897 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| 101898 | .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ }, |
| 101899 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 101900 | .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| 101901 | .{ ._, .vp_b, .add, .tmp3y, .tmp3y, .tmp2y, ._ }, |
| 101902 | .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ }, |
| 101903 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ }, |
| 101904 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 101905 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 101906 | } }, |
| 101907 | }, .{ |
| 101908 | .required_features = .{ .avx2, null, null, null }, |
| 101909 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, |
| 101910 | .patterns = &.{ |
| 101911 | .{ .src = .{ .to_mem, .none, .none } }, |
| 101912 | }, |
| 101913 | .extra_temps = .{ |
| 101914 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 101915 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| 101916 | .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, |
| 101917 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 101918 | .unused, |
| 101919 | .unused, |
| 101920 | .unused, |
| 101921 | .unused, |
| 101922 | .unused, |
| 101923 | .unused, |
| 101924 | .unused, |
| 101925 | }, |
| 101926 | .dst_temps = .{ .mem, .unused }, |
| 101927 | .clobbers = .{ .eflags = true }, |
| 101928 | .each = .{ .once = &.{ |
| 101929 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 101930 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| 101931 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 101932 | .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| 101933 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, |
| 101934 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 101935 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 101936 | } }, |
| 101937 | }, .{ |
| 101938 | .required_features = .{ .avx, null, null, null }, |
| 101939 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 101940 | .patterns = &.{ |
| 101941 | .{ .src = .{ .to_mem, .none, .none } }, |
| 101942 | }, |
| 101943 | .extra_temps = .{ |
| 101944 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 101945 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| 101946 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| 101947 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| 101948 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 101949 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 101950 | .unused, |
| 101951 | .unused, |
| 101952 | .unused, |
| 101953 | .unused, |
| 101954 | .unused, |
| 101955 | }, |
| 101956 | .dst_temps = .{ .mem, .unused }, |
| 101957 | .clobbers = .{ .eflags = true }, |
| 101958 | .each = .{ .once = &.{ |
| 101959 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| 101960 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 101961 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| 101962 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| 101963 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 101964 | .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| 101965 | .{ ._, .vp_b, .add, .tmp3x, .tmp3x, .tmp2x, ._ }, |
| 101966 | .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ }, |
| 101967 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| 101968 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 101969 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 101970 | } }, |
| 101971 | }, .{ |
| 101972 | .required_features = .{ .avx, null, null, null }, |
| 101973 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 101974 | .patterns = &.{ |
| 101975 | .{ .src = .{ .to_mem, .none, .none } }, |
| 101976 | }, |
| 101977 | .extra_temps = .{ |
| 101978 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 101979 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 101980 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 101981 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 101982 | .unused, |
| 101983 | .unused, |
| 101984 | .unused, |
| 101985 | .unused, |
| 101986 | .unused, |
| 101987 | .unused, |
| 101988 | .unused, |
| 101989 | }, |
| 101990 | .dst_temps = .{ .mem, .unused }, |
| 101991 | .clobbers = .{ .eflags = true }, |
| 101992 | .each = .{ .once = &.{ |
| 101993 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 101994 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 101995 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 101996 | .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| 101997 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 101998 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 101999 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102000 | } }, |
| 102001 | }, .{ |
| 102002 | .required_features = .{ .sse2, null, null, null }, |
| 102003 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 102004 | .patterns = &.{ |
| 102005 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102006 | }, |
| 102007 | .extra_temps = .{ |
| 102008 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102009 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| 102010 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| 102011 | .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, |
| 102012 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 102013 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 102014 | .unused, |
| 102015 | .unused, |
| 102016 | .unused, |
| 102017 | .unused, |
| 102018 | .unused, |
| 102019 | }, |
| 102020 | .dst_temps = .{ .mem, .unused }, |
| 102021 | .clobbers = .{ .eflags = true }, |
| 102022 | .each = .{ .once = &.{ |
| 102023 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| 102024 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 102025 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| 102026 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| 102027 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102028 | .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ }, |
| 102029 | .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102030 | .{ ._, .p_b, .add, .tmp3x, .tmp2x, ._, ._ }, |
| 102031 | .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ }, |
| 102032 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| 102033 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 102034 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102035 | } }, |
| 102036 | }, .{ |
| 102037 | .required_features = .{ .sse2, null, null, null }, |
| 102038 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 102039 | .patterns = &.{ |
| 102040 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102041 | }, |
| 102042 | .extra_temps = .{ |
| 102043 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102044 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 102045 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 102046 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 102047 | .unused, |
| 102048 | .unused, |
| 102049 | .unused, |
| 102050 | .unused, |
| 102051 | .unused, |
| 102052 | .unused, |
| 102053 | .unused, |
| 102054 | }, |
| 102055 | .dst_temps = .{ .mem, .unused }, |
| 102056 | .clobbers = .{ .eflags = true }, |
| 102057 | .each = .{ .once = &.{ |
| 102058 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 102059 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 102060 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102061 | .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, |
| 102062 | .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102063 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 102064 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 102065 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102066 | } }, |
| 102067 | }, .{ |
| 102068 | .required_features = .{ .sse, null, null, null }, |
| 102069 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, |
| 102070 | .patterns = &.{ |
| 102071 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102072 | }, |
| 102073 | .extra_temps = .{ |
| 102074 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102075 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 102076 | .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, |
| 102077 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 102078 | .unused, |
| 102079 | .unused, |
| 102080 | .unused, |
| 102081 | .unused, |
| 102082 | .unused, |
| 102083 | .unused, |
| 102084 | .unused, |
| 102085 | }, |
| 102086 | .dst_temps = .{ .mem, .unused }, |
| 102087 | .clobbers = .{ .eflags = true }, |
| 102088 | .each = .{ .once = &.{ |
| 102089 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 102090 | .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 102091 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102092 | .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, |
| 102093 | .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102094 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 102095 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 102096 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102097 | } }, |
| 102098 | }, .{ |
| 102099 | .required_features = .{ .slow_incdec, null, null, null }, |
| 102100 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| 102101 | .patterns = &.{ |
| 102102 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102103 | }, |
| 102104 | .extra_temps = .{ |
| 102105 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102106 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 102107 | .unused, |
| 102108 | .unused, |
| 102109 | .unused, |
| 102110 | .unused, |
| 102111 | .unused, |
| 102112 | .unused, |
| 102113 | .unused, |
| 102114 | .unused, |
| 102115 | .unused, |
| 102116 | }, |
| 102117 | .dst_temps = .{ .mem, .unused }, |
| 102118 | .clobbers = .{ .eflags = true }, |
| 102119 | .each = .{ .once = &.{ |
| 102120 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102121 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102122 | .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 102123 | .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 102124 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 102125 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 102126 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102127 | } }, |
| 102128 | }, .{ |
| 102129 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| 102130 | .patterns = &.{ |
| 102131 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102132 | }, |
| 102133 | .extra_temps = .{ |
| 102134 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102135 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 102136 | .unused, |
| 102137 | .unused, |
| 102138 | .unused, |
| 102139 | .unused, |
| 102140 | .unused, |
| 102141 | .unused, |
| 102142 | .unused, |
| 102143 | .unused, |
| 102144 | .unused, |
| 102145 | }, |
| 102146 | .dst_temps = .{ .mem, .unused }, |
| 102147 | .clobbers = .{ .eflags = true }, |
| 102148 | .each = .{ .once = &.{ |
| 102149 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102150 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102151 | .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 102152 | .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, |
| 102153 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 102154 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 102155 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 102156 | } }, |
| 102157 | }, .{ |
| 102158 | .required_features = .{ .slow_incdec, null, null, null }, |
| 102159 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| 102160 | .patterns = &.{ |
| 102161 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102162 | }, |
| 102163 | .extra_temps = .{ |
| 102164 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102165 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 102166 | .unused, |
| 102167 | .unused, |
| 102168 | .unused, |
| 102169 | .unused, |
| 102170 | .unused, |
| 102171 | .unused, |
| 102172 | .unused, |
| 102173 | .unused, |
| 102174 | .unused, |
| 102175 | }, |
| 102176 | .dst_temps = .{ .mem, .unused }, |
| 102177 | .clobbers = .{ .eflags = true }, |
| 102178 | .each = .{ .once = &.{ |
| 102179 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102180 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102181 | .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, |
| 102182 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 102183 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 102184 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102185 | } }, |
| 102186 | }, .{ |
| 102187 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, |
| 102188 | .patterns = &.{ |
| 102189 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102190 | }, |
| 102191 | .extra_temps = .{ |
| 102192 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102193 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 102194 | .unused, |
| 102195 | .unused, |
| 102196 | .unused, |
| 102197 | .unused, |
| 102198 | .unused, |
| 102199 | .unused, |
| 102200 | .unused, |
| 102201 | .unused, |
| 102202 | .unused, |
| 102203 | }, |
| 102204 | .dst_temps = .{ .mem, .unused }, |
| 102205 | .clobbers = .{ .eflags = true }, |
| 102206 | .each = .{ .once = &.{ |
| 102207 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102208 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102209 | .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, |
| 102210 | .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, |
| 102211 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 102212 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 102213 | } }, |
| 102214 | }, .{ |
| 102215 | .required_features = .{ .sse, null, null, null }, |
| 102216 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .xword, .is = 16 } }, .any, .any }, |
| 102217 | .patterns = &.{ |
| 102218 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 102219 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 102220 | }, |
| 102221 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 102222 | .each = .{ .once = &.{} }, |
| 102223 | }, .{ |
| 102224 | .required_features = .{ .avx, null, null, null }, |
| 102225 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .yword, .is = 16 } }, .any, .any }, |
| 102226 | .patterns = &.{ |
| 102227 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 102228 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 102229 | }, |
| 102230 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 102231 | .each = .{ .once = &.{} }, |
| 102232 | }, .{ |
| 102233 | .required_features = .{ .avx, null, null, null }, |
| 102234 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 102235 | .patterns = &.{ |
| 102236 | .{ .src = .{ .to_sse, .none, .none } }, |
| 102237 | }, |
| 102238 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 102239 | .each = .{ .once = &.{ |
| 102240 | .{ ._, .vp_w, .sll, .dst0x, .src0x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 102241 | .{ ._, .vp_w, .sra, .dst0x, .dst0x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 102242 | } }, |
| 102243 | }, .{ |
| 102244 | .required_features = .{ .avx, null, null, null }, |
| 102245 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 102246 | .patterns = &.{ |
| 102247 | .{ .src = .{ .to_sse, .none, .none } }, |
| 102248 | }, |
| 102249 | .extra_temps = .{ |
| 102250 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 102251 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 102252 | .unused, |
| 102253 | .unused, |
| 102254 | .unused, |
| 102255 | .unused, |
| 102256 | .unused, |
| 102257 | .unused, |
| 102258 | .unused, |
| 102259 | .unused, |
| 102260 | .unused, |
| 102261 | }, |
| 102262 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 102263 | .each = .{ .once = &.{ |
| 102264 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 102265 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 102266 | } }, |
| 102267 | }, .{ |
| 102268 | .required_features = .{ .sse2, null, null, null }, |
| 102269 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 102270 | .patterns = &.{ |
| 102271 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 102272 | }, |
| 102273 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 102274 | .each = .{ .once = &.{ |
| 102275 | .{ ._, .p_w, .sll, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| 102276 | .{ ._, .p_w, .sra, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| 102277 | } }, |
| 102278 | }, .{ |
| 102279 | .required_features = .{ .sse2, null, null, null }, |
| 102280 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 102281 | .patterns = &.{ |
| 102282 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 102283 | }, |
| 102284 | .extra_temps = .{ |
| 102285 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 102286 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 102287 | .unused, |
| 102288 | .unused, |
| 102289 | .unused, |
| 102290 | .unused, |
| 102291 | .unused, |
| 102292 | .unused, |
| 102293 | .unused, |
| 102294 | .unused, |
| 102295 | .unused, |
| 102296 | }, |
| 102297 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 102298 | .each = .{ .once = &.{ |
| 102299 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 102300 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 102301 | } }, |
| 102302 | }, .{ |
| 102303 | .required_features = .{ .sse, null, null, null }, |
| 102304 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 102305 | .patterns = &.{ |
| 102306 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 102307 | }, |
| 102308 | .extra_temps = .{ |
| 102309 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 102310 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 102311 | .unused, |
| 102312 | .unused, |
| 102313 | .unused, |
| 102314 | .unused, |
| 102315 | .unused, |
| 102316 | .unused, |
| 102317 | .unused, |
| 102318 | .unused, |
| 102319 | .unused, |
| 102320 | }, |
| 102321 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 102322 | .each = .{ .once = &.{ |
| 102323 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 102324 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 102325 | } }, |
| 102326 | }, .{ |
| 102327 | .required_features = .{ .avx2, null, null, null }, |
| 102328 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| 102329 | .patterns = &.{ |
| 102330 | .{ .src = .{ .to_sse, .none, .none } }, |
| 102331 | }, |
| 102332 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 102333 | .each = .{ .once = &.{ |
| 102334 | .{ ._, .vp_w, .sll, .dst0y, .src0y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 102335 | .{ ._, .vp_w, .sra, .dst0y, .dst0y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 102336 | } }, |
| 102337 | }, .{ |
| 102338 | .required_features = .{ .avx2, null, null, null }, |
| 102339 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| 102340 | .patterns = &.{ |
| 102341 | .{ .src = .{ .to_sse, .none, .none } }, |
| 102342 | }, |
| 102343 | .extra_temps = .{ |
| 102344 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 102345 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 102346 | .unused, |
| 102347 | .unused, |
| 102348 | .unused, |
| 102349 | .unused, |
| 102350 | .unused, |
| 102351 | .unused, |
| 102352 | .unused, |
| 102353 | .unused, |
| 102354 | .unused, |
| 102355 | }, |
| 102356 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 102357 | .each = .{ .once = &.{ |
| 102358 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 102359 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 102360 | } }, |
| 102361 | }, .{ |
| 102362 | .src_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any, .any }, |
| 102363 | .patterns = &.{ |
| 102364 | .{ .src = .{ .to_mut_mem, .none, .none } }, |
| 102365 | }, |
| 102366 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 102367 | .each = .{ .once = &.{} }, |
| 102368 | }, .{ |
| 102369 | .required_features = .{ .avx2, null, null, null }, |
| 102370 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| 102371 | .patterns = &.{ |
| 102372 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102373 | }, |
| 102374 | .extra_temps = .{ |
| 102375 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102376 | .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, |
| 102377 | .unused, |
| 102378 | .unused, |
| 102379 | .unused, |
| 102380 | .unused, |
| 102381 | .unused, |
| 102382 | .unused, |
| 102383 | .unused, |
| 102384 | .unused, |
| 102385 | .unused, |
| 102386 | }, |
| 102387 | .dst_temps = .{ .mem, .unused }, |
| 102388 | .clobbers = .{ .eflags = true }, |
| 102389 | .each = .{ .once = &.{ |
| 102390 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102391 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102392 | .{ ._, .vp_w, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 102393 | .{ ._, .vp_w, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 102394 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| 102395 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 102396 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102397 | } }, |
| 102398 | }, .{ |
| 102399 | .required_features = .{ .avx2, null, null, null }, |
| 102400 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, |
| 102401 | .patterns = &.{ |
| 102402 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102403 | }, |
| 102404 | .extra_temps = .{ |
| 102405 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102406 | .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } }, |
| 102407 | .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } }, |
| 102408 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 102409 | .unused, |
| 102410 | .unused, |
| 102411 | .unused, |
| 102412 | .unused, |
| 102413 | .unused, |
| 102414 | .unused, |
| 102415 | .unused, |
| 102416 | }, |
| 102417 | .dst_temps = .{ .mem, .unused }, |
| 102418 | .clobbers = .{ .eflags = true }, |
| 102419 | .each = .{ .once = &.{ |
| 102420 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 102421 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| 102422 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102423 | .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| 102424 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, |
| 102425 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 102426 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102427 | } }, |
| 102428 | }, .{ |
| 102429 | .required_features = .{ .avx, null, null, null }, |
| 102430 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 102431 | .patterns = &.{ |
| 102432 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102433 | }, |
| 102434 | .extra_temps = .{ |
| 102435 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102436 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, |
| 102437 | .unused, |
| 102438 | .unused, |
| 102439 | .unused, |
| 102440 | .unused, |
| 102441 | .unused, |
| 102442 | .unused, |
| 102443 | .unused, |
| 102444 | .unused, |
| 102445 | .unused, |
| 102446 | }, |
| 102447 | .dst_temps = .{ .mem, .unused }, |
| 102448 | .clobbers = .{ .eflags = true }, |
| 102449 | .each = .{ .once = &.{ |
| 102450 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102451 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102452 | .{ ._, .vp_w, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 102453 | .{ ._, .vp_w, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, |
| 102454 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 102455 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 102456 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102457 | } }, |
| 102458 | }, .{ |
| 102459 | .required_features = .{ .avx, null, null, null }, |
| 102460 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 102461 | .patterns = &.{ |
| 102462 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102463 | }, |
| 102464 | .extra_temps = .{ |
| 102465 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102466 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| 102467 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| 102468 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 102469 | .unused, |
| 102470 | .unused, |
| 102471 | .unused, |
| 102472 | .unused, |
| 102473 | .unused, |
| 102474 | .unused, |
| 102475 | .unused, |
| 102476 | }, |
| 102477 | .dst_temps = .{ .mem, .unused }, |
| 102478 | .clobbers = .{ .eflags = true }, |
| 102479 | .each = .{ .once = &.{ |
| 102480 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 102481 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 102482 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102483 | .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| 102484 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 102485 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 102486 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102487 | } }, |
| 102488 | }, .{ |
| 102489 | .required_features = .{ .sse2, null, null, null }, |
| 102490 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 102491 | .patterns = &.{ |
| 102492 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102493 | }, |
| 102494 | .extra_temps = .{ |
| 102495 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102496 | .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, |
| 102497 | .unused, |
| 102498 | .unused, |
| 102499 | .unused, |
| 102500 | .unused, |
| 102501 | .unused, |
| 102502 | .unused, |
| 102503 | .unused, |
| 102504 | .unused, |
| 102505 | .unused, |
| 102506 | }, |
| 102507 | .dst_temps = .{ .mem, .unused }, |
| 102508 | .clobbers = .{ .eflags = true }, |
| 102509 | .each = .{ .once = &.{ |
| 102510 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102511 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102512 | .{ ._, .p_w, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| 102513 | .{ ._, .p_w, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, |
| 102514 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 102515 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 102516 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102517 | } }, |
| 102518 | }, .{ |
| 102519 | .required_features = .{ .sse2, null, null, null }, |
| 102520 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 102521 | .patterns = &.{ |
| 102522 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102523 | }, |
| 102524 | .extra_temps = .{ |
| 102525 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102526 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| 102527 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| 102528 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 102529 | .unused, |
| 102530 | .unused, |
| 102531 | .unused, |
| 102532 | .unused, |
| 102533 | .unused, |
| 102534 | .unused, |
| 102535 | .unused, |
| 102536 | }, |
| 102537 | .dst_temps = .{ .mem, .unused }, |
| 102538 | .clobbers = .{ .eflags = true }, |
| 102539 | .each = .{ .once = &.{ |
| 102540 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 102541 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 102542 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102543 | .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, |
| 102544 | .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102545 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 102546 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 102547 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102548 | } }, |
| 102549 | }, .{ |
| 102550 | .required_features = .{ .sse, null, null, null }, |
| 102551 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, |
| 102552 | .patterns = &.{ |
| 102553 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102554 | }, |
| 102555 | .extra_temps = .{ |
| 102556 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102557 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| 102558 | .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, |
| 102559 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 102560 | .unused, |
| 102561 | .unused, |
| 102562 | .unused, |
| 102563 | .unused, |
| 102564 | .unused, |
| 102565 | .unused, |
| 102566 | .unused, |
| 102567 | }, |
| 102568 | .dst_temps = .{ .mem, .unused }, |
| 102569 | .clobbers = .{ .eflags = true }, |
| 102570 | .each = .{ .once = &.{ |
| 102571 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 102572 | .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 102573 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102574 | .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, |
| 102575 | .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102576 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 102577 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 102578 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102579 | } }, |
| 102580 | }, .{ |
| 102581 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| 102582 | .patterns = &.{ |
| 102583 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102584 | }, |
| 102585 | .extra_temps = .{ |
| 102586 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102587 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 102588 | .unused, |
| 102589 | .unused, |
| 102590 | .unused, |
| 102591 | .unused, |
| 102592 | .unused, |
| 102593 | .unused, |
| 102594 | .unused, |
| 102595 | .unused, |
| 102596 | .unused, |
| 102597 | }, |
| 102598 | .dst_temps = .{ .mem, .unused }, |
| 102599 | .clobbers = .{ .eflags = true }, |
| 102600 | .each = .{ .once = &.{ |
| 102601 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102602 | .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102603 | .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 102604 | .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 102605 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| 102606 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 102607 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102608 | } }, |
| 102609 | }, .{ |
| 102610 | .required_features = .{ .fast_imm16, null, null, null }, |
| 102611 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| 102612 | .patterns = &.{ |
| 102613 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102614 | }, |
| 102615 | .extra_temps = .{ |
| 102616 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102617 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 102618 | .unused, |
| 102619 | .unused, |
| 102620 | .unused, |
| 102621 | .unused, |
| 102622 | .unused, |
| 102623 | .unused, |
| 102624 | .unused, |
| 102625 | .unused, |
| 102626 | .unused, |
| 102627 | }, |
| 102628 | .dst_temps = .{ .mem, .unused }, |
| 102629 | .clobbers = .{ .eflags = true }, |
| 102630 | .each = .{ .once = &.{ |
| 102631 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102632 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102633 | .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ }, |
| 102634 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| 102635 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 102636 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102637 | } }, |
| 102638 | }, .{ |
| 102639 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, |
| 102640 | .patterns = &.{ |
| 102641 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102642 | }, |
| 102643 | .extra_temps = .{ |
| 102644 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102645 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 102646 | .unused, |
| 102647 | .unused, |
| 102648 | .unused, |
| 102649 | .unused, |
| 102650 | .unused, |
| 102651 | .unused, |
| 102652 | .unused, |
| 102653 | .unused, |
| 102654 | .unused, |
| 102655 | }, |
| 102656 | .dst_temps = .{ .mem, .unused }, |
| 102657 | .clobbers = .{ .eflags = true }, |
| 102658 | .each = .{ .once = &.{ |
| 102659 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102660 | .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102661 | .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, |
| 102662 | .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, |
| 102663 | .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, |
| 102664 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102665 | } }, |
| 102666 | }, .{ |
| 102667 | .required_features = .{ .sse, null, null, null }, |
| 102668 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .xword, .is = 32 } }, .any, .any }, |
| 102669 | .patterns = &.{ |
| 102670 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 102671 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 102672 | }, |
| 102673 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 102674 | .each = .{ .once = &.{} }, |
| 102675 | }, .{ |
| 102676 | .required_features = .{ .avx, null, null, null }, |
| 102677 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .yword, .is = 32 } }, .any, .any }, |
| 102678 | .patterns = &.{ |
| 102679 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 102680 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 102681 | }, |
| 102682 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 102683 | .each = .{ .once = &.{} }, |
| 102684 | }, .{ |
| 102685 | .required_features = .{ .avx, null, null, null }, |
| 102686 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 102687 | .patterns = &.{ |
| 102688 | .{ .src = .{ .to_sse, .none, .none } }, |
| 102689 | }, |
| 102690 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 102691 | .each = .{ .once = &.{ |
| 102692 | .{ ._, .vp_d, .sll, .dst0x, .src0x, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 102693 | .{ ._, .vp_d, .sra, .dst0x, .dst0x, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 102694 | } }, |
| 102695 | }, .{ |
| 102696 | .required_features = .{ .avx, null, null, null }, |
| 102697 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 102698 | .patterns = &.{ |
| 102699 | .{ .src = .{ .to_sse, .none, .none } }, |
| 102700 | }, |
| 102701 | .extra_temps = .{ |
| 102702 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 102703 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 102704 | .unused, |
| 102705 | .unused, |
| 102706 | .unused, |
| 102707 | .unused, |
| 102708 | .unused, |
| 102709 | .unused, |
| 102710 | .unused, |
| 102711 | .unused, |
| 102712 | .unused, |
| 102713 | }, |
| 102714 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 102715 | .each = .{ .once = &.{ |
| 102716 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 102717 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 102718 | } }, |
| 102719 | }, .{ |
| 102720 | .required_features = .{ .sse2, null, null, null }, |
| 102721 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 102722 | .patterns = &.{ |
| 102723 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 102724 | }, |
| 102725 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 102726 | .each = .{ .once = &.{ |
| 102727 | .{ ._, .p_d, .sll, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 102728 | .{ ._, .p_d, .sra, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 102729 | } }, |
| 102730 | }, .{ |
| 102731 | .required_features = .{ .sse2, null, null, null }, |
| 102732 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 102733 | .patterns = &.{ |
| 102734 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 102735 | }, |
| 102736 | .extra_temps = .{ |
| 102737 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 102738 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 102739 | .unused, |
| 102740 | .unused, |
| 102741 | .unused, |
| 102742 | .unused, |
| 102743 | .unused, |
| 102744 | .unused, |
| 102745 | .unused, |
| 102746 | .unused, |
| 102747 | .unused, |
| 102748 | }, |
| 102749 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 102750 | .each = .{ .once = &.{ |
| 102751 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 102752 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 102753 | } }, |
| 102754 | }, .{ |
| 102755 | .required_features = .{ .sse, null, null, null }, |
| 102756 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 102757 | .patterns = &.{ |
| 102758 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 102759 | }, |
| 102760 | .extra_temps = .{ |
| 102761 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 102762 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 102763 | .unused, |
| 102764 | .unused, |
| 102765 | .unused, |
| 102766 | .unused, |
| 102767 | .unused, |
| 102768 | .unused, |
| 102769 | .unused, |
| 102770 | .unused, |
| 102771 | .unused, |
| 102772 | }, |
| 102773 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 102774 | .each = .{ .once = &.{ |
| 102775 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 102776 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 102777 | } }, |
| 102778 | }, .{ |
| 102779 | .required_features = .{ .avx2, null, null, null }, |
| 102780 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| 102781 | .patterns = &.{ |
| 102782 | .{ .src = .{ .to_sse, .none, .none } }, |
| 102783 | }, |
| 102784 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 102785 | .each = .{ .once = &.{ |
| 102786 | .{ ._, .vp_d, .sll, .dst0y, .src0y, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 102787 | .{ ._, .vp_d, .sra, .dst0y, .dst0y, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 102788 | } }, |
| 102789 | }, .{ |
| 102790 | .required_features = .{ .avx2, null, null, null }, |
| 102791 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| 102792 | .patterns = &.{ |
| 102793 | .{ .src = .{ .to_sse, .none, .none } }, |
| 102794 | }, |
| 102795 | .extra_temps = .{ |
| 102796 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 102797 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 102798 | .unused, |
| 102799 | .unused, |
| 102800 | .unused, |
| 102801 | .unused, |
| 102802 | .unused, |
| 102803 | .unused, |
| 102804 | .unused, |
| 102805 | .unused, |
| 102806 | .unused, |
| 102807 | }, |
| 102808 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 102809 | .each = .{ .once = &.{ |
| 102810 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 102811 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 102812 | } }, |
| 102813 | }, .{ |
| 102814 | .required_features = .{ .avx2, null, null, null }, |
| 102815 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| 102816 | .patterns = &.{ |
| 102817 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102818 | }, |
| 102819 | .extra_temps = .{ |
| 102820 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102821 | .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, |
| 102822 | .unused, |
| 102823 | .unused, |
| 102824 | .unused, |
| 102825 | .unused, |
| 102826 | .unused, |
| 102827 | .unused, |
| 102828 | .unused, |
| 102829 | .unused, |
| 102830 | .unused, |
| 102831 | }, |
| 102832 | .dst_temps = .{ .mem, .unused }, |
| 102833 | .clobbers = .{ .eflags = true }, |
| 102834 | .each = .{ .once = &.{ |
| 102835 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102836 | .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102837 | .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 102838 | .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 102839 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, |
| 102840 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 102841 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102842 | } }, |
| 102843 | }, .{ |
| 102844 | .required_features = .{ .avx2, null, null, null }, |
| 102845 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, |
| 102846 | .patterns = &.{ |
| 102847 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102848 | }, |
| 102849 | .extra_temps = .{ |
| 102850 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102851 | .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, |
| 102852 | .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, |
| 102853 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 102854 | .unused, |
| 102855 | .unused, |
| 102856 | .unused, |
| 102857 | .unused, |
| 102858 | .unused, |
| 102859 | .unused, |
| 102860 | .unused, |
| 102861 | }, |
| 102862 | .dst_temps = .{ .mem, .unused }, |
| 102863 | .clobbers = .{ .eflags = true }, |
| 102864 | .each = .{ .once = &.{ |
| 102865 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 102866 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| 102867 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102868 | .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| 102869 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, |
| 102870 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 102871 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102872 | } }, |
| 102873 | }, .{ |
| 102874 | .required_features = .{ .avx, null, null, null }, |
| 102875 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 102876 | .patterns = &.{ |
| 102877 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102878 | }, |
| 102879 | .extra_temps = .{ |
| 102880 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102881 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| 102882 | .unused, |
| 102883 | .unused, |
| 102884 | .unused, |
| 102885 | .unused, |
| 102886 | .unused, |
| 102887 | .unused, |
| 102888 | .unused, |
| 102889 | .unused, |
| 102890 | .unused, |
| 102891 | }, |
| 102892 | .dst_temps = .{ .mem, .unused }, |
| 102893 | .clobbers = .{ .eflags = true }, |
| 102894 | .each = .{ .once = &.{ |
| 102895 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102896 | .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102897 | .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 102898 | .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ }, |
| 102899 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 102900 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 102901 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102902 | } }, |
| 102903 | }, .{ |
| 102904 | .required_features = .{ .avx, null, null, null }, |
| 102905 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 102906 | .patterns = &.{ |
| 102907 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102908 | }, |
| 102909 | .extra_temps = .{ |
| 102910 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102911 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| 102912 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| 102913 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 102914 | .unused, |
| 102915 | .unused, |
| 102916 | .unused, |
| 102917 | .unused, |
| 102918 | .unused, |
| 102919 | .unused, |
| 102920 | .unused, |
| 102921 | }, |
| 102922 | .dst_temps = .{ .mem, .unused }, |
| 102923 | .clobbers = .{ .eflags = true }, |
| 102924 | .each = .{ .once = &.{ |
| 102925 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 102926 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 102927 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102928 | .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| 102929 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 102930 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 102931 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102932 | } }, |
| 102933 | }, .{ |
| 102934 | .required_features = .{ .sse2, null, null, null }, |
| 102935 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 102936 | .patterns = &.{ |
| 102937 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102938 | }, |
| 102939 | .extra_temps = .{ |
| 102940 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102941 | .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, |
| 102942 | .unused, |
| 102943 | .unused, |
| 102944 | .unused, |
| 102945 | .unused, |
| 102946 | .unused, |
| 102947 | .unused, |
| 102948 | .unused, |
| 102949 | .unused, |
| 102950 | .unused, |
| 102951 | }, |
| 102952 | .dst_temps = .{ .mem, .unused }, |
| 102953 | .clobbers = .{ .eflags = true }, |
| 102954 | .each = .{ .once = &.{ |
| 102955 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102956 | .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102957 | .{ ._, .p_d, .sll, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 102958 | .{ ._, .p_d, .sra, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 102959 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, |
| 102960 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 102961 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102962 | } }, |
| 102963 | }, .{ |
| 102964 | .required_features = .{ .sse2, null, null, null }, |
| 102965 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 102966 | .patterns = &.{ |
| 102967 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102968 | }, |
| 102969 | .extra_temps = .{ |
| 102970 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 102971 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| 102972 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| 102973 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 102974 | .unused, |
| 102975 | .unused, |
| 102976 | .unused, |
| 102977 | .unused, |
| 102978 | .unused, |
| 102979 | .unused, |
| 102980 | .unused, |
| 102981 | }, |
| 102982 | .dst_temps = .{ .mem, .unused }, |
| 102983 | .clobbers = .{ .eflags = true }, |
| 102984 | .each = .{ .once = &.{ |
| 102985 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 102986 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 102987 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 102988 | .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, |
| 102989 | .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 102990 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 102991 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 102992 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 102993 | } }, |
| 102994 | }, .{ |
| 102995 | .required_features = .{ .sse, null, null, null }, |
| 102996 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, |
| 102997 | .patterns = &.{ |
| 102998 | .{ .src = .{ .to_mem, .none, .none } }, |
| 102999 | }, |
| 103000 | .extra_temps = .{ |
| 103001 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 103002 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| 103003 | .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, |
| 103004 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 103005 | .unused, |
| 103006 | .unused, |
| 103007 | .unused, |
| 103008 | .unused, |
| 103009 | .unused, |
| 103010 | .unused, |
| 103011 | .unused, |
| 103012 | }, |
| 103013 | .dst_temps = .{ .mem, .unused }, |
| 103014 | .clobbers = .{ .eflags = true }, |
| 103015 | .each = .{ .once = &.{ |
| 103016 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 103017 | .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 103018 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 103019 | .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, |
| 103020 | .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 103021 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 103022 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 103023 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103024 | } }, |
| 103025 | }, .{ |
| 103026 | .src_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any, .any }, |
| 103027 | .patterns = &.{ |
| 103028 | .{ .src = .{ .to_mut_mem, .none, .none } }, |
| 103029 | }, |
| 103030 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 103031 | .each = .{ .once = &.{} }, |
| 103032 | }, .{ |
| 103033 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 103034 | .patterns = &.{ |
| 103035 | .{ .src = .{ .to_mem, .none, .none } }, |
| 103036 | }, |
| 103037 | .extra_temps = .{ |
| 103038 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 103039 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 103040 | .unused, |
| 103041 | .unused, |
| 103042 | .unused, |
| 103043 | .unused, |
| 103044 | .unused, |
| 103045 | .unused, |
| 103046 | .unused, |
| 103047 | .unused, |
| 103048 | .unused, |
| 103049 | }, |
| 103050 | .dst_temps = .{ .mem, .unused }, |
| 103051 | .clobbers = .{ .eflags = true }, |
| 103052 | .each = .{ .once = &.{ |
| 103053 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 103054 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| 103055 | .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 103056 | .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, |
| 103057 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| 103058 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 103059 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103060 | } }, |
| 103061 | }, .{ |
| 103062 | .required_features = .{ .bmi2, null, null, null }, |
| 103063 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 103064 | .patterns = &.{ |
| 103065 | .{ .src = .{ .to_mem, .none, .none } }, |
| 103066 | }, |
| 103067 | .extra_temps = .{ |
| 103068 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 103069 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 103070 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 103071 | .unused, |
| 103072 | .unused, |
| 103073 | .unused, |
| 103074 | .unused, |
| 103075 | .unused, |
| 103076 | .unused, |
| 103077 | .unused, |
| 103078 | .unused, |
| 103079 | }, |
| 103080 | .dst_temps = .{ .mem, .unused }, |
| 103081 | .clobbers = .{ .eflags = true }, |
| 103082 | .each = .{ .once = &.{ |
| 103083 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 103084 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 103085 | .{ .@"0:", ._, .bzhi, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), .tmp1d, ._ }, |
| 103086 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, |
| 103087 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 103088 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103089 | } }, |
| 103090 | }, .{ |
| 103091 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, |
| 103092 | .patterns = &.{ |
| 103093 | .{ .src = .{ .to_mem, .none, .none } }, |
| 103094 | }, |
| 103095 | .extra_temps = .{ |
| 103096 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 103097 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 103098 | .unused, |
| 103099 | .unused, |
| 103100 | .unused, |
| 103101 | .unused, |
| 103102 | .unused, |
| 103103 | .unused, |
| 103104 | .unused, |
| 103105 | .unused, |
| 103106 | .unused, |
| 103107 | }, |
| 103108 | .dst_temps = .{ .mem, .unused }, |
| 103109 | .clobbers = .{ .eflags = true }, |
| 103110 | .each = .{ .once = &.{ |
| 103111 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 103112 | .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, |
| 103113 | .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, |
| 103114 | .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, |
| 103115 | .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, |
| 103116 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103117 | } }, |
| 103118 | }, .{ |
| 103119 | .required_features = .{ .sse, null, null, null }, |
| 103120 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .xword, .is = 64 } }, .any, .any }, |
| 103121 | .patterns = &.{ |
| 103122 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 103123 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 103124 | }, |
| 103125 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 103126 | .each = .{ .once = &.{} }, |
| 103127 | }, .{ |
| 103128 | .required_features = .{ .avx, null, null, null }, |
| 103129 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .yword, .is = 64 } }, .any, .any }, |
| 103130 | .patterns = &.{ |
| 103131 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 103132 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 103133 | }, |
| 103134 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 103135 | .each = .{ .once = &.{} }, |
| 103136 | }, .{ |
| 103137 | .required_features = .{ .avx, null, null, null }, |
| 103138 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 103139 | .patterns = &.{ |
| 103140 | .{ .src = .{ .to_sse, .none, .none } }, |
| 103141 | }, |
| 103142 | .extra_temps = .{ |
| 103143 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 103144 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 103145 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 103146 | .unused, |
| 103147 | .unused, |
| 103148 | .unused, |
| 103149 | .unused, |
| 103150 | .unused, |
| 103151 | .unused, |
| 103152 | .unused, |
| 103153 | .unused, |
| 103154 | }, |
| 103155 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 103156 | .each = .{ .once = &.{ |
| 103157 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 103158 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 103159 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| 103160 | .{ ._, .vp_q, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ }, |
| 103161 | .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ }, |
| 103162 | } }, |
| 103163 | }, .{ |
| 103164 | .required_features = .{ .avx, null, null, null }, |
| 103165 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 103166 | .patterns = &.{ |
| 103167 | .{ .src = .{ .to_sse, .none, .none } }, |
| 103168 | }, |
| 103169 | .extra_temps = .{ |
| 103170 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 103171 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 103172 | .unused, |
| 103173 | .unused, |
| 103174 | .unused, |
| 103175 | .unused, |
| 103176 | .unused, |
| 103177 | .unused, |
| 103178 | .unused, |
| 103179 | .unused, |
| 103180 | .unused, |
| 103181 | }, |
| 103182 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 103183 | .each = .{ .once = &.{ |
| 103184 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 103185 | .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, |
| 103186 | } }, |
| 103187 | }, .{ |
| 103188 | .required_features = .{ .sse2, null, null, null }, |
| 103189 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 103190 | .patterns = &.{ |
| 103191 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 103192 | }, |
| 103193 | .extra_temps = .{ |
| 103194 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 103195 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 103196 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 103197 | .unused, |
| 103198 | .unused, |
| 103199 | .unused, |
| 103200 | .unused, |
| 103201 | .unused, |
| 103202 | .unused, |
| 103203 | .unused, |
| 103204 | .unused, |
| 103205 | }, |
| 103206 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 103207 | .each = .{ .once = &.{ |
| 103208 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 103209 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 103210 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| 103211 | .{ ._, .p_q, .add, .dst0x, .lea(.tmp0x), ._, ._ }, |
| 103212 | .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, |
| 103213 | } }, |
| 103214 | }, .{ |
| 103215 | .required_features = .{ .sse2, null, null, null }, |
| 103216 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 103217 | .patterns = &.{ |
| 103218 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 103219 | }, |
| 103220 | .extra_temps = .{ |
| 103221 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 103222 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 103223 | .unused, |
| 103224 | .unused, |
| 103225 | .unused, |
| 103226 | .unused, |
| 103227 | .unused, |
| 103228 | .unused, |
| 103229 | .unused, |
| 103230 | .unused, |
| 103231 | .unused, |
| 103232 | }, |
| 103233 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 103234 | .each = .{ .once = &.{ |
| 103235 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 103236 | .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 103237 | } }, |
| 103238 | }, .{ |
| 103239 | .required_features = .{ .sse, null, null, null }, |
| 103240 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 103241 | .patterns = &.{ |
| 103242 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 103243 | }, |
| 103244 | .extra_temps = .{ |
| 103245 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 103246 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 103247 | .unused, |
| 103248 | .unused, |
| 103249 | .unused, |
| 103250 | .unused, |
| 103251 | .unused, |
| 103252 | .unused, |
| 103253 | .unused, |
| 103254 | .unused, |
| 103255 | .unused, |
| 103256 | }, |
| 103257 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 103258 | .each = .{ .once = &.{ |
| 103259 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 103260 | .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, |
| 103261 | } }, |
| 103262 | }, .{ |
| 103263 | .required_features = .{ .avx2, null, null, null }, |
| 103264 | .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| 103265 | .patterns = &.{ |
| 103266 | .{ .src = .{ .to_sse, .none, .none } }, |
| 103267 | }, |
| 103268 | .extra_temps = .{ |
| 103269 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 103270 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 103271 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 103272 | .unused, |
| 103273 | .unused, |
| 103274 | .unused, |
| 103275 | .unused, |
| 103276 | .unused, |
| 103277 | .unused, |
| 103278 | .unused, |
| 103279 | .unused, |
| 103280 | }, |
| 103281 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 103282 | .each = .{ .once = &.{ |
| 103283 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 103284 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 103285 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, |
| 103286 | .{ ._, .vp_q, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ }, |
| 103287 | .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ }, |
| 103288 | } }, |
| 103289 | }, .{ |
| 103290 | .required_features = .{ .avx2, null, null, null }, |
| 103291 | .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| 103292 | .patterns = &.{ |
| 103293 | .{ .src = .{ .to_sse, .none, .none } }, |
| 103294 | }, |
| 103295 | .extra_temps = .{ |
| 103296 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 103297 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, |
| 103298 | .unused, |
| 103299 | .unused, |
| 103300 | .unused, |
| 103301 | .unused, |
| 103302 | .unused, |
| 103303 | .unused, |
| 103304 | .unused, |
| 103305 | .unused, |
| 103306 | .unused, |
| 103307 | }, |
| 103308 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, |
| 103309 | .each = .{ .once = &.{ |
| 103310 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, |
| 103311 | .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, |
| 103312 | } }, |
| 103313 | }, .{ |
| 103314 | .required_features = .{ .avx2, null, null, null }, |
| 103315 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| 103316 | .patterns = &.{ |
| 103317 | .{ .src = .{ .to_mem, .none, .none } }, |
| 103318 | }, |
| 103319 | .extra_temps = .{ |
| 103320 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 103321 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| 103322 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| 103323 | .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, |
| 103324 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 103325 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 103326 | .unused, |
| 103327 | .unused, |
| 103328 | .unused, |
| 103329 | .unused, |
| 103330 | .unused, |
| 103331 | }, |
| 103332 | .dst_temps = .{ .mem, .unused }, |
| 103333 | .clobbers = .{ .eflags = true }, |
| 103334 | .each = .{ .once = &.{ |
| 103335 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| 103336 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| 103337 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| 103338 | .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ }, |
| 103339 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 103340 | .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| 103341 | .{ ._, .vp_q, .add, .tmp3y, .tmp3y, .tmp2y, ._ }, |
| 103342 | .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ }, |
| 103343 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ }, |
| 103344 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 103345 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103346 | } }, |
| 103347 | }, .{ |
| 103348 | .required_features = .{ .avx2, null, null, null }, |
| 103349 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, |
| 103350 | .patterns = &.{ |
| 103351 | .{ .src = .{ .to_mem, .none, .none } }, |
| 103352 | }, |
| 103353 | .extra_temps = .{ |
| 103354 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 103355 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| 103356 | .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, |
| 103357 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 103358 | .unused, |
| 103359 | .unused, |
| 103360 | .unused, |
| 103361 | .unused, |
| 103362 | .unused, |
| 103363 | .unused, |
| 103364 | .unused, |
| 103365 | }, |
| 103366 | .dst_temps = .{ .mem, .unused }, |
| 103367 | .clobbers = .{ .eflags = true }, |
| 103368 | .each = .{ .once = &.{ |
| 103369 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 103370 | .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, |
| 103371 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 103372 | .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, |
| 103373 | .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, |
| 103374 | .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, |
| 103375 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103376 | } }, |
| 103377 | }, .{ |
| 103378 | .required_features = .{ .avx, null, null, null }, |
| 103379 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 103380 | .patterns = &.{ |
| 103381 | .{ .src = .{ .to_mem, .none, .none } }, |
| 103382 | }, |
| 103383 | .extra_temps = .{ |
| 103384 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 103385 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| 103386 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| 103387 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| 103388 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 103389 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 103390 | .unused, |
| 103391 | .unused, |
| 103392 | .unused, |
| 103393 | .unused, |
| 103394 | .unused, |
| 103395 | }, |
| 103396 | .dst_temps = .{ .mem, .unused }, |
| 103397 | .clobbers = .{ .eflags = true }, |
| 103398 | .each = .{ .once = &.{ |
| 103399 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| 103400 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 103401 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| 103402 | .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| 103403 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 103404 | .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| 103405 | .{ ._, .vp_q, .add, .tmp3x, .tmp3x, .tmp2x, ._ }, |
| 103406 | .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ }, |
| 103407 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| 103408 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 103409 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103410 | } }, |
| 103411 | }, .{ |
| 103412 | .required_features = .{ .avx, null, null, null }, |
| 103413 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 103414 | .patterns = &.{ |
| 103415 | .{ .src = .{ .to_mem, .none, .none } }, |
| 103416 | }, |
| 103417 | .extra_temps = .{ |
| 103418 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 103419 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 103420 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 103421 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 103422 | .unused, |
| 103423 | .unused, |
| 103424 | .unused, |
| 103425 | .unused, |
| 103426 | .unused, |
| 103427 | .unused, |
| 103428 | .unused, |
| 103429 | }, |
| 103430 | .dst_temps = .{ .mem, .unused }, |
| 103431 | .clobbers = .{ .eflags = true }, |
| 103432 | .each = .{ .once = &.{ |
| 103433 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 103434 | .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 103435 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 103436 | .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, |
| 103437 | .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 103438 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 103439 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103440 | } }, |
| 103441 | }, .{ |
| 103442 | .required_features = .{ .sse2, null, null, null }, |
| 103443 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 103444 | .patterns = &.{ |
| 103445 | .{ .src = .{ .to_mem, .none, .none } }, |
| 103446 | }, |
| 103447 | .extra_temps = .{ |
| 103448 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 103449 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| 103450 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| 103451 | .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, |
| 103452 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 103453 | .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, |
| 103454 | .unused, |
| 103455 | .unused, |
| 103456 | .unused, |
| 103457 | .unused, |
| 103458 | .unused, |
| 103459 | }, |
| 103460 | .dst_temps = .{ .mem, .unused }, |
| 103461 | .clobbers = .{ .eflags = true }, |
| 103462 | .each = .{ .once = &.{ |
| 103463 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, |
| 103464 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 103465 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, |
| 103466 | .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, |
| 103467 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 103468 | .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ }, |
| 103469 | .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 103470 | .{ ._, .p_q, .add, .tmp3x, .tmp2x, ._, ._ }, |
| 103471 | .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ }, |
| 103472 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, |
| 103473 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 103474 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103475 | } }, |
| 103476 | }, .{ |
| 103477 | .required_features = .{ .sse2, null, null, null }, |
| 103478 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 103479 | .patterns = &.{ |
| 103480 | .{ .src = .{ .to_mem, .none, .none } }, |
| 103481 | }, |
| 103482 | .extra_temps = .{ |
| 103483 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 103484 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 103485 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 103486 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 103487 | .unused, |
| 103488 | .unused, |
| 103489 | .unused, |
| 103490 | .unused, |
| 103491 | .unused, |
| 103492 | .unused, |
| 103493 | .unused, |
| 103494 | }, |
| 103495 | .dst_temps = .{ .mem, .unused }, |
| 103496 | .clobbers = .{ .eflags = true }, |
| 103497 | .each = .{ .once = &.{ |
| 103498 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 103499 | .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 103500 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 103501 | .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, |
| 103502 | .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 103503 | .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 103504 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 103505 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103506 | } }, |
| 103507 | }, .{ |
| 103508 | .required_features = .{ .sse, null, null, null }, |
| 103509 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 103510 | .patterns = &.{ |
| 103511 | .{ .src = .{ .to_mem, .none, .none } }, |
| 103512 | }, |
| 103513 | .extra_temps = .{ |
| 103514 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 103515 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 103516 | .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, |
| 103517 | .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, |
| 103518 | .unused, |
| 103519 | .unused, |
| 103520 | .unused, |
| 103521 | .unused, |
| 103522 | .unused, |
| 103523 | .unused, |
| 103524 | .unused, |
| 103525 | }, |
| 103526 | .dst_temps = .{ .mem, .unused }, |
| 103527 | .clobbers = .{ .eflags = true }, |
| 103528 | .each = .{ .once = &.{ |
| 103529 | .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, |
| 103530 | .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, |
| 103531 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 103532 | .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, |
| 103533 | .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, |
| 103534 | .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, |
| 103535 | .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, |
| 103536 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103537 | } }, |
| 103538 | }, .{ |
| 103539 | .src_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any, .any }, |
| 103540 | .patterns = &.{ |
| 103541 | .{ .src = .{ .to_mut_mem, .none, .none } }, |
| 103542 | }, |
| 103543 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 103544 | .each = .{ .once = &.{} }, |
| 103545 | }, .{ |
| 103546 | .required_features = .{ .@"64bit", null, null, null }, |
| 103547 | .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 103548 | .patterns = &.{ |
| 103549 | .{ .src = .{ .to_mem, .none, .none } }, |
| 103550 | }, |
| 103551 | .extra_temps = .{ |
| 103552 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 103553 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 103554 | .unused, |
| 103555 | .unused, |
| 103556 | .unused, |
| 103557 | .unused, |
| 103558 | .unused, |
| 103559 | .unused, |
| 103560 | .unused, |
| 103561 | .unused, |
| 103562 | .unused, |
| 103563 | }, |
| 103564 | .dst_temps = .{ .mem, .unused }, |
| 103565 | .clobbers = .{ .eflags = true }, |
| 103566 | .each = .{ .once = &.{ |
| 103567 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 103568 | .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 103569 | .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| 103570 | .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, |
| 103571 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| 103572 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 103573 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103574 | } }, |
| 103575 | }, .{ |
| 103576 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| 103577 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 103578 | .patterns = &.{ |
| 103579 | .{ .src = .{ .to_mem, .none, .none } }, |
| 103580 | }, |
| 103581 | .extra_temps = .{ |
| 103582 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 103583 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 103584 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 103585 | .unused, |
| 103586 | .unused, |
| 103587 | .unused, |
| 103588 | .unused, |
| 103589 | .unused, |
| 103590 | .unused, |
| 103591 | .unused, |
| 103592 | .unused, |
| 103593 | }, |
| 103594 | .dst_temps = .{ .mem, .unused }, |
| 103595 | .clobbers = .{ .eflags = true }, |
| 103596 | .each = .{ .once = &.{ |
| 103597 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 103598 | .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, |
| 103599 | .{ .@"0:", ._, .bzhi, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), .tmp1q, ._ }, |
| 103600 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, |
| 103601 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 103602 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103603 | } }, |
| 103604 | }, .{ |
| 103605 | .required_features = .{ .@"64bit", null, null, null }, |
| 103606 | .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 103607 | .patterns = &.{ |
| 103608 | .{ .src = .{ .to_mem, .none, .none } }, |
| 103609 | }, |
| 103610 | .extra_temps = .{ |
| 103611 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 103612 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 103613 | .unused, |
| 103614 | .unused, |
| 103615 | .unused, |
| 103616 | .unused, |
| 103617 | .unused, |
| 103618 | .unused, |
| 103619 | .unused, |
| 103620 | .unused, |
| 103621 | .unused, |
| 103622 | }, |
| 103623 | .dst_temps = .{ .mem, .unused }, |
| 103624 | .clobbers = .{ .eflags = true }, |
| 103625 | .each = .{ .once = &.{ |
| 103626 | .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, |
| 103627 | .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, |
| 103628 | .{ ._, ._, .@"and", .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, |
| 103629 | .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, |
| 103630 | .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, |
| 103631 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103632 | } }, |
| 103633 | }, .{ |
| 103634 | .required_features = .{ .sse, null, null, null }, |
| 103635 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .xword, .is = 128 } }, .any, .any }, |
| 103636 | .patterns = &.{ |
| 103637 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 103638 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 103639 | }, |
| 103640 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 103641 | .each = .{ .once = &.{} }, |
| 103642 | }, .{ |
| 103643 | .required_features = .{ .avx, null, null, null }, |
| 103644 | .src_constraints = .{ .{ .scalar_exact_int = .{ .of = .yword, .is = 128 } }, .any, .any }, |
| 103645 | .patterns = &.{ |
| 103646 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 103647 | .{ .src = .{ .to_mut_sse, .none, .none } }, |
| 103648 | }, |
| 103649 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 103650 | .each = .{ .once = &.{} }, |
| 103651 | }, .{ |
| 103652 | .src_constraints = .{ .{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 103653 | .patterns = &.{ |
| 103654 | .{ .src = .{ .to_mut_mem, .none, .none } }, |
| 103655 | }, |
| 103656 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 103657 | .each = .{ .once = &.{} }, |
| 103658 | }, .{ |
| 103659 | .required_features = .{ .@"64bit", null, null, null }, |
| 103660 | .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 103661 | .patterns = &.{ |
| 103662 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 103663 | }, |
| 103664 | .extra_temps = .{ |
| 103665 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 103666 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 103667 | .unused, |
| 103668 | .unused, |
| 103669 | .unused, |
| 103670 | .unused, |
| 103671 | .unused, |
| 103672 | .unused, |
| 103673 | .unused, |
| 103674 | .unused, |
| 103675 | .unused, |
| 103676 | }, |
| 103677 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 103678 | .clobbers = .{ .eflags = true }, |
| 103679 | .each = .{ .once = &.{ |
| 103680 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ }, |
| 103681 | .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, |
| 103682 | .{ ._, ._l, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 103683 | .{ ._, ._r, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 103684 | .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp1q, ._, ._ }, |
| 103685 | .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, |
| 103686 | .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp1q, ._, ._ }, |
| 103687 | .{ ._, ._, .sub, .tmp0d, .sa(.src0, .add_elem_size), ._, ._ }, |
| 103688 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103689 | } }, |
| 103690 | }, .{ |
| 103691 | .required_features = .{ .@"64bit", null, null, null }, |
| 103692 | .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, |
| 103693 | .patterns = &.{ |
| 103694 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 103695 | }, |
| 103696 | .extra_temps = .{ |
| 103697 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 103698 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 103699 | .unused, |
| 103700 | .unused, |
| 103701 | .unused, |
| 103702 | .unused, |
| 103703 | .unused, |
| 103704 | .unused, |
| 103705 | .unused, |
| 103706 | .unused, |
| 103707 | .unused, |
| 103708 | }, |
| 103709 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 103710 | .clobbers = .{ .eflags = true }, |
| 103711 | .each = .{ .once = &.{ |
| 103712 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ }, |
| 103713 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ }, |
| 103714 | .{ .@"0:", ._, .@"and", .memi(.dst0q, .tmp0), .tmp1q, ._, ._ }, |
| 103715 | .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .si(0), ._, ._ }, |
| 103716 | .{ ._, ._, .sub, .tmp0d, .sa(.src0, .add_elem_size), ._, ._ }, |
| 103717 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103718 | } }, |
| 103719 | }, .{ |
| 103720 | .required_features = .{ .@"64bit", null, null, null }, |
| 103721 | .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 103722 | .patterns = &.{ |
| 103723 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 103724 | }, |
| 103725 | .extra_temps = .{ |
| 103726 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 103727 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 103728 | .unused, |
| 103729 | .unused, |
| 103730 | .unused, |
| 103731 | .unused, |
| 103732 | .unused, |
| 103733 | .unused, |
| 103734 | .unused, |
| 103735 | .unused, |
| 103736 | .unused, |
| 103737 | }, |
| 103738 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 103739 | .clobbers = .{ .eflags = true }, |
| 103740 | .each = .{ .once = &.{ |
| 103741 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ }, |
| 103742 | .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, |
| 103743 | .{ ._, ._l, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 103744 | .{ ._, ._r, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 103745 | .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp1q, ._, ._ }, |
| 103746 | .{ ._, ._, .sub, .tmp0d, .sa(.src0, .add_elem_size), ._, ._ }, |
| 103747 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103748 | } }, |
| 103749 | }, .{ |
| 103750 | .required_features = .{ .@"64bit", null, null, null }, |
| 103751 | .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, |
| 103752 | .patterns = &.{ |
| 103753 | .{ .src = .{ .mut_mem, .none, .none } }, |
| 103754 | }, |
| 103755 | .extra_temps = .{ |
| 103756 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 103757 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 103758 | .unused, |
| 103759 | .unused, |
| 103760 | .unused, |
| 103761 | .unused, |
| 103762 | .unused, |
| 103763 | .unused, |
| 103764 | .unused, |
| 103765 | .unused, |
| 103766 | .unused, |
| 103767 | }, |
| 103768 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 103769 | .clobbers = .{ .eflags = true }, |
| 103770 | .each = .{ .once = &.{ |
| 103771 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ }, |
| 103772 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ }, |
| 103773 | .{ .@"0:", ._, .@"and", .memi(.dst0q, .tmp0), .tmp1q, ._, ._ }, |
| 103774 | .{ ._, ._, .sub, .tmp0d, .sa(.src0, .add_elem_size), ._, ._ }, |
| 103775 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 103776 | } }, |
| 103777 | } }); |
| 103778 | for (ops) |op| for (res) |r| { |
| 103779 | if (op.index == r.index) break; |
| 103780 | } else try op.die(cg); |
| 103781 | temp.* = res[0]; |
| 103782 | } |
| 103783 | |
| 103784 | /// Supports any `op` using `cg.intInfo(lhs.typeOf(cg)).?.signedness` as the signedness. |
| 103785 | /// Returns `error.SelectFailed` when `cg.intInfo(lhs.typeOf(cg)) == null`. |
| 103786 | fn cmpInts(lhs: *Temp, op: std.math.CompareOperator, rhs: *Temp, cg: *CodeGen) Select.Error!Temp { |
| 103787 | var ops: [2]Temp = .{ lhs.*, rhs.* }; |
| 103788 | var res: [1]Temp = undefined; |
| 103789 | switch (op) { |
| 103790 | .lt, .lte, .gte, .gt => { |
| 103791 | const commute = switch (op) { |
| 103792 | .lt, .gte => false, |
| 103793 | .lte, .gt => true, |
| 103794 | else => unreachable, |
| 103795 | }; |
| 103796 | if (commute) std.mem.swap(Temp, &ops[0], &ops[1]); |
| 103797 | try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{ |
| 103798 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, |
| 103799 | .patterns = &.{ |
| 103800 | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, |
| 103801 | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103802 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103803 | }, |
| 103804 | .dst_temps = .{ .{ .cc = .g }, .unused }, |
| 103805 | .clobbers = .{ .eflags = true }, |
| 103806 | .each = .{ .once = &.{ |
| 103807 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 103808 | } }, |
| 103809 | }, .{ |
| 103810 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, |
| 103811 | .patterns = &.{ |
| 103812 | .{ .src = .{ .mem, .imm8, .none } }, |
| 103813 | .{ .src = .{ .to_gpr, .imm8, .none } }, |
| 103814 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 103815 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 103816 | }, |
| 103817 | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| 103818 | .clobbers = .{ .eflags = true }, |
| 103819 | .each = .{ .once = &.{ |
| 103820 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 103821 | } }, |
| 103822 | }, .{ |
| 103823 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| 103824 | .patterns = &.{ |
| 103825 | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, |
| 103826 | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103827 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103828 | }, |
| 103829 | .dst_temps = .{ .{ .cc = .a }, .unused }, |
| 103830 | .clobbers = .{ .eflags = true }, |
| 103831 | .each = .{ .once = &.{ |
| 103832 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 103833 | } }, |
| 103834 | }, .{ |
| 103835 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| 103836 | .patterns = &.{ |
| 103837 | .{ .src = .{ .mem, .imm8, .none } }, |
| 103838 | .{ .src = .{ .to_gpr, .imm8, .none } }, |
| 103839 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 103840 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 103841 | }, |
| 103842 | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| 103843 | .clobbers = .{ .eflags = true }, |
| 103844 | .each = .{ .once = &.{ |
| 103845 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 103846 | } }, |
| 103847 | }, .{ |
| 103848 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 103849 | .patterns = &.{ |
| 103850 | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, |
| 103851 | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103852 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103853 | }, |
| 103854 | .dst_temps = .{ .{ .cc = .g }, .unused }, |
| 103855 | .clobbers = .{ .eflags = true }, |
| 103856 | .each = .{ .once = &.{ |
| 103857 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 103858 | } }, |
| 103859 | }, .{ |
| 103860 | .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, |
| 103861 | .patterns = &.{ |
| 103862 | .{ .src = .{ .mem, .imm16, .none } }, |
| 103863 | .{ .src = .{ .to_gpr, .imm16, .none } }, |
| 103864 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 103865 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 103866 | }, |
| 103867 | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| 103868 | .clobbers = .{ .eflags = true }, |
| 103869 | .each = .{ .once = &.{ |
| 103870 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 103871 | } }, |
| 103872 | }, .{ |
| 103873 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, |
| 103874 | .patterns = &.{ |
| 103875 | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, |
| 103876 | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103877 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103878 | }, |
| 103879 | .dst_temps = .{ .{ .cc = .a }, .unused }, |
| 103880 | .clobbers = .{ .eflags = true }, |
| 103881 | .each = .{ .once = &.{ |
| 103882 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 103883 | } }, |
| 103884 | }, .{ |
| 103885 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, |
| 103886 | .patterns = &.{ |
| 103887 | .{ .src = .{ .mem, .imm16, .none } }, |
| 103888 | .{ .src = .{ .to_gpr, .imm16, .none } }, |
| 103889 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 103890 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 103891 | }, |
| 103892 | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| 103893 | .clobbers = .{ .eflags = true }, |
| 103894 | .each = .{ .once = &.{ |
| 103895 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 103896 | } }, |
| 103897 | }, .{ |
| 103898 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| 103899 | .patterns = &.{ |
| 103900 | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 103901 | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103902 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103903 | }, |
| 103904 | .dst_temps = .{ .{ .cc = .g }, .unused }, |
| 103905 | .clobbers = .{ .eflags = true }, |
| 103906 | .each = .{ .once = &.{ |
| 103907 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| 103908 | } }, |
| 103909 | }, .{ |
| 103910 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, |
| 103911 | .patterns = &.{ |
| 103912 | .{ .src = .{ .mem, .imm32, .none } }, |
| 103913 | .{ .src = .{ .to_gpr, .imm32, .none } }, |
| 103914 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 103915 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 103916 | }, |
| 103917 | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| 103918 | .clobbers = .{ .eflags = true }, |
| 103919 | .each = .{ .once = &.{ |
| 103920 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| 103921 | } }, |
| 103922 | }, .{ |
| 103923 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, |
| 103924 | .patterns = &.{ |
| 103925 | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 103926 | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103927 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103928 | }, |
| 103929 | .dst_temps = .{ .{ .cc = .a }, .unused }, |
| 103930 | .clobbers = .{ .eflags = true }, |
| 103931 | .each = .{ .once = &.{ |
| 103932 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| 103933 | } }, |
| 103934 | }, .{ |
| 103935 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, |
| 103936 | .patterns = &.{ |
| 103937 | .{ .src = .{ .mem, .imm32, .none } }, |
| 103938 | .{ .src = .{ .to_gpr, .imm32, .none } }, |
| 103939 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 103940 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 103941 | }, |
| 103942 | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| 103943 | .clobbers = .{ .eflags = true }, |
| 103944 | .each = .{ .once = &.{ |
| 103945 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| 103946 | } }, |
| 103947 | }, .{ |
| 103948 | .required_features = .{ .@"64bit", null, null, null }, |
| 103949 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| 103950 | .patterns = &.{ |
| 103951 | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 103952 | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103953 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103954 | }, |
| 103955 | .dst_temps = .{ .{ .cc = .g }, .unused }, |
| 103956 | .clobbers = .{ .eflags = true }, |
| 103957 | .each = .{ .once = &.{ |
| 103958 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| 103959 | } }, |
| 103960 | }, .{ |
| 103961 | .required_features = .{ .@"64bit", null, null, null }, |
| 103962 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, |
| 103963 | .patterns = &.{ |
| 103964 | .{ .src = .{ .mem, .simm32, .none } }, |
| 103965 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| 103966 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 103967 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 103968 | }, |
| 103969 | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| 103970 | .clobbers = .{ .eflags = true }, |
| 103971 | .each = .{ .once = &.{ |
| 103972 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| 103973 | } }, |
| 103974 | }, .{ |
| 103975 | .required_features = .{ .@"64bit", null, null, null }, |
| 103976 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, |
| 103977 | .patterns = &.{ |
| 103978 | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 103979 | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103980 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 103981 | }, |
| 103982 | .dst_temps = .{ .{ .cc = .a }, .unused }, |
| 103983 | .clobbers = .{ .eflags = true }, |
| 103984 | .each = .{ .once = &.{ |
| 103985 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| 103986 | } }, |
| 103987 | }, .{ |
| 103988 | .required_features = .{ .@"64bit", null, null, null }, |
| 103989 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, |
| 103990 | .patterns = &.{ |
| 103991 | .{ .src = .{ .mem, .simm32, .none } }, |
| 103992 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| 103993 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 103994 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 103995 | }, |
| 103996 | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| 103997 | .clobbers = .{ .eflags = true }, |
| 103998 | .each = .{ .once = &.{ |
| 103999 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| 104000 | } }, |
| 104001 | }, .{ |
| 104002 | .required_features = .{ .@"64bit", null, null, null }, |
| 104003 | .src_constraints = .{ |
| 104004 | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, |
| 104005 | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, |
| 104006 | .any, |
| 104007 | }, |
| 104008 | .patterns = &.{ |
| 104009 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 104010 | }, |
| 104011 | .extra_temps = .{ |
| 104012 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 104013 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 104014 | .unused, |
| 104015 | .unused, |
| 104016 | .unused, |
| 104017 | .unused, |
| 104018 | .unused, |
| 104019 | .unused, |
| 104020 | .unused, |
| 104021 | .unused, |
| 104022 | .unused, |
| 104023 | }, |
| 104024 | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| 104025 | .clobbers = .{ .eflags = true }, |
| 104026 | .each = .{ .once = &.{ |
| 104027 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_8), ._, ._ }, |
| 104028 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 104029 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| 104030 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ }, |
| 104031 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 104032 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 104033 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 104034 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -8), ._, ._ }, |
| 104035 | } }, |
| 104036 | }, .{ |
| 104037 | .required_features = .{ .@"64bit", null, null, null }, |
| 104038 | .src_constraints = .{ |
| 104039 | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 104040 | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 104041 | .any, |
| 104042 | }, |
| 104043 | .patterns = &.{ |
| 104044 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 104045 | }, |
| 104046 | .extra_temps = .{ |
| 104047 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 104048 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 104049 | .unused, |
| 104050 | .unused, |
| 104051 | .unused, |
| 104052 | .unused, |
| 104053 | .unused, |
| 104054 | .unused, |
| 104055 | .unused, |
| 104056 | .unused, |
| 104057 | .unused, |
| 104058 | }, |
| 104059 | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| 104060 | .clobbers = .{ .eflags = true }, |
| 104061 | .each = .{ .once = &.{ |
| 104062 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_8), ._, ._ }, |
| 104063 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 104064 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_size), ._, ._ }, |
| 104065 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"8", .tmp0, .add_size), ._, ._ }, |
| 104066 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 104067 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 104068 | } }, |
| 104069 | }, .{ |
| 104070 | .src_constraints = .{ |
| 104071 | .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, |
| 104072 | .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, |
| 104073 | .any, |
| 104074 | }, |
| 104075 | .patterns = &.{ |
| 104076 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 104077 | }, |
| 104078 | .extra_temps = .{ |
| 104079 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 104080 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 104081 | .unused, |
| 104082 | .unused, |
| 104083 | .unused, |
| 104084 | .unused, |
| 104085 | .unused, |
| 104086 | .unused, |
| 104087 | .unused, |
| 104088 | .unused, |
| 104089 | .unused, |
| 104090 | }, |
| 104091 | .dst_temps = .{ .{ .cc = .l }, .unused }, |
| 104092 | .clobbers = .{ .eflags = true }, |
| 104093 | .each = .{ .once = &.{ |
| 104094 | .{ ._, ._, .mov, .tmp0p, .sia(1, .src0, .sub_size_div_4), ._, ._ }, |
| 104095 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 104096 | .{ .@"0:", ._, .mov, .tmp1q, .memsiad(.src0q, .@"4", .tmp0, .add_size, -4), ._, ._ }, |
| 104097 | .{ ._, ._, .sbb, .tmp1q, .memsiad(.src1q, .@"4", .tmp0, .add_size, -4), ._, ._ }, |
| 104098 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 104099 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 104100 | .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -4), ._, ._ }, |
| 104101 | .{ ._, ._, .sbb, .tmp1q, .memad(.src1q, .add_size, -4), ._, ._ }, |
| 104102 | } }, |
| 104103 | }, .{ |
| 104104 | .src_constraints = .{ |
| 104105 | .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| 104106 | .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, |
| 104107 | .any, |
| 104108 | }, |
| 104109 | .patterns = &.{ |
| 104110 | .{ .src = .{ .to_mem, .to_mem, .none } }, |
| 104111 | }, |
| 104112 | .extra_temps = .{ |
| 104113 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 104114 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 104115 | .unused, |
| 104116 | .unused, |
| 104117 | .unused, |
| 104118 | .unused, |
| 104119 | .unused, |
| 104120 | .unused, |
| 104121 | .unused, |
| 104122 | .unused, |
| 104123 | .unused, |
| 104124 | }, |
| 104125 | .dst_temps = .{ .{ .cc = .b }, .unused }, |
| 104126 | .clobbers = .{ .eflags = true }, |
| 104127 | .each = .{ .once = &.{ |
| 104128 | .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size_div_4), ._, ._ }, |
| 104129 | .{ ._, ._c, .cl, ._, ._, ._, ._ }, |
| 104130 | .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_size), ._, ._ }, |
| 104131 | .{ ._, ._, .sbb, .tmp1q, .memsia(.src1q, .@"4", .tmp0, .add_size), ._, ._ }, |
| 104132 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 104133 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 104134 | } }, |
| 104135 | } }); |
| 104136 | if (commute) std.mem.swap(Temp, &ops[0], &ops[1]); |
| 104137 | }, |
| 104138 | .eq, .neq => { |
| 104139 | try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{ |
| 104140 | .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte }, .any }, |
| 104141 | .patterns = &.{ |
| 104142 | .{ .src = .{ .mem, .imm8, .none } }, |
| 104143 | .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, |
| 104144 | .{ .src = .{ .to_gpr, .imm8, .none } }, |
| 104145 | .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 104146 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 104147 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 104148 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 104149 | }, |
| 104150 | .dst_temps = .{ .{ .cc = .e }, .unused }, |
| 104151 | .clobbers = .{ .eflags = true }, |
| 104152 | .each = .{ .once = &.{ |
| 104153 | .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, |
| 104154 | } }, |
| 104155 | }, .{ |
| 104156 | .src_constraints = .{ .{ .int = .word }, .{ .int = .word }, .any }, |
| 104157 | .patterns = &.{ |
| 104158 | .{ .src = .{ .mem, .imm16, .none } }, |
| 104159 | .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, |
| 104160 | .{ .src = .{ .to_gpr, .imm16, .none } }, |
| 104161 | .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 104162 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 104163 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 104164 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 104165 | }, |
| 104166 | .dst_temps = .{ .{ .cc = .e }, .unused }, |
| 104167 | .clobbers = .{ .eflags = true }, |
| 104168 | .each = .{ .once = &.{ |
| 104169 | .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, |
| 104170 | } }, |
| 104171 | }, .{ |
| 104172 | .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword }, .any }, |
| 104173 | .patterns = &.{ |
| 104174 | .{ .src = .{ .mem, .imm32, .none } }, |
| 104175 | .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 104176 | .{ .src = .{ .to_gpr, .imm32, .none } }, |
| 104177 | .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 104178 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 104179 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 104180 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 104181 | }, |
| 104182 | .dst_temps = .{ .{ .cc = .e }, .unused }, |
| 104183 | .clobbers = .{ .eflags = true }, |
| 104184 | .each = .{ .once = &.{ |
| 104185 | .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, |
| 104186 | } }, |
| 104187 | }, .{ |
| 104188 | .required_features = .{ .@"64bit", null, null, null }, |
| 104189 | .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any }, |
| 104190 | .patterns = &.{ |
| 104191 | .{ .src = .{ .mem, .simm32, .none } }, |
| 104192 | .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, |
| 104193 | .{ .src = .{ .to_gpr, .simm32, .none } }, |
| 104194 | .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 104195 | .{ .src = .{ .to_gpr, .mem, .none } }, |
| 104196 | .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, |
| 104197 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 104198 | }, |
| 104199 | .dst_temps = .{ .{ .cc = .e }, .unused }, |
| 104200 | .clobbers = .{ .eflags = true }, |
| 104201 | .each = .{ .once = &.{ |
| 104202 | .{ ._, ._, .cmp, .src0q, .src1q, ._, ._ }, |
| 104203 | } }, |
| 104204 | }, .{ |
| 104205 | .required_features = .{ .sse, .mmx, null, null }, |
| 104206 | .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any }, |
| 104207 | .patterns = &.{ |
| 104208 | .{ .src = .{ .to_mut_mm, .mem, .none } }, |
| 104209 | .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, |
| 104210 | .{ .src = .{ .to_mut_mm, .to_mm, .none } }, |
| 104211 | }, |
| 104212 | .extra_temps = .{ |
| 104213 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 104214 | .{ .kind = .{ .rc = .mmx } }, |
| 104215 | .unused, |
| 104216 | .unused, |
| 104217 | .unused, |
| 104218 | .unused, |
| 104219 | .unused, |
| 104220 | .unused, |
| 104221 | .unused, |
| 104222 | .unused, |
| 104223 | .unused, |
| 104224 | }, |
| 104225 | .dst_temps = .{ .{ .cc = .z }, .unused }, |
| 104226 | .clobbers = .{ .eflags = true }, |
| 104227 | .each = .{ .once = &.{ |
| 104228 | .{ ._, .p_, .xor, .tmp1q, .tmp1q, ._, ._ }, |
| 104229 | .{ ._, .p_, .xor, .src0q, .src1q, ._, ._ }, |
| 104230 | .{ ._, .p_b, .cmpeq, .tmp1q, .src0q, ._, ._ }, |
| 104231 | .{ ._, .p_b, .movmsk, .tmp0d, .tmp1q, ._, ._ }, |
| 101834 | 104232 | .{ ._, ._, .cmp, .tmp0b, .si(-1), ._, ._ }, |
| 101835 | 104233 | } }, |
| 101836 | 104234 | }, .{ |
| ... | ... | @@ -103648,9 +106046,14 @@ const Select = struct { |
| 103648 | 106046 | scalar_int: OfIsSizes, |
| 103649 | 106047 | scalar_signed_int: OfIsSizes, |
| 103650 | 106048 | scalar_unsigned_int: OfIsSizes, |
| 106049 | scalar_signed_or_exclusive_int: OfIsSizes, |
| 106050 | scalar_exact_int: struct { of: Memory.Size, is: u16 }, |
| 106051 | scalar_exact_signed_int: struct { of: Memory.Size, is: u16 }, |
| 106052 | scalar_exact_unsigned_int: struct { of: Memory.Size, is: u16 }, |
| 103651 | 106053 | multiple_scalar_int: OfIsSizes, |
| 103652 | 106054 | multiple_scalar_signed_int: OfIsSizes, |
| 103653 | 106055 | multiple_scalar_unsigned_int: OfIsSizes, |
| 106056 | multiple_scalar_signed_or_exclusive_int: OfIsSizes, |
| 103654 | 106057 | multiple_scalar_exact_int: struct { of: Memory.Size, is: u16 }, |
| 103655 | 106058 | multiple_scalar_exact_signed_int: struct { of: Memory.Size, is: u16 }, |
| 103656 | 106059 | multiple_scalar_exact_unsigned_int: struct { of: Memory.Size, is: u16 }, |
| ... | ... | @@ -103739,6 +106142,19 @@ const Select = struct { |
| 103739 | 106142 | .scalar_unsigned_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and |
| 103740 | 106143 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and |
| 103741 | 106144 | of_is.is.bitSize(cg.target) >= int_info.bits else false, |
| 106145 | .scalar_signed_or_exclusive_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and |
| 106146 | if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) { |
| 106147 | .signed => of_is.is.bitSize(cg.target) >= int_info.bits, |
| 106148 | .unsigned => of_is.is.bitSize(cg.target) > int_info.bits, |
| 106149 | } else false, |
| 106150 | .scalar_exact_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and |
| 106151 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is == int_info.bits else false, |
| 106152 | .scalar_exact_signed_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and |
| 106153 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .signed and |
| 106154 | of_is.is == int_info.bits else false, |
| 106155 | .scalar_exact_unsigned_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and |
| 106156 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and |
| 106157 | of_is.is == int_info.bits else false, |
| 103742 | 106158 | .multiple_scalar_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| 103743 | 106159 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is.bitSize(cg.target) >= int_info.bits else false, |
| 103744 | 106160 | .multiple_scalar_signed_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| ... | ... | @@ -103747,6 +106163,11 @@ const Select = struct { |
| 103747 | 106163 | .multiple_scalar_unsigned_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| 103748 | 106164 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and |
| 103749 | 106165 | of_is.is.bitSize(cg.target) >= int_info.bits else false, |
| 106166 | .multiple_scalar_signed_or_exclusive_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| 106167 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| switch (int_info.signedness) { |
| 106168 | .signed => of_is.is.bitSize(cg.target) >= int_info.bits, |
| 106169 | .unsigned => of_is.is.bitSize(cg.target) > int_info.bits, |
| 106170 | } else false, |
| 103750 | 106171 | .multiple_scalar_exact_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| 103751 | 106172 | if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is == int_info.bits else false, |
| 103752 | 106173 | .multiple_scalar_exact_signed_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and |
| ... | ... | @@ -104410,9 +106831,9 @@ const Select = struct { |
| 104410 | 106831 | src0_size, |
| 104411 | 106832 | delta_size, |
| 104412 | 106833 | delta_elem_size, |
| 104413 | | size_add_elem_size, |
| 104414 | | size_sub_elem_size, |
| 104415 | 106834 | unaligned_size, |
| 106835 | unaligned_size_add_elem_size, |
| 106836 | unaligned_size_sub_elem_size, |
| 104416 | 106837 | bit_size, |
| 104417 | 106838 | src0_bit_size, |
| 104418 | 106839 | @"8_size_sub_bit_size", |
| ... | ... | @@ -104448,10 +106869,10 @@ const Select = struct { |
| 104448 | 106869 | const add_delta_size_div_8: Adjust = .{ .sign = .pos, .lhs = .delta_size, .op = .div, .rhs = .@"8" }; |
| 104449 | 106870 | const add_delta_elem_size: Adjust = .{ .sign = .pos, .lhs = .delta_elem_size, .op = .mul, .rhs = .@"1" }; |
| 104450 | 106871 | const add_delta_elem_size_div_8: Adjust = .{ .sign = .pos, .lhs = .delta_elem_size, .op = .div, .rhs = .@"8" }; |
| 104451 | | const add_size_add_elem_size: Adjust = .{ .sign = .pos, .lhs = .size_add_elem_size, .op = .mul, .rhs = .@"1" }; |
| 104452 | | const add_size_sub_elem_size: Adjust = .{ .sign = .pos, .lhs = .size_sub_elem_size, .op = .mul, .rhs = .@"1" }; |
| 104453 | 106872 | const add_unaligned_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; |
| 104454 | 106873 | const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; |
| 106874 | const add_unaligned_size_add_elem_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size_add_elem_size, .op = .mul, .rhs = .@"1" }; |
| 106875 | const add_unaligned_size_sub_elem_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size_sub_elem_size, .op = .mul, .rhs = .@"1" }; |
| 104455 | 106876 | const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" }; |
| 104456 | 106877 | const add_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; |
| 104457 | 106878 | const add_bit_size_rem_64: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .rem_8_mul, .rhs = .@"8" }; |
| ... | ... | @@ -105161,15 +107582,15 @@ const Select = struct { |
| 105161 | 107582 | @as(SignedImm, @intCast(op.flags.index.ref.typeOf(s).abiSize(s.cg.pt.zcu)))), |
| 105162 | 107583 | .delta_elem_size => @intCast(@as(SignedImm, @intCast(op.flags.base.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))) - |
| 105163 | 107584 | @as(SignedImm, @intCast(op.flags.index.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)))), |
| 105164 | | .size_add_elem_size => { |
| 107585 | .unaligned_size => @intCast(s.cg.unalignedSize(op.flags.base.ref.typeOf(s))), |
| 107586 | .unaligned_size_add_elem_size => { |
| 105165 | 107587 | const ty = op.flags.base.ref.typeOf(s); |
| 105166 | | break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) + ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)); |
| 107588 | break :lhs @intCast(s.cg.unalignedSize(ty) + ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)); |
| 105167 | 107589 | }, |
| 105168 | | .size_sub_elem_size => { |
| 107590 | .unaligned_size_sub_elem_size => { |
| 105169 | 107591 | const ty = op.flags.base.ref.typeOf(s); |
| 105170 | | break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)); |
| 107592 | break :lhs @intCast(s.cg.unalignedSize(ty) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)); |
| 105171 | 107593 | }, |
| 105172 | | .unaligned_size => @intCast(s.cg.unalignedSize(op.flags.base.ref.typeOf(s))), |
| 105173 | 107594 | .bit_size => @intCast(op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), |
| 105174 | 107595 | .src0_bit_size => @intCast(Select.Operand.Ref.src0.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), |
| 105175 | 107596 | .@"8_size_sub_bit_size" => { |