RepeatEnd: one more iteration done; while iterations remain, continue at
the first body record with the body's records (plus this end) still to
count, otherwise advance past the end.
Resolution scratches RAX/R10/R11; XMM0 preserves the first word while
resolving the second. Equality exits the bounded loop; otherwise the
existing end operation advances its counter and enforces the original cap.
2748def nativePhysicalNativeRepeatEndWhenBlock =
2749 (lambda unrestricted tail : (family X86NativeAssembly) .
2750 (nativePhysicalNativeLabel
2751 nativePhysicalNativeLabelDispatchRepeatEndWhen
2752 (nativePhysicalNativeResolveCall
2753 (byte 64)
2754 npR11
2755 (nativePhysicalNativeEmit
2756 (constructor X86NativeInstruction X86NativeMoveToXMM64 npXMM0 npR11)
2757 (nativePhysicalNativeResolveCall
2758 (byte 88)
2759 npR11
2760 (nativePhysicalNativeEmit
2761 (constructor X86NativeInstruction X86NativeMoveFromXMM64 npRAX npXMM0)
2762 (npCompare
2763 npRAX
2764 npR11
2765 (nativePhysicalNativeJumpCondition
2766 npZero
2767 nativePhysicalNativeLabelAdvance
2768 (nativePhysicalNativeJump nativePhysicalNativeLabelDispatchRepeatEnd tail)))))))))The compiler supplied declaration spans and resolved links from this source snapshot. This page does not assert that this file belongs to a checked closure.