Source/Packages

Compiler.MachineAArch64Assembly

packages/compiler/src/Compiler/MachineAArch64Assembly.alpha

515 lines66 declarations18.9 KiBSHA-256 393650b20792

def · lines 255–315

aarch64PrependWord

Full file
One encoded word in front of the tail's result; the first refusal wins.
255def aarch64PrependWord =
256  (lambda unrestricted name : Bytes .
257    (lambda unrestricted word : (family AArch64EncodeResult) .
258      (lambda unrestricted tailResult : (family AArch64AssemblyResult) .
259        (eliminate
260          AArch64EncodeResult
261          (lambda unrestricted current : (family AArch64EncodeResult) .
262            (family AArch64AssemblyResult))
263          word
264          (branch
265            AArch64Encoded
266            encoded
267            .
268            (eliminate
269              AArch64AssemblyResult
270              (lambda unrestricted current : (family AArch64AssemblyResult) .
271                (family AArch64AssemblyResult))
272              tailResult
273              (branch
274                AArch64AssemblyEncoded
275                tailBytes
276                .
277                (constructor
278                  AArch64AssemblyResult
279                  AArch64AssemblyEncoded
280                  (bytes-append encoded tailBytes)))
281              (branch
282                AArch64AssemblyEncodeDuplicateLabel
283                duplicate
284                .
285                (constructor AArch64AssemblyResult AArch64AssemblyEncodeDuplicateLabel duplicate))
286              (branch
287                AArch64AssemblyMissingLabel
288                missing
289                .
290                (constructor AArch64AssemblyResult AArch64AssemblyMissingLabel missing))
291              (branch
292                AArch64AssemblyDisplacementOutOfRange
293                label
294                .
295                (constructor AArch64AssemblyResult AArch64AssemblyDisplacementOutOfRange label))
296              (branch
297                AArch64AssemblyOperandRefused
298                value
299                .
300                (constructor AArch64AssemblyResult AArch64AssemblyOperandRefused value))))
301          (branch
302            AArch64ImmediateOutOfRange
303            value
304            .
305            (constructor AArch64AssemblyResult AArch64AssemblyOperandRefused value))
306          (branch
307            AArch64MisalignedOffset
308            value
309            .
310            (constructor AArch64AssemblyResult AArch64AssemblyDisplacementOutOfRange name))
311          (branch
312            AArch64DisplacementOutOfRange
313            value
314            .
315            (constructor AArch64AssemblyResult AArch64AssemblyDisplacementOutOfRange name))))))

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.