Source/Packages

Runtime.NativeFloatPlan

packages/execution/src/Runtime/NativeFloatPlan.alpha

238 lines9 declarations9.6 KiBSHA-256 e708b925915d

def · lines 120–185

nativeFloat64FiniteAssembly

Full file
Binary64 is finite iff its eleven exponent bits are not all ones. RDI is a value, not an address. Only caller-saved RAX is modified; signed zeros and subnormals are accepted. Platform.AArch64.FloatRoutine supplies the admitted twin; an unknown host lowering still refuses.
120def nativeFloat64FiniteAssembly : (family X86NativeAssembly) =
121  (constructor
122    X86NativeAssembly
123    X86NativeAssemblyEmit
124    (constructor
125      X86NativeInstruction
126      X86NativeMoveRegister64
127      (constructor X86NativeRegister64 X86NativeRDI)
128      (constructor X86NativeRegister64 X86NativeRAX))
129    (constructor
130      X86NativeAssembly
131      X86NativeAssemblyEmit
132      (constructor
133        X86NativeInstruction
134        X86NativeShiftRightImmediate64
135        (constructor X86NativeRegister64 X86NativeRAX)
136        (constructor X86NativeImmediate8 X86NativeImmediate8Value (nat-to-byte 52)))
137      (constructor
138        X86NativeAssembly
139        X86NativeAssemblyEmit
140        (constructor
141          X86NativeInstruction
142          X86NativeAndImmediate64
143          (constructor X86NativeRegister64 X86NativeRAX)
144          (x86NativeImmediate32FromNatural 2047))
145        (constructor
146          X86NativeAssembly
147          X86NativeAssemblyEmit
148          (constructor
149            X86NativeInstruction
150            X86NativeCompareImmediate64
151            (constructor X86NativeRegister64 X86NativeRAX)
152            (x86NativeImmediate32FromNatural 2047))
153          (constructor
154            X86NativeAssembly
155            X86NativeAssemblyJumpCondition
156            (constructor X86NativeCondition X86NativeConditionNotZero)
157            b"finite"
158            (constructor
159              X86NativeAssembly
160              X86NativeAssemblyEmit
161              (constructor
162                X86NativeInstruction
163                X86NativeMoveImmediate32
164                (constructor X86NativeRegister64 X86NativeRAX)
165                (x86NativeImmediate32FromNatural 1))
166              (constructor
167                X86NativeAssembly
168                X86NativeAssemblyEmit
169                (constructor X86NativeInstruction X86NativeReturn)
170                (constructor
171                  X86NativeAssembly
172                  X86NativeAssemblyLabel
173                  b"finite"
174                  (constructor
175                    X86NativeAssembly
176                    X86NativeAssemblyEmit
177                    (constructor
178                      X86NativeInstruction
179                      X86NativeClear32
180                      (constructor X86NativeRegister64 X86NativeRAX))
181                    (constructor
182                      X86NativeAssembly
183                      X86NativeAssemblyEmit
184                      (constructor X86NativeInstruction X86NativeReturn)
185                      (constructor X86NativeAssembly X86NativeAssemblyEnd)))))))))))

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.