summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Norton2018-09-21 15:09:08 +0100
committerRobert Norton2018-09-21 15:11:56 +0100
commit2bdc5d09389c8fccd8100c0c07c54b2b8895c76a (patch)
tree62264926985604d5d5e8aed4aa5130d7fed13417
parent30e1cdf6aabe611208c50e35058ea18442aa4078 (diff)
Remove cheri and mips specs -- they now have their own repository.
-rw-r--r--README.md7
-rw-r--r--cheri/.gitignore5
-rw-r--r--cheri/Holmakefile11
-rw-r--r--cheri/LOOKING_FOR_SOMETHING.txt1
-rw-r--r--cheri/Makefile137
-rw-r--r--cheri/ROOT4
-rw-r--r--cheri/cheri_insts.sail1353
-rw-r--r--cheri/cheri_prelude_128.sail331
-rw-r--r--cheri/cheri_prelude_256.sail229
-rw-r--r--cheri/cheri_prelude_common.sail534
-rw-r--r--cheri/cheri_types.sail55
-rw-r--r--cheri/sail_latex/commands.tex2667
-rw-r--r--cheri/sail_latex/sailAccessLevel.tex1
-rw-r--r--cheri/sail_latex/sailAccessLevelofnum.tex1
-rw-r--r--cheri/sail_latex/sailBitStr.tex1
-rw-r--r--cheri/sail_latex/sailCPtrCmpOp.tex10
-rw-r--r--cheri/sail_latex/sailCPtrCmpOpofnum.tex1
-rw-r--r--cheri/sail_latex/sailCapCauseReg.tex1
-rw-r--r--cheri/sail_latex/sailCapEx.tex25
-rw-r--r--cheri/sail_latex/sailCapExCode.tex1
-rw-r--r--cheri/sail_latex/sailCapExofnum.tex1
-rw-r--r--cheri/sail_latex/sailCapLen.tex1
-rw-r--r--cheri/sail_latex/sailCapReg.tex1
-rw-r--r--cheri/sail_latex/sailCapStruct.tex22
-rw-r--r--cheri/sail_latex/sailCauseReg.tex1
-rw-r--r--cheri/sail_latex/sailClearRegSet.tex6
-rw-r--r--cheri/sail_latex/sailClearRegSetofnum.tex1
-rw-r--r--cheri/sail_latex/sailComparison.tex10
-rw-r--r--cheri/sail_latex/sailComparisonofnum.tex1
-rw-r--r--cheri/sail_latex/sailContextReg.tex1
-rw-r--r--cheri/sail_latex/sailERETHook.tex1
-rw-r--r--cheri/sail_latex/sailException.tex5
-rw-r--r--cheri/sail_latex/sailExceptionCode.tex1
-rw-r--r--cheri/sail_latex/sailExceptionofnum.tex1
-rw-r--r--cheri/sail_latex/sailMAX.tex1
-rw-r--r--cheri/sail_latex/sailMEMea.tex2
-rw-r--r--cheri/sail_latex/sailMEMeaconditional.tex2
-rw-r--r--cheri/sail_latex/sailMEMr.tex2
-rw-r--r--cheri/sail_latex/sailMEMrreserve.tex2
-rw-r--r--cheri/sail_latex/sailMEMrreservewrapper.tex1
-rw-r--r--cheri/sail_latex/sailMEMrtag.tex1
-rw-r--r--cheri/sail_latex/sailMEMrtagged.tex1
-rw-r--r--cheri/sail_latex/sailMEMrtaggedreserve.tex1
-rw-r--r--cheri/sail_latex/sailMEMrwrapper.tex1
-rw-r--r--cheri/sail_latex/sailMEMsync.tex2
-rw-r--r--cheri/sail_latex/sailMEMval.tex2
-rw-r--r--cheri/sail_latex/sailMEMvalconditional.tex2
-rw-r--r--cheri/sail_latex/sailMEMwconditionalwrapper.tex1
-rw-r--r--cheri/sail_latex/sailMEMwtag.tex1
-rw-r--r--cheri/sail_latex/sailMEMwtagged.tex1
-rw-r--r--cheri/sail_latex/sailMEMwtaggedconditional.tex1
-rw-r--r--cheri/sail_latex/sailMEMwwrapper.tex1
-rw-r--r--cheri/sail_latex/sailMIPSread.tex1
-rw-r--r--cheri/sail_latex/sailMIPSwrite.tex1
-rw-r--r--cheri/sail_latex/sailMemAccessType.tex1
-rw-r--r--cheri/sail_latex/sailMemAccessTypeofnum.tex1
-rw-r--r--cheri/sail_latex/sailMkCapCauseReg.tex1
-rw-r--r--cheri/sail_latex/sailMkCauseReg.tex1
-rw-r--r--cheri/sail_latex/sailMkContextReg.tex1
-rw-r--r--cheri/sail_latex/sailMkStatusReg.tex1
-rw-r--r--cheri/sail_latex/sailMkTLBEntry.tex1
-rw-r--r--cheri/sail_latex/sailMkTLBEntryHiReg.tex1
-rw-r--r--cheri/sail_latex/sailMkTLBEntryLoReg.tex1
-rw-r--r--cheri/sail_latex/sailMkXContextReg.tex1
-rw-r--r--cheri/sail_latex/sailNotWordVal.tex1
-rw-r--r--cheri/sail_latex/sailReadRAM.tex2
-rw-r--r--cheri/sail_latex/sailSignalException.tex1
-rw-r--r--cheri/sail_latex/sailSignalExceptionBadAddr.tex1
-rw-r--r--cheri/sail_latex/sailSignalExceptionMIPS.tex1
-rw-r--r--cheri/sail_latex/sailSignalExceptionTLB.tex1
-rw-r--r--cheri/sail_latex/sailStatusReg.tex1
-rw-r--r--cheri/sail_latex/sailTLBEntry.tex1
-rw-r--r--cheri/sail_latex/sailTLBEntryHiReg.tex1
-rw-r--r--cheri/sail_latex/sailTLBEntryLoReg.tex1
-rw-r--r--cheri/sail_latex/sailTLBIndexT.tex1
-rw-r--r--cheri/sail_latex/sailTLBTranslate.tex1
-rw-r--r--cheri/sail_latex/sailTLBTranslateC.tex1
-rw-r--r--cheri/sail_latex/sailTLBTranslatetwo.tex1
-rw-r--r--cheri/sail_latex/sailTLBWriteEntry.tex1
-rw-r--r--cheri/sail_latex/sailTranslatePC.tex1
-rw-r--r--cheri/sail_latex/sailWordType.tex1
-rw-r--r--cheri/sail_latex/sailWordTypeUnaligned.tex1
-rw-r--r--cheri/sail_latex/sailWordTypeUnalignedofnum.tex1
-rw-r--r--cheri/sail_latex/sailWordTypeofnum.tex1
-rw-r--r--cheri/sail_latex/sailWriteRAM.tex2
-rw-r--r--cheri/sail_latex/sailXContextReg.tex1
-rw-r--r--cheri/sail_latex/sailabsatom.tex7
-rw-r--r--cheri/sail_latex/sailabsint.tex6
-rw-r--r--cheri/sail_latex/sailaddatom.tex2
-rw-r--r--cheri/sail_latex/sailaddbits.tex6
-rw-r--r--cheri/sail_latex/sailaddbitsint.tex6
-rw-r--r--cheri/sail_latex/sailaddint.tex1
-rw-r--r--cheri/sail_latex/sailaddrWrapper.tex1
-rw-r--r--cheri/sail_latex/sailaddrWrapperUnaligned.tex1
-rw-r--r--cheri/sail_latex/sailaddrange.tex2
-rw-r--r--cheri/sail_latex/sailaddvec.tex1
-rw-r--r--cheri/sail_latex/sailaddvecint.tex1
-rw-r--r--cheri/sail_latex/sailandbits.tex1
-rw-r--r--cheri/sail_latex/sailandbool.tex1
-rw-r--r--cheri/sail_latex/sailappend.tex1
-rw-r--r--cheri/sail_latex/sailappendsixfour.tex1
-rw-r--r--cheri/sail_latex/sailbits.tex1
-rw-r--r--cheri/sail_latex/sailbitstobool.tex1
-rw-r--r--cheri/sail_latex/sailbittobool.tex1
-rw-r--r--cheri/sail_latex/sailbitvectoraccess.tex6
-rw-r--r--cheri/sail_latex/sailbitvectorconcat.tex2
-rw-r--r--cheri/sail_latex/sailbitvectorlength.tex1
-rw-r--r--cheri/sail_latex/sailbitvectorupdate.tex6
-rw-r--r--cheri/sail_latex/sailbooltobits.tex1
-rw-r--r--cheri/sail_latex/sailcapRegToCapStruct.tex1
-rw-r--r--cheri/sail_latex/sailcapStructToCapReg.tex1
-rw-r--r--cheri/sail_latex/sailcapStructToMemBits.tex1
-rw-r--r--cheri/sail_latex/sailcapStructToMemBitstwofivesix.tex1
-rw-r--r--cheri/sail_latex/sailcapToString.tex1
-rw-r--r--cheri/sail_latex/sailcastunitvec.tex1
-rw-r--r--cheri/sail_latex/sailcheckCPtwousable.tex1
-rw-r--r--cheri/sail_latex/sailcheckCPzeroAccess.tex1
-rw-r--r--cheri/sail_latex/sailcheckDDCPerms.tex1
-rw-r--r--cheri/sail_latex/sailcompare.tex1
-rw-r--r--cheri/sail_latex/sailconcatstr.tex1
-rw-r--r--cheri/sail_latex/sailcptwonextpc.tex1
-rw-r--r--cheri/sail_latex/saildecode.tex1
-rw-r--r--cheri/sail_latex/saildecodefailure.tex6
-rw-r--r--cheri/sail_latex/saildecodefailureofnum.tex1
-rw-r--r--cheri/sail_latex/saildiv.tex7
-rw-r--r--cheri/sail_latex/saildivint.tex7
-rw-r--r--cheri/sail_latex/saildumpcptwostate.tex1
-rw-r--r--cheri/sail_latex/saileqanything.tex1
-rw-r--r--cheri/sail_latex/saileqatom.tex1
-rw-r--r--cheri/sail_latex/saileqbit.tex1
-rw-r--r--cheri/sail_latex/saileqbits.tex6
-rw-r--r--cheri/sail_latex/saileqbittwo.tex1
-rw-r--r--cheri/sail_latex/saileqbool.tex1
-rw-r--r--cheri/sail_latex/saileqint.tex1
-rw-r--r--cheri/sail_latex/saileqrange.tex1
-rw-r--r--cheri/sail_latex/sailexecute.tex1
-rw-r--r--cheri/sail_latex/sailexecutebranch.tex1
-rw-r--r--cheri/sail_latex/sailexecutebranchpcc.tex1
-rw-r--r--cheri/sail_latex/sailextendLoad.tex1
-rw-r--r--cheri/sail_latex/sailfnAccessLevelofnum.tex5
-rw-r--r--cheri/sail_latex/sailfnCPtrCmpOpofnum.tex10
-rw-r--r--cheri/sail_latex/sailfnCapExCode.tex26
-rw-r--r--cheri/sail_latex/sailfnCapExofnum.tex25
-rw-r--r--cheri/sail_latex/sailfnClearRegSetofnum.tex6
-rw-r--r--cheri/sail_latex/sailfnComparisonofnum.tex10
-rw-r--r--cheri/sail_latex/sailfnERETHook.tex6
-rw-r--r--cheri/sail_latex/sailfnExceptionCode.tex23
-rw-r--r--cheri/sail_latex/sailfnExceptionofnum.tex21
-rw-r--r--cheri/sail_latex/sailfnMAX.tex1
-rw-r--r--cheri/sail_latex/sailfnMEMea.tex1
-rw-r--r--cheri/sail_latex/sailfnMEMeaconditional.tex1
-rw-r--r--cheri/sail_latex/sailfnMEMr.tex1
-rw-r--r--cheri/sail_latex/sailfnMEMrreserve.tex1
-rw-r--r--cheri/sail_latex/sailfnMEMrreservewrapper.tex2
-rw-r--r--cheri/sail_latex/sailfnMEMrtagged.tex8
-rw-r--r--cheri/sail_latex/sailfnMEMrtaggedreserve.tex8
-rw-r--r--cheri/sail_latex/sailfnMEMrwrapper.tex13
-rw-r--r--cheri/sail_latex/sailfnMEMsync.tex1
-rw-r--r--cheri/sail_latex/sailfnMEMval.tex1
-rw-r--r--cheri/sail_latex/sailfnMEMvalconditional.tex1
-rw-r--r--cheri/sail_latex/sailfnMEMwconditionalwrapper.tex11
-rw-r--r--cheri/sail_latex/sailfnMEMwtagged.tex8
-rw-r--r--cheri/sail_latex/sailfnMEMwtaggedconditional.tex10
-rw-r--r--cheri/sail_latex/sailfnMEMwwrapper.tex16
-rw-r--r--cheri/sail_latex/sailfnMIPSread.tex1
-rw-r--r--cheri/sail_latex/sailfnMIPSwrite.tex1
-rw-r--r--cheri/sail_latex/sailfnMemAccessTypeofnum.tex5
-rw-r--r--cheri/sail_latex/sailfnMkCapCauseReg.tex1
-rw-r--r--cheri/sail_latex/sailfnMkCauseReg.tex1
-rw-r--r--cheri/sail_latex/sailfnMkContextReg.tex1
-rw-r--r--cheri/sail_latex/sailfnMkStatusReg.tex1
-rw-r--r--cheri/sail_latex/sailfnMkTLBEntry.tex1
-rw-r--r--cheri/sail_latex/sailfnMkTLBEntryHiReg.tex1
-rw-r--r--cheri/sail_latex/sailfnMkTLBEntryLoReg.tex1
-rw-r--r--cheri/sail_latex/sailfnMkXContextReg.tex1
-rw-r--r--cheri/sail_latex/sailfnNotWordVal.tex2
-rw-r--r--cheri/sail_latex/sailfnSignalException.tex18
-rw-r--r--cheri/sail_latex/sailfnSignalExceptionBadAddr.tex5
-rw-r--r--cheri/sail_latex/sailfnSignalExceptionMIPS.tex39
-rw-r--r--cheri/sail_latex/sailfnSignalExceptionTLB.tex9
-rw-r--r--cheri/sail_latex/sailfnTLBTranslate.tex2
-rw-r--r--cheri/sail_latex/sailfnTLBTranslateC.tex31
-rw-r--r--cheri/sail_latex/sailfnTLBTranslatetwo.tex36
-rw-r--r--cheri/sail_latex/sailfnTLBWriteEntry.tex36
-rw-r--r--cheri/sail_latex/sailfnTranslatePC.tex15
-rw-r--r--cheri/sail_latex/sailfnWordTypeUnalignedofnum.tex6
-rw-r--r--cheri/sail_latex/sailfnWordTypeofnum.tex6
-rw-r--r--cheri/sail_latex/sailfnaddrWrapper.tex16
-rw-r--r--cheri/sail_latex/sailfnaddrWrapperUnaligned.tex24
-rw-r--r--cheri/sail_latex/sailfnbitstobool.tex1
-rw-r--r--cheri/sail_latex/sailfnbittobool.tex4
-rw-r--r--cheri/sail_latex/sailfnbooltobits.tex1
-rw-r--r--cheri/sail_latex/sailfncapRegToCapStruct.tex23
-rw-r--r--cheri/sail_latex/sailfncapStructToCapReg.tex1
-rw-r--r--cheri/sail_latex/sailfncapStructToMemBits.tex2
-rw-r--r--cheri/sail_latex/sailfncapStructToMemBitstwofivesix.tex10
-rw-r--r--cheri/sail_latex/sailfncapToString.tex16
-rw-r--r--cheri/sail_latex/sailfncastunitvec.tex4
-rw-r--r--cheri/sail_latex/sailfncheckCPtwousable.tex5
-rw-r--r--cheri/sail_latex/sailfncheckCPzeroAccess.tex9
-rw-r--r--cheri/sail_latex/sailfncheckDDCPerms.tex12
-rw-r--r--cheri/sail_latex/sailfncompare.tex11
-rw-r--r--cheri/sail_latex/sailfncptwonextpc.tex8
-rw-r--r--cheri/sail_latex/sailfndecodeSome.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeADD.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeADDI.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeADDIU.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeADDU.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeAND.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeANDI.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeBCMPZ.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeBEQ.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeBREAK.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCACHE.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCAndPerm.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCBX.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCBZ.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCBuildCap.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCCSeal.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCCall.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCCheckPerm.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCCheckType.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCClearTag.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCCopyType.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCFromPtr.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCGetAddr.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCGetBase.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCGetCauserd.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCGetLen.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCGetOffset.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCGetPCCSetOffset.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCGetPCCcd.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCGetPerm.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCGetSealed.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCGetTag.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCGetType.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCIncOffset.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCIncOffsetImmediate.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCJALR.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCLC.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCLoad.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCMOVX.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCPtrCmp.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCReadHwr.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCReturn.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCSC.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCSeal.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCSetBounds.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCSetBoundsExact.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCSetBoundsImmediate.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCSetCausers.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCSetCausert.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCSetOffset.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCStore.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCSub.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCTestSubset.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCToPtr.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCUnseal.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCWriteHwr.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeClearRegs.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeCtwoDumprt.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDADD.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDADDI.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDADDIU.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDADDU.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDDIV.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDDIVU.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDIV.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDIVU.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDMULT.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDMULTU.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDSLL.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDSLLV.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDSLLthreetwo.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDSRA.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDSRAV.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDSRAthreetwo.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDSRL.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDSRLV.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDSRLthreetwo.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDSUB.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeDSUBU.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeERET.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeHCF.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeJALR.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeJALoffset.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeJRrs.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeJoffset.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeLDL.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeLDR.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeLUI.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeLWL.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeLWR.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeLoad.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMADD.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMADDU.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMFCzero.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMFHIrd.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMFLOrd.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMOVN.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMOVZ.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMSUB.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMSUBU.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMTCzero.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMTHIrs.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMTLOrs.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMUL.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMULT.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeMULTU.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeNOR.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeOR.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeORI.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeRDHWR.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeRI.tex1
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSDL.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSDR.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSLL.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSLLV.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSLT.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSLTI.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSLTIU.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSLTU.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSRA.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSRAV.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSRL.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSRLV.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSUB.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSUBU.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSWL.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSWR.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSYNC.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeSYSCALL.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeStore.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeTRAPIMM.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeTRAPREG.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeWAIT.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeXOR.tex2
-rw-r--r--cheri/sail_latex/sailfndecodeSomeXORI.tex2
-rw-r--r--cheri/sail_latex/sailfndecodefailureofnum.tex6
-rw-r--r--cheri/sail_latex/sailfndumpcptwostate.tex17
-rw-r--r--cheri/sail_latex/sailfnexecuteADD.tex13
-rw-r--r--cheri/sail_latex/sailfnexecuteADDI.tex12
-rw-r--r--cheri/sail_latex/sailfnexecuteADDIU.tex8
-rw-r--r--cheri/sail_latex/sailfnexecuteADDU.tex9
-rw-r--r--cheri/sail_latex/sailfnexecuteAND.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteANDI.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteBCMPZ.tex17
-rw-r--r--cheri/sail_latex/sailfnexecuteBEQ.tex13
-rw-r--r--cheri/sail_latex/sailfnexecuteBREAK.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteCACHE.tex2
-rw-r--r--cheri/sail_latex/sailfnexecuteCAndPerm.tex18
-rw-r--r--cheri/sail_latex/sailfnexecuteCBX.tex11
-rw-r--r--cheri/sail_latex/sailfnexecuteCBZ.tex11
-rw-r--r--cheri/sail_latex/sailfnexecuteCBuildCap.tex40
-rw-r--r--cheri/sail_latex/sailfnexecuteCCSeal.tex37
-rw-r--r--cheri/sail_latex/sailfnexecuteCCall.tex32
-rw-r--r--cheri/sail_latex/sailfnexecuteCCheckPerm.tex13
-rw-r--r--cheri/sail_latex/sailfnexecuteCCheckType.tex20
-rw-r--r--cheri/sail_latex/sailfnexecuteCClearTag.tex13
-rw-r--r--cheri/sail_latex/sailfnexecuteCCopyType.tex31
-rw-r--r--cheri/sail_latex/sailfnexecuteCFromPtr.tex22
-rw-r--r--cheri/sail_latex/sailfnexecuteCGetAddr.tex9
-rw-r--r--cheri/sail_latex/sailfnexecuteCGetBase.tex9
-rw-r--r--cheri/sail_latex/sailfnexecuteCGetCause.tex8
-rw-r--r--cheri/sail_latex/sailfnexecuteCGetLen.tex10
-rw-r--r--cheri/sail_latex/sailfnexecuteCGetOffset.tex9
-rw-r--r--cheri/sail_latex/sailfnexecuteCGetPCC.tex11
-rw-r--r--cheri/sail_latex/sailfnexecuteCGetPCCSetOffset.tex14
-rw-r--r--cheri/sail_latex/sailfnexecuteCGetPerm.tex9
-rw-r--r--cheri/sail_latex/sailfnexecuteCGetSealed.tex9
-rw-r--r--cheri/sail_latex/sailfnexecuteCGetTag.tex9
-rw-r--r--cheri/sail_latex/sailfnexecuteCGetType.tex11
-rw-r--r--cheri/sail_latex/sailfnexecuteCIncOffset.tex18
-rw-r--r--cheri/sail_latex/sailfnexecuteCIncOffsetImmediate.tex18
-rw-r--r--cheri/sail_latex/sailfnexecuteCJALR.tex35
-rw-r--r--cheri/sail_latex/sailfnexecuteCLC.tex44
-rw-r--r--cheri/sail_latex/sailfnexecuteCLoad.tex39
-rw-r--r--cheri/sail_latex/sailfnexecuteCMOVX.tex10
-rw-r--r--cheri/sail_latex/sailfnexecuteCPtrCmp.tex43
-rw-r--r--cheri/sail_latex/sailfnexecuteCReadHwr.tex35
-rw-r--r--cheri/sail_latex/sailfnexecuteCReturn.tex5
-rw-r--r--cheri/sail_latex/sailfnexecuteCSC.tex48
-rw-r--r--cheri/sail_latex/sailfnexecuteCSeal.tex37
-rw-r--r--cheri/sail_latex/sailfnexecuteCSetBounds.tex25
-rw-r--r--cheri/sail_latex/sailfnexecuteCSetBoundsExact.tex28
-rw-r--r--cheri/sail_latex/sailfnexecuteCSetBoundsImmediate.tex25
-rw-r--r--cheri/sail_latex/sailfnexecuteCSetCause.tex12
-rw-r--r--cheri/sail_latex/sailfnexecuteCSetOffset.tex18
-rw-r--r--cheri/sail_latex/sailfnexecuteCStore.tex53
-rw-r--r--cheri/sail_latex/sailfnexecuteCSub.tex14
-rw-r--r--cheri/sail_latex/sailfnexecuteCTestSubset.tex29
-rw-r--r--cheri/sail_latex/sailfnexecuteCToPtr.tex27
-rw-r--r--cheri/sail_latex/sailfnexecuteCUnseal.tex35
-rw-r--r--cheri/sail_latex/sailfnexecuteCWriteHwr.tex35
-rw-r--r--cheri/sail_latex/sailfnexecuteClearRegs.tex21
-rw-r--r--cheri/sail_latex/sailfnexecuteCtwoDump.tex2
-rw-r--r--cheri/sail_latex/sailfnexecuteDADD.tex10
-rw-r--r--cheri/sail_latex/sailfnexecuteDADDI.tex10
-rw-r--r--cheri/sail_latex/sailfnexecuteDADDIU.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteDADDU.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteDDIV.tex16
-rw-r--r--cheri/sail_latex/sailfnexecuteDDIVU.tex16
-rw-r--r--cheri/sail_latex/sailfnexecuteDIV.tex19
-rw-r--r--cheri/sail_latex/sailfnexecuteDIVU.tex19
-rw-r--r--cheri/sail_latex/sailfnexecuteDMULT.tex6
-rw-r--r--cheri/sail_latex/sailfnexecuteDMULTU.tex6
-rw-r--r--cheri/sail_latex/sailfnexecuteDSLL.tex5
-rw-r--r--cheri/sail_latex/sailfnexecuteDSLLV.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteDSLLthreetwo.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteDSRA.tex5
-rw-r--r--cheri/sail_latex/sailfnexecuteDSRAV.tex6
-rw-r--r--cheri/sail_latex/sailfnexecuteDSRAthreetwo.tex6
-rw-r--r--cheri/sail_latex/sailfnexecuteDSRL.tex5
-rw-r--r--cheri/sail_latex/sailfnexecuteDSRLV.tex6
-rw-r--r--cheri/sail_latex/sailfnexecuteDSRLthreetwo.tex6
-rw-r--r--cheri/sail_latex/sailfnexecuteDSUB.tex10
-rw-r--r--cheri/sail_latex/sailfnexecuteDSUBU.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteERET.tex16
-rw-r--r--cheri/sail_latex/sailfnexecuteHCF.tex2
-rw-r--r--cheri/sail_latex/sailfnexecuteJ.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteJAL.tex5
-rw-r--r--cheri/sail_latex/sailfnexecuteJALR.tex5
-rw-r--r--cheri/sail_latex/sailfnexecuteJR.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteLDL.tex20
-rw-r--r--cheri/sail_latex/sailfnexecuteLDR.tex20
-rw-r--r--cheri/sail_latex/sailfnexecuteLUI.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteLWL.tex17
-rw-r--r--cheri/sail_latex/sailfnexecuteLWR.tex17
-rw-r--r--cheri/sail_latex/sailfnexecuteLoad.tex30
-rw-r--r--cheri/sail_latex/sailfnexecuteMADD.tex12
-rw-r--r--cheri/sail_latex/sailfnexecuteMADDU.tex12
-rw-r--r--cheri/sail_latex/sailfnexecuteMFCzero.tex70
-rw-r--r--cheri/sail_latex/sailfnexecuteMFHI.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteMFLO.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteMOVN.tex5
-rw-r--r--cheri/sail_latex/sailfnexecuteMOVZ.tex5
-rw-r--r--cheri/sail_latex/sailfnexecuteMSUB.tex12
-rw-r--r--cheri/sail_latex/sailfnexecuteMSUBU.tex12
-rw-r--r--cheri/sail_latex/sailfnexecuteMTCzero.tex52
-rw-r--r--cheri/sail_latex/sailfnexecuteMTHI.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteMTLO.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteMUL.tex15
-rw-r--r--cheri/sail_latex/sailfnexecuteMULT.tex11
-rw-r--r--cheri/sail_latex/sailfnexecuteMULTU.tex11
-rw-r--r--cheri/sail_latex/sailfnexecuteNOR.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteOR.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteORI.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteRDHWR.tex18
-rw-r--r--cheri/sail_latex/sailfnexecuteRI.tex2
-rw-r--r--cheri/sail_latex/sailfnexecuteSDL.tex19
-rw-r--r--cheri/sail_latex/sailfnexecuteSDR.tex20
-rw-r--r--cheri/sail_latex/sailfnexecuteSLL.tex5
-rw-r--r--cheri/sail_latex/sailfnexecuteSLLV.tex6
-rw-r--r--cheri/sail_latex/sailfnexecuteSLT.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteSLTI.tex6
-rw-r--r--cheri/sail_latex/sailfnexecuteSLTIU.tex6
-rw-r--r--cheri/sail_latex/sailfnexecuteSLTU.tex6
-rw-r--r--cheri/sail_latex/sailfnexecuteSRA.tex10
-rw-r--r--cheri/sail_latex/sailfnexecuteSRAV.tex11
-rw-r--r--cheri/sail_latex/sailfnexecuteSRL.tex10
-rw-r--r--cheri/sail_latex/sailfnexecuteSRLV.tex11
-rw-r--r--cheri/sail_latex/sailfnexecuteSUB.tex13
-rw-r--r--cheri/sail_latex/sailfnexecuteSUBU.tex9
-rw-r--r--cheri/sail_latex/sailfnexecuteSWL.tex15
-rw-r--r--cheri/sail_latex/sailfnexecuteSWR.tex16
-rw-r--r--cheri/sail_latex/sailfnexecuteSYNC.tex2
-rw-r--r--cheri/sail_latex/sailfnexecuteSYSCALL.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteStore.tex29
-rw-r--r--cheri/sail_latex/sailfnexecuteTLBP.tex14
-rw-r--r--cheri/sail_latex/sailfnexecuteTLBR.tex24
-rw-r--r--cheri/sail_latex/sailfnexecuteTLBWI.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteTLBWR.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteTRAPIMM.tex8
-rw-r--r--cheri/sail_latex/sailfnexecuteTRAPREG.tex8
-rw-r--r--cheri/sail_latex/sailfnexecuteWAIT.tex3
-rw-r--r--cheri/sail_latex/sailfnexecuteXOR.tex4
-rw-r--r--cheri/sail_latex/sailfnexecuteXORI.tex4
-rw-r--r--cheri/sail_latex/sailfnexecutebranch.tex4
-rw-r--r--cheri/sail_latex/sailfnexecutebranchpcc.tex5
-rw-r--r--cheri/sail_latex/sailfnextendLoad.tex6
-rw-r--r--cheri/sail_latex/sailfngetAccessLevel.tex10
-rw-r--r--cheri/sail_latex/sailfngetCapBase.tex1
-rw-r--r--cheri/sail_latex/sailfngetCapCauseRegExcCode.tex1
-rw-r--r--cheri/sail_latex/sailfngetCapCauseRegRegNum.tex1
-rw-r--r--cheri/sail_latex/sailfngetCapCauseRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfngetCapCursor.tex1
-rw-r--r--cheri/sail_latex/sailfngetCapLength.tex1
-rw-r--r--cheri/sail_latex/sailfngetCapOffset.tex1
-rw-r--r--cheri/sail_latex/sailfngetCapPerms.tex16
-rw-r--r--cheri/sail_latex/sailfngetCapTop.tex1
-rw-r--r--cheri/sail_latex/sailfngetCauseRegBD.tex1
-rw-r--r--cheri/sail_latex/sailfngetCauseRegCE.tex1
-rw-r--r--cheri/sail_latex/sailfngetCauseRegExcCode.tex1
-rw-r--r--cheri/sail_latex/sailfngetCauseRegIP.tex1
-rw-r--r--cheri/sail_latex/sailfngetCauseRegIV.tex1
-rw-r--r--cheri/sail_latex/sailfngetCauseRegWP.tex1
-rw-r--r--cheri/sail_latex/sailfngetCauseRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfngetContextRegBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailfngetContextRegPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailfngetContextRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfngetStatusRegBEV.tex1
-rw-r--r--cheri/sail_latex/sailfngetStatusRegCU.tex1
-rw-r--r--cheri/sail_latex/sailfngetStatusRegERL.tex1
-rw-r--r--cheri/sail_latex/sailfngetStatusRegEXL.tex1
-rw-r--r--cheri/sail_latex/sailfngetStatusRegIE.tex1
-rw-r--r--cheri/sail_latex/sailfngetStatusRegIM.tex1
-rw-r--r--cheri/sail_latex/sailfngetStatusRegKSU.tex1
-rw-r--r--cheri/sail_latex/sailfngetStatusRegKX.tex1
-rw-r--r--cheri/sail_latex/sailfngetStatusRegSX.tex1
-rw-r--r--cheri/sail_latex/sailfngetStatusRegUX.tex1
-rw-r--r--cheri/sail_latex/sailfngetStatusRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryHiRegASID.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryHiRegR.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryHiRegVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryHiRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryLoRegC.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryLoRegCapL.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryLoRegCapS.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryLoRegD.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryLoRegG.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryLoRegPFN.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryLoRegV.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryLoRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryasid.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntrybits.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntrycaplone.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntrycaplzero.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntrycapsone.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntrycapszero.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntrycone.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryczero.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntrydone.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntrydzero.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryg.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntrypagemask.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntrypfnone.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntrypfnzero.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryr.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryvalid.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryvone.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryvpntwo.tex1
-rw-r--r--cheri/sail_latex/sailfngetTLBEntryvzero.tex1
-rw-r--r--cheri/sail_latex/sailfngetXContextRegXBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailfngetXContextRegXPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailfngetXContextRegXR.tex1
-rw-r--r--cheri/sail_latex/sailfngetXContextRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfngrantsAccess.tex2
-rw-r--r--cheri/sail_latex/sailfnincCapOffset.tex3
-rw-r--r--cheri/sail_latex/sailfnincrementCPzeroCount.tex17
-rw-r--r--cheri/sail_latex/sailfninitcptwostate.tex19
-rw-r--r--cheri/sail_latex/sailfninitcpzerostate.tex3
-rw-r--r--cheri/sail_latex/sailfnintofAccessLevel.tex6
-rw-r--r--cheri/sail_latex/sailfninttocap.tex2
-rw-r--r--cheri/sail_latex/sailfnisAddressAligned.tex3
-rw-r--r--cheri/sail_latex/sailfnisnone.tex4
-rw-r--r--cheri/sail_latex/sailfnissome.tex4
-rw-r--r--cheri/sail_latex/sailfnmask.tex1
-rw-r--r--cheri/sail_latex/sailfnmemBitsToCapBits.tex2
-rw-r--r--cheri/sail_latex/sailfnmipssignextend.tex1
-rw-r--r--cheri/sail_latex/sailfnmipszzeroextend.tex1
-rw-r--r--cheri/sail_latex/sailfnneqanything.tex1
-rw-r--r--cheri/sail_latex/sailfnneqatom.tex1
-rw-r--r--cheri/sail_latex/sailfnneqbool.tex1
-rw-r--r--cheri/sail_latex/sailfnneqint.tex1
-rw-r--r--cheri/sail_latex/sailfnneqrange.tex1
-rw-r--r--cheri/sail_latex/sailfnneqvec.tex1
-rw-r--r--cheri/sail_latex/sailfnnumofAccessLevel.tex5
-rw-r--r--cheri/sail_latex/sailfnnumofCPtrCmpOp.tex10
-rw-r--r--cheri/sail_latex/sailfnnumofCapEx.tex25
-rw-r--r--cheri/sail_latex/sailfnnumofClearRegSet.tex6
-rw-r--r--cheri/sail_latex/sailfnnumofComparison.tex10
-rw-r--r--cheri/sail_latex/sailfnnumofException.tex21
-rw-r--r--cheri/sail_latex/sailfnnumofMemAccessType.tex5
-rw-r--r--cheri/sail_latex/sailfnnumofWordType.tex6
-rw-r--r--cheri/sail_latex/sailfnnumofWordTypeUnaligned.tex6
-rw-r--r--cheri/sail_latex/sailfnnumofdecodefailure.tex6
-rw-r--r--cheri/sail_latex/sailfnones.tex1
-rw-r--r--cheri/sail_latex/sailfnpccaccesssystemregs.tex3
-rw-r--r--cheri/sail_latex/sailfnrGPR.tex4
-rw-r--r--cheri/sail_latex/sailfnraisectwoexception.tex6
-rw-r--r--cheri/sail_latex/sailfnraisectwoexceptioneight.tex9
-rw-r--r--cheri/sail_latex/sailfnraisectwoexceptionnoreg.tex2
-rw-r--r--cheri/sail_latex/sailfnreadCapReg.tex6
-rw-r--r--cheri/sail_latex/sailfnreadCapRegDDC.tex3
-rw-r--r--cheri/sail_latex/sailfnregisterinaccessible.tex7
-rw-r--r--cheri/sail_latex/sailfnsailmask.tex1
-rw-r--r--cheri/sail_latex/sailfnsealCap.tex2
-rw-r--r--cheri/sail_latex/sailfnsetCapBounds.tex3
-rw-r--r--cheri/sail_latex/sailfnsetCapCauseRegExcCode.tex1
-rw-r--r--cheri/sail_latex/sailfnsetCapCauseRegRegNum.tex1
-rw-r--r--cheri/sail_latex/sailfnsetCapCauseRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfnsetCapOffset.tex2
-rw-r--r--cheri/sail_latex/sailfnsetCapPerms.tex16
-rw-r--r--cheri/sail_latex/sailfnsetCauseRegBD.tex1
-rw-r--r--cheri/sail_latex/sailfnsetCauseRegCE.tex1
-rw-r--r--cheri/sail_latex/sailfnsetCauseRegExcCode.tex1
-rw-r--r--cheri/sail_latex/sailfnsetCauseRegIP.tex1
-rw-r--r--cheri/sail_latex/sailfnsetCauseRegIV.tex1
-rw-r--r--cheri/sail_latex/sailfnsetCauseRegWP.tex1
-rw-r--r--cheri/sail_latex/sailfnsetCauseRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfnsetContextRegBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailfnsetContextRegPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailfnsetContextRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfnsetStatusRegBEV.tex1
-rw-r--r--cheri/sail_latex/sailfnsetStatusRegCU.tex1
-rw-r--r--cheri/sail_latex/sailfnsetStatusRegERL.tex1
-rw-r--r--cheri/sail_latex/sailfnsetStatusRegEXL.tex1
-rw-r--r--cheri/sail_latex/sailfnsetStatusRegIE.tex1
-rw-r--r--cheri/sail_latex/sailfnsetStatusRegIM.tex1
-rw-r--r--cheri/sail_latex/sailfnsetStatusRegKSU.tex1
-rw-r--r--cheri/sail_latex/sailfnsetStatusRegKX.tex1
-rw-r--r--cheri/sail_latex/sailfnsetStatusRegSX.tex1
-rw-r--r--cheri/sail_latex/sailfnsetStatusRegUX.tex1
-rw-r--r--cheri/sail_latex/sailfnsetStatusRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryHiRegASID.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryHiRegR.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryHiRegVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryHiRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryLoRegC.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryLoRegCapL.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryLoRegCapS.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryLoRegD.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryLoRegG.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryLoRegPFN.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryLoRegV.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryLoRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryasid.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntrybits.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntrycaplone.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntrycaplzero.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntrycapsone.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntrycapszero.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntrycone.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryczero.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntrydone.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntrydzero.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryg.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntrypagemask.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntrypfnone.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntrypfnzero.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryr.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryvalid.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryvone.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryvpntwo.tex1
-rw-r--r--cheri/sail_latex/sailfnsetTLBEntryvzero.tex1
-rw-r--r--cheri/sail_latex/sailfnsetXContextRegXBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailfnsetXContextRegXPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailfnsetXContextRegXR.tex1
-rw-r--r--cheri/sail_latex/sailfnsetXContextRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfnsupportedinstructions.tex1
-rw-r--r--cheri/sail_latex/sailfntlbEntryMatch.tex12
-rw-r--r--cheri/sail_latex/sailfntlbSearch.tex10
-rw-r--r--cheri/sail_latex/sailfntobits.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateCapCauseRegExcCode.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateCapCauseRegRegNum.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateCapCauseRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateCauseRegBD.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateCauseRegCE.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateCauseRegExcCode.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateCauseRegIP.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateCauseRegIV.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateCauseRegWP.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateCauseRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateContextRegBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateContextRegPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateContextRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateStatusRegBEV.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateStatusRegCU.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateStatusRegERL.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateStatusRegEXL.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateStatusRegIE.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateStatusRegIM.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateStatusRegKSU.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateStatusRegKX.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateStatusRegSX.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateStatusRegUX.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateStatusRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryHiRegASID.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryHiRegR.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryHiRegVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryHiRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryLoRegC.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryLoRegCapL.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryLoRegCapS.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryLoRegD.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryLoRegG.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryLoRegPFN.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryLoRegV.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryLoRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryasid.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntrybits.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntrycaplone.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntrycaplzero.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntrycapsone.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntrycapszero.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntrycone.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryczero.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntrydone.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntrydzero.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryg.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntrypagemask.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntrypfnone.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntrypfnzero.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryr.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryvalid.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryvone.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryvpntwo.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateTLBEntryvzero.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateXContextRegXBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateXContextRegXPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateXContextRegXR.tex1
-rw-r--r--cheri/sail_latex/sailfnupdateXContextRegbits.tex1
-rw-r--r--cheri/sail_latex/sailfnwGPR.tex8
-rw-r--r--cheri/sail_latex/sailfnwordWidthBytes.tex7
-rw-r--r--cheri/sail_latex/sailfnwriteCapReg.tex6
-rw-r--r--cheri/sail_latex/sailfnzeightoperatorzzerozIsznine.tex1
-rw-r--r--cheri/sail_latex/sailfnzeightoperatorzzerozIuznine.tex1
-rw-r--r--cheri/sail_latex/sailfnzeightoperatorzzerozKzJsznine.tex1
-rw-r--r--cheri/sail_latex/sailfnzeightoperatorzzerozKzJuznine.tex1
-rw-r--r--cheri/sail_latex/sailfnzeightoperatorzzerozQzQznine.tex1
-rw-r--r--cheri/sail_latex/sailfnzzeros.tex1
-rw-r--r--cheri/sail_latex/sailgetAccessLevel.tex1
-rw-r--r--cheri/sail_latex/sailgetCapBase.tex1
-rw-r--r--cheri/sail_latex/sailgetCapCauseRegExcCode.tex1
-rw-r--r--cheri/sail_latex/sailgetCapCauseRegRegNum.tex1
-rw-r--r--cheri/sail_latex/sailgetCapCauseRegbits.tex1
-rw-r--r--cheri/sail_latex/sailgetCapCursor.tex1
-rw-r--r--cheri/sail_latex/sailgetCapLength.tex1
-rw-r--r--cheri/sail_latex/sailgetCapOffset.tex1
-rw-r--r--cheri/sail_latex/sailgetCapPerms.tex1
-rw-r--r--cheri/sail_latex/sailgetCapTop.tex1
-rw-r--r--cheri/sail_latex/sailgetCauseRegBD.tex1
-rw-r--r--cheri/sail_latex/sailgetCauseRegCE.tex1
-rw-r--r--cheri/sail_latex/sailgetCauseRegExcCode.tex1
-rw-r--r--cheri/sail_latex/sailgetCauseRegIP.tex1
-rw-r--r--cheri/sail_latex/sailgetCauseRegIV.tex1
-rw-r--r--cheri/sail_latex/sailgetCauseRegWP.tex1
-rw-r--r--cheri/sail_latex/sailgetCauseRegbits.tex1
-rw-r--r--cheri/sail_latex/sailgetContextRegBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailgetContextRegPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailgetContextRegbits.tex1
-rw-r--r--cheri/sail_latex/sailgetStatusRegBEV.tex1
-rw-r--r--cheri/sail_latex/sailgetStatusRegCU.tex1
-rw-r--r--cheri/sail_latex/sailgetStatusRegERL.tex1
-rw-r--r--cheri/sail_latex/sailgetStatusRegEXL.tex1
-rw-r--r--cheri/sail_latex/sailgetStatusRegIE.tex1
-rw-r--r--cheri/sail_latex/sailgetStatusRegIM.tex1
-rw-r--r--cheri/sail_latex/sailgetStatusRegKSU.tex1
-rw-r--r--cheri/sail_latex/sailgetStatusRegKX.tex1
-rw-r--r--cheri/sail_latex/sailgetStatusRegSX.tex1
-rw-r--r--cheri/sail_latex/sailgetStatusRegUX.tex1
-rw-r--r--cheri/sail_latex/sailgetStatusRegbits.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryHiRegASID.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryHiRegR.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryHiRegVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryHiRegbits.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryLoRegC.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryLoRegCapL.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryLoRegCapS.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryLoRegD.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryLoRegG.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryLoRegPFN.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryLoRegV.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryLoRegbits.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryasid.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntrybits.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntrycaplone.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntrycaplzero.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntrycapsone.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntrycapszero.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntrycone.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryczero.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntrydone.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntrydzero.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryg.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntrypagemask.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntrypfnone.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntrypfnzero.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryr.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryvalid.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryvone.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryvpntwo.tex1
-rw-r--r--cheri/sail_latex/sailgetTLBEntryvzero.tex1
-rw-r--r--cheri/sail_latex/sailgetXContextRegXBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailgetXContextRegXPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailgetXContextRegXR.tex1
-rw-r--r--cheri/sail_latex/sailgetXContextRegbits.tex1
-rw-r--r--cheri/sail_latex/sailgetsliceint.tex1
-rw-r--r--cheri/sail_latex/sailgettimens.tex1
-rw-r--r--cheri/sail_latex/sailgrantsAccess.tex1
-rw-r--r--cheri/sail_latex/sailgtatom.tex1
-rw-r--r--cheri/sail_latex/sailgtatomrange.tex1
-rw-r--r--cheri/sail_latex/sailgteqatom.tex1
-rw-r--r--cheri/sail_latex/sailgteqatomrange.tex1
-rw-r--r--cheri/sail_latex/sailgteqint.tex1
-rw-r--r--cheri/sail_latex/sailgteqrangeatom.tex1
-rw-r--r--cheri/sail_latex/sailgtint.tex1
-rw-r--r--cheri/sail_latex/sailgtrangeatom.tex1
-rw-r--r--cheri/sail_latex/sailimmonesix.tex1
-rw-r--r--cheri/sail_latex/sailincCapOffset.tex1
-rw-r--r--cheri/sail_latex/sailincrementCPzeroCount.tex1
-rw-r--r--cheri/sail_latex/sailinitcptwostate.tex1
-rw-r--r--cheri/sail_latex/sailinitcpzerostate.tex1
-rw-r--r--cheri/sail_latex/sailintofAccessLevel.tex1
-rw-r--r--cheri/sail_latex/sailintpower.tex1
-rw-r--r--cheri/sail_latex/sailinttocap.tex1
-rw-r--r--cheri/sail_latex/sailisAddressAligned.tex1
-rw-r--r--cheri/sail_latex/sailisnone.tex1
-rw-r--r--cheri/sail_latex/sailissome.tex1
-rw-r--r--cheri/sail_latex/saillength.tex1
-rw-r--r--cheri/sail_latex/sailltatom.tex1
-rw-r--r--cheri/sail_latex/sailltatomrange.tex1
-rw-r--r--cheri/sail_latex/saillteqatom.tex1
-rw-r--r--cheri/sail_latex/saillteqatomrange.tex1
-rw-r--r--cheri/sail_latex/saillteqint.tex1
-rw-r--r--cheri/sail_latex/saillteqrangeatom.tex1
-rw-r--r--cheri/sail_latex/sailltint.tex1
-rw-r--r--cheri/sail_latex/sailltrangeatom.tex1
-rw-r--r--cheri/sail_latex/sailmask.tex1
-rw-r--r--cheri/sail_latex/sailmaxatom.tex1
-rw-r--r--cheri/sail_latex/sailmaxint.tex1
-rw-r--r--cheri/sail_latex/sailmaxnat.tex1
-rw-r--r--cheri/sail_latex/sailmemBitsToCapBits.tex1
-rw-r--r--cheri/sail_latex/sailmin.tex1
-rw-r--r--cheri/sail_latex/sailminatom.tex1
-rw-r--r--cheri/sail_latex/sailminint.tex1
-rw-r--r--cheri/sail_latex/sailminnat.tex1
-rw-r--r--cheri/sail_latex/sailmipssignextend.tex1
-rw-r--r--cheri/sail_latex/sailmipszzeroextend.tex1
-rw-r--r--cheri/sail_latex/sailmod.tex7
-rw-r--r--cheri/sail_latex/sailmodBD.tex1
-rw-r--r--cheri/sail_latex/sailmodBEV.tex1
-rw-r--r--cheri/sail_latex/sailmodBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailmodC.tex1
-rw-r--r--cheri/sail_latex/sailmodCE.tex1
-rw-r--r--cheri/sail_latex/sailmodCU.tex1
-rw-r--r--cheri/sail_latex/sailmodCapL.tex1
-rw-r--r--cheri/sail_latex/sailmodCapS.tex1
-rw-r--r--cheri/sail_latex/sailmodD.tex1
-rw-r--r--cheri/sail_latex/sailmodERL.tex1
-rw-r--r--cheri/sail_latex/sailmodEXL.tex1
-rw-r--r--cheri/sail_latex/sailmodExcCode.tex1
-rw-r--r--cheri/sail_latex/sailmodIE.tex1
-rw-r--r--cheri/sail_latex/sailmodIM.tex1
-rw-r--r--cheri/sail_latex/sailmodIP.tex1
-rw-r--r--cheri/sail_latex/sailmodIV.tex1
-rw-r--r--cheri/sail_latex/sailmodKSU.tex1
-rw-r--r--cheri/sail_latex/sailmodKX.tex1
-rw-r--r--cheri/sail_latex/sailmodPFN.tex1
-rw-r--r--cheri/sail_latex/sailmodPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailmodRegNum.tex1
-rw-r--r--cheri/sail_latex/sailmodSX.tex1
-rw-r--r--cheri/sail_latex/sailmodUX.tex1
-rw-r--r--cheri/sail_latex/sailmodV.tex1
-rw-r--r--cheri/sail_latex/sailmodWP.tex1
-rw-r--r--cheri/sail_latex/sailmodXBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailmodXPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailmodXR.tex1
-rw-r--r--cheri/sail_latex/sailmodasid.tex1
-rw-r--r--cheri/sail_latex/sailmodbits.tex1
-rw-r--r--cheri/sail_latex/sailmodcaplone.tex1
-rw-r--r--cheri/sail_latex/sailmodcaplzero.tex1
-rw-r--r--cheri/sail_latex/sailmodcapsone.tex1
-rw-r--r--cheri/sail_latex/sailmodcapszero.tex1
-rw-r--r--cheri/sail_latex/sailmodcone.tex1
-rw-r--r--cheri/sail_latex/sailmodczero.tex1
-rw-r--r--cheri/sail_latex/sailmoddone.tex1
-rw-r--r--cheri/sail_latex/sailmoddzero.tex1
-rw-r--r--cheri/sail_latex/sailmodg.tex1
-rw-r--r--cheri/sail_latex/sailmodint.tex7
-rw-r--r--cheri/sail_latex/sailmodpagemask.tex1
-rw-r--r--cheri/sail_latex/sailmodpfnone.tex1
-rw-r--r--cheri/sail_latex/sailmodpfnzero.tex1
-rw-r--r--cheri/sail_latex/sailmodr.tex1
-rw-r--r--cheri/sail_latex/sailmodulus.tex1
-rw-r--r--cheri/sail_latex/sailmodvalid.tex1
-rw-r--r--cheri/sail_latex/sailmodvone.tex1
-rw-r--r--cheri/sail_latex/sailmodvpntwo.tex1
-rw-r--r--cheri/sail_latex/sailmodvzero.tex1
-rw-r--r--cheri/sail_latex/sailmultatom.tex2
-rw-r--r--cheri/sail_latex/sailmultint.tex1
-rw-r--r--cheri/sail_latex/sailnegate.tex1
-rw-r--r--cheri/sail_latex/sailnegateatom.tex1
-rw-r--r--cheri/sail_latex/sailnegateint.tex1
-rw-r--r--cheri/sail_latex/sailnegaterange.tex1
-rw-r--r--cheri/sail_latex/sailneqanything.tex1
-rw-r--r--cheri/sail_latex/sailneqatom.tex1
-rw-r--r--cheri/sail_latex/sailneqbool.tex1
-rw-r--r--cheri/sail_latex/sailneqint.tex1
-rw-r--r--cheri/sail_latex/sailneqrange.tex1
-rw-r--r--cheri/sail_latex/sailneqvec.tex1
-rw-r--r--cheri/sail_latex/sailnot.tex1
-rw-r--r--cheri/sail_latex/sailnotbool.tex1
-rw-r--r--cheri/sail_latex/sailnotvec.tex1
-rw-r--r--cheri/sail_latex/sailnumofAccessLevel.tex1
-rw-r--r--cheri/sail_latex/sailnumofCPtrCmpOp.tex1
-rw-r--r--cheri/sail_latex/sailnumofCapEx.tex1
-rw-r--r--cheri/sail_latex/sailnumofClearRegSet.tex1
-rw-r--r--cheri/sail_latex/sailnumofComparison.tex1
-rw-r--r--cheri/sail_latex/sailnumofException.tex1
-rw-r--r--cheri/sail_latex/sailnumofMemAccessType.tex1
-rw-r--r--cheri/sail_latex/sailnumofWordType.tex1
-rw-r--r--cheri/sail_latex/sailnumofWordTypeUnaligned.tex1
-rw-r--r--cheri/sail_latex/sailnumofdecodefailure.tex1
-rw-r--r--cheri/sail_latex/sailones.tex1
-rw-r--r--cheri/sail_latex/sailorbits.tex1
-rw-r--r--cheri/sail_latex/sailorbool.tex1
-rw-r--r--cheri/sail_latex/sailpccaccesssystemregs.tex1
-rw-r--r--cheri/sail_latex/sailplainvectoraccess.tex6
-rw-r--r--cheri/sail_latex/sailplainvectorupdate.tex6
-rw-r--r--cheri/sail_latex/sailpowtwo.tex1
-rw-r--r--cheri/sail_latex/sailprerrbits.tex1
-rw-r--r--cheri/sail_latex/sailprerrendline.tex1
-rw-r--r--cheri/sail_latex/sailprerrint.tex1
-rw-r--r--cheri/sail_latex/sailprerrstring.tex1
-rw-r--r--cheri/sail_latex/sailprint.tex1
-rw-r--r--cheri/sail_latex/sailprintbits.tex1
-rw-r--r--cheri/sail_latex/sailprintint.tex1
-rw-r--r--cheri/sail_latex/sailputchar.tex1
-rw-r--r--cheri/sail_latex/sailquotient.tex1
-rw-r--r--cheri/sail_latex/sailquotientnat.tex1
-rw-r--r--cheri/sail_latex/sailquotroundzzero.tex1
-rw-r--r--cheri/sail_latex/sailrGPR.tex1
-rw-r--r--cheri/sail_latex/sailraisectwoexception.tex1
-rw-r--r--cheri/sail_latex/sailraisectwoexceptioneight.tex1
-rw-r--r--cheri/sail_latex/sailraisectwoexceptionnoreg.tex1
-rw-r--r--cheri/sail_latex/sailreadCapReg.tex1
-rw-r--r--cheri/sail_latex/sailreadCapRegDDC.tex1
-rw-r--r--cheri/sail_latex/sailregderef.tex1
-rw-r--r--cheri/sail_latex/sailregisterinaccessible.tex1
-rw-r--r--cheri/sail_latex/sailregno.tex1
-rw-r--r--cheri/sail_latex/sailregregimmonesix.tex1
-rw-r--r--cheri/sail_latex/sailregregreg.tex1
-rw-r--r--cheri/sail_latex/sailremroundzzero.tex1
-rw-r--r--cheri/sail_latex/sailreplicatebits.tex1
-rw-r--r--cheri/sail_latex/sailreverseendianness.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeBCMPZv.tex2
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeBEQv.tex2
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCAndPermv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCBXv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCBZv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCCheckPermv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCCheckTypev.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCClearTagv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCFromPtrv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCGetBasev.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCGetCauserdv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCGetLenv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCGetOffsetv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCGetPermv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCGetSealedv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCGetTagv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCGetTypev.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCIncOffsetv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCJALRv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCLCv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCLoadv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCMOVXv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCPtrCmpv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCReturnv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCSCv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCSealv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCSetBoundsv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCSetOffsetv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCStorev.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCToPtrv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeCUnsealv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeClearRegsv.tex1
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeHCFv.tex2
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeLoadv.tex2
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeMFCzerov.tex2
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeMTCzerov.tex2
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeStorev.tex2
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeTRAPIMMv.tex2
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomeTRAPREGv.tex2
-rw-r--r--cheri/sail_latex/sailsailfndecodeSomev.tex1
-rw-r--r--cheri/sail_latex/sailsailfnexecuteCCallv.tex46
-rw-r--r--cheri/sail_latex/sailsailmask.tex1
-rw-r--r--cheri/sail_latex/sailsailmaxv.tex1
-rw-r--r--cheri/sail_latex/sailsailmodASIDv.tex1
-rw-r--r--cheri/sail_latex/sailsailmodExcCodev.tex1
-rw-r--r--cheri/sail_latex/sailsailmodGv.tex1
-rw-r--r--cheri/sail_latex/sailsailmodRv.tex1
-rw-r--r--cheri/sail_latex/sailsailmodVPNtwov.tex1
-rw-r--r--cheri/sail_latex/sailsailmodbitsv.tex1
-rw-r--r--cheri/sail_latex/sailsailnegatev.tex1
-rw-r--r--cheri/sail_latex/sailsailregderefv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailfndecodeSomeBCMPZvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailfndecodeSomeBEQvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailfndecodeSomeCJALRvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailfndecodeSomeCLCvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailfndecodeSomeCLoadvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailfndecodeSomeCMOVXvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailfndecodeSomeCPtrCmpvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailfndecodeSomeCStorevv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailfndecodeSomeClearRegsvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailfndecodeSomeLoadvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailfndecodeSomeStorevv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailfndecodeSomeTRAPIMMvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailfndecodeSomeTRAPREGvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailfndecodeSomevv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailmodbitsvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailfndecodeSomeBCMPZvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailfndecodeSomeBEQvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailfndecodeSomeCJALRvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailfndecodeSomeCLoadvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailfndecodeSomeCPtrCmpvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailfndecodeSomeCStorevvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailfndecodeSomeClearRegsvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailfndecodeSomeLoadvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailfndecodeSomeStorevvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailfndecodeSomeTRAPIMMvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailfndecodeSomeTRAPREGvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailfndecodeSomevvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailmodbitsvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailfndecodeSomeBCMPZvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailfndecodeSomeCLoadvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailfndecodeSomeCPtrCmpvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailfndecodeSomeCStorevvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailfndecodeSomeLoadvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailfndecodeSomeStorevvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailfndecodeSomeTRAPIMMvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailfndecodeSomeTRAPREGvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailmodbitsvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeBCMPZvvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeCLoadvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeCStorevvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeLoadvvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeStorevvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeTRAPIMMvvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeTRAPREGvvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailmodbitsvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeCStorevvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeLoadvvvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailmodbitsvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCStorevvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeLoadvvvvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailmodbitsvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeLoadvvvvvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvvvv.tex2
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailsailupdatebitsvvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailsailupdatebitsvvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailsailupdatebitsvvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailsailupdatebitsvvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailupdatebitsvvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailsailzeightoperatorzzerozJzJzninevvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailupdatebitsvv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailzeightoperatorzzerozBzninevv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailzeightoperatorzzerozFzninevv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailzeightoperatorzzerozJzJzninevv.tex1
-rw-r--r--cheri/sail_latex/sailsailsailzeightoperatorzzerozfivezninevv.tex1
-rw-r--r--cheri/sail_latex/sailsailsignextend.tex1
-rw-r--r--cheri/sail_latex/sailsailupdateASIDv.tex1
-rw-r--r--cheri/sail_latex/sailsailupdateExcCodev.tex1
-rw-r--r--cheri/sail_latex/sailsailupdateGv.tex1
-rw-r--r--cheri/sail_latex/sailsailupdateRv.tex1
-rw-r--r--cheri/sail_latex/sailsailupdateVPNtwov.tex1
-rw-r--r--cheri/sail_latex/sailsailupdatebitsv.tex1
-rw-r--r--cheri/sail_latex/sailsailzeightoperatorzzerozAzninev.tex1
-rw-r--r--cheri/sail_latex/sailsailzeightoperatorzzerozBzninev.tex1
-rw-r--r--cheri/sail_latex/sailsailzeightoperatorzzerozDzninev.tex1
-rw-r--r--cheri/sail_latex/sailsailzeightoperatorzzerozFzninev.tex1
-rw-r--r--cheri/sail_latex/sailsailzeightoperatorzzerozJzJzninev.tex1
-rw-r--r--cheri/sail_latex/sailsailzeightoperatorzzerozQzninev.tex1
-rw-r--r--cheri/sail_latex/sailsailzeightoperatorzzerozUzninev.tex1
-rw-r--r--cheri/sail_latex/sailsailzeightoperatorzzerozfivezninev.tex1
-rw-r--r--cheri/sail_latex/sailsailzeightoperatorzzerozonezJzninev.tex1
-rw-r--r--cheri/sail_latex/sailsailzeightoperatorzzerozsixzninev.tex1
-rw-r--r--cheri/sail_latex/sailsailzzeroextend.tex1
-rw-r--r--cheri/sail_latex/sailsailzzeros.tex1
-rw-r--r--cheri/sail_latex/sailsealCap.tex1
-rw-r--r--cheri/sail_latex/sailsetCapBounds.tex1
-rw-r--r--cheri/sail_latex/sailsetCapCauseRegExcCode.tex1
-rw-r--r--cheri/sail_latex/sailsetCapCauseRegRegNum.tex1
-rw-r--r--cheri/sail_latex/sailsetCapCauseRegbits.tex1
-rw-r--r--cheri/sail_latex/sailsetCapOffset.tex1
-rw-r--r--cheri/sail_latex/sailsetCapPerms.tex1
-rw-r--r--cheri/sail_latex/sailsetCauseRegBD.tex1
-rw-r--r--cheri/sail_latex/sailsetCauseRegCE.tex1
-rw-r--r--cheri/sail_latex/sailsetCauseRegExcCode.tex1
-rw-r--r--cheri/sail_latex/sailsetCauseRegIP.tex1
-rw-r--r--cheri/sail_latex/sailsetCauseRegIV.tex1
-rw-r--r--cheri/sail_latex/sailsetCauseRegWP.tex1
-rw-r--r--cheri/sail_latex/sailsetCauseRegbits.tex1
-rw-r--r--cheri/sail_latex/sailsetContextRegBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailsetContextRegPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailsetContextRegbits.tex1
-rw-r--r--cheri/sail_latex/sailsetStatusRegBEV.tex1
-rw-r--r--cheri/sail_latex/sailsetStatusRegCU.tex1
-rw-r--r--cheri/sail_latex/sailsetStatusRegERL.tex1
-rw-r--r--cheri/sail_latex/sailsetStatusRegEXL.tex1
-rw-r--r--cheri/sail_latex/sailsetStatusRegIE.tex1
-rw-r--r--cheri/sail_latex/sailsetStatusRegIM.tex1
-rw-r--r--cheri/sail_latex/sailsetStatusRegKSU.tex1
-rw-r--r--cheri/sail_latex/sailsetStatusRegKX.tex1
-rw-r--r--cheri/sail_latex/sailsetStatusRegSX.tex1
-rw-r--r--cheri/sail_latex/sailsetStatusRegUX.tex1
-rw-r--r--cheri/sail_latex/sailsetStatusRegbits.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryHiRegASID.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryHiRegR.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryHiRegVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryHiRegbits.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryLoRegC.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryLoRegCapL.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryLoRegCapS.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryLoRegD.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryLoRegG.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryLoRegPFN.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryLoRegV.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryLoRegbits.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryasid.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntrybits.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntrycaplone.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntrycaplzero.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntrycapsone.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntrycapszero.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntrycone.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryczero.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntrydone.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntrydzero.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryg.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntrypagemask.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntrypfnone.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntrypfnzero.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryr.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryvalid.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryvone.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryvpntwo.tex1
-rw-r--r--cheri/sail_latex/sailsetTLBEntryvzero.tex1
-rw-r--r--cheri/sail_latex/sailsetXContextRegXBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailsetXContextRegXPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailsetXContextRegXR.tex1
-rw-r--r--cheri/sail_latex/sailsetXContextRegbits.tex1
-rw-r--r--cheri/sail_latex/sailsetslicebits.tex2
-rw-r--r--cheri/sail_latex/sailsetsliceint.tex1
-rw-r--r--cheri/sail_latex/sailshiftbitsleft.tex1
-rw-r--r--cheri/sail_latex/sailshiftbitsright.tex1
-rw-r--r--cheri/sail_latex/sailshiftl.tex1
-rw-r--r--cheri/sail_latex/sailshiftr.tex1
-rw-r--r--cheri/sail_latex/sailshlint.tex1
-rw-r--r--cheri/sail_latex/sailshrint.tex1
-rw-r--r--cheri/sail_latex/sailsigned.tex4
-rw-r--r--cheri/sail_latex/sailsignextend.tex1
-rw-r--r--cheri/sail_latex/sailskipbarr.tex1
-rw-r--r--cheri/sail_latex/sailskipeamem.tex1
-rw-r--r--cheri/sail_latex/sailskipescape.tex1
-rw-r--r--cheri/sail_latex/sailskiprmemt.tex1
-rw-r--r--cheri/sail_latex/sailskiprreg.tex1
-rw-r--r--cheri/sail_latex/sailskipwmvt.tex1
-rw-r--r--cheri/sail_latex/sailskipwreg.tex1
-rw-r--r--cheri/sail_latex/sailslice.tex2
-rw-r--r--cheri/sail_latex/sailstringofint.tex1
-rw-r--r--cheri/sail_latex/sailsubatom.tex2
-rw-r--r--cheri/sail_latex/sailsubint.tex1
-rw-r--r--cheri/sail_latex/sailsubrange.tex2
-rw-r--r--cheri/sail_latex/sailsubvec.tex1
-rw-r--r--cheri/sail_latex/sailsubvecint.tex1
-rw-r--r--cheri/sail_latex/sailsupportedinstructions.tex1
-rw-r--r--cheri/sail_latex/sailtlbEntryMatch.tex1
-rw-r--r--cheri/sail_latex/sailtlbSearch.tex1
-rw-r--r--cheri/sail_latex/sailtobits.tex1
-rw-r--r--cheri/sail_latex/sailtruncate.tex6
-rw-r--r--cheri/sail_latex/sailuintsixfour.tex1
-rw-r--r--cheri/sail_latex/sailunsigned.tex7
-rw-r--r--cheri/sail_latex/sailupdateBD.tex1
-rw-r--r--cheri/sail_latex/sailupdateBEV.tex1
-rw-r--r--cheri/sail_latex/sailupdateBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailupdateC.tex1
-rw-r--r--cheri/sail_latex/sailupdateCE.tex1
-rw-r--r--cheri/sail_latex/sailupdateCU.tex1
-rw-r--r--cheri/sail_latex/sailupdateCapCauseRegExcCode.tex1
-rw-r--r--cheri/sail_latex/sailupdateCapCauseRegRegNum.tex1
-rw-r--r--cheri/sail_latex/sailupdateCapCauseRegbits.tex1
-rw-r--r--cheri/sail_latex/sailupdateCapL.tex1
-rw-r--r--cheri/sail_latex/sailupdateCapS.tex1
-rw-r--r--cheri/sail_latex/sailupdateCauseRegBD.tex1
-rw-r--r--cheri/sail_latex/sailupdateCauseRegCE.tex1
-rw-r--r--cheri/sail_latex/sailupdateCauseRegExcCode.tex1
-rw-r--r--cheri/sail_latex/sailupdateCauseRegIP.tex1
-rw-r--r--cheri/sail_latex/sailupdateCauseRegIV.tex1
-rw-r--r--cheri/sail_latex/sailupdateCauseRegWP.tex1
-rw-r--r--cheri/sail_latex/sailupdateCauseRegbits.tex1
-rw-r--r--cheri/sail_latex/sailupdateContextRegBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailupdateContextRegPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailupdateContextRegbits.tex1
-rw-r--r--cheri/sail_latex/sailupdateD.tex1
-rw-r--r--cheri/sail_latex/sailupdateERL.tex1
-rw-r--r--cheri/sail_latex/sailupdateEXL.tex1
-rw-r--r--cheri/sail_latex/sailupdateExcCode.tex1
-rw-r--r--cheri/sail_latex/sailupdateIE.tex1
-rw-r--r--cheri/sail_latex/sailupdateIM.tex1
-rw-r--r--cheri/sail_latex/sailupdateIP.tex1
-rw-r--r--cheri/sail_latex/sailupdateIV.tex1
-rw-r--r--cheri/sail_latex/sailupdateKSU.tex1
-rw-r--r--cheri/sail_latex/sailupdateKX.tex1
-rw-r--r--cheri/sail_latex/sailupdatePFN.tex1
-rw-r--r--cheri/sail_latex/sailupdatePTEBase.tex1
-rw-r--r--cheri/sail_latex/sailupdateRegNum.tex1
-rw-r--r--cheri/sail_latex/sailupdateSX.tex1
-rw-r--r--cheri/sail_latex/sailupdateStatusRegBEV.tex1
-rw-r--r--cheri/sail_latex/sailupdateStatusRegCU.tex1
-rw-r--r--cheri/sail_latex/sailupdateStatusRegERL.tex1
-rw-r--r--cheri/sail_latex/sailupdateStatusRegEXL.tex1
-rw-r--r--cheri/sail_latex/sailupdateStatusRegIE.tex1
-rw-r--r--cheri/sail_latex/sailupdateStatusRegIM.tex1
-rw-r--r--cheri/sail_latex/sailupdateStatusRegKSU.tex1
-rw-r--r--cheri/sail_latex/sailupdateStatusRegKX.tex1
-rw-r--r--cheri/sail_latex/sailupdateStatusRegSX.tex1
-rw-r--r--cheri/sail_latex/sailupdateStatusRegUX.tex1
-rw-r--r--cheri/sail_latex/sailupdateStatusRegbits.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryHiRegASID.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryHiRegR.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryHiRegVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryHiRegbits.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryLoRegC.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryLoRegCapL.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryLoRegCapS.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryLoRegD.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryLoRegG.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryLoRegPFN.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryLoRegV.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryLoRegbits.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryasid.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntrybits.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntrycaplone.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntrycaplzero.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntrycapsone.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntrycapszero.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntrycone.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryczero.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntrydone.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntrydzero.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryg.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntrypagemask.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntrypfnone.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntrypfnzero.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryr.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryvalid.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryvone.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryvpntwo.tex1
-rw-r--r--cheri/sail_latex/sailupdateTLBEntryvzero.tex1
-rw-r--r--cheri/sail_latex/sailupdateUX.tex1
-rw-r--r--cheri/sail_latex/sailupdateV.tex1
-rw-r--r--cheri/sail_latex/sailupdateWP.tex1
-rw-r--r--cheri/sail_latex/sailupdateXBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailupdateXContextRegXBadVPNtwo.tex1
-rw-r--r--cheri/sail_latex/sailupdateXContextRegXPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailupdateXContextRegXR.tex1
-rw-r--r--cheri/sail_latex/sailupdateXContextRegbits.tex1
-rw-r--r--cheri/sail_latex/sailupdateXPTEBase.tex1
-rw-r--r--cheri/sail_latex/sailupdateXR.tex1
-rw-r--r--cheri/sail_latex/sailupdateasid.tex1
-rw-r--r--cheri/sail_latex/sailupdatebits.tex1
-rw-r--r--cheri/sail_latex/sailupdatecaplone.tex1
-rw-r--r--cheri/sail_latex/sailupdatecaplzero.tex1
-rw-r--r--cheri/sail_latex/sailupdatecapsone.tex1
-rw-r--r--cheri/sail_latex/sailupdatecapszero.tex1
-rw-r--r--cheri/sail_latex/sailupdatecone.tex1
-rw-r--r--cheri/sail_latex/sailupdateczero.tex1
-rw-r--r--cheri/sail_latex/sailupdatedone.tex1
-rw-r--r--cheri/sail_latex/sailupdatedzero.tex1
-rw-r--r--cheri/sail_latex/sailupdateg.tex1
-rw-r--r--cheri/sail_latex/sailupdatepagemask.tex1
-rw-r--r--cheri/sail_latex/sailupdatepfnone.tex1
-rw-r--r--cheri/sail_latex/sailupdatepfnzero.tex1
-rw-r--r--cheri/sail_latex/sailupdater.tex1
-rw-r--r--cheri/sail_latex/sailupdatevalid.tex1
-rw-r--r--cheri/sail_latex/sailupdatevone.tex1
-rw-r--r--cheri/sail_latex/sailupdatevpntwo.tex1
-rw-r--r--cheri/sail_latex/sailupdatevzero.tex1
-rw-r--r--cheri/sail_latex/sailvectoraccess.tex1
-rw-r--r--cheri/sail_latex/sailvectorlength.tex6
-rw-r--r--cheri/sail_latex/sailvectorsubrange.tex7
-rw-r--r--cheri/sail_latex/sailvectorupdate.tex1
-rw-r--r--cheri/sail_latex/sailvectorupdatesubrange.tex6
-rw-r--r--cheri/sail_latex/sailwGPR.tex1
-rw-r--r--cheri/sail_latex/sailwordWidthBytes.tex1
-rw-r--r--cheri/sail_latex/sailwriteCapReg.tex1
-rw-r--r--cheri/sail_latex/sailxorvec.tex1
-rw-r--r--cheri/sail_latex/sailzW.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozAsznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozAuznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozAznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozBznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozDznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozFznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozIsznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozIuznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozIzIznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozIzJznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozIznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozJzJznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozKzJsznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozKzJuznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozKzJznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozKzKsznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozKzKznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozKznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozQzQznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozQznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozUznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozfiveznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozonezJznine.tex1
-rw-r--r--cheri/sail_latex/sailzeightoperatorzzerozsixznine.tex1
-rw-r--r--cheri/sail_latex/sailzzeroextend.tex1
-rw-r--r--cheri/sail_latex/sailzzeros.tex1
-rw-r--r--cheri/sail_latexcc/commands.tex544
-rw-r--r--cheri/sail_latexcc/sailccBitStr.tex1
-rw-r--r--cheri/sail_latexcc/sailccCPtrCmpOp.tex10
-rw-r--r--cheri/sail_latexcc/sailccCPtrCmpOpofnum.tex1
-rw-r--r--cheri/sail_latexcc/sailccCapLen.tex1
-rw-r--r--cheri/sail_latexcc/sailccCapReg.tex1
-rw-r--r--cheri/sail_latexcc/sailccCapStruct.tex22
-rw-r--r--cheri/sail_latexcc/sailccClearRegSet.tex6
-rw-r--r--cheri/sail_latexcc/sailccClearRegSetofnum.tex1
-rw-r--r--cheri/sail_latexcc/sailccHighestSetBit.tex1
-rw-r--r--cheri/sail_latexcc/sailccMIPSread.tex1
-rw-r--r--cheri/sail_latexcc/sailccMIPSwrite.tex1
-rw-r--r--cheri/sail_latexcc/sailccReadRAM.tex2
-rw-r--r--cheri/sail_latexcc/sailccWriteRAM.tex2
-rw-r--r--cheri/sail_latexcc/sailccabsatom.tex7
-rw-r--r--cheri/sail_latexcc/sailccabsint.tex6
-rw-r--r--cheri/sail_latexcc/sailccaddatom.tex2
-rw-r--r--cheri/sail_latexcc/sailccaddbits.tex6
-rw-r--r--cheri/sail_latexcc/sailccaddbitsint.tex6
-rw-r--r--cheri/sail_latexcc/sailccaddint.tex1
-rw-r--r--cheri/sail_latexcc/sailccaddrange.tex2
-rw-r--r--cheri/sail_latexcc/sailccaddvec.tex1
-rw-r--r--cheri/sail_latexcc/sailccaddvecint.tex1
-rw-r--r--cheri/sail_latexcc/sailccandbits.tex1
-rw-r--r--cheri/sail_latexcc/sailccandbool.tex1
-rw-r--r--cheri/sail_latexcc/sailccappend.tex1
-rw-r--r--cheri/sail_latexcc/sailccappendsixfour.tex1
-rw-r--r--cheri/sail_latexcc/sailccatopcorrection.tex1
-rw-r--r--cheri/sail_latexcc/sailccbits.tex1
-rw-r--r--cheri/sail_latexcc/sailccbitstobool.tex1
-rw-r--r--cheri/sail_latexcc/sailccbittobool.tex1
-rw-r--r--cheri/sail_latexcc/sailccbitvectoraccess.tex6
-rw-r--r--cheri/sail_latexcc/sailccbitvectorconcat.tex2
-rw-r--r--cheri/sail_latexcc/sailccbitvectorlength.tex1
-rw-r--r--cheri/sail_latexcc/sailccbitvectorupdate.tex6
-rw-r--r--cheri/sail_latexcc/sailccbooltobits.tex1
-rw-r--r--cheri/sail_latexcc/sailcccapRegToCapStruct.tex1
-rw-r--r--cheri/sail_latexcc/sailcccapStructToCapReg.tex1
-rw-r--r--cheri/sail_latexcc/sailcccapStructToMemBits.tex1
-rw-r--r--cheri/sail_latexcc/sailcccapStructToMemBitsonetwoeight.tex1
-rw-r--r--cheri/sail_latexcc/sailcccastunitvec.tex1
-rw-r--r--cheri/sail_latexcc/sailcccomputeE.tex1
-rw-r--r--cheri/sail_latexcc/sailccconcatstr.tex1
-rw-r--r--cheri/sail_latexcc/sailccdiv.tex7
-rw-r--r--cheri/sail_latexcc/sailccdivint.tex7
-rw-r--r--cheri/sail_latexcc/sailcceqanything.tex1
-rw-r--r--cheri/sail_latexcc/sailcceqatom.tex1
-rw-r--r--cheri/sail_latexcc/sailcceqbit.tex1
-rw-r--r--cheri/sail_latexcc/sailcceqbits.tex6
-rw-r--r--cheri/sail_latexcc/sailcceqbittwo.tex1
-rw-r--r--cheri/sail_latexcc/sailcceqbool.tex1
-rw-r--r--cheri/sail_latexcc/sailcceqint.tex1
-rw-r--r--cheri/sail_latexcc/sailcceqrange.tex1
-rw-r--r--cheri/sail_latexcc/sailccfastRepCheck.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnCPtrCmpOpofnum.tex10
-rw-r--r--cheri/sail_latexcc/sailccfnClearRegSetofnum.tex6
-rw-r--r--cheri/sail_latexcc/sailccfnHighestSetBit.tex5
-rw-r--r--cheri/sail_latexcc/sailccfnMIPSread.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnMIPSwrite.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnatopcorrection.tex7
-rw-r--r--cheri/sail_latexcc/sailccfnbitstobool.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnbittobool.tex4
-rw-r--r--cheri/sail_latexcc/sailccfnbooltobits.tex1
-rw-r--r--cheri/sail_latexcc/sailccfncapRegToCapStruct.tex27
-rw-r--r--cheri/sail_latexcc/sailccfncapStructToCapReg.tex2
-rw-r--r--cheri/sail_latexcc/sailccfncapStructToMemBits.tex2
-rw-r--r--cheri/sail_latexcc/sailccfncapStructToMemBitsonetwoeight.tex12
-rw-r--r--cheri/sail_latexcc/sailccfncastunitvec.tex4
-rw-r--r--cheri/sail_latexcc/sailccfncomputeE.tex7
-rw-r--r--cheri/sail_latexcc/sailccfnfastRepCheck.tex23
-rw-r--r--cheri/sail_latexcc/sailccfngetCapBase.tex10
-rw-r--r--cheri/sail_latexcc/sailccfngetCapCursor.tex1
-rw-r--r--cheri/sail_latexcc/sailccfngetCapHardPerms.tex12
-rw-r--r--cheri/sail_latexcc/sailccfngetCapLength.tex6
-rw-r--r--cheri/sail_latexcc/sailccfngetCapOffset.tex3
-rw-r--r--cheri/sail_latexcc/sailccfngetCapPerms.tex5
-rw-r--r--cheri/sail_latexcc/sailccfngetCapTop.tex11
-rw-r--r--cheri/sail_latexcc/sailccfnincCapOffset.tex5
-rw-r--r--cheri/sail_latexcc/sailccfninttocap.tex2
-rw-r--r--cheri/sail_latexcc/sailccfnisnone.tex4
-rw-r--r--cheri/sail_latexcc/sailccfnissome.tex4
-rw-r--r--cheri/sail_latexcc/sailccfnmask.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnmemBitsToCapBits.tex2
-rw-r--r--cheri/sail_latexcc/sailccfnmemBitsToCapBitsonetwoeight.tex2
-rw-r--r--cheri/sail_latexcc/sailccfnmipssignextend.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnmipszzeroextend.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnneqanything.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnneqatom.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnneqbool.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnneqint.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnneqrange.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnneqvec.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnnumofCPtrCmpOp.tex10
-rw-r--r--cheri/sail_latexcc/sailccfnnumofClearRegSet.tex6
-rw-r--r--cheri/sail_latexcc/sailccfnones.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnroundUp.tex5
-rw-r--r--cheri/sail_latexcc/sailccfnsailmask.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnsealCap.tex5
-rw-r--r--cheri/sail_latexcc/sailccfnsetCapBounds.tex13
-rw-r--r--cheri/sail_latexcc/sailccfnsetCapOffset.tex6
-rw-r--r--cheri/sail_latexcc/sailccfnsetCapPerms.tex16
-rw-r--r--cheri/sail_latexcc/sailccfntobits.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnzeightoperatorzzerozIsznine.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnzeightoperatorzzerozIuznine.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnzeightoperatorzzerozKzJsznine.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnzeightoperatorzzerozKzJuznine.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnzeightoperatorzzerozQzQznine.tex1
-rw-r--r--cheri/sail_latexcc/sailccfnzzeros.tex1
-rw-r--r--cheri/sail_latexcc/sailccgetCapBase.tex1
-rw-r--r--cheri/sail_latexcc/sailccgetCapCursor.tex1
-rw-r--r--cheri/sail_latexcc/sailccgetCapHardPerms.tex1
-rw-r--r--cheri/sail_latexcc/sailccgetCapLength.tex1
-rw-r--r--cheri/sail_latexcc/sailccgetCapOffset.tex1
-rw-r--r--cheri/sail_latexcc/sailccgetCapPerms.tex1
-rw-r--r--cheri/sail_latexcc/sailccgetCapTop.tex1
-rw-r--r--cheri/sail_latexcc/sailccgetsliceint.tex1
-rw-r--r--cheri/sail_latexcc/sailccgettimens.tex1
-rw-r--r--cheri/sail_latexcc/sailccgtatom.tex1
-rw-r--r--cheri/sail_latexcc/sailccgtatomrange.tex1
-rw-r--r--cheri/sail_latexcc/sailccgteqatom.tex1
-rw-r--r--cheri/sail_latexcc/sailccgteqatomrange.tex1
-rw-r--r--cheri/sail_latexcc/sailccgteqint.tex1
-rw-r--r--cheri/sail_latexcc/sailccgteqrangeatom.tex1
-rw-r--r--cheri/sail_latexcc/sailccgtint.tex1
-rw-r--r--cheri/sail_latexcc/sailccgtrangeatom.tex1
-rw-r--r--cheri/sail_latexcc/sailccincCapOffset.tex1
-rw-r--r--cheri/sail_latexcc/sailccintpower.tex1
-rw-r--r--cheri/sail_latexcc/sailccinttocap.tex1
-rw-r--r--cheri/sail_latexcc/sailccisnone.tex1
-rw-r--r--cheri/sail_latexcc/sailccissome.tex1
-rw-r--r--cheri/sail_latexcc/sailcclength.tex1
-rw-r--r--cheri/sail_latexcc/sailccltatom.tex1
-rw-r--r--cheri/sail_latexcc/sailccltatomrange.tex1
-rw-r--r--cheri/sail_latexcc/sailcclteqatom.tex1
-rw-r--r--cheri/sail_latexcc/sailcclteqatomrange.tex1
-rw-r--r--cheri/sail_latexcc/sailcclteqint.tex1
-rw-r--r--cheri/sail_latexcc/sailcclteqrangeatom.tex1
-rw-r--r--cheri/sail_latexcc/sailccltint.tex1
-rw-r--r--cheri/sail_latexcc/sailccltrangeatom.tex1
-rw-r--r--cheri/sail_latexcc/sailccmask.tex1
-rw-r--r--cheri/sail_latexcc/sailccmax.tex1
-rw-r--r--cheri/sail_latexcc/sailccmaxatom.tex1
-rw-r--r--cheri/sail_latexcc/sailccmaxint.tex1
-rw-r--r--cheri/sail_latexcc/sailccmaxnat.tex1
-rw-r--r--cheri/sail_latexcc/sailccmemBitsToCapBits.tex1
-rw-r--r--cheri/sail_latexcc/sailccmemBitsToCapBitsonetwoeight.tex1
-rw-r--r--cheri/sail_latexcc/sailccmin.tex1
-rw-r--r--cheri/sail_latexcc/sailccminatom.tex1
-rw-r--r--cheri/sail_latexcc/sailccminint.tex1
-rw-r--r--cheri/sail_latexcc/sailccminnat.tex1
-rw-r--r--cheri/sail_latexcc/sailccmipssignextend.tex1
-rw-r--r--cheri/sail_latexcc/sailccmipszzeroextend.tex1
-rw-r--r--cheri/sail_latexcc/sailccmod.tex7
-rw-r--r--cheri/sail_latexcc/sailccmodint.tex7
-rw-r--r--cheri/sail_latexcc/sailccmodulus.tex1
-rw-r--r--cheri/sail_latexcc/sailccmultatom.tex2
-rw-r--r--cheri/sail_latexcc/sailccmultint.tex1
-rw-r--r--cheri/sail_latexcc/sailccnegate.tex1
-rw-r--r--cheri/sail_latexcc/sailccnegateatom.tex1
-rw-r--r--cheri/sail_latexcc/sailccnegateint.tex1
-rw-r--r--cheri/sail_latexcc/sailccnegaterange.tex1
-rw-r--r--cheri/sail_latexcc/sailccneqanything.tex1
-rw-r--r--cheri/sail_latexcc/sailccneqatom.tex1
-rw-r--r--cheri/sail_latexcc/sailccneqbool.tex1
-rw-r--r--cheri/sail_latexcc/sailccneqint.tex1
-rw-r--r--cheri/sail_latexcc/sailccneqrange.tex1
-rw-r--r--cheri/sail_latexcc/sailccneqvec.tex1
-rw-r--r--cheri/sail_latexcc/sailccnot.tex1
-rw-r--r--cheri/sail_latexcc/sailccnotbool.tex1
-rw-r--r--cheri/sail_latexcc/sailccnotvec.tex1
-rw-r--r--cheri/sail_latexcc/sailccnumofCPtrCmpOp.tex1
-rw-r--r--cheri/sail_latexcc/sailccnumofClearRegSet.tex1
-rw-r--r--cheri/sail_latexcc/sailccones.tex1
-rw-r--r--cheri/sail_latexcc/sailccorbits.tex1
-rw-r--r--cheri/sail_latexcc/sailccorbool.tex1
-rw-r--r--cheri/sail_latexcc/sailccplainvectoraccess.tex6
-rw-r--r--cheri/sail_latexcc/sailccplainvectorupdate.tex6
-rw-r--r--cheri/sail_latexcc/sailccpowtwo.tex1
-rw-r--r--cheri/sail_latexcc/sailccprerrbits.tex1
-rw-r--r--cheri/sail_latexcc/sailccprerrendline.tex1
-rw-r--r--cheri/sail_latexcc/sailccprerrint.tex1
-rw-r--r--cheri/sail_latexcc/sailccprerrstring.tex1
-rw-r--r--cheri/sail_latexcc/sailccprint.tex1
-rw-r--r--cheri/sail_latexcc/sailccprintbits.tex1
-rw-r--r--cheri/sail_latexcc/sailccprintint.tex1
-rw-r--r--cheri/sail_latexcc/sailccputchar.tex1
-rw-r--r--cheri/sail_latexcc/sailccquotient.tex1
-rw-r--r--cheri/sail_latexcc/sailccquotientnat.tex1
-rw-r--r--cheri/sail_latexcc/sailccquotroundzzero.tex1
-rw-r--r--cheri/sail_latexcc/sailccregderef.tex1
-rw-r--r--cheri/sail_latexcc/sailccremroundzzero.tex1
-rw-r--r--cheri/sail_latexcc/sailccreplicatebits.tex1
-rw-r--r--cheri/sail_latexcc/sailccroundUp.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailccnegatev.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailccregderefv.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailccsailccsailcczeightoperatorzzerozJzJzninevvv.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozBzninevv.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozFzninevv.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozJzJzninevv.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozfivezninevv.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailcczeightoperatorzzerozAzninev.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailcczeightoperatorzzerozBzninev.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailcczeightoperatorzzerozDzninev.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailcczeightoperatorzzerozFzninev.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailcczeightoperatorzzerozJzJzninev.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailcczeightoperatorzzerozQzninev.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailcczeightoperatorzzerozUzninev.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailcczeightoperatorzzerozfivezninev.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailcczeightoperatorzzerozonezJzninev.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailcczeightoperatorzzerozsixzninev.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailmask.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailsignextend.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailzzeroextend.tex1
-rw-r--r--cheri/sail_latexcc/sailccsailzzeros.tex1
-rw-r--r--cheri/sail_latexcc/sailccsealCap.tex1
-rw-r--r--cheri/sail_latexcc/sailccsetCapBounds.tex1
-rw-r--r--cheri/sail_latexcc/sailccsetCapOffset.tex1
-rw-r--r--cheri/sail_latexcc/sailccsetCapPerms.tex1
-rw-r--r--cheri/sail_latexcc/sailccsetslicebits.tex2
-rw-r--r--cheri/sail_latexcc/sailccsetsliceint.tex1
-rw-r--r--cheri/sail_latexcc/sailccshiftbitsleft.tex1
-rw-r--r--cheri/sail_latexcc/sailccshiftbitsright.tex1
-rw-r--r--cheri/sail_latexcc/sailccshiftl.tex1
-rw-r--r--cheri/sail_latexcc/sailccshiftr.tex1
-rw-r--r--cheri/sail_latexcc/sailccshlint.tex1
-rw-r--r--cheri/sail_latexcc/sailccshrint.tex1
-rw-r--r--cheri/sail_latexcc/sailccsigned.tex4
-rw-r--r--cheri/sail_latexcc/sailccsignextend.tex1
-rw-r--r--cheri/sail_latexcc/sailccslice.tex2
-rw-r--r--cheri/sail_latexcc/sailccstringofint.tex1
-rw-r--r--cheri/sail_latexcc/sailccsubatom.tex2
-rw-r--r--cheri/sail_latexcc/sailccsubint.tex1
-rw-r--r--cheri/sail_latexcc/sailccsubrange.tex2
-rw-r--r--cheri/sail_latexcc/sailccsubvec.tex1
-rw-r--r--cheri/sail_latexcc/sailccsubvecint.tex1
-rw-r--r--cheri/sail_latexcc/sailcctobits.tex1
-rw-r--r--cheri/sail_latexcc/sailcctruncate.tex6
-rw-r--r--cheri/sail_latexcc/sailccuintsixfour.tex1
-rw-r--r--cheri/sail_latexcc/sailccunsigned.tex7
-rw-r--r--cheri/sail_latexcc/sailccvectoraccess.tex1
-rw-r--r--cheri/sail_latexcc/sailccvectorlength.tex6
-rw-r--r--cheri/sail_latexcc/sailccvectorsubrange.tex7
-rw-r--r--cheri/sail_latexcc/sailccvectorupdate.tex1
-rw-r--r--cheri/sail_latexcc/sailccvectorupdatesubrange.tex6
-rw-r--r--cheri/sail_latexcc/sailccxorvec.tex1
-rw-r--r--cheri/sail_latexcc/sailcczW.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozAsznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozAuznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozAznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozBznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozDznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozFznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozIsznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozIuznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozIzIznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozIzJznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozIznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozJzJznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozKzJsznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozKzJuznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozKzJznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozKzKsznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozKzKznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozKznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozQzQznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozQznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozUznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozfiveznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozonezJznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczeightoperatorzzerozsixznine.tex1
-rw-r--r--cheri/sail_latexcc/sailcczzeroextend.tex1
-rw-r--r--cheri/sail_latexcc/sailcczzeros.tex1
-rw-r--r--mips/.gitignore5
-rw-r--r--mips/Holmakefile11
-rw-r--r--mips/LOOKING_FOR_SOMETHING.txt1
-rw-r--r--mips/Makefile74
-rw-r--r--mips/README24
-rw-r--r--mips/_CoqProject2
-rw-r--r--mips/doc/Makefile7
-rw-r--r--mips/doc/postamble.tex2
-rw-r--r--mips/doc/preamble.tex177
-rw-r--r--mips/gen/ast.hgen18
-rw-r--r--mips/gen/fold.hgen19
-rw-r--r--mips/gen/herdtools_ast_to_shallow_ast.hgen121
-rw-r--r--mips/gen/herdtools_types_to_shallow_types.hgen120
-rw-r--r--mips/gen/lexer.hgen116
-rw-r--r--mips/gen/map.hgen19
-rw-r--r--mips/gen/parser.hgen34
-rw-r--r--mips/gen/pretty.hgen36
-rw-r--r--mips/gen/sail_trans_out.hgen98
-rw-r--r--mips/gen/shallow_ast_to_herdtools_ast.hgen98
-rw-r--r--mips/gen/shallow_types_to_herdtools_types.hgen39
-rw-r--r--mips/gen/token_types.hgen39
-rw-r--r--mips/gen/tokens.hgen17
-rw-r--r--mips/gen/trans_sail.hgen122
-rw-r--r--mips/gen/types.hgen209
-rw-r--r--mips/gen/types_sail_trans_out.hgen47
-rw-r--r--mips/gen/types_trans_sail.hgen44
-rw-r--r--mips/main.sail97
-rw-r--r--mips/mips_ast_decl.sail44
-rw-r--r--mips/mips_epilogue.sail42
-rw-r--r--mips/mips_extras.lem128
-rw-r--r--mips/mips_extras.v179
-rw-r--r--mips/mips_insts.sail1682
-rw-r--r--mips/mips_prelude.sail649
-rw-r--r--mips/mips_regfp.sail455
-rw-r--r--mips/mips_ri.sail42
-rw-r--r--mips/mips_rmem.sail15
-rw-r--r--mips/mips_tlb.sail140
-rw-r--r--mips/mips_tlb_stub.sail48
-rw-r--r--mips/mips_wrappers.sail90
-rw-r--r--mips/prelude.sail223
-rw-r--r--mips/sim.dts79
-rwxr-xr-xtest/run_tests.sh6
1644 files changed, 5 insertions, 16220 deletions
diff --git a/README.md b/README.md
index 5144d13c..d1a5bc32 100644
--- a/README.md
+++ b/README.md
@@ -19,10 +19,6 @@ some Sail specifications and related tools.
* The Sail source code (in [src/](src/))
-* A Sail specification of a MIPS ISA (in [mips/](mips/))
-
-* A Sail specification of the CHERI MIPS ISA (in [cheri/](cheri/))
-
* A Sail specification of ARMv8.3-A generated from ARM's publically
released ASL specification (in [aarch64/](aarch64/))
@@ -40,6 +36,9 @@ hand-written fragment of ARMv8-A, but these are currently not up-to-date
with the latest version of Sail, which is the (default) sail2 branch
on Github.
+The mips and cheri-mips specifications that used to be here have moved to
+https://github.com/CTSRD-CHERI/sail-cheri-mips .
+
OPAM Installation
=================
diff --git a/cheri/.gitignore b/cheri/.gitignore
deleted file mode 100644
index f7f98624..00000000
--- a/cheri/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-cheri.lem
-cheri_types.lem
-cheriScript.sml
-cheri_typesScript.sml
-mips_extrasScript.sml \ No newline at end of file
diff --git a/cheri/Holmakefile b/cheri/Holmakefile
deleted file mode 100644
index d64fc3fd..00000000
--- a/cheri/Holmakefile
+++ /dev/null
@@ -1,11 +0,0 @@
-LEMDIR=../../lem/hol-lib
-
-INCLUDES = $(LEMDIR) ../lib/hol
-
-all: cheriTheory.uo
-.PHONY: all
-
-ifdef POLY
-BASE_HEAP = ../lib/hol/sail-heap
-
-endif
diff --git a/cheri/LOOKING_FOR_SOMETHING.txt b/cheri/LOOKING_FOR_SOMETHING.txt
new file mode 100644
index 00000000..7cd539a3
--- /dev/null
+++ b/cheri/LOOKING_FOR_SOMETHING.txt
@@ -0,0 +1 @@
+The cheri spec. now lives at https://github.com/CTSRD-CHERI/sail-cheri-mips .
diff --git a/cheri/Makefile b/cheri/Makefile
deleted file mode 100644
index 3d02bfad..00000000
--- a/cheri/Makefile
+++ /dev/null
@@ -1,137 +0,0 @@
-THIS_MAKEFILE := $(realpath $(lastword $(MAKEFILE_LIST)))
-SAIL_DIR:=$(realpath $(dir $(THIS_MAKEFILE))..)
-export SAIL_DIR
-SAIL_LIB_DIR:=$(SAIL_DIR)/lib
-MIPS_SAIL_DIR:=$(SAIL_DIR)/mips
-CHERI_SAIL_DIR:=$(SAIL_DIR)/cheri
-SAIL:=$(SAIL_DIR)/sail
-SAIL_LIB_HEADERS:=
-
-MIPS_PRE:=$(MIPS_SAIL_DIR)/prelude.sail $(MIPS_SAIL_DIR)/mips_prelude.sail
-MIPS_TLB:=$(MIPS_SAIL_DIR)/mips_tlb.sail
-MIPS_TLB_STUB:=$(MIPS_SAIL_DIR)/mips_tlb_stub.sail
-MIPS_INSTS:=$(MIPS_SAIL_DIR)/mips_insts.sail
-MIPS_EPILOGUE:=$(MIPS_SAIL_DIR)/mips_ri.sail $(MIPS_SAIL_DIR)/mips_epilogue.sail
-CHERI_PRE:=$(CHERI_SAIL_DIR)/cheri_types.sail $(CHERI_SAIL_DIR)/cheri_prelude_256.sail $(CHERI_SAIL_DIR)/cheri_prelude_common.sail
-CHERI128_PRE:=$(CHERI_SAIL_DIR)/cheri_types.sail $(CHERI_SAIL_DIR)/cheri_prelude_128.sail $(CHERI_SAIL_DIR)/cheri_prelude_common.sail
-CHERI_INSTS:=$(CHERI_SAIL_DIR)/cheri_insts.sail
-
-CHERI_SAILS:=$(SAIL_LIB_HEADERS) $(MIPS_PRE) $(MIPS_TLB) $(CHERI_PRE) $(MIPS_INSTS) $(CHERI_INSTS) $(MIPS_EPILOGUE)
-CHERI_MONO_SAILS:=$(SAIL_LIB_HEADERS) $(MIPS_PRE) $(SAIL_LIB_DIR)/mono_rewrites.sail $(MIPS_TLB) $(CHERI_PRE) $(MIPS_INSTS) $(CHERI_INSTS) $(MIPS_EPILOGUE)
-CHERI_NO_TLB_SAILS:=$(SAIL_LIB_HEADERS) $(MIPS_PRE) $(MIPS_TLB_STUB) $(CHERI_PRE) $(MIPS_INSTS) $(CHERI_INSTS) $(MIPS_EPILOGUE)
-CHERI128_SAILS:=$(SAIL_LIB_HEADERS) $(MIPS_PRE) $(MIPS_TLB) $(CHERI128_PRE) $(MIPS_INSTS) $(CHERI_INSTS) $(MIPS_EPILOGUE)
-CHERI128_NO_TLB_SAILS:=$(SAIL_LIB_HEADERS) $(MIPS_PRE) $(MIPS_TLB_STUB) $(CHERI128_PRE) $(MIPS_INSTS) $(CHERI_INSTS) $(MIPS_EPILOGUE)
-CHERI_MAIN:=$(MIPS_SAIL_DIR)/main.sail
-
-cheri: $(CHERI_SAILS) $(CHERI_MAIN)
- $(SAIL) -ocaml -o $@ $^
-
-cheri_coverage: $(CHERI_SAILS) $(CHERI_MAIN)
- $(SAIL) -ocaml-coverage -ocaml -o $@ $^
-
-cheri_trace: $(CHERI_SAILS) $(CHERI_MAIN)
- $(SAIL) -ocaml_trace -o $@ $^
-
-coverage_report: bisect*.out
- bisect-ppx-report -I _sbuild/_build -html $@ $^
-
-cheri.c: $(CHERI_SAILS) $(CHERI_MAIN)
- $(SAIL) -memo_z3 -O -c $^ 1> $@
-
-C_OPT=-O2
-GCOV_FLAGS=
-cheri_c: cheri.c ../lib/sail.h Makefile
- gcc $(C_OPT) $(GCOV_FLAGS) $< ../lib/*.c -lgmp -lz -I ../lib/ -o $@
-
-# Note that for coverage purposes O1 appears optimal. O0 means lots of obviously dead code but O2 risks reducing granularity too much.
-cheri_c_gcov: C_OPT=-O1
-cheri_c_gcov: GCOV_FLAGS=-fprofile-arcs -ftest-coverage
-cheri_c_gcov: cheri_c
-
-gcovr:
- gcovr -r . --html --html-detail -o index.html
-
-latex_128: $(MIPS_SAIL_DIR)/prelude.sail $(CHERI_SAIL_DIR)/cheri_types.sail $(CHERI_SAIL_DIR)/cheri_prelude_128.sail
- rm -rf sail_latexcc
- $(SAIL) -latex -latex_prefix sailcc -o sail_latexcc $^
-
-latex_256: $(CHERI_SAILS)
- rm -rf sail_latex
- $(SAIL) -latex $^
-
-latex: latex_128 latex_256
-
-# to install latex in the right place - specific to PS checkouts
-CHERI_ARCH_PATH=/home/pes20/repos/ctsrd/reports/cheri-architecture
-install_latex:
- rm -rf $(CHERI_ARCH_PATH)/sail_latex/*.tex
- cp sail_latex/*.tex $(CHERI_ARCH_PATH)/sail_latex
- rm -rf $(CHERI_ARCH_PATH)/sail_latexcc/*.tex
- cp sail_latexcc/*.tex $(CHERI_ARCH_PATH)/sail_latexcc
-
-cheri128: $(CHERI128_SAILS) $(CHERI_MAIN)
- $(SAIL) -ocaml -o $@ $^
-
-cheri128_trace: $(CHERI128_SAILS) $(CHERI_MAIN)
- $(SAIL) -ocaml_trace -o $@ $^
-
-cheri128.c: $(CHERI128_SAILS) $(CHERI_MAIN)
- $(SAIL) -memo_z3 -O -c $^ 1> $@
-
-cheri128_c: cheri128.c ../lib/sail.h Makefile
- gcc $(C_OPT) $(GCOV_FLAGS) $< ../lib/*.c -lgmp -lz -I ../lib/ -o $@
-
-# Note that for coverage purposes O1 appears optimal. O0 means lots of obviously dead code but O2 risks reducing granularity too much.
-cheri128_c_gcov: C_OPT=-O1
-cheri128_c_gcov: GCOV_FLAGS=-fprofile-arcs -ftest-coverage
-cheri128_c_gcov: cheri128_c
-
-LOC_FILES:=$(CHERI_SAILS) $(CHERI_MAIN)
-include ../etc/loc.mk
-
-# TODO Using bit lists for now in Lem generation; for machine words,
-# monomorphisation is needed due to some variable length bitvectors, e.g. in
-# CLoad as of commit b34c3fb, in the TLB translation, and in compressed
-# capability functions
-
-cheri_no_tlb.lem: $(CHERI_NO_TLB_SAILS)
- $(SAIL) -lem -o cheri_no_tlb -lem_lib Mips_extras -undefined_gen -memo_z3 $^
-cheri_no_tlb_types.lem: cheri_no_tlb.lem
-
-cheri.lem: $(CHERI_MONO_SAILS) $(CHERI_MAIN)
- $(SAIL) -lem -o cheri -auto_mono -mono_rewrites -lem_mwords -lem_lib Mips_extras -undefined_gen -memo_z3 $^
-cheri_types.lem: cheri.lem
-
-cheri128_no_tlb.lem: $(CHERI128_NO_TLB_SAILS)
- $(SAIL) -lem -o cheri128_no_tlb -lem_lib Mips_extras -undefined_gen -memo_z3 $^
-cheri128_no_tlb_types.lem: cheri128_no_tlb.lem
-
-cheri128.lem: $(CHERI128_SAILS)
- $(SAIL) -lem -o cheri128 -lem_lib Mips_extras -undefined_gen -memo_z3 $^
-cheri128_types.lem: cheri128.lem
-
-C%.thy: c%.lem c%_types.lem $(MIPS_SAIL_DIR)/mips_extras.lem
- lem -isa -outdir . -lib Sail=$(SAIL_DIR)/src/gen_lib -lib Sail=$(SAIL_DIR)/src/lem_interp $^
- sed -i 's/datatype ast/datatype (plugins only: size) ast/' C$*_types.thy
-
-%Script.sml: %.lem %_types.lem $(MIPS_SAIL_DIR)/mips_extras.lem
- lem -hol -outdir . -lib $(SAIL_DIR)/lib/hol -i $(SAIL_DIR)/lib/hol/sail2_prompt_monad.lem -i $(SAIL_DIR)/lib/hol/sail2_prompt.lem -lib $(SAIL_DIR)/src/gen_lib -lib $(SAIL_DIR)/src/lem_interp $^
-
-%Theory.uo: %Script.sml
- Holmake $@
-
-cheri.v cheri_types.v: $(CHERI_SAILS)
- $(SAIL) -coq -o cheri -coq_lib mips_extras -undefined_gen -memo_z3 -dcoq_undef_axioms $^
-
-CHERI_COQ = cheri_types.v mips_extras.v cheri.v
-COQ_LIBS = -R ../../bbv/theories bbv -R ../lib/coq Sail
-
-%.vo: %.v
- coqc $(COQ_LIBS) $<
-cheri.vo: cheri_types.vo mips_extras.vo
-
-clean:
- rm -rf cheri cheri_trace cheri_coverage cheri128 cheri128_trace _sbuild inst_*.sail cheri.c sail_latex sail_latexcc coverage_report
- rm -f cheriScript.sml cheri_typesScript.sml mips_extrasScript.sml
- rm -f cheri.v cheri_types.v $(CHERI_COQ:%.v=%.vo) $(CHERI_COQ:%.v=%.glob) $(CHERI_COQ:%.v=.%.aux)
- -Holmake cleanAll
diff --git a/cheri/ROOT b/cheri/ROOT
deleted file mode 100644
index 244413d5..00000000
--- a/cheri/ROOT
+++ /dev/null
@@ -1,4 +0,0 @@
-session "Sail-CHERI" = "Sail" +
- options [document = false]
- theories
- Cheri_lemmas
diff --git a/cheri/cheri_insts.sail b/cheri/cheri_insts.sail
deleted file mode 100644
index f1038ed6..00000000
--- a/cheri/cheri_insts.sail
+++ /dev/null
@@ -1,1353 +0,0 @@
-/*========================================================================*/
-/* */
-/* Copyright (c) 2015-2017 Robert M. Norton */
-/* Copyright (c) 2015-2017 Kathyrn Gray */
-/* All rights reserved. */
-/* */
-/* This software was developed by the University of Cambridge Computer */
-/* Laboratory as part of the Rigorous Engineering of Mainstream Systems */
-/* (REMS) project, funded by EPSRC grant EP/K008528/1. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following conditions */
-/* are met: */
-/* 1. Redistributions of source code must retain the above copyright */
-/* notice, this list of conditions and the following disclaimer. */
-/* 2. Redistributions in binary form must reproduce the above copyright */
-/* notice, this list of conditions and the following disclaimer in */
-/* the documentation and/or other materials provided with the */
-/* distribution. */
-/* */
-/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */
-/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
-/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
-/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */
-/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
-/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */
-/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */
-/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
-/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */
-/* SUCH DAMAGE. */
-/*========================================================================*/
-
-/* Old encodings */
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00000000 @ 0b000) = Some(CGetPerm(rd, cb))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00000000 @ 0b001) = Some(CGetType(rd, cb))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00000000 @ 0b010) = Some(CGetBase(rd, cb))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00000000 @ 0b011) = Some(CGetLen(rd, cb))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00000000 @ 0b101) = Some(CGetTag(rd, cb))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00000000 @ 0b110) = Some(CGetSealed(rd, cb))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ 0b00000 @ 0b00000000 @ 0b100) = Some(CGetCause(rd))
-
-function clause decode (0b010010 @ 0b00110 @ 0b000000000000000000000) = Some(CReturn())
-
-function clause decode (0b010010 @ 0b01101 @ rd : regno @ cb : regno @ 0b00000000 @ 0b010) = Some(CGetOffset(rd, cb)) /* NB encoding does not follow pattern */
-function clause decode (0b010010 @ 0b00100 @ 0b00000 @ 0b00000 @ rt : regno @ 0b000 @ 0b100) = Some(CSetCause(rt))
-function clause decode (0b010010 @ 0b00100 @ cd : regno @ cb : regno @ rt : regno @ 0b000 @ 0b000) = Some(CAndPerm(cd, cb, rt))
-function clause decode (0b010010 @ 0b01100 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b000) = Some(CToPtr(rd, cb, ct))
-
-function clause decode (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b000) = Some(CPtrCmp(rd, cb, ct, CEQ))
-function clause decode (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b001) = Some(CPtrCmp(rd, cb, ct, CNE))
-function clause decode (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b010) = Some(CPtrCmp(rd, cb, ct, CLT))
-function clause decode (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b011) = Some(CPtrCmp(rd, cb, ct, CLE))
-function clause decode (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b100) = Some(CPtrCmp(rd, cb, ct, CLTU))
-function clause decode (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b101) = Some(CPtrCmp(rd, cb, ct, CLEU))
-function clause decode (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b110) = Some(CPtrCmp(rd, cb, ct, CEXEQ))
-function clause decode (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b111) = Some(CPtrCmp(rd, cb, ct, CNEXEQ))
-function clause decode (0b010010 @ 0b01101 @ cd : regno @ cb : regno @ rt : regno @ 0b000 @ 0b000) = Some(CIncOffset(cd, cb, rt))
-function clause decode (0b010010 @ 0b01101 @ cd : regno @ cb : regno @ rt : regno @ 0b000 @ 0b001) = Some(CSetOffset(cd, cb, rt))
-function clause decode (0b010010 @ 0b00001 @ cd : regno @ cb : regno @ rt : regno @ 0b000000) = Some(CSetBounds(cd, cb, rt))
-
-function clause decode (0b010010 @ 0b00100 @ cd : regno @ cb : regno @ 0b00000 @ 0b000@ 0b101) = Some(CClearTag(cd, cb))
-function clause decode (0b010010 @ 0b00100 @ cd : regno @ cb : regno @ rt : regno @ 0b000@ 0b111) = Some(CFromPtr(cd, cb, rt))
-function clause decode (0b010010 @ 0b01011 @ cs : regno @ 0b00000 @ rt : regno @ 0b000@ 0b000) = Some(CCheckPerm(cs, rt))
-function clause decode (0b010010 @ 0b01011 @ cs : regno @ cb : regno @ 0b00000 @ 0b000@ 0b001) = Some(CCheckType(cs, cb))
-function clause decode (0b010010 @ 0b00010 @ cd : regno @ cs : regno @ ct : regno @ 0b000@ 0b000) = Some(CSeal(cd, cs, ct))
-function clause decode (0b010010 @ 0b00011 @ cd : regno @ cs : regno @ ct : regno @ 0b000@ 0b000) = Some(CUnseal(cd, cs, ct))
-function clause decode (0b010010 @ 0b00111 @ cd : regno @ cb : regno @ 0b00000 @ 0b000000) = Some(CJALR(cd, cb, true)) /* CJALR */
-function clause decode (0b010010 @ 0b01000 @ 0b00000 @ cb : regno @ 0b00000 @ 0b000000) = Some(CJALR(0b00000, cb, false)) /* CJR */
-
-
-/*
-New encodings as per CHERI ISA Appendix B.2.
-
-NB: Must be careful about order of matching because unused register
-fields are re-used as additional function codes.
-*/
-
-/* One arg */
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ 0b00001 @ 0b11111 @ 0b111111) = Some(CGetCause(rd))
-function clause decode (0b010010 @ 0b00000 @ rs : regno @ 0b00010 @ 0b11111 @ 0b111111) = Some(CSetCause(rs))
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ 0b00000 @ 0b11111 @ 0b111111) = Some(CGetPCC(cd))
-function clause decode (0b010010 @ 0b00000 @ cb : regno @ 0b00011 @ 0b11111 @ 0b111111) = Some(CJALR(0b00000, cb, false)) /* CJR */
-
-/* Two arg */
-function clause decode (0b010010 @ 0b00000 @ cs : regno @ rt : regno @ 0b01000 @ 0b111111) = Some(CCheckPerm(cs, rt))
-function clause decode (0b010010 @ 0b00000 @ cs : regno @ cb : regno @ 0b01001 @ 0b111111) = Some(CCheckType(cs, cb))
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cb : regno @ 0b01011 @ 0b111111) = Some(CClearTag(cd, cb))
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ 0b01010 @ 0b111111) = Some(CMOVX(cd, cs, 0b00000, false)) /* CMOVE */
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cb : regno @ 0b01100 @ 0b111111) = Some(CJALR(cd, cb, true)) /* CJALR */
-
-/* Capability Inspection */
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00000 @ 0b111111) = Some(CGetPerm(rd, cb))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00001 @ 0b111111) = Some(CGetType(rd, cb))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00010 @ 0b111111) = Some(CGetBase(rd, cb))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00011 @ 0b111111) = Some(CGetLen(rd, cb))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00100 @ 0b111111) = Some(CGetTag(rd, cb))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00101 @ 0b111111) = Some(CGetSealed(rd, cb))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00110 @ 0b111111) = Some(CGetOffset(rd, cb))
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ rs : regno @ 0b00111 @ 0b111111) = Some(CGetPCCSetOffset(cd, rs))
-
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ sel : regno @ 0b01101 @ 0b111111) = Some(CReadHwr(cd, sel))
-function clause decode (0b010010 @ 0b00000 @ cb : regno @ sel : regno @ 0b01110 @ 0b111111) = Some(CWriteHwr(cb, sel))
-
-function clause decode (0b010010 @ 0b00000 @ cb : regno @ sel : regno @ 0b01111 @ 0b111111) = Some(CGetAddr(cb, sel))
-
-/* Three operand */
-
-/* Capability Modification */
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ ct : regno @ 0b001011) = Some(CSeal(cd, cs, ct))
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ ct : regno @ 0b001100) = Some(CUnseal(cd, cs, ct))
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ rt : regno @ 0b001101) = Some(CAndPerm(cd, cs, rt))
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ rt : regno @ 0b001111) = Some(CSetOffset(cd, cs, rt))
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ rt : regno @ 0b001000) = Some(CSetBounds(cd, cs, rt))
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ rt : regno @ 0b001001) = Some(CSetBoundsExact(cd, cs, rt))
-
-
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cb : regno @ rt : regno @ 0b010001) = Some(CIncOffset(cd, cb, rt))
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cb : regno @ ct : regno @ 0b011101) = Some(CBuildCap(cd, cb, ct))
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cb : regno @ ct : regno @ 0b011110) = Some(CCopyType(cd, cb, ct))
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ ct : regno @ 0b011111) = Some(CCSeal(cd, cs, ct))
-
-/* Pointer Arithmetic */
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ ct : regno @ 0b010010) = Some(CToPtr(rd, cb, ct))
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cb : regno @ rs : regno @ 0b010011) = Some(CFromPtr(cd, cb, rs))
-function clause decode (0b010010 @ 0b00000 @ rt : regno @ cb : regno @ cs : regno @ 0b001010) = Some(CSub(rt, cb, cs))
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ rs : regno @ 0b011011) = Some(CMOVX(cd, cs, rs, false)) /* CMOVZ */
-function clause decode (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ rs : regno @ 0b011100) = Some(CMOVX(cd, cs, rs, true)) /* CMOVN */
-
-/* Pointer Comparison */
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b010100) = Some(CPtrCmp(rd, cb, cs, CEQ))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b010101) = Some(CPtrCmp(rd, cb, cs, CNE))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b010110) = Some(CPtrCmp(rd, cb, cs, CLT))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b010111) = Some(CPtrCmp(rd, cb, cs, CLE))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b011000) = Some(CPtrCmp(rd, cb, cs, CLTU))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b011001) = Some(CPtrCmp(rd, cb, cs, CLEU))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b011010) = Some(CPtrCmp(rd, cb, cs, CEXEQ))
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b100001) = Some(CPtrCmp(rd, cb, cs, CNEXEQ))
-
-function clause decode (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ ct : regno @ 0b100000) = Some(CTestSubset(rd, cb, ct))
-
-function clause decode (0b010010 @ 0b01001 @ cd : regno @ imm : bits(16)) = Some(CBX(cd, imm, true)) /* CBTU */
-function clause decode (0b010010 @ 0b01010 @ cd : regno @ imm : bits(16)) = Some(CBX(cd, imm, false)) /* CBTS */
-function clause decode (0b010010 @ 0b10001 @ cd : regno @ imm : bits(16)) = Some(CBZ(cd, imm, false)) /* CBEZ */
-function clause decode (0b010010 @ 0b10010 @ cd : regno @ imm : bits(16)) = Some(CBZ(cd, imm, true)) /* CBNZ */
-
-function clause decode (0b010010 @ 0b00101 @ 0b00000 @ 0b00000 @ 0b11111111111) = Some(CReturn())
-function clause decode (0b010010 @ 0b00101 @ cs : regno @ cb : regno @ selector : bits(11)) = Some(CCall(cs, cb, selector))
-
-function clause decode (0b010010 @ 0b01111 @ 0b00000 @ imm : bits(16)) = Some(ClearRegs(GPLo, imm))
-function clause decode (0b010010 @ 0b01111 @ 0b00001 @ imm : bits(16)) = Some(ClearRegs(GPHi, imm))
-function clause decode (0b010010 @ 0b01111 @ 0b00010 @ imm : bits(16)) = Some(ClearRegs(CLo, imm))
-function clause decode (0b010010 @ 0b01111 @ 0b00011 @ imm : bits(16)) = Some(ClearRegs(CHi, imm))
-
-function clause decode (0b010010 @ 0b10011 @ cd : regno @ cb : regno @ imm : bits(11)) = Some(CIncOffsetImmediate(cd, cb, imm))
-function clause decode (0b010010 @ 0b10100 @ cd : regno @ cb : regno @ imm : bits(11)) = Some(CSetBoundsImmediate(cd, cb, imm))
-
-function clause decode (0b110010 @ rd : regno @ cb : regno@ rt : regno @ offset : bits(8) @ 0b0 @ 0b00) = Some(CLoad(rd, cb, rt, offset, false, B, false)) /* CLBU */
-function clause decode (0b110010 @ rd : regno @ cb : regno@ rt : regno @ offset : bits(8) @ 0b1 @ 0b00) = Some(CLoad(rd, cb, rt, offset, true, B, false)) /* CLB */
-function clause decode (0b110010 @ rd : regno @ cb : regno@ rt : regno @ offset : bits(8) @ 0b0 @ 0b01) = Some(CLoad(rd, cb, rt, offset, false, H, false)) /* CLHU */
-function clause decode (0b110010 @ rd : regno @ cb : regno@ rt : regno @ offset : bits(8) @ 0b1 @ 0b01) = Some(CLoad(rd, cb, rt, offset, true, H, false)) /* CLH */
-function clause decode (0b110010 @ rd : regno @ cb : regno@ rt : regno @ offset : bits(8) @ 0b0 @ 0b10) = Some(CLoad(rd, cb, rt, offset, false, W, false)) /* CLWU */
-function clause decode (0b110010 @ rd : regno @ cb : regno@ rt : regno @ offset : bits(8) @ 0b1 @ 0b10) = Some(CLoad(rd, cb, rt, offset, true, W, false)) /* CLW */
-function clause decode (0b110010 @ rd : regno @ cb : regno@ rt : regno @ offset : bits(8) @ 0b0 @ 0b11) = Some(CLoad(rd, cb, rt, offset, false, D, false)) /* CLD */
-
-function clause decode (0b010010 @ 0b10000 @ rd : regno @ cb : regno @ 0b00000001 @ 0b0 @ 0b00) = Some(CLoad(rd, cb, 0b00000, 0b00000000, false, B, true)) /* CLLBU */
-function clause decode (0b010010 @ 0b10000 @ rd : regno @ cb : regno @ 0b00000001 @ 0b1 @ 0b00) = Some(CLoad(rd, cb, 0b00000, 0b00000000, true, B, true)) /* CLLB */
-function clause decode (0b010010 @ 0b10000 @ rd : regno @ cb : regno @ 0b00000001 @ 0b0 @ 0b01) = Some(CLoad(rd, cb, 0b00000, 0b00000000, false, H, true)) /* CLLHU */
-function clause decode (0b010010 @ 0b10000 @ rd : regno @ cb : regno @ 0b00000001 @ 0b1 @ 0b01) = Some(CLoad(rd, cb, 0b00000, 0b00000000, true, H, true)) /* CLLH */
-function clause decode (0b010010 @ 0b10000 @ rd : regno @ cb : regno @ 0b00000001 @ 0b0 @ 0b10) = Some(CLoad(rd, cb, 0b00000, 0b00000000, false, W, true)) /* CLLWU */
-function clause decode (0b010010 @ 0b10000 @ rd : regno @ cb : regno @ 0b00000001 @ 0b1 @ 0b10) = Some(CLoad(rd, cb, 0b00000, 0b00000000, true, W, true)) /* CLLW */
-function clause decode (0b010010 @ 0b10000 @ rd : regno @ cb : regno @ 0b00000001 @ 0b0 @ 0b11) = Some(CLoad(rd, cb, 0b00000, 0b00000000, false, D, true)) /* CLLD */
-
-function clause decode (0b111010 @ rs : regno @ cb : regno@ rt : regno @ offset : bits(8) @ 0b0 @ 0b00) = Some(CStore(rs, cb, rt, 0b00000, offset, B, false)) /* CSB */
-function clause decode (0b111010 @ rs : regno @ cb : regno@ rt : regno @ offset : bits(8) @ 0b0 @ 0b01) = Some(CStore(rs, cb, rt, 0b00000, offset, H, false)) /* CSH */
-function clause decode (0b111010 @ rs : regno @ cb : regno@ rt : regno @ offset : bits(8) @ 0b0 @ 0b10) = Some(CStore(rs, cb, rt, 0b00000, offset, W, false)) /* CSW */
-function clause decode (0b111010 @ rs : regno @ cb : regno@ rt : regno @ offset : bits(8) @ 0b0 @ 0b11) = Some(CStore(rs, cb, rt, 0b00000, offset, D, false)) /* CSD */
-
-function clause decode (0b010010 @ 0b10000 @ rs : regno @ cb : regno @ rd : regno @ 0b0000 @ 0b00) = Some(CStore(rs, cb, 0b00000, rd, 0b00000000, B, true)) /* CSCB */
-function clause decode (0b010010 @ 0b10000 @ rs : regno @ cb : regno @ rd : regno @ 0b0000 @ 0b01) = Some(CStore(rs, cb, 0b00000, rd, 0b00000000, H, true)) /* CSCH */
-function clause decode (0b010010 @ 0b10000 @ rs : regno @ cb : regno @ rd : regno @ 0b0000 @ 0b10) = Some(CStore(rs, cb, 0b00000, rd, 0b00000000, W, true)) /* CSCW */
-function clause decode (0b010010 @ 0b10000 @ rs : regno @ cb : regno @ rd : regno @ 0b0000 @ 0b11) = Some(CStore(rs, cb, 0b00000, rd, 0b00000000, D, true)) /* CSCD */
-
-function clause decode (0b111110 @ cs : regno @ cb : regno@ rt : regno @ offset : bits(11)) = Some(CSC(cs, cb, rt, 0b00000, offset, false))
-function clause decode (0b010010 @ 0b10000 @ cs : regno @ cb : regno@ rd : regno @ 0b00 @ 0b0111) = Some(CSC(cs, cb, 0b00000, rd, 0b00000000000, true)) /* CSCC */
-
-function clause decode (0b110110 @ cd : regno @ cb : regno @ rt : regno @ offset : bits(11)) = Some(CLC(cd, cb, rt, sign_extend(offset), false)) /* CLC */
-function clause decode (0b010010 @ 0b10000 @ cd : regno @ cb : regno@ 0b0000000 @ 0b1111) = Some(CLC(cd, cb, 0b00000, 0x0000, true)) /* CLLC */
-function clause decode (0b011101 @ cd : regno @ cb : regno @ offset : bits(16)) = Some(CLC(cd, cb, 0b00000, offset, false)) /* CLCBI */
-
-function clause decode (0b010010 @ 0b00100 @ rt : regno @ 0x0006) = Some(C2Dump(rt))
-
-/* Operations that extract parts of a capability into GPR */
-
-union clause ast = CGetPerm : (regno, regno)
-union clause ast = CGetType : (regno, regno)
-union clause ast = CGetBase : (regno, regno)
-union clause ast = CGetLen : (regno, regno)
-union clause ast = CGetTag : (regno, regno)
-union clause ast = CGetSealed : (regno, regno)
-union clause ast = CGetOffset : (regno, regno)
-union clause ast = CGetAddr : (regno, regno)
-
-function clause execute (CGetPerm(rd, cb)) =
-{
- checkCP2usable();
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = readCapReg(cb) in
- wGPR(rd) = zero_extend(getCapPerms(capVal));
-}
-
-function clause execute (CGetType(rd, cb)) =
-{
- checkCP2usable();
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = readCapReg(cb) in
- wGPR(rd) = if (capVal.sealed)
- then zero_extend(capVal.otype)
- else (bitone ^^ 64)
-}
-
-function clause execute (CGetBase(rd, cb)) =
-{
- checkCP2usable();
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = readCapReg(cb) in
- wGPR(rd) = to_bits(64, getCapBase(capVal));
-}
-
-function clause execute (CGetOffset(rd, cb)) =
-{
- checkCP2usable();
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = readCapReg(cb) in
- wGPR(rd) = to_bits(64, getCapOffset(capVal));
-}
-
-function clause execute (CGetLen(rd, cb)) =
-{
- checkCP2usable();
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = readCapReg(cb) in
- let len65 = getCapLength(capVal) in
- wGPR(rd) = to_bits(64, if len65 > MAX_U64 then MAX_U64 else len65);
-}
-
-function clause execute (CGetTag(rd, cb)) =
-{
- checkCP2usable();
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = readCapReg(cb) in
- wGPR(rd) = zero_extend(capVal.tag);
-}
-
-function clause execute (CGetSealed(rd, cb)) =
-{
- checkCP2usable();
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = readCapReg(cb) in
- wGPR(rd) = zero_extend(capVal.sealed);
-}
-
-function clause execute (CGetAddr(rd, cb)) =
-{
- checkCP2usable();
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = readCapReg(cb) in
- wGPR(rd) = to_bits(64, getCapCursor(capVal));
-}
-
-union clause ast = CGetPCC : regno
-function clause execute (CGetPCC(cd)) =
-{
- checkCP2usable();
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else
- let pcc = (capRegToCapStruct(PCC)) in
- let (success, pcc2) = setCapOffset(pcc, PC) in
- {assert (success, ""); /* guaranteed to be in-bounds */
- writeCapReg(cd, pcc2)};
-}
-
-
-union clause ast = CGetPCCSetOffset : (regno, regno)
-function clause execute (CGetPCCSetOffset(cd, rs)) =
-{
- checkCP2usable();
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else
- let pcc = (capRegToCapStruct(PCC)) in
- let rs_val = rGPR(rs) in
- let (success, newPCC) = setCapOffset(pcc, rs_val) in
- if (success) then
- writeCapReg(cd, newPCC)
- else
- writeCapReg(cd, int_to_cap(rs_val));
-}
-/* Get and Set CP2 cause register */
-
-union clause ast = CGetCause : regno
-function clause execute (CGetCause(rd)) =
-{
- checkCP2usable();
- if not (pcc_access_system_regs ()) then
- raise_c2_exception_noreg(CapEx_AccessSystemRegsViolation)
- else
- wGPR(rd) = zero_extend(CapCause.bits())
-}
-
-union clause ast = CSetCause : regno
-function clause execute (CSetCause(rt)) =
-{
- checkCP2usable();
- if not (pcc_access_system_regs ()) then
- raise_c2_exception_noreg(CapEx_AccessSystemRegsViolation)
- else
- {
- let rt_val = rGPR(rt);
- CapCause->ExcCode() = rt_val[15..8];
- CapCause->RegNum() = rt_val[7..0];
- }
-}
-
-union clause ast = CReadHwr : (regno, regno)
-function clause execute (CReadHwr(cd, sel)) =
-{
- checkCP2usable();
- let (needSup, needAccessSys) : (bool, bool) = match unsigned(sel) {
- 0 => (false, false), /* DDC -- no access control */
- 1 => (false, false), /* CTLSU -- no access control */
- 8 => (false, true), /* CTLSP -- privileged TLS */
- 22 => (true, false), /* KR1C */
- 23 => (true, false), /* KR2C */
- 29 => (true, true), /* KCC */
- 30 => (true, true), /* KDC */
- 31 => (true, true), /* EPCC */
- _ => SignalException(ResI)
- };
- if register_inaccessible(cd) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if needAccessSys & not(pcc_access_system_regs()) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, sel)
- else if needSup & not(grantsAccess(getAccessLevel(), Supervisor)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, sel)
- else {
- capVal : CapStruct = match unsigned(sel) {
- 0 => capRegToCapStruct(DDC),
- 1 => capRegToCapStruct(CTLSU),
- 8 => capRegToCapStruct(CTLSP),
- 22 => capRegToCapStruct(KR1C),
- 23 => capRegToCapStruct(KR2C),
- 29 => capRegToCapStruct(KCC),
- 30 => capRegToCapStruct(KDC),
- 31 => capRegToCapStruct(EPCC),
- _ => {assert(false, "should be unreachable code"); undefined}
- };
- writeCapReg(cd, capVal);
- };
-}
-
-union clause ast = CWriteHwr : (regno, regno)
-function clause execute (CWriteHwr(cb, sel)) =
-{
- checkCP2usable();
- let (needSup, needAccessSys) : (bool, bool) = match unsigned(sel) {
- 0 => (false, false), /* DDC -- no access control */
- 1 => (false, false), /* CTLSU -- no access control */
- 8 => (false, true), /* CTLSP -- privileged TLS */
- 22 => (true, false), /* KR1C */
- 23 => (true, false), /* KR2C */
- 29 => (true, true), /* KCC */
- 30 => (true, true), /* KDC */
- 31 => (true, true), /* EPCC */
- _ => SignalException(ResI)
- };
- if register_inaccessible(cb) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if needAccessSys & not(pcc_access_system_regs()) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, sel)
- else if needSup & not(grantsAccess(getAccessLevel(), Supervisor)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, sel)
- else {
- capVal = readCapReg(cb);
- match unsigned(sel) {
- 0 => DDC = capStructToCapReg(capVal),
- 1 => CTLSU = capStructToCapReg(capVal),
- 8 => CTLSP = capStructToCapReg(capVal),
- 22 => KR1C = capStructToCapReg(capVal),
- 23 => KR2C = capStructToCapReg(capVal),
- 29 => KCC = capStructToCapReg(capVal),
- 30 => KDC = capStructToCapReg(capVal),
- 31 => EPCC = capStructToCapReg(capVal),
- _ => assert(false, "should be unreachable code")
- };
- };
-}
-
-union clause ast = CAndPerm : (regno, regno, regno)
-function clause execute(CAndPerm(cd, cb, rt)) =
-{
- checkCP2usable();
- let cb_val = readCapReg(cb);
- let rt_val = rGPR(rt);
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else
- let perms = getCapPerms(cb_val) in
- let newCap = setCapPerms(cb_val, (perms & rt_val[30..0])) in
- writeCapReg(cd, newCap);
-}
-
-
-
-union clause ast = CToPtr : (regno, regno, regno)
-function clause execute(CToPtr(rd, cb, ct)) =
-{
- checkCP2usable();
- let ct_val = readCapRegDDC(ct);
- let cb_val = readCapReg(cb);
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if (register_inaccessible(ct)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, ct)
- else if not (ct_val.tag) then
- raise_c2_exception(CapEx_TagViolation, ct)
- else if (cb_val.tag) & (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else
- {
- let cbBase = getCapBase(cb_val) in
- let cbTop = getCapTop(cb_val) in
- let ctBase = getCapBase(ct_val) in
- let ctTop = getCapTop(ct_val) in
- wGPR(rd) = if (not (cb_val.tag)) |
- (cbBase < ctBase) |
- (cbTop > ctTop) then
- zeros()
- else
- to_bits(64, getCapCursor(cb_val) - ctBase)
- }
-}
-
-
-
-union clause ast = CSub : (regno, regno, regno)
-function clause execute(CSub(rd, cb, ct)) =
-{
- checkCP2usable();
- let ct_val = readCapReg(ct);
- let cb_val = readCapReg(cb);
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if (register_inaccessible(ct)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, ct)
- else
- {
- wGPR(rd) = to_bits(64, getCapCursor(cb_val) - getCapCursor(ct_val))
- }
-}
-
-union clause ast = CPtrCmp : (regno, regno, regno, CPtrCmpOp)
-function clause execute(CPtrCmp(rd, cb, ct, op)) =
-{
- checkCP2usable();
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if (register_inaccessible(ct)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, ct)
- else
- {
- let cb_val = readCapReg(cb);
- let ct_val = readCapReg(ct);
- equal = false;
- ltu = false;
- lts = false;
- if (cb_val.tag != ct_val.tag) then
- {
- if not (cb_val.tag) then
- {
- ltu = true;
- lts = true;
- }
- }
- else
- {
- cursor1 = getCapCursor(cb_val);
- cursor2 = getCapCursor(ct_val);
- equal = (cursor1 == cursor2);
- ltu = (cursor1 < cursor2);
- lts = to_bits(64, cursor1) <_s to_bits(64, cursor2);
- };
- let cmp : bool = match op {
- CEQ => equal,
- CNE => not (equal),
- CLT => lts,
- CLE => lts | equal,
- CLTU => ltu,
- CLEU => ltu | equal,
- CEXEQ => cb_val == ct_val,
- CNEXEQ => cb_val != ct_val
- };
- wGPR(rd) = zero_extend (cmp)
- }
-}
-
-union clause ast = CIncOffset : (regno, regno, regno)
-function clause execute (CIncOffset(cd, cb, rt)) =
-{
- checkCP2usable();
- cb_val = readCapReg(cb);
- rt_val = rGPR(rt);
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if ((cb_val.tag) & (cb_val.sealed) & (rt_val != 0x0000000000000000)) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else
- let (success, newCap) = incCapOffset(cb_val, rt_val) in
- if (success) then
- writeCapReg(cd, newCap)
- else
- writeCapReg(cd, int_to_cap(to_bits(64, getCapBase(cb_val)) + rt_val))
-}
-
-union clause ast = CIncOffsetImmediate : (regno, regno, bits(11))
-function clause execute (CIncOffsetImmediate(cd, cb, imm)) =
-{
- checkCP2usable();
- let cb_val = readCapReg(cb);
- let imm64 : bits(64) = sign_extend(imm) in
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if ((cb_val.tag) & (cb_val.sealed)) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else
- let (success, newCap) = incCapOffset(cb_val, imm64) in
- if (success) then
- writeCapReg(cd, newCap)
- else
- writeCapReg(cd, int_to_cap(to_bits(64, getCapBase(cb_val)) + imm64))
-}
-
-union clause ast = CSetOffset : (regno, regno, regno)
-function clause execute (CSetOffset(cd, cb, rt)) =
-{
- checkCP2usable();
- let cb_val = readCapReg(cb);
- let rt_val = rGPR(rt);
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if ((cb_val.tag) & (cb_val.sealed)) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else
- let (success, newCap) = setCapOffset(cb_val, rt_val) in
- if (success) then
- writeCapReg(cd, newCap)
- else
- writeCapReg(cd, int_to_cap(to_bits(64, getCapBase(cb_val)) + rt_val))
-}
-
-union clause ast = CSetBounds : (regno, regno, regno)
-function clause execute (CSetBounds(cd, cb, rt)) =
-{
- checkCP2usable();
- let cb_val = readCapReg(cb);
- let rt_val = unsigned(rGPR(rt));
- cursor = getCapCursor(cb_val);
- base = getCapBase(cb_val);
- top = getCapTop(cb_val);
- newTop = cursor + rt_val;
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else if (cursor < base) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if (newTop > top) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else
- let (_, newCap) = setCapBounds(cb_val, to_bits(64, cursor), to_bits(65, newTop)) in
- writeCapReg(cd, newCap) /* ignore exact */
-}
-
-union clause ast = CSetBoundsImmediate : (regno, regno, bits(11))
-function clause execute (CSetBoundsImmediate(cd, cb, imm)) =
-{
- checkCP2usable();
- cb_val = readCapReg(cb);
- immU = unsigned(imm);
- cursor = getCapCursor(cb_val);
- base = getCapBase(cb_val);
- top = getCapTop(cb_val);
- newTop = cursor + immU;
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else if (cursor < base) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if (newTop > top) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else
- let (_, newCap) = setCapBounds(cb_val, to_bits(64, cursor), to_bits(65, newTop)) in
- writeCapReg(cd, newCap) /* ignore exact */
-}
-
-union clause ast = CSetBoundsExact : (regno, regno, regno)
-function clause execute (CSetBoundsExact(cd, cb, rt)) =
-{
- checkCP2usable();
- cb_val = readCapReg(cb);
- rt_val = unsigned(rGPR(rt));
- cursor = getCapCursor(cb_val);
- base = getCapBase(cb_val);
- top = getCapTop(cb_val);
- newTop = cursor + rt_val;
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else if (cursor < base) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if (newTop > top) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else
- let (exact, newCap) = setCapBounds(cb_val, to_bits(64, cursor), to_bits(65, newTop)) in
- if not (exact) then
- raise_c2_exception(CapEx_InexactBounds, cb)
- else
- writeCapReg(cd, newCap)
-}
-
-union clause ast = CClearTag : (regno, regno)
-function clause execute (CClearTag(cd, cb)) =
-{
- checkCP2usable();
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else
- {
- cb_val = readCapReg(cb);
- writeCapReg(cd, {cb_val with tag=false});
- }
-}
-
-union clause ast = CMOVX : (regno,regno,regno,bool)
-function clause execute (CMOVX(cd, cb, rt, ismovn)) =
-{
- checkCP2usable();
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if ((rGPR(rt) == zeros()) ^ ismovn) then
- writeCapReg(cd) = readCapReg(cb);
-}
-
-union clause ast = ClearRegs : (ClearRegSet, bits(16))
-function clause execute (ClearRegs(regset, m)) =
-{
- if ((regset == CLo) | (regset == CHi)) then
- checkCP2usable();
- if (regset == CHi) then
- foreach (i from 0 to 15)
- let r = to_bits(5, i+16) in
- if (m[i] & register_inaccessible(r)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, r);
- foreach (i from 0 to 15)
- if (m[i]) then
- match regset {
- GPLo => wGPR(to_bits(5, i)) = zeros(),
- GPHi => wGPR(to_bits(5, i+16)) = zeros(),
- CLo => if i == 0 then
- DDC = capStructToCapReg(null_cap)
- else
- writeCapReg(to_bits(5, i)) = null_cap,
- CHi => writeCapReg(to_bits(5, i+16)) = null_cap
- }
-}
-
-union clause ast = CFromPtr : (regno, regno, regno)
-function clause execute (CFromPtr(cd, cb, rt)) =
-{
- checkCP2usable();
- cb_val = readCapRegDDC(cb);
- rt_val = rGPR(rt);
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if (rt_val == 0x0000000000000000) then
- writeCapReg(cd, null_cap)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else
- let (success, newCap) = setCapOffset(cb_val, rt_val) in
- if (success) then
- writeCapReg(cd, newCap)
- else
- writeCapReg(cd, int_to_cap(to_bits(64, getCapBase(cb_val)) + rt_val))
-}
-
-union clause ast = CBuildCap : (regno, regno, regno)
-function clause execute (CBuildCap(cd, cb, ct)) =
-{
- checkCP2usable();
- cb_val = readCapRegDDC(cb);
- ct_val = readCapReg(ct);
- cb_base = getCapBase(cb_val);
- ct_base = getCapBase(ct_val);
- cb_top = getCapTop(cb_val);
- ct_top = getCapTop(ct_val);
- cb_perms = getCapPerms(cb_val);
- ct_perms = getCapPerms(ct_val);
- ct_offset = getCapOffset(ct_val);
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if (register_inaccessible(ct)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, ct)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else if ct_base < cb_base then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if ct_top > cb_top then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if ct_base > ct_top then /* check for length < 0 - possible because ct might be untagged */
- raise_c2_exception(CapEx_LengthViolation, ct)
- else if (ct_perms & cb_perms) != ct_perms then
- raise_c2_exception(CapEx_UserDefViolation, cb)
- else
- let (exact, cd1) = setCapBounds(cb_val, to_bits(64, ct_base), to_bits(65, ct_top)) in
- let (representable, cd2) = setCapOffset(cd1, to_bits(64, ct_offset)) in
- let cd3 = setCapPerms(cd2, ct_perms) in
- {
- assert(exact, ""); /* base and top came from ct originally so will be exact */
- assert(representable, ""); /* similarly offset should be representable XXX except for fastRepCheck */
- writeCapReg(cd, cd3);
- }
-}
-
-union clause ast = CCopyType : (regno, regno, regno)
-function clause execute (CCopyType(cd, cb, ct)) =
-{
- checkCP2usable();
- cb_val = readCapReg(cb);
- ct_val = readCapReg(ct);
- cb_base = getCapBase(cb_val);
- cb_top = getCapTop(cb_val);
- ct_otype = unsigned(ct_val.otype);
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if (register_inaccessible(ct)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, ct)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else if (ct_val.sealed) then {
- if ct_otype < cb_base then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if ct_otype >= cb_top then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else
- let (success, cap) = setCapOffset(cb_val, to_bits(64, ct_otype - cb_base)) in {
- assert(success, ""); /* offset is in bounds so must succeed */
- writeCapReg(cd, cap);
- }
- } else
- writeCapReg(cd, int_to_cap(bitone ^^ 64))
-}
-
-union clause ast = CCheckPerm : (regno, regno)
-function clause execute (CCheckPerm(cs, rt)) =
-{
- checkCP2usable();
- cs_val = readCapReg(cs);
- cs_perms : bits(64) = zero_extend(getCapPerms(cs_val));
- rt_perms = rGPR(rt);
- if (register_inaccessible(cs)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cs)
- else if not (cs_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cs)
- else if ((cs_perms & rt_perms) != rt_perms) then
- raise_c2_exception(CapEx_UserDefViolation, cs)
-}
-
-union clause ast = CCheckType : (regno, regno)
-function clause execute (CCheckType(cs, cb)) =
-{
- checkCP2usable();
- cs_val = readCapReg(cs);
- cb_val = readCapReg(cb);
- if (register_inaccessible(cs)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cs)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if not (cs_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cs)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if not (cs_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cs)
- else if not (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else if ((cs_val.otype) != (cb_val.otype)) then
- raise_c2_exception(CapEx_TypeViolation, cs)
-}
-
-union clause ast = CTestSubset : (regno, regno, regno)
-function clause execute (CTestSubset(rd, cb, ct)) =
-{
- checkCP2usable();
- cb_val = readCapRegDDC(cb);
- ct_val = readCapReg(ct);
- ct_top = getCapTop(ct_val);
- ct_base = getCapBase(ct_val);
- ct_perms = getCapPerms(ct_val);
- cb_top = getCapTop(cb_val);
- cb_base = getCapBase(cb_val);
- cb_perms = getCapPerms(cb_val);
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if (register_inaccessible(ct)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, ct)
- else {
- result : bits(1) = if (cb_val.tag != ct_val.tag) then
- 0b0
- else if (ct_base < cb_base) then
- 0b0
- else if (ct_top > cb_top) then
- 0b0
- else if ((ct_perms & cb_perms) != ct_perms) then
- 0b0
- else
- 0b1;
- wGPR(rd) = zero_extend(result);
- }
-}
-
-union clause ast = CSeal : (regno, regno, regno)
-function clause execute (CSeal(cd, cs, ct)) =
-{
- checkCP2usable();
- cs_val = readCapReg(cs);
- ct_val = readCapReg(ct);
- ct_cursor = getCapCursor(ct_val);
- ct_top = getCapTop(ct_val);
- ct_base = getCapBase(ct_val);
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cs)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cs)
- else if (register_inaccessible(ct)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, ct)
- else if not (cs_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cs)
- else if not (ct_val.tag) then
- raise_c2_exception(CapEx_TagViolation, ct)
- else if (cs_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cs)
- else if (ct_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, ct)
- else if not (ct_val.permit_seal) then
- raise_c2_exception(CapEx_PermitSealViolation, ct)
- else if (ct_cursor < ct_base) then
- raise_c2_exception(CapEx_LengthViolation, ct)
- else if (ct_cursor >= ct_top) then
- raise_c2_exception(CapEx_LengthViolation, ct)
- else if (ct_cursor > max_otype) then
- raise_c2_exception(CapEx_LengthViolation, ct)
- else
- let (success, newCap) = sealCap(cs_val, to_bits(24, ct_cursor)) in
- if not (success) then
- raise_c2_exception(CapEx_InexactBounds, cs)
- else
- writeCapReg(cd, newCap)
-}
-
-union clause ast = CCSeal : (regno, regno, regno)
-function clause execute (CCSeal(cd, cs, ct)) =
-{
- checkCP2usable();
- cs_val = readCapReg(cs);
- ct_val = readCapReg(ct);
- ct_cursor = getCapCursor(ct_val);
- ct_top = getCapTop(ct_val);
- ct_base = getCapBase(ct_val);
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cs)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cs)
- else if (register_inaccessible(ct)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, ct)
- else if not (cs_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cs)
- else if (not (ct_val.tag)) | (getCapCursor(ct_val) == unsigned(bitone ^^ 64)) then
- writeCapReg(cd, cs_val)
- else if (cs_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cs)
- else if (ct_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, ct)
- else if not (ct_val.permit_seal) then
- raise_c2_exception(CapEx_PermitSealViolation, ct)
- else if (ct_cursor < ct_base) then
- raise_c2_exception(CapEx_LengthViolation, ct)
- else if (ct_cursor >= ct_top) then
- raise_c2_exception(CapEx_LengthViolation, ct)
- else if (ct_cursor > max_otype) then
- raise_c2_exception(CapEx_LengthViolation, ct)
- else
- let (success, newCap) = sealCap(cs_val, to_bits(24, ct_cursor)) in
- if not (success) then
- raise_c2_exception(CapEx_InexactBounds, cs)
- else
- writeCapReg(cd, newCap)
-}
-
-union clause ast = CUnseal : (regno, regno, regno)
-function clause execute (CUnseal(cd, cs, ct)) =
-{
- checkCP2usable();
- cs_val = readCapReg(cs);
- ct_val = readCapReg(ct);
- ct_cursor = getCapCursor(ct_val);
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cs)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cs)
- else if (register_inaccessible(ct)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, ct)
- else if not (cs_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cs)
- else if not (ct_val.tag) then
- raise_c2_exception(CapEx_TagViolation, ct)
- else if not (cs_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cs)
- else if (ct_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, ct)
- else if (ct_cursor != unsigned(cs_val.otype)) then
- raise_c2_exception(CapEx_TypeViolation, ct)
- else if not (ct_val.permit_unseal) then
- raise_c2_exception(CapEx_PermitUnsealViolation, ct)
- else if (ct_cursor < getCapBase(ct_val)) then
- raise_c2_exception(CapEx_LengthViolation, ct)
- else if (ct_cursor >= getCapTop(ct_val)) then
- raise_c2_exception(CapEx_LengthViolation, ct)
- else
- writeCapReg(cd, {cs_val with
- sealed=false,
- otype=zeros(),
- global=(cs_val.global & ct_val.global)
- })
-}
-
-union clause ast = CCall : (regno, regno, bits(11))
-function clause execute (CCall(cs, cb, 0b00000000000)) = /* selector=0 */
-{
- /* Partial implementation of CCall with checks in hardware, but raising a trap to perform trusted stack manipulation */
- checkCP2usable();
- cs_val = readCapReg(cs);
- cb_val = readCapReg(cb);
- cs_cursor = getCapCursor(cs_val);
- if (register_inaccessible(cs)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cs)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if not (cs_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cs)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if not (cs_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cs)
- else if not (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else if ((cs_val.otype) != (cb_val.otype)) then
- raise_c2_exception(CapEx_TypeViolation, cs)
- else if not (cs_val.permit_execute) then
- raise_c2_exception(CapEx_PermitExecuteViolation, cs)
- else if (cb_val.permit_execute) then
- raise_c2_exception(CapEx_PermitExecuteViolation, cb)
- else if (cs_cursor < getCapBase(cs_val)) then
- raise_c2_exception(CapEx_LengthViolation, cs)
- else if (cs_cursor >= getCapTop(cs_val)) then
- raise_c2_exception(CapEx_LengthViolation, cs)
- else
- raise_c2_exception(CapEx_CallTrap, cs);
-}
-
-function clause execute (CCall(cs, cb, 0b00000000001)) = /* selector=1 */
-{
- /* Jump-like implementation of CCall that unseals arguments */
- checkCP2usable();
- cs_val = readCapReg(cs);
- cb_val = readCapReg(cb);
- cs_cursor = getCapCursor(cs_val);
- if (register_inaccessible(cs)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cs)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if not (cs_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cs)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if not (cs_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cs)
- else if not (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else if ((cs_val.otype) != (cb_val.otype)) then
- raise_c2_exception(CapEx_TypeViolation, cs)
- else if not (cs_val.permit_ccall) then
- raise_c2_exception(CapEx_PermitCCallViolation, cs)
- else if not (cb_val.permit_ccall) then
- raise_c2_exception(CapEx_PermitCCallViolation, cb)
- else if not (cs_val.permit_execute) then
- raise_c2_exception(CapEx_PermitExecuteViolation, cs)
- else if (cb_val.permit_execute) then
- raise_c2_exception(CapEx_PermitExecuteViolation, cb)
- else if (cs_cursor < getCapBase(cs_val)) then
- raise_c2_exception(CapEx_LengthViolation, cs)
- else if (cs_cursor >= getCapTop(cs_val)) then
- raise_c2_exception(CapEx_LengthViolation, cs)
- else
- {
- execute_branch_pcc({cs_val with
- sealed=false,
- otype=zeros()
- });
- inCCallDelay = 0b1;
- C26 = capStructToCapReg({cb_val with
- sealed=false,
- otype=zeros()
- });
- }
-}
-
-union clause ast = CReturn : unit
-function clause execute (CReturn()) =
-{
- checkCP2usable();
- raise_c2_exception_noreg(CapEx_ReturnTrap)
-}
-
-union clause ast = CBX : (regno, bits(16), bool)
-function clause execute (CBX(cb, imm, notset)) =
-{
- checkCP2usable();
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if (((readCapReg(cb)).tag) ^ notset) then
- {
- let offset : bits(64) = (sign_extend(imm @ 0b00) + 4) in
- execute_branch(PC + offset);
- }
-}
-
-union clause ast = CBZ : (regno, bits(16), bool)
-function clause execute (CBZ(cb, imm, notzero)) =
-{
- checkCP2usable();
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if (((readCapReg(cb)) == null_cap) ^ notzero) then
- {
- let offset : bits(64) = (sign_extend(imm @ 0b00) + 4) in
- execute_branch(PC + offset);
- }
-}
-
-union clause ast = CJALR : (regno, regno, bool)
-function clause execute(CJALR(cd, cb, link)) =
-{
- checkCP2usable();
- cb_val = readCapReg(cb);
- cb_ptr = getCapCursor(cb_val);
- cb_top = getCapTop(cb_val);
- cb_base= getCapBase(cb_val);
- if (link & register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else if not (cb_val.permit_execute) then
- raise_c2_exception(CapEx_PermitExecuteViolation, cb)
- else if (cb_ptr < cb_base) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if ((cb_ptr + 4) > cb_top) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if ((cb_ptr % 4) != 0) then
- SignalException(AdEL)
- else
- {
- if (link) then
- let pcc = capRegToCapStruct(PCC) in
- let (success, linkCap) = setCapOffset(pcc, PC+8) in
- if (success) then
- writeCapReg(cd, linkCap)
- else
- assert(false, "");
- execute_branch_pcc(cb_val);
- }
-}
-
-union clause ast = CLoad : (regno, regno, regno, bits(8), bool, WordType, bool)
-function clause execute (CLoad(rd, cb, rt, offset, signext, width, linked)) =
-{
- checkCP2usable();
- cb_val = readCapRegDDC(cb);
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else if not (cb_val.permit_load) then
- raise_c2_exception(CapEx_PermitLoadViolation, cb)
- else
- {
- let 'size = wordWidthBytes(width);
- let cursor = getCapCursor(cb_val);
- let vAddr = (cursor + unsigned(rGPR(rt)) + size*signed(offset)) % pow2(64);
- let vAddr64 = to_bits(64, vAddr);
- if ((vAddr + size) > getCapTop(cb_val)) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if (vAddr < getCapBase(cb_val)) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if not (isAddressAligned(vAddr64, width)) then
- SignalExceptionBadAddr(AdEL, vAddr64)
- else
- {
- pAddr = (TLBTranslate(vAddr64, LoadData));
- memResult : bits(64) = if (linked) then
- {
- CP0LLBit = 0b1;
- CP0LLAddr = pAddr;
- extendLoad(MEMr_reserve_wrapper(pAddr, size), signext)
- }
- else
- extendLoad(MEMr_wrapper(pAddr, size), signext);
- wGPR(rd) = memResult;
- }
- }
-}
-
-union clause ast = CStore : (regno, regno, regno, regno, bits(8), WordType, bool)
-
-function clause execute (CStore(rs, cb, rt, rd, offset, width, conditional)) =
-{
- checkCP2usable();
- cb_val = readCapRegDDC(cb);
- if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else if not (cb_val.permit_store) then
- raise_c2_exception(CapEx_PermitStoreViolation, cb)
- else
- {
- size = wordWidthBytes(width);
- cursor = getCapCursor(cb_val);
- vAddr = (cursor + unsigned(rGPR(rt)) + size * signed(offset)) % pow2(64);
- vAddr64= to_bits(64, vAddr);
- if ((vAddr + size) > getCapTop(cb_val)) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if (vAddr < getCapBase(cb_val)) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if not (isAddressAligned(vAddr64, width)) then
- SignalExceptionBadAddr(AdES, vAddr64)
- else
- {
- pAddr = (TLBTranslate(vAddr64, StoreData));
- rs_val = rGPR(rs);
- if (conditional) then
- {
- success : bool = if (CP0LLBit[0]) then
- match width
- {
- B => MEMw_conditional_wrapper(pAddr, 1, rs_val[7..0]),
- H => MEMw_conditional_wrapper(pAddr, 2, rs_val[15..0]),
- W => MEMw_conditional_wrapper(pAddr, 4, rs_val[31..0]),
- D => MEMw_conditional_wrapper(pAddr, 8, rs_val)
- }
- else
- false;
- wGPR(rd) = zero_extend(success);
- }
- else
- match width
- {
- B => MEMw_wrapper(pAddr, 1) = rs_val[7..0],
- H => MEMw_wrapper(pAddr, 2) = rs_val[15..0],
- W => MEMw_wrapper(pAddr, 4) = rs_val[31..0],
- D => MEMw_wrapper(pAddr, 8) = rs_val
- }
- }
- }
-}
-
-union clause ast = CSC : (regno, regno, regno, regno, bits(11), bool)
-function clause execute (CSC(cs, cb, rt, rd, offset, conditional)) =
-{
- checkCP2usable();
- cs_val = readCapReg(cs);
- cb_val = readCapRegDDC(cb);
- if (register_inaccessible(cs)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cs)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else if not (cb_val.permit_store) then
- raise_c2_exception(CapEx_PermitStoreViolation, cb)
- else if not (cb_val.permit_store_cap) then
- raise_c2_exception(CapEx_PermitStoreCapViolation, cb)
- else if not (cb_val.permit_store_local_cap) & (cs_val.tag) & not (cs_val.global) then
- raise_c2_exception(CapEx_PermitStoreLocalCapViolation, cb)
- else
- {
- cursor = getCapCursor(cb_val);
- vAddr = (cursor + unsigned(rGPR(rt)) + 16 * signed(offset)) % pow2(64);
- vAddr64= to_bits(64, vAddr);
- if ((vAddr + cap_size) > getCapTop(cb_val)) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if (vAddr < getCapBase(cb_val)) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if ((vAddr % cap_size) != 0) then
- SignalExceptionBadAddr(AdES, vAddr64)
- else
- {
- let (pAddr, noStoreCap) = TLBTranslateC(vAddr64, StoreData) in
- if (cs_val.tag & noStoreCap) then
- raise_c2_exception(CapEx_TLBNoStoreCap, cs)
- else if (conditional) then
- {
- success = if (CP0LLBit[0]) then
- MEMw_tagged_conditional(pAddr, cs_val.tag, capStructToMemBits(cs_val))
- else
- false;
- wGPR(rd) = zero_extend(success);
- }
- else
- MEMw_tagged(pAddr, cs_val.tag, capStructToMemBits(cs_val));
- }
- }
-}
-
-union clause ast = CLC : (regno, regno, regno, bits(16), bool)
-function clause execute (CLC(cd, cb, rt, offset, linked)) =
-{
- checkCP2usable();
- cb_val = readCapRegDDC(cb);
- if (register_inaccessible(cd)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cd)
- else if (register_inaccessible(cb)) then
- raise_c2_exception(CapEx_AccessSystemRegsViolation, cb)
- else if not (cb_val.tag) then
- raise_c2_exception(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- raise_c2_exception(CapEx_SealViolation, cb)
- else if not (cb_val.permit_load) then
- raise_c2_exception(CapEx_PermitLoadViolation, cb)
- else
- {
- cursor = getCapCursor(cb_val);
- vAddr = (cursor + unsigned(rGPR(rt)) + 16 * signed(offset)) % pow2(64);
- vAddr64= to_bits(64, vAddr);
- if ((vAddr + cap_size) > getCapTop(cb_val)) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if (vAddr < getCapBase(cb_val)) then
- raise_c2_exception(CapEx_LengthViolation, cb)
- else if ((vAddr % cap_size) != 0) then
- SignalExceptionBadAddr(AdEL, vAddr64)
- else
- {
- let (pAddr, suppressTag) = TLBTranslateC(vAddr64, LoadData) in
- let 'cd = unsigned(cd) in
- if (linked) then
- {
- CP0LLBit = 0b1;
- CP0LLAddr = pAddr;
- let (tag, mem) = MEMr_tagged_reserve(pAddr) in
- (*CapRegs[cd]) = memBitsToCapBits(tag & (cb_val.permit_load_cap) & (not (suppressTag)), mem);
- }
- else
- {
- let (tag, mem) = MEMr_tagged(pAddr) in
- (*CapRegs[cd]) = memBitsToCapBits(tag & (cb_val.permit_load_cap) & (not (suppressTag)), mem);
- }
- }
- }
-}
-
-union clause ast = C2Dump : regno
-function clause execute (C2Dump (rt)) =
- () /* Currently a NOP */
diff --git a/cheri/cheri_prelude_128.sail b/cheri/cheri_prelude_128.sail
deleted file mode 100644
index da761c91..00000000
--- a/cheri/cheri_prelude_128.sail
+++ /dev/null
@@ -1,331 +0,0 @@
-/*========================================================================*/
-/* */
-/* Copyright (c) 2015-2017 Robert M. Norton */
-/* Copyright (c) 2015-2017 Kathyrn Gray */
-/* All rights reserved. */
-/* */
-/* This software was developed by the University of Cambridge Computer */
-/* Laboratory as part of the Rigorous Engineering of Mainstream Systems */
-/* (REMS) project, funded by EPSRC grant EP/K008528/1. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following conditions */
-/* are met: */
-/* 1. Redistributions of source code must retain the above copyright */
-/* notice, this list of conditions and the following disclaimer. */
-/* 2. Redistributions in binary form must reproduce the above copyright */
-/* notice, this list of conditions and the following disclaimer in */
-/* the documentation and/or other materials provided with the */
-/* distribution. */
-/* */
-/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */
-/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
-/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
-/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */
-/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
-/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */
-/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */
-/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
-/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */
-/* SUCH DAMAGE. */
-/*========================================================================*/
-
-/* 128 bit cap + tag */
-type CapReg = bits(129)
-
-struct CapStruct = {
- tag : bool ,
- uperms : bits(4) ,
- access_system_regs : bool ,
- permit_unseal : bool ,
- permit_ccall : bool ,
- permit_seal : bool ,
- permit_store_local_cap : bool ,
- permit_store_cap : bool ,
- permit_load_cap : bool ,
- permit_store : bool ,
- permit_load : bool ,
- permit_execute : bool ,
- global : bool ,
- reserved : bits(2) ,
- E : bits(6) ,
- sealed : bool ,
- B : bits(20),
- T : bits(20),
- otype : bits(24),
- address : bits(64)
-}
-
-let null_cap : CapStruct = struct {
- tag = false,
- uperms = zeros(),
- access_system_regs = false,
- permit_unseal = false,
- permit_ccall = false,
- permit_seal = false,
- permit_store_local_cap = false,
- permit_store_cap = false,
- permit_load_cap = false,
- permit_store = false,
- permit_load = false,
- permit_execute = false,
- global = false,
- reserved = zeros(),
- E = 0b110000, /* 48, encoded as 0 in memory due to xor */
- sealed = false,
- B = zeros(),
- T = 0x10000,
- otype = zeros(),
- address = zeros()
-}
-
-let default_cap : CapStruct = struct {
- tag = true,
- uperms = ones(),
- access_system_regs = true,
- permit_unseal = true,
- permit_ccall = true,
- permit_seal = true,
- permit_store_local_cap = true,
- permit_store_cap = true,
- permit_load_cap = true,
- permit_store = true,
- permit_load = true,
- permit_execute = true,
- global = true,
- reserved = zeros(),
- E = 0b110000, /* 48, encoded as 0 in memory due to xor */
- sealed = false,
- B = zeros(),
- T = 0x10000,
- otype = zeros(),
- address = zeros()
-}
-
-let 'cap_size = 16
-
-function capRegToCapStruct(c) : CapReg -> CapStruct =
- let s : bool = c[104] in
- let Bc : bits(20) = if s then c[103..96] @ 0x000 else c[103..84] in
- let Tc : bits(20) = if s then c[83..76] @ 0x000 else c[83..64] in
- let otype : bits(24) = if s then c[95..84] @ c[75..64] else zeros() in
- struct {
- tag = c[128],
- uperms = c[127..124],
- access_system_regs = c[123],
- permit_unseal = c[122],
- permit_ccall = c[121],
- permit_seal = c[120],
- permit_store_local_cap = c[119],
- permit_store_cap = c[118],
- permit_load_cap = c[117],
- permit_store = c[116],
- permit_load = c[115],
- permit_execute = c[114],
- global = c[113],
- reserved = c[112..111],
- E = c[110..105],
- sealed = s,
- B = Bc,
- T = Tc,
- otype = otype,
- address = c[63..0]
- }
-
-function getCapHardPerms(cap) : CapStruct -> bits(11) =
- (cap.access_system_regs
- @ cap.permit_unseal
- @ cap.permit_ccall
- @ cap.permit_seal
- @ cap.permit_store_local_cap
- @ cap.permit_store_cap
- @ cap.permit_load_cap
- @ cap.permit_store
- @ cap.permit_load
- @ cap.permit_execute
- @ cap.global)
-
-function capStructToMemBits128(cap) : CapStruct -> bits(128) =
- let b : bits(20) = if cap.sealed then (cap.B)[19..12] @ (cap.otype)[23..12] else cap.B in
- let t : bits(20) = if cap.sealed then (cap.T)[19..12] @ (cap.otype)[11..0] else cap.T in
- ( cap.uperms
- @ getCapHardPerms(cap)
- @ cap.reserved
- @ cap.E
- @ cap.sealed
- @ b
- @ t
- @ cap.address
- )
-
-function capStructToCapReg(cap) : CapStruct -> CapReg =
- (cap.tag @ capStructToMemBits128(cap))
-
-/* Reverse of above used when reading from memory */
-function memBitsToCapBits128(tag, b) : (bool, bits(128)) -> CapReg=
- (tag @ b)
-
-/* When saving/restoring capabilities xor them with bits of null_cap --
- this ensures that canonical null_cap is always all-zeros in memory
- even though it may have bits set logically (e.g. length or exponent */
-
-let null_cap_bits : bits(128) = capStructToMemBits128(null_cap)
-
-function capStructToMemBits(cap) : CapStruct -> bits(128) =
- capStructToMemBits128(cap) ^ null_cap_bits
-
-function memBitsToCapBits(tag, b) : (bool, bits(128)) -> bits(129) =
- memBitsToCapBits128(tag, b ^ null_cap_bits)
-
-function getCapPerms(cap) : CapStruct -> bits(31) =
- let perms : bits(15) = zero_extend(getCapHardPerms(cap)) in
- (0x000 /* uperms 30-19 */
- @ cap.uperms
- @ perms)
-
-function setCapPerms(cap, perms) : (CapStruct, bits(31)) -> CapStruct =
- { cap with
- uperms = perms[18..15],
- /* 14..11 reserved -- ignore */
- access_system_regs = perms[10],
- permit_unseal = perms[9],
- permit_ccall = perms[8],
- permit_seal = perms[7],
- permit_store_local_cap = perms[6],
- permit_store_cap = perms[5],
- permit_load_cap = perms[4],
- permit_store = perms[3],
- permit_load = perms[2],
- permit_execute = perms[1],
- global = perms[0]
- }
-
-function sealCap(cap, otype) : (CapStruct, bits(24)) -> (bool, CapStruct) =
- if (((cap.T)[11..0] == zeros()) & ((cap.B)[11..0] == zeros())) then
- (true, {cap with sealed=true, otype=otype})
- else
- (false, cap /* XXX should be undefined? */ )
-
-function a_top_correction(a_mid, R, bound) : (bits(20), bits(20), bits(20)) -> bits(65) =
- match (a_mid <_u R, bound <_u R) {
- (false, false) => zeros(),
- (false, true) => zero_extend(0b1),
- (true, false) => ones(),
- (true, true) => zeros()
- }
-
-function getCapBase(c) : CapStruct -> uint64 =
- let E = min(unsigned(c.E), 48) in
- let Bc : bits(20) = c.B in
- let a : bits(65) = zero_extend(c.address) in
- let R : bits(20) = Bc - 0x01000 in /* wraps */
- let a_mid : bits(20) = mask(a >> E) in
- let correction = a_top_correction(a_mid, R, Bc) in
- let a_top = a >> E+20 in
- let base : bits(64) = mask(((a_top + correction) @ Bc) << E) in
- unsigned(base)
-
-function getCapTop (c) : CapStruct -> CapLen =
- let E = min(unsigned(c.E), 48) in
- let Bc : bits(20) = c.B in
- let T : bits(20) = c.T in
- let a : bits(65) = zero_extend(c.address) in
- let R : bits(20) = Bc - 0x01000 in /* wraps */
- let a_mid : bits(20) = mask(a >> E) in
- let correction = a_top_correction(a_mid, R, T) in
- let a_top = a >> E+20 in
- let top1 : bits(65) = mask((a_top + correction) @ T) in
- unsigned(top1 << E)
-
-function getCapOffset(c) : CapStruct -> uint64 =
- let base = getCapBase(c) in
- (unsigned(c.address) - base) % pow2(64)
-
-function getCapLength(c) : CapStruct -> CapLen =
- let 'top = getCapTop(c) in
- let 'base = getCapBase(c) in {
- assert (top >= base);
- top - base
- }
-
-function getCapCursor(cap) : CapStruct -> uint64 = unsigned(cap.address)
-
-function fastRepCheck(c, i) : (CapStruct, bits(64)) -> bool=
- let 'E = unsigned(c.E) in
- if (E >= 44) then
- true /* in this case representable region is whole address space */
- else
- let E' = min(E, 43) in
- let i_top = signed(i[63..E+20]) in
- let i_mid : bits(20) = i[E+19..E] in
- let a_mid : bits(20) = (c.address)[E+19..E] in
- let R : bits(20) = (c.B) - 0x01000 in
- let diff : bits(20) = R - a_mid in
- let diff1 : bits(20) = diff - 1 in
- /* i_top determines 1. whether the increment is inRange
- i.e. less than the size of the representable region
- (2**(E+20)) and 2. whether it is positive or negative. To
- satisfy 1. all top bits must be the same so we are
- interested in the cases i_top is 0 or -1 */
- if (i_top == 0) then
- i_mid <_u diff1
- else if (i_top == -1) then
- (i_mid >=_u diff) & (R != a_mid)
- else
- false
-
-function setCapOffset(c, offset) : (CapStruct, bits(64)) -> (bool, CapStruct) =
- let base : bits(64) = to_bits(64, getCapBase(c)) in
- let newAddress : bits(64) = base + offset in
- let newCap = { c with address = newAddress } in
- let representable = fastRepCheck(c, (newAddress - c.address)) in
- (representable, newCap)
-
-function incCapOffset(c, delta) : (CapStruct, bits(64)) -> (bool, CapStruct) =
- let newAddress : bits(64) = c.address + delta in
- let newCap = { c with address = newAddress } in
- let representable = fastRepCheck(c, delta) in
- (representable, newCap)
-
-/** FUNCTION:integer HighestSetBit(bits(N) x) */
-
-val HighestSetBit : forall 'N , 'N >= 2. bits('N) -> {'n, 0 <= 'n < 'N . (bool, atom('n))}
-function HighestSetBit x = {
- foreach (i from ('N - 1) to 0 by 1 in dec)
- if [x[i]] == 0b1 then return (true, i);
- return (false, 0)
-}
-
-/* hw rounds up E to multiple of 4 */
-function roundUp(e) : range(0, 45) -> range(0, 48) =
- let 'r = e % 4 in
- if (r == 0)
- then e
- else (e - r + 4)
-
-function computeE (rlength) : bits(65) -> range(0, 48) =
- let (nonzero, 'msb) = HighestSetBit((rlength + (rlength >> 6)) >> 19) in
- if nonzero then
- /* above will always return <= 45 because 19 bits of zero are shifted in from right */
- {assert(0 <= msb & msb <= 45); roundUp (min(msb,45)) }
- else
- 0
-
-function setCapBounds(cap, base, top) : (CapStruct, bits(64), bits(65)) -> (bool, CapStruct) =
- /* {cap with base=base; length=(bits(64)) length; offset=0} */
- let 'e = computeE(top - (0b0 @ base)) in
- let Bc : bits(20) = mask(base >> e) in
- let T : bits(20) = mask(top >> e) in
- let e_mask : bits(65) = zero_extend(replicate_bits(0b1, e)) in
- let e_bits = top & e_mask in
- let T2 : bits(20) = T + (if unsigned(e_bits) == 0 then 0x00000 else 0x00001) in
- let newCap = {cap with address=base, E=to_bits(6, e), B=Bc, T=T2} in
- let newBase = getCapBase(newCap) in
- let newTop = getCapTop(newCap) in
- let exact = (unsigned(base) == newBase) & (unsigned(top) == newTop) in
- (exact, newCap)
-
-function int_to_cap (offset) : bits(64) -> CapStruct =
- {null_cap with address = offset}
diff --git a/cheri/cheri_prelude_256.sail b/cheri/cheri_prelude_256.sail
deleted file mode 100644
index 08e285e7..00000000
--- a/cheri/cheri_prelude_256.sail
+++ /dev/null
@@ -1,229 +0,0 @@
-/*========================================================================*/
-/* */
-/* Copyright (c) 2015-2017 Robert M. Norton */
-/* Copyright (c) 2015-2017 Kathyrn Gray */
-/* All rights reserved. */
-/* */
-/* This software was developed by the University of Cambridge Computer */
-/* Laboratory as part of the Rigorous Engineering of Mainstream Systems */
-/* (REMS) project, funded by EPSRC grant EP/K008528/1. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following conditions */
-/* are met: */
-/* 1. Redistributions of source code must retain the above copyright */
-/* notice, this list of conditions and the following disclaimer. */
-/* 2. Redistributions in binary form must reproduce the above copyright */
-/* notice, this list of conditions and the following disclaimer in */
-/* the documentation and/or other materials provided with the */
-/* distribution. */
-/* */
-/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */
-/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
-/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
-/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */
-/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
-/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */
-/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */
-/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
-/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */
-/* SUCH DAMAGE. */
-/*========================================================================*/
-
-/* 256 bit cap + tag */
-type CapReg = bits(257)
-
-struct CapStruct = {
- tag : bool ,
- padding : bits(8) ,
- otype : bits(24),
- uperms : bits(16),
- perm_reserved11_14 : bits(4) ,
- access_system_regs : bool ,
- permit_unseal : bool ,
- permit_ccall : bool ,
- permit_seal : bool ,
- permit_store_local_cap : bool ,
- permit_store_cap : bool ,
- permit_load_cap : bool ,
- permit_store : bool ,
- permit_load : bool ,
- permit_execute : bool ,
- global : bool ,
- sealed : bool ,
- address : bits(64),
- base : bits(64),
- length : bits(64),
-}
-
-let null_cap : CapStruct = struct {
- tag = false,
- padding = zeros(),
- otype = zeros(),
- uperms = zeros(),
- perm_reserved11_14 = zeros(),
- access_system_regs = false,
- permit_unseal = false,
- permit_ccall = false,
- permit_seal = false,
- permit_store_local_cap = false,
- permit_store_cap = false,
- permit_load_cap = false,
- permit_store = false,
- permit_load = false,
- permit_execute = false,
- global = false,
- sealed = false,
- address = zeros(),
- base = zeros(),
- length = 0xffffffffffffffff
-}
-
-let default_cap : CapStruct = struct {
- tag = true,
- padding = zeros(),
- otype = zeros(),
- uperms = ones(),
- perm_reserved11_14 = zeros(),
- access_system_regs = true,
- permit_unseal = true,
- permit_ccall = true,
- permit_seal = true,
- permit_store_local_cap = true,
- permit_store_cap = true,
- permit_load_cap = true,
- permit_store = true,
- permit_load = true,
- permit_execute = true,
- global = true,
- sealed = false,
- address = zeros(),
- base = zeros(),
- length = 0xffffffffffffffff
-}
-
-let 'cap_size = 32
-
-function capRegToCapStruct(capReg) : CapReg -> CapStruct =
- struct {
- tag = capReg[256],
- padding = capReg[255..248],
- otype = capReg[247..224],
- uperms = capReg[223..208],
- perm_reserved11_14 = capReg[207..204],
- access_system_regs = capReg[203],
- permit_unseal = capReg[202],
- permit_ccall = capReg[201],
- permit_seal = capReg[200],
- permit_store_local_cap = capReg[199],
- permit_store_cap = capReg[198],
- permit_load_cap = capReg[197],
- permit_store = capReg[196],
- permit_load = capReg[195],
- permit_execute = capReg[194],
- global = capReg[193],
- sealed = capReg[192],
- address = capReg[191..128],
- base = capReg[127..64],
- length = capReg[63..0]
- }
-
-function getCapPerms(cap) : CapStruct -> bits(31) =
- (
- cap.uperms
- @ cap.perm_reserved11_14
- @ cap.access_system_regs
- @ cap.permit_unseal
- @ cap.permit_ccall
- @ cap.permit_seal
- @ cap.permit_store_local_cap
- @ cap.permit_store_cap
- @ cap.permit_load_cap
- @ cap.permit_store
- @ cap.permit_load
- @ cap.permit_execute
- @ cap.global
- )
-
-
-/* Function to convert capabilities to in-memory format. */
-function capStructToMemBits256(cap) : CapStruct -> bits(256) =
- (
- cap.padding
- @ cap.otype
- @ getCapPerms(cap)
- @ cap.sealed
- @ cap.address
- @ cap.base
- @ cap.length
- )
-
-
-/* When saving/restoring capabilities xor them with bits of null_cap --
- this ensures that canonical null_cap is always all-zeros in memory
- even though it may have bits set logically (e.g. length or exponent) */
-
-let null_cap_bits : bits(256) = capStructToMemBits256(null_cap)
-
-function capStructToMemBits(cap) : CapStruct -> bits(256)=
- capStructToMemBits256(cap) ^ null_cap_bits
-
-function memBitsToCapBits(tag, b) : (bool, bits(256)) -> bits(257) =
- tag @ (b ^ null_cap_bits)
-
-function capStructToCapReg(cap) : CapStruct -> CapReg = cap.tag @ capStructToMemBits256(cap)
-
-function setCapPerms(cap, perms) : (CapStruct, bits(31)) -> CapStruct =
- { cap with
- uperms = perms[30..15],
- /* perm_reserved11_14 = perms[14..11], XXX should allow to set? only affects cbuildcap. */
- access_system_regs = perms[10],
- permit_unseal = perms[9],
- permit_ccall = perms[8],
- permit_seal = perms[7],
- permit_store_local_cap = perms[6],
- permit_store_cap = perms[5],
- permit_load_cap = perms[4],
- permit_store = perms[3],
- permit_load = perms[2],
- permit_execute = perms[1],
- global = perms[0]
- }
-
-function sealCap(cap, otype) : (CapStruct, bits(24)) -> (bool, CapStruct) =
- (true, {cap with sealed=true, otype=otype})
-
-function getCapBase(c) : CapStruct -> uint64 = unsigned(c.base)
-function getCapTop(c) : CapStruct -> CapLen = unsigned(c.base) + unsigned(c.length) /* XXX bug here? -- should be mod 2^64 */
-function getCapOffset(c) : CapStruct -> uint64 = (unsigned(c.address) - unsigned(c.base)) % (pow2(64))
-function getCapLength(c) : CapStruct -> CapLen = unsigned(c.length)
-
-function getCapCursor(c) : CapStruct -> uint64 = unsigned(c.address)
-
-/*!
-Set the offset capability of the a capability to given value and return the result, along with a boolean indicating true if the operation preserved the existing bounds of the capability. When using compressed capabilities, setting the offset far outside the capability bounds can cause the result to become unrepresentable (XXX mention guarantees). Additionally in some implementations a fast representablity check may be used that could cause the operation to return failure even though the capability would be representable (XXX provide details).
- */
-val setCapOffset : (CapStruct, bits(64)) -> (bool, CapStruct)
-function setCapOffset(c, offset) =
- (true, {c with address=c.base + offset})
-
-/*!
-\function{incCapOffset} is the same as \function{setCapOffset} except that the 64-bit value is added to the current capability offset modulo $2^{64}$ (i.e. signed twos-complement arithemtic).
- */
-val incCapOffset : (CapStruct, bits(64)) -> (bool, CapStruct)
-function incCapOffset(c, delta) =
- let newAddr : bits(64) = c.address + delta in
- (true, {c with address = newAddr})
-
-/*!
-Returns a capability derived from the given capability by setting the base and top to values provided. The offset of the resulting capability is zero. In case the requested bounds are not exactly representable the returned boolean is false and the returned capability has bounds at least including the region bounded by base and top but rounded to representable values.
- */
-val setCapBounds : (CapStruct, bits(64), bits(65)) -> (bool, CapStruct)
-function setCapBounds(cap, base, top) =
- let length : bits(65) = top - (0b0 @ base) in
- (true, {cap with base = base, length = length[63..0], address = base})
-
-function int_to_cap (address) : bits(64) -> CapStruct =
- {null_cap with address = address}
diff --git a/cheri/cheri_prelude_common.sail b/cheri/cheri_prelude_common.sail
deleted file mode 100644
index 764a4ff1..00000000
--- a/cheri/cheri_prelude_common.sail
+++ /dev/null
@@ -1,534 +0,0 @@
-/*========================================================================*/
-/* */
-/* Copyright (c) 2015-2017 Robert M. Norton */
-/* Copyright (c) 2015-2017 Kathyrn Gray */
-/* All rights reserved. */
-/* */
-/* This software was developed by the University of Cambridge Computer */
-/* Laboratory as part of the Rigorous Engineering of Mainstream Systems */
-/* (REMS) project, funded by EPSRC grant EP/K008528/1. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following conditions */
-/* are met: */
-/* 1. Redistributions of source code must retain the above copyright */
-/* notice, this list of conditions and the following disclaimer. */
-/* 2. Redistributions in binary form must reproduce the above copyright */
-/* notice, this list of conditions and the following disclaimer in */
-/* the documentation and/or other materials provided with the */
-/* distribution. */
-/* */
-/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */
-/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
-/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
-/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */
-/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
-/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */
-/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */
-/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
-/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */
-/* SUCH DAMAGE. */
-/*========================================================================*/
-
-
-scattered union ast
-
-val execute : ast -> unit effect {barr, eamem, escape, rmem, rmemt, rreg, undef, wmv, wmvt, wreg}
-scattered function execute
-
-val decode : bits(32) -> option(ast) effect pure
-scattered function decode
-
-register PCC : CapReg
-register nextPCC : CapReg
-register delayedPCC : CapReg
-register inCCallDelay : bits(1)
-register DDC : CapReg
-register C01 : CapReg
-register C02 : CapReg
-register C03 : CapReg
-register C04 : CapReg
-register C05 : CapReg
-register C06 : CapReg
-register C07 : CapReg
-register C08 : CapReg
-register C09 : CapReg
-register C10 : CapReg
-register C11 : CapReg
-register C12 : CapReg
-register C13 : CapReg
-register C14 : CapReg
-register C15 : CapReg
-register C16 : CapReg
-register C17 : CapReg
-register C18 : CapReg
-register C19 : CapReg
-register C20 : CapReg
-register C21 : CapReg
-register C22 : CapReg
-register C23 : CapReg
-register C24 : CapReg /* aka return code capability, RCC */
-register C25 : CapReg
-register C26 : CapReg /* aka invoked data capability, IDC */
-register C27 : CapReg
-register C28 : CapReg
-register C29 : CapReg
-register C30 : CapReg
-register C31 : CapReg
-
-register CTLSU : CapReg /* User thread local storage capabiltiy */
-register CTLSP : CapReg /* Privileged thread local storage capabiltiy */
-register KR1C : CapReg /* kernel reserved capability 1 */
-register KR2C : CapReg /* kernel reserved capability 2 */
-register KCC : CapReg /* kernel code capability */
-register KDC : CapReg /* kernel data capability */
-register EPCC : CapReg /* exception program counter capability */
-
-let IDCNO : regno = 0b11010 /* C26, invoked data capability used be CCall */
-
-/* Special register used to have these numbers -- here for transition purposes */
-let KR1CNO : regno = 0b11011 /* C27 */
-let KR2CNO : regno = 0b11100 /* C28 */
-let KCCNO : regno = 0b11101 /* C29 */
-let KDCNO : regno = 0b11110 /* C30 */
-let EPCCNO : regno = 0b11111 /* C31 */
-
-let CapRegs : vector(32, dec, register(CapReg)) =
- [
- ref C31,
- ref C30,
- ref C29,
- ref C28,
- ref C27,
- ref C26,
- ref C25,
- ref C24,
- ref C23,
- ref C22,
- ref C21,
- ref C20,
- ref C19,
- ref C18,
- ref C17,
- ref C16,
- ref C15,
- ref C14,
- ref C13,
- ref C12,
- ref C11,
- ref C10,
- ref C09,
- ref C08,
- ref C07,
- ref C06,
- ref C05,
- ref C04,
- ref C03,
- ref C02,
- ref C01,
- ref DDC
- ]
-
-let max_otype = MAX(24) /*0xffffff*/
-let have_cp2 = true
-
-/*!
-This function reads a given capability register and returns its contents converted to a CapStruct.
-If the argument is zero then the null capability is returned.
-*/
-val readCapReg : regno -> CapStruct effect {rreg}
-function readCapReg(n) =
- if (n == 0b00000) then
- null_cap
- else
- let i = unsigned(n) in
- capRegToCapStruct(reg_deref(CapRegs[i]))
-
-/*!
-This is the same as readCapReg except that when the argument is zero the value of DDC is returned
-instead of the null capability. This is used for instructions that expect an address, where using
-null would always generate an exception.
-*/
-val readCapRegDDC : regno -> CapStruct effect {rreg}
-function readCapRegDDC(n) =
- let i = unsigned(n) in
- capRegToCapStruct(reg_deref(CapRegs[i])) /* NB CapRegs[0] is points to DDC */
-
-function writeCapReg(n, cap) : (regno, CapStruct) -> unit =
- if (n == 0b00000) then
- ()
- else
- let i = unsigned(n) in
- (*CapRegs[i]) = capStructToCapReg(cap)
-
-enum CapEx = {
- CapEx_None,
- CapEx_LengthViolation,
- CapEx_TagViolation,
- CapEx_SealViolation,
- CapEx_TypeViolation,
- CapEx_CallTrap,
- CapEx_ReturnTrap,
- CapEx_TSSUnderFlow,
- CapEx_UserDefViolation,
- CapEx_TLBNoStoreCap,
- CapEx_InexactBounds,
- CapEx_GlobalViolation,
- CapEx_PermitExecuteViolation,
- CapEx_PermitLoadViolation,
- CapEx_PermitStoreViolation,
- CapEx_PermitLoadCapViolation,
- CapEx_PermitStoreCapViolation,
- CapEx_PermitStoreLocalCapViolation,
- CapEx_PermitSealViolation,
- CapEx_AccessSystemRegsViolation,
- CapEx_PermitCCallViolation,
- CapEx_AccessCCallIDCViolation,
- CapEx_PermitUnsealViolation
-}
-
-function CapExCode(ex) : CapEx -> bits(8)=
- match ex {
- CapEx_None => 0x00,
- CapEx_LengthViolation => 0x01,
- CapEx_TagViolation => 0x02,
- CapEx_SealViolation => 0x03,
- CapEx_TypeViolation => 0x04,
- CapEx_CallTrap => 0x05,
- CapEx_ReturnTrap => 0x06,
- CapEx_TSSUnderFlow => 0x07,
- CapEx_UserDefViolation => 0x08,
- CapEx_TLBNoStoreCap => 0x09,
- CapEx_InexactBounds => 0x0a,
- CapEx_GlobalViolation => 0x10,
- CapEx_PermitExecuteViolation => 0x11,
- CapEx_PermitLoadViolation => 0x12,
- CapEx_PermitStoreViolation => 0x13,
- CapEx_PermitLoadCapViolation => 0x14,
- CapEx_PermitStoreCapViolation => 0x15,
- CapEx_PermitStoreLocalCapViolation => 0x16,
- CapEx_PermitSealViolation => 0x17,
- CapEx_AccessSystemRegsViolation => 0x18,
- CapEx_PermitCCallViolation => 0x19,
- CapEx_AccessCCallIDCViolation => 0x1a,
- CapEx_PermitUnsealViolation => 0x1b
- }
-
-bitfield CapCauseReg : bits(16) = {
- ExcCode : 15..8,
- RegNum : 7..0,
-}
-
-register CapCause : CapCauseReg
-
-val execute_branch_pcc : CapStruct -> unit effect {wreg}
-function execute_branch_pcc(newPCC) = {
- delayedPC = to_bits(64, getCapOffset(newPCC));
- delayedPCC = capStructToCapReg(newPCC);
- branchPending = 0b1;
-}
-
-function SignalException (ex) =
- {
- if (not (CP0Status.EXL())) then {
- let pc = PC in
- let pcc = capRegToCapStruct(PCC) in
- let (success, epcc) = setCapOffset(pcc, pc) in
- if (success) then
- EPCC = capStructToCapReg(epcc)
- else
- EPCC = capStructToCapReg(int_to_cap(to_bits(64, getCapBase(pcc)) + unsigned(pc)));
- };
-
- nextPCC = KCC;
- delayedPCC = KCC; /* always write delayedPCC together with nextPCC so
- that non-capability branches don't override PCC */
- let base = getCapBase(capRegToCapStruct(KCC)) in
- SignalExceptionMIPS(ex, to_bits(64, base));
- }
-
-function ERETHook() : unit -> unit =
- {
- nextPCC = EPCC;
- delayedPCC = EPCC; /* always write delayedPCC together with nextPCC so
- that non-capability branches don't override PCC */
- }
-
-val raise_c2_exception8 : forall ('o : Type) . (CapEx, bits(8)) -> 'o effect {escape, rreg, wreg}
-function raise_c2_exception8(capEx, regnum) =
- {
- CapCause->ExcCode() = CapExCode(capEx);
- CapCause->RegNum() = regnum;
- let mipsEx =
- if ((capEx == CapEx_CallTrap) | (capEx == CapEx_ReturnTrap))
- then C2Trap else C2E in
- SignalException(mipsEx);
- }
-
-val raise_c2_exception : forall ('o : Type) . (CapEx, regno) -> 'o effect {escape, rreg, wreg}
-function raise_c2_exception(capEx, regnum) =
- let reg8 = 0b000 @ regnum in
- if ((capEx == CapEx_AccessSystemRegsViolation) & (regnum == IDCNO)) then
- raise_c2_exception8(CapEx_AccessCCallIDCViolation, reg8)
- else
- raise_c2_exception8(capEx, reg8)
-
-val raise_c2_exception_noreg : forall ('o : Type) . (CapEx) -> 'o effect {escape, rreg, wreg}
-function raise_c2_exception_noreg(capEx) =
- raise_c2_exception8(capEx, 0xff)
-
-val pcc_access_system_regs : unit -> bool effect {rreg}
-function pcc_access_system_regs () =
- let pcc = capRegToCapStruct(PCC) in
- (pcc.access_system_regs)
-
-/*!
-The following function should be called before reading or writing any capability register to check whether it is one of the protected system capabilities. Although it is usually a general purpose capabilty the invoked data capabiltiy (IDC) is restricted in the branch delay slot of the CCall (selector one) instruction to protect the confidentiality and integrity of the invoked sandbox.
- */
-val register_inaccessible : regno -> bool effect {rreg}
-function register_inaccessible(r) =
- ((r == IDCNO) & inCCallDelay) |
- ((r == KR1CNO |
- r == KR2CNO |
- r == KDCNO |
- r == KCCNO |
- r == EPCCNO) & not (pcc_access_system_regs ()))
-
-val MEMr_tag = "read_tag_bool" : bits(64) -> bool effect { rmemt }
-val MEMw_tag = "write_tag_bool" : (bits(64) , bool) -> unit effect { wmvt }
-
-val MEMr_tagged : bits(64) -> (bool, bits('cap_size * 8)) effect { escape, rmem, rmemt }
-function MEMr_tagged (addr) =
-{
- /* assumes addr is cap. aligned */
- assert(unsigned(addr) % cap_size == 0);
- let tag = MEMr_tag(addr) in
- let data = MEMr(addr, cap_size) in
- (tag, reverse_endianness(data))
-}
-
-val MEMr_tagged_reserve : bits(64) -> (bool, bits('cap_size * 8)) effect { escape, rmem, rmemt }
-function MEMr_tagged_reserve (addr) =
-{
- /* assumes addr is cap. aligned */
- assert(unsigned(addr) % cap_size == 0);
- let tag = MEMr_tag(addr) in
- let data = MEMr_reserve(addr, cap_size) in
- (tag, reverse_endianness(data))
-}
-
-val MEMw_tagged : (bits(64), bool, bits('cap_size * 8)) -> unit effect { escape, eamem, wmv, wmvt }
-function MEMw_tagged(addr, tag, data) =
-{
- /* assumes addr is cap. aligned */
- assert(unsigned(addr) % cap_size == 0);
- MEMea(addr, cap_size);
- MEMval(addr, cap_size, reverse_endianness(data));
- MEMw_tag(addr, tag);
-}
-
-val MEMw_tagged_conditional : (bits(64), bool, bits('cap_size * 8)) -> bool effect { escape, eamem, wmv, wmvt }
-function MEMw_tagged_conditional(addr, tag, data) =
-{
- /* assumes addr is cap. aligned */
- assert(unsigned(addr) % cap_size == 0);
- MEMea_conditional(addr, cap_size);
- success = MEMval_conditional(addr, cap_size, reverse_endianness(data));
- if success then
- MEMw_tag(addr, tag);
- success;
-}
-
-let cap_addr_mask = to_bits(64, pow2(64) - cap_size)
-
-val MEMw_wrapper : forall 'n, 'n >= 1. (bits(64), atom('n), bits(8 * 'n)) -> unit effect {escape, wmv, wmvt, wreg, eamem}
-function MEMw_wrapper(addr, size, data) =
- let ledata = reverse_endianness(data) in
- if (addr == 0x000000007f000000) then
- {
- UART_WDATA = ledata[7..0];
- UART_WRITTEN = 0b1;
- }
- else
- {
- /* require that writes don't cross capability boundaries (should be true due to mips alignment requirements) */
- assert((addr & cap_addr_mask) == ((addr + to_bits(64, size - 1)) & cap_addr_mask));
- MEMea(addr, size);
- MEMval(addr, size, ledata);
- /* On cheri non-capability writes must clear the corresponding tag*/
- MEMw_tag(addr & cap_addr_mask, false);
- }
-
-val MEMw_conditional_wrapper : forall 'n, 'n >= 1. (bits(64), atom('n), bits(8 * 'n)) -> bool effect {escape, wmv, wmvt, eamem}
-function MEMw_conditional_wrapper(addr, size, data) =
- {
- /* require that writes don't cross capability boundaries (should be true due to mips alignment requirements) */
- assert((addr & cap_addr_mask) == ((addr + to_bits(64, size - 1)) & cap_addr_mask));
- MEMea_conditional(addr, size);
- success = MEMval_conditional(addr,size,reverse_endianness(data));
- if success then
- /* On cheri non-capability writes must clear the corresponding tag */
- MEMw_tag(addr & cap_addr_mask, false);
- success;
- }
-
-val checkDDCPerms : (CapStruct, MemAccessType) -> unit effect {escape, rreg, wreg}
-function checkDDCPerms(ddc : CapStruct, accessType: MemAccessType) =
- {
- if (not (ddc.tag)) then
- raise_c2_exception(CapEx_TagViolation, 0b00000)
- else if (ddc.sealed) then
- raise_c2_exception(CapEx_SealViolation, 0b00000);
- match accessType {
- Instruction => assert(false), /* Only data accesses use DDC */
- LoadData => if (~(ddc.permit_load)) then (raise_c2_exception(CapEx_PermitLoadViolation, 0b00000)),
- StoreData => if (~(ddc.permit_store)) then (raise_c2_exception(CapEx_PermitStoreViolation, 0b00000))
- };
- }
-
-val addrWrapper : (bits(64), MemAccessType, WordType) -> bits(64) effect {rreg, wreg, escape}
-function addrWrapper(addr, accessType, width) =
- {
- ddc = capRegToCapStruct(DDC);
- checkDDCPerms(ddc, accessType);
- cursor = getCapCursor(ddc);
- vAddr = (cursor + unsigned(addr)) % pow2(64);
- size = wordWidthBytes(width);
- base = getCapBase(ddc);
- top = getCapTop(ddc);
- if ((vAddr + size) > top) then
- (raise_c2_exception(CapEx_LengthViolation, 0b00000))
- else if (vAddr < base) then
- (raise_c2_exception(CapEx_LengthViolation, 0b00000))
- else
- to_bits(64, vAddr);
- }
-
-val addrWrapperUnaligned : (bits(64), MemAccessType, WordTypeUnaligned) -> bits(64) effect {rreg, wreg, escape}
-function addrWrapperUnaligned(addr, accessType, width) =
- {
- ddc = capRegToCapStruct(DDC);
- checkDDCPerms(ddc, accessType);
- cursor = getCapCursor(ddc);
- vAddr = (cursor + unsigned(addr)) % pow2(64);
- woffset = vAddr % 4;
- doffset = vAddr % 8;
- /* Compute the address and size of the bytes touched -- this depends on alignment. */
- let (waddr, size) : (int, int) = match width {
- WL => (vAddr, 4 - woffset),
- WR => (vAddr - woffset, woffset + 1),
- DL => (vAddr, 8 - doffset),
- DR => (vAddr - doffset, doffset + 1)
- };
- base = getCapBase(ddc);
- top = getCapTop(ddc);
- if ((waddr + size) > top) then
- (raise_c2_exception(CapEx_LengthViolation, 0b00000))
- else if (waddr < base) then
- (raise_c2_exception(CapEx_LengthViolation, 0b00000))
- else
- to_bits(64, vAddr);
- }
-
-$ifdef _MIPS_TLB_STUB
-val TranslatePC : bits(64) -> bits(64) effect {rreg, wreg, escape}
-$else
-val TranslatePC : bits(64) -> bits(64) effect {rreg, wreg, escape, undef}
-$endif
-
-function TranslatePC (vAddr) = {
- incrementCP0Count();
- let pcc = capRegToCapStruct(PCC);
- let base = getCapBase(pcc);
- let top = getCapTop(pcc);
- let absPC = base + unsigned(vAddr);
- if ((absPC % 4) != 0) then /* bad PC alignment */
- (SignalExceptionBadAddr(AdEL, to_bits(64, absPC))) /* XXX absPC may be truncated */
- else if not (pcc.tag) then
- (raise_c2_exception_noreg(CapEx_TagViolation))
- else if ((absPC + 4) > top) then
- (raise_c2_exception_noreg(CapEx_LengthViolation))
- else
- TLBTranslate(to_bits(64, absPC), Instruction) /* XXX assert absPC never gets truncated due to above check and top <= 2^64 for valid caps */
-}
-
-/*!
-All capability instrucitons must first check that the capability
-co-processor is enabled using the following function that raises a
-co-processor unusable exception if a CP0Status.CU2 is not set. This
-allows the operating system to only save and restore the full
-capability context for processes that use capabilities.
-*/
-val checkCP2usable : unit -> unit effect {rreg, wreg, escape}
-function checkCP2usable () =
- if not (CP0Status.CU()[2]) then {
- CP0Cause->CE() = 0b10;
- SignalException(CpU);
- }
-
-function init_cp2_state () = {
- let defaultBits = capStructToCapReg(default_cap);
- let nullBits = capStructToCapReg(null_cap);
- PCC = defaultBits;
- nextPCC = defaultBits;
- delayedPCC = defaultBits;
- DDC = defaultBits;
- KCC = defaultBits;
- EPCC = defaultBits;
- KDC = nullBits;
- KR1C = nullBits;
- KR2C = nullBits;
- CTLSP = nullBits;
- CTLSU = nullBits;
- foreach(i from 1 to 31) {
- let idx = to_bits(5, i) in
- writeCapReg(idx, null_cap)
- }
-}
-
-function cp2_next_pc () = {
- PCC = nextPCC;
- if inBranchDelay then {
- nextPCC = delayedPCC;
- } else {
- inCCallDelay = 0b0;
- };
-}
-
-val capToString : CapStruct -> string effect {escape}
-function capToString cap = {
- skip_escape(); /* because cheri128 getCapX functions contain asserts but cheri256 ones do not */
- concat_str(" t:",
- concat_str(if cap.tag then "1" else "0",
- concat_str(" s:",
- concat_str(if cap.sealed then "1" else "0",
- concat_str(" perms:",
- concat_str(BitStr(0b0 @ getCapPerms(cap)),
- concat_str(" type:",
- concat_str(BitStr(cap.otype),
- concat_str(" offset:",
- concat_str(BitStr(to_bits(64, getCapOffset(cap))),
- concat_str(" base:",
- concat_str(BitStr(to_bits(64, getCapBase(cap))),
- concat_str(" length:", BitStr(to_bits(64, min(getCapLength(cap), MAX(64)))))))))))))))))
- }
-
-function dump_cp2_state () = {
- print(concat_str("DEBUG CAP PCC", capToString(capRegToCapStruct(PCC))));
- foreach(i from 0 to 31) {
- print(concat_str("DEBUG CAP REG ", concat_str(string_of_int(i), capToString(readCapReg(to_bits(5, i))))))
- };
- print(concat_str("DEBUG CAP HWREG 00", capToString(capRegToCapStruct(DDC))));
- print(concat_str("DEBUG CAP HWREG 01", capToString(capRegToCapStruct(CTLSU))));
- print(concat_str("DEBUG CAP HWREG 08", capToString(capRegToCapStruct(CTLSP))));
- /* TODO: these two should not be mirrored to match the FPGA */
- print(concat_str("DEBUG CAP HWREG 22", capToString(capRegToCapStruct(KR1C))));
- print(concat_str("DEBUG CAP HWREG 23", capToString(capRegToCapStruct(KR2C))));
- /* KCC, KDC, EPCC */
- print(concat_str("DEBUG CAP HWREG 29", capToString(capRegToCapStruct(KCC))));
- print(concat_str("DEBUG CAP HWREG 30", capToString(capRegToCapStruct(KDC))));
- print(concat_str("DEBUG CAP HWREG 31", capToString(capRegToCapStruct(EPCC))));
-
-}
diff --git a/cheri/cheri_types.sail b/cheri/cheri_types.sail
deleted file mode 100644
index af23bcb4..00000000
--- a/cheri/cheri_types.sail
+++ /dev/null
@@ -1,55 +0,0 @@
-/*========================================================================*/
-/* */
-/* Copyright (c) 2015-2017 Robert M. Norton */
-/* Copyright (c) 2015-2017 Kathyrn Gray */
-/* All rights reserved. */
-/* */
-/* This software was developed by the University of Cambridge Computer */
-/* Laboratory as part of the Rigorous Engineering of Mainstream Systems */
-/* (REMS) project, funded by EPSRC grant EP/K008528/1. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following conditions */
-/* are met: */
-/* 1. Redistributions of source code must retain the above copyright */
-/* notice, this list of conditions and the following disclaimer. */
-/* 2. Redistributions in binary form must reproduce the above copyright */
-/* notice, this list of conditions and the following disclaimer in */
-/* the documentation and/or other materials provided with the */
-/* distribution. */
-/* */
-/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */
-/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
-/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
-/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */
-/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
-/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */
-/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */
-/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
-/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */
-/* SUCH DAMAGE. */
-/*========================================================================*/
-
-type CapLen = range(0, 2 ^ 65)
-type uint64 = range(0, (2 ^ 64) - 1)
-
-enum CPtrCmpOp = {
- CEQ,
- CNE,
- CLT,
- CLE,
- CLTU,
- CLEU,
- CEXEQ,
- CNEXEQ
-}
-
-enum ClearRegSet = {
-GPLo,
-GPHi,
-CLo,
-CHi
-}
-
diff --git a/cheri/sail_latex/commands.tex b/cheri/sail_latex/commands.tex
deleted file mode 100644
index 76072eaf..00000000
--- a/cheri/sail_latex/commands.tex
+++ /dev/null
@@ -1,2667 +0,0 @@
-\newcommand{\sailsailregderefv}{\label{zregzyderef} \lstinputlisting[language=sail]{sail_latex/sailsailregderefv.tex}}
-
-\newcommand{\sailregderef}{\label{zzyregzyderef} \lstinputlisting[language=sail]{sail_latex/sailregderef.tex}}
-
-\newcommand{\saileqbittwo}{\label{zeqzybittwo} \lstinputlisting[language=sail]{sail_latex/saileqbittwo.tex}}
-
-\newcommand{\sailsailsailsailzeightoperatorzzerozJzJzninevvv}{\label{zzeightoperatorzzerozJzJznine} \lstinputlisting[language=sail]{sail_latex/sailsailsailsailzeightoperatorzzerozJzJzninevvv.tex}}
-
-\newcommand{\saildiv}{\label{zdiv} \lstinputlisting[language=sail]{sail_latex/saildiv.tex}}
-
-\newcommand{\sailsailsailzeightoperatorzzerozFzninevv}{\label{zzeightoperatorzzerozFznine} \lstinputlisting[language=sail]{sail_latex/sailsailsailzeightoperatorzzerozFzninevv.tex}}
-
-\newcommand{\sailmod}{\label{zmod} \lstinputlisting[language=sail]{sail_latex/sailmod.tex}}
-
-\newcommand{\sailsailsailzeightoperatorzzerozfivezninevv}{\label{zzeightoperatorzzerozfiveznine} \lstinputlisting[language=sail]{sail_latex/sailsailsailzeightoperatorzzerozfivezninevv.tex}}
-
-\newcommand{\sailabsatom}{\label{zabszyatom} \lstinputlisting[language=sail]{sail_latex/sailabsatom.tex}}
-
-\newcommand{\sailnotbool}{\label{znotzybool} \lstinputlisting[language=sail]{sail_latex/sailnotbool.tex}}
-
-\newcommand{\sailandbool}{\label{zandzybool} \lstinputlisting[language=sail]{sail_latex/sailandbool.tex}}
-
-\newcommand{\sailorbool}{\label{zorzybool} \lstinputlisting[language=sail]{sail_latex/sailorbool.tex}}
-
-\newcommand{\saileqatom}{\label{zeqzyatom} \lstinputlisting[language=sail]{sail_latex/saileqatom.tex}}
-
-\newcommand{\sailneqatom}{\label{zneqzyatom} \lstinputlisting[language=sail]{sail_latex/sailneqatom.tex}}
-
-\newcommand{\sailfnneqatom}{\label{zneqzyatom} \lstinputlisting[language=sail]{sail_latex/sailfnneqatom.tex}}
-
-\newcommand{\saillteqatom}{\label{zlteqzyatom} \lstinputlisting[language=sail]{sail_latex/saillteqatom.tex}}
-
-\newcommand{\sailgteqatom}{\label{zgteqzyatom} \lstinputlisting[language=sail]{sail_latex/sailgteqatom.tex}}
-
-\newcommand{\sailltatom}{\label{zltzyatom} \lstinputlisting[language=sail]{sail_latex/sailltatom.tex}}
-
-\newcommand{\sailgtatom}{\label{zgtzyatom} \lstinputlisting[language=sail]{sail_latex/sailgtatom.tex}}
-
-\newcommand{\sailltrangeatom}{\label{zltzyrangezyatom} \lstinputlisting[language=sail]{sail_latex/sailltrangeatom.tex}}
-
-\newcommand{\saillteqrangeatom}{\label{zlteqzyrangezyatom} \lstinputlisting[language=sail]{sail_latex/saillteqrangeatom.tex}}
-
-\newcommand{\sailgtrangeatom}{\label{zgtzyrangezyatom} \lstinputlisting[language=sail]{sail_latex/sailgtrangeatom.tex}}
-
-\newcommand{\sailgteqrangeatom}{\label{zgteqzyrangezyatom} \lstinputlisting[language=sail]{sail_latex/sailgteqrangeatom.tex}}
-
-\newcommand{\sailltatomrange}{\label{zltzyatomzyrange} \lstinputlisting[language=sail]{sail_latex/sailltatomrange.tex}}
-
-\newcommand{\saillteqatomrange}{\label{zlteqzyatomzyrange} \lstinputlisting[language=sail]{sail_latex/saillteqatomrange.tex}}
-
-\newcommand{\sailgtatomrange}{\label{zgtzyatomzyrange} \lstinputlisting[language=sail]{sail_latex/sailgtatomrange.tex}}
-
-\newcommand{\sailgteqatomrange}{\label{zgteqzyatomzyrange} \lstinputlisting[language=sail]{sail_latex/sailgteqatomrange.tex}}
-
-\newcommand{\saileqrange}{\label{zeqzyrange} \lstinputlisting[language=sail]{sail_latex/saileqrange.tex}}
-
-\newcommand{\saileqint}{\label{zeqzyint} \lstinputlisting[language=sail]{sail_latex/saileqint.tex}}
-
-\newcommand{\saileqbool}{\label{zeqzybool} \lstinputlisting[language=sail]{sail_latex/saileqbool.tex}}
-
-\newcommand{\sailneqrange}{\label{zneqzyrange} \lstinputlisting[language=sail]{sail_latex/sailneqrange.tex}}
-
-\newcommand{\sailfnneqrange}{\label{zneqzyrange} \lstinputlisting[language=sail]{sail_latex/sailfnneqrange.tex}}
-
-\newcommand{\sailneqint}{\label{zneqzyint} \lstinputlisting[language=sail]{sail_latex/sailneqint.tex}}
-
-\newcommand{\sailfnneqint}{\label{zneqzyint} \lstinputlisting[language=sail]{sail_latex/sailfnneqint.tex}}
-
-\newcommand{\sailneqbool}{\label{zneqzybool} \lstinputlisting[language=sail]{sail_latex/sailneqbool.tex}}
-
-\newcommand{\sailfnneqbool}{\label{zneqzybool} \lstinputlisting[language=sail]{sail_latex/sailfnneqbool.tex}}
-
-\newcommand{\saillteqint}{\label{zlteqzyint} \lstinputlisting[language=sail]{sail_latex/saillteqint.tex}}
-
-\newcommand{\sailgteqint}{\label{zgteqzyint} \lstinputlisting[language=sail]{sail_latex/sailgteqint.tex}}
-
-\newcommand{\sailltint}{\label{zltzyint} \lstinputlisting[language=sail]{sail_latex/sailltint.tex}}
-
-\newcommand{\sailgtint}{\label{zgtzyint} \lstinputlisting[language=sail]{sail_latex/sailgtint.tex}}
-
-\newcommand{\sailsailsailzeightoperatorzzerozJzJzninevv}{\label{zzeightoperatorzzerozJzJznine} \lstinputlisting[language=sail]{sail_latex/sailsailsailzeightoperatorzzerozJzJzninevv.tex}}
-
-\newcommand{\sailsailzeightoperatorzzerozonezJzninev}{\label{zzeightoperatorzzerozonezJznine} \lstinputlisting[language=sail]{sail_latex/sailsailzeightoperatorzzerozonezJzninev.tex}}
-
-\newcommand{\sailsailzeightoperatorzzerozUzninev}{\label{zzeightoperatorzzerozUznine} \lstinputlisting[language=sail]{sail_latex/sailsailzeightoperatorzzerozUzninev.tex}}
-
-\newcommand{\sailsailzeightoperatorzzerozsixzninev}{\label{zzeightoperatorzzerozsixznine} \lstinputlisting[language=sail]{sail_latex/sailsailzeightoperatorzzerozsixzninev.tex}}
-
-\newcommand{\sailzeightoperatorzzerozIzJznine}{\label{zzeightoperatorzzerozIzJznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozIzJznine.tex}}
-
-\newcommand{\sailzeightoperatorzzerozIznine}{\label{zzeightoperatorzzerozIznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozIznine.tex}}
-
-\newcommand{\sailzeightoperatorzzerozKzJznine}{\label{zzeightoperatorzzerozKzJznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozKzJznine.tex}}
-
-\newcommand{\sailzeightoperatorzzerozKznine}{\label{zzeightoperatorzzerozKznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozKznine.tex}}
-
-\newcommand{\sailaddatom}{\label{zaddzyatom} \lstinputlisting[language=sail]{sail_latex/sailaddatom.tex}}
-
-\newcommand{\sailaddint}{\label{zaddzyint} \lstinputlisting[language=sail]{sail_latex/sailaddint.tex}}
-
-\newcommand{\sailsailsailzeightoperatorzzerozBzninevv}{\label{zzeightoperatorzzerozBznine} \lstinputlisting[language=sail]{sail_latex/sailsailsailzeightoperatorzzerozBzninevv.tex}}
-
-\newcommand{\sailsubatom}{\label{zsubzyatom} \lstinputlisting[language=sail]{sail_latex/sailsubatom.tex}}
-
-\newcommand{\sailsubint}{\label{zsubzyint} \lstinputlisting[language=sail]{sail_latex/sailsubint.tex}}
-
-\newcommand{\sailsailzeightoperatorzzerozDzninev}{\label{zzeightoperatorzzerozDznine} \lstinputlisting[language=sail]{sail_latex/sailsailzeightoperatorzzerozDzninev.tex}}
-
-\newcommand{\sailnegateatom}{\label{znegatezyatom} \lstinputlisting[language=sail]{sail_latex/sailnegateatom.tex}}
-
-\newcommand{\sailnegateint}{\label{znegatezyint} \lstinputlisting[language=sail]{sail_latex/sailnegateint.tex}}
-
-\newcommand{\sailsailnegatev}{\label{znegate} \lstinputlisting[language=sail]{sail_latex/sailsailnegatev.tex}}
-
-\newcommand{\sailmultatom}{\label{zmultzyatom} \lstinputlisting[language=sail]{sail_latex/sailmultatom.tex}}
-
-\newcommand{\sailmultint}{\label{zmultzyint} \lstinputlisting[language=sail]{sail_latex/sailmultint.tex}}
-
-\newcommand{\sailsailzeightoperatorzzerozAzninev}{\label{zzeightoperatorzzerozAznine} \lstinputlisting[language=sail]{sail_latex/sailsailzeightoperatorzzerozAzninev.tex}}
-
-\newcommand{\sailprintint}{\label{zprintzyint} \lstinputlisting[language=sail]{sail_latex/sailprintint.tex}}
-
-\newcommand{\sailprerrint}{\label{zprerrzyint} \lstinputlisting[language=sail]{sail_latex/sailprerrint.tex}}
-
-\newcommand{\sailshlint}{\label{zshlzyint} \lstinputlisting[language=sail]{sail_latex/sailshlint.tex}}
-
-\newcommand{\sailshrint}{\label{zshrzyint} \lstinputlisting[language=sail]{sail_latex/sailshrint.tex}}
-
-\newcommand{\saildivint}{\label{zdivzyint} \lstinputlisting[language=sail]{sail_latex/saildivint.tex}}
-
-\newcommand{\sailsailzeightoperatorzzerozFzninev}{\label{zzeightoperatorzzerozFznine} \lstinputlisting[language=sail]{sail_latex/sailsailzeightoperatorzzerozFzninev.tex}}
-
-\newcommand{\sailmodint}{\label{zmodzyint} \lstinputlisting[language=sail]{sail_latex/sailmodint.tex}}
-
-\newcommand{\sailsailzeightoperatorzzerozfivezninev}{\label{zzeightoperatorzzerozfiveznine} \lstinputlisting[language=sail]{sail_latex/sailsailzeightoperatorzzerozfivezninev.tex}}
-
-\newcommand{\sailabsint}{\label{zabszyint} \lstinputlisting[language=sail]{sail_latex/sailabsint.tex}}
-
-\newcommand{\sailisnone}{\label{ziszynone} \lstinputlisting[language=sail]{sail_latex/sailisnone.tex}}
-
-\newcommand{\sailfnisnone}{\label{ziszynone} \lstinputlisting[language=sail]{sail_latex/sailfnisnone.tex}}
-
-\newcommand{\sailissome}{\label{ziszysome} \lstinputlisting[language=sail]{sail_latex/sailissome.tex}}
-
-\newcommand{\sailfnissome}{\label{ziszysome} \lstinputlisting[language=sail]{sail_latex/sailfnissome.tex}}
-
-\newcommand{\sailbits}{\label{zbits} \lstinputlisting[language=sail]{sail_latex/sailbits.tex}}
-
-\newcommand{\saileqbit}{\label{zeqzybit} \lstinputlisting[language=sail]{sail_latex/saileqbit.tex}}
-
-\newcommand{\saileqbits}{\label{zeqzybits} \lstinputlisting[language=sail]{sail_latex/saileqbits.tex}}
-
-\newcommand{\sailsailzeightoperatorzzerozJzJzninev}{\label{zzeightoperatorzzerozJzJznine} \lstinputlisting[language=sail]{sail_latex/sailsailzeightoperatorzzerozJzJzninev.tex}}
-
-\newcommand{\sailbitvectorlength}{\label{zbitvectorzylength} \lstinputlisting[language=sail]{sail_latex/sailbitvectorlength.tex}}
-
-\newcommand{\sailvectorlength}{\label{zvectorzylength} \lstinputlisting[language=sail]{sail_latex/sailvectorlength.tex}}
-
-\newcommand{\saillength}{\label{zlength} \lstinputlisting[language=sail]{sail_latex/saillength.tex}}
-
-\newcommand{\sailsailzzeros}{\label{zsailzyzzeros} \lstinputlisting[language=sail]{sail_latex/sailsailzzeros.tex}}
-
-\newcommand{\sailprintbits}{\label{zprintzybits} \lstinputlisting[language=sail]{sail_latex/sailprintbits.tex}}
-
-\newcommand{\sailprerrbits}{\label{zprerrzybits} \lstinputlisting[language=sail]{sail_latex/sailprerrbits.tex}}
-
-\newcommand{\sailsailsignextend}{\label{zsailzysignzyextend} \lstinputlisting[language=sail]{sail_latex/sailsailsignextend.tex}}
-
-\newcommand{\sailsailzzeroextend}{\label{zsailzyzzerozyextend} \lstinputlisting[language=sail]{sail_latex/sailsailzzeroextend.tex}}
-
-\newcommand{\sailtruncate}{\label{ztruncate} \lstinputlisting[language=sail]{sail_latex/sailtruncate.tex}}
-
-\newcommand{\sailsailmask}{\label{zsailzymask} \lstinputlisting[language=sail]{sail_latex/sailsailmask.tex}}
-
-\newcommand{\sailfnsailmask}{\label{zsailzymask} \lstinputlisting[language=sail]{sail_latex/sailfnsailmask.tex}}
-
-\newcommand{\sailsailzeightoperatorzzerozQzninev}{\label{zzeightoperatorzzerozQznine} \lstinputlisting[language=sail]{sail_latex/sailsailzeightoperatorzzerozQzninev.tex}}
-
-\newcommand{\sailbitvectorconcat}{\label{zbitvectorzyconcat} \lstinputlisting[language=sail]{sail_latex/sailbitvectorconcat.tex}}
-
-\newcommand{\sailappend}{\label{zappend} \lstinputlisting[language=sail]{sail_latex/sailappend.tex}}
-
-\newcommand{\sailappendsixfour}{\label{zappendzysixfour} \lstinputlisting[language=sail]{sail_latex/sailappendsixfour.tex}}
-
-\newcommand{\sailbitvectoraccess}{\label{zbitvectorzyaccess} \lstinputlisting[language=sail]{sail_latex/sailbitvectoraccess.tex}}
-
-\newcommand{\sailplainvectoraccess}{\label{zplainzyvectorzyaccess} \lstinputlisting[language=sail]{sail_latex/sailplainvectoraccess.tex}}
-
-\newcommand{\sailvectoraccess}{\label{zvectorzyaccess} \lstinputlisting[language=sail]{sail_latex/sailvectoraccess.tex}}
-
-\newcommand{\sailbitvectorupdate}{\label{zbitvectorzyupdate} \lstinputlisting[language=sail]{sail_latex/sailbitvectorupdate.tex}}
-
-\newcommand{\sailplainvectorupdate}{\label{zplainzyvectorzyupdate} \lstinputlisting[language=sail]{sail_latex/sailplainvectorupdate.tex}}
-
-\newcommand{\sailvectorupdate}{\label{zvectorzyupdate} \lstinputlisting[language=sail]{sail_latex/sailvectorupdate.tex}}
-
-\newcommand{\sailaddbits}{\label{zaddzybits} \lstinputlisting[language=sail]{sail_latex/sailaddbits.tex}}
-
-\newcommand{\sailaddbitsint}{\label{zaddzybitszyint} \lstinputlisting[language=sail]{sail_latex/sailaddbitsint.tex}}
-
-\newcommand{\sailsailzeightoperatorzzerozBzninev}{\label{zzeightoperatorzzerozBznine} \lstinputlisting[language=sail]{sail_latex/sailsailzeightoperatorzzerozBzninev.tex}}
-
-\newcommand{\sailvectorsubrange}{\label{zvectorzysubrange} \lstinputlisting[language=sail]{sail_latex/sailvectorsubrange.tex}}
-
-\newcommand{\sailvectorupdatesubrange}{\label{zvectorzyupdatezysubrange} \lstinputlisting[language=sail]{sail_latex/sailvectorupdatesubrange.tex}}
-
-\newcommand{\sailgetsliceint}{\label{zgetzyslicezyint} \lstinputlisting[language=sail]{sail_latex/sailgetsliceint.tex}}
-
-\newcommand{\sailsetsliceint}{\label{zsetzyslicezyint} \lstinputlisting[language=sail]{sail_latex/sailsetsliceint.tex}}
-
-\newcommand{\sailsetslicebits}{\label{zsetzyslicezybits} \lstinputlisting[language=sail]{sail_latex/sailsetslicebits.tex}}
-
-\newcommand{\sailslice}{\label{zslice} \lstinputlisting[language=sail]{sail_latex/sailslice.tex}}
-
-\newcommand{\sailreplicatebits}{\label{zreplicatezybits} \lstinputlisting[language=sail]{sail_latex/sailreplicatebits.tex}}
-
-\newcommand{\sailunsigned}{\label{zunsigned} \lstinputlisting[language=sail]{sail_latex/sailunsigned.tex}}
-
-\newcommand{\sailsigned}{\label{zsigned} \lstinputlisting[language=sail]{sail_latex/sailsigned.tex}}
-
-\newcommand{\saileqanything}{\label{zeqzyanything} \lstinputlisting[language=sail]{sail_latex/saileqanything.tex}}
-
-\newcommand{\sailzeightoperatorzzerozJzJznine}{\label{zzeightoperatorzzerozJzJznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozJzJznine.tex}}
-
-\newcommand{\sailnotvec}{\label{znotzyvec} \lstinputlisting[language=sail]{sail_latex/sailnotvec.tex}}
-
-\newcommand{\sailzW}{\label{zzW} \lstinputlisting[language=sail]{sail_latex/sailzW.tex}}
-
-\newcommand{\sailnot}{\label{znot} \lstinputlisting[language=sail]{sail_latex/sailnot.tex}}
-
-\newcommand{\sailneqvec}{\label{zneqzyvec} \lstinputlisting[language=sail]{sail_latex/sailneqvec.tex}}
-
-\newcommand{\sailfnneqvec}{\label{zneqzyvec} \lstinputlisting[language=sail]{sail_latex/sailfnneqvec.tex}}
-
-\newcommand{\sailneqanything}{\label{zneqzyanything} \lstinputlisting[language=sail]{sail_latex/sailneqanything.tex}}
-
-\newcommand{\sailfnneqanything}{\label{zneqzyanything} \lstinputlisting[language=sail]{sail_latex/sailfnneqanything.tex}}
-
-\newcommand{\sailzeightoperatorzzerozonezJznine}{\label{zzeightoperatorzzerozonezJznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozonezJznine.tex}}
-
-\newcommand{\sailandbits}{\label{zandzybits} \lstinputlisting[language=sail]{sail_latex/sailandbits.tex}}
-
-\newcommand{\sailzeightoperatorzzerozsixznine}{\label{zzeightoperatorzzerozsixznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozsixznine.tex}}
-
-\newcommand{\sailorbits}{\label{zorzybits} \lstinputlisting[language=sail]{sail_latex/sailorbits.tex}}
-
-\newcommand{\sailzeightoperatorzzerozUznine}{\label{zzeightoperatorzzerozUznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozUznine.tex}}
-
-\newcommand{\sailcastunitvec}{\label{zcastzyunitzyvec} \lstinputlisting[language=sail]{sail_latex/sailcastunitvec.tex}}
-
-\newcommand{\sailfncastunitvec}{\label{zcastzyunitzyvec} \lstinputlisting[language=sail]{sail_latex/sailfncastunitvec.tex}}
-
-\newcommand{\sailprint}{\label{zprint} \lstinputlisting[language=sail]{sail_latex/sailprint.tex}}
-
-\newcommand{\sailprerrendline}{\label{zprerrzyendline} \lstinputlisting[language=sail]{sail_latex/sailprerrendline.tex}}
-
-\newcommand{\sailprerrstring}{\label{zprerrzystring} \lstinputlisting[language=sail]{sail_latex/sailprerrstring.tex}}
-
-\newcommand{\sailputchar}{\label{zputchar} \lstinputlisting[language=sail]{sail_latex/sailputchar.tex}}
-
-\newcommand{\sailconcatstr}{\label{zconcatzystr} \lstinputlisting[language=sail]{sail_latex/sailconcatstr.tex}}
-
-\newcommand{\sailstringofint}{\label{zstringzyofzyint} \lstinputlisting[language=sail]{sail_latex/sailstringofint.tex}}
-
-\newcommand{\sailBitStr}{\label{zBitStr} \lstinputlisting[language=sail]{sail_latex/sailBitStr.tex}}
-
-\newcommand{\sailxorvec}{\label{zxorzyvec} \lstinputlisting[language=sail]{sail_latex/sailxorvec.tex}}
-
-\newcommand{\sailintpower}{\label{zintzypower} \lstinputlisting[language=sail]{sail_latex/sailintpower.tex}}
-
-\newcommand{\sailzeightoperatorzzerozQznine}{\label{zzeightoperatorzzerozQznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozQznine.tex}}
-
-\newcommand{\sailaddrange}{\label{zaddzyrange} \lstinputlisting[language=sail]{sail_latex/sailaddrange.tex}}
-
-\newcommand{\sailaddvec}{\label{zaddzyvec} \lstinputlisting[language=sail]{sail_latex/sailaddvec.tex}}
-
-\newcommand{\sailaddvecint}{\label{zaddzyveczyint} \lstinputlisting[language=sail]{sail_latex/sailaddvecint.tex}}
-
-\newcommand{\sailzeightoperatorzzerozBznine}{\label{zzeightoperatorzzerozBznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozBznine.tex}}
-
-\newcommand{\sailsubrange}{\label{zsubzyrange} \lstinputlisting[language=sail]{sail_latex/sailsubrange.tex}}
-
-\newcommand{\sailsubvec}{\label{zsubzyvec} \lstinputlisting[language=sail]{sail_latex/sailsubvec.tex}}
-
-\newcommand{\sailsubvecint}{\label{zsubzyveczyint} \lstinputlisting[language=sail]{sail_latex/sailsubvecint.tex}}
-
-\newcommand{\sailnegaterange}{\label{znegatezyrange} \lstinputlisting[language=sail]{sail_latex/sailnegaterange.tex}}
-
-\newcommand{\sailzeightoperatorzzerozDznine}{\label{zzeightoperatorzzerozDznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozDznine.tex}}
-
-\newcommand{\sailnegate}{\label{znegate} \lstinputlisting[language=sail]{sail_latex/sailnegate.tex}}
-
-\newcommand{\sailzeightoperatorzzerozAznine}{\label{zzeightoperatorzzerozAznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozAznine.tex}}
-
-\newcommand{\sailquotientnat}{\label{zquotientzynat} \lstinputlisting[language=sail]{sail_latex/sailquotientnat.tex}}
-
-\newcommand{\sailquotient}{\label{zquotient} \lstinputlisting[language=sail]{sail_latex/sailquotient.tex}}
-
-\newcommand{\sailzeightoperatorzzerozFznine}{\label{zzeightoperatorzzerozFznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozFznine.tex}}
-
-\newcommand{\sailquotroundzzero}{\label{zquotzyroundzyzzero} \lstinputlisting[language=sail]{sail_latex/sailquotroundzzero.tex}}
-
-\newcommand{\sailremroundzzero}{\label{zremzyroundzyzzero} \lstinputlisting[language=sail]{sail_latex/sailremroundzzero.tex}}
-
-\newcommand{\sailmodulus}{\label{zmodulus} \lstinputlisting[language=sail]{sail_latex/sailmodulus.tex}}
-
-\newcommand{\sailzeightoperatorzzerozfiveznine}{\label{zzeightoperatorzzerozfiveznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozfiveznine.tex}}
-
-\newcommand{\sailminnat}{\label{zminzynat} \lstinputlisting[language=sail]{sail_latex/sailminnat.tex}}
-
-\newcommand{\sailminint}{\label{zminzyint} \lstinputlisting[language=sail]{sail_latex/sailminint.tex}}
-
-\newcommand{\sailmaxnat}{\label{zmaxzynat} \lstinputlisting[language=sail]{sail_latex/sailmaxnat.tex}}
-
-\newcommand{\sailmaxint}{\label{zmaxzyint} \lstinputlisting[language=sail]{sail_latex/sailmaxint.tex}}
-
-\newcommand{\sailminatom}{\label{zminzyatom} \lstinputlisting[language=sail]{sail_latex/sailminatom.tex}}
-
-\newcommand{\sailmaxatom}{\label{zmaxzyatom} \lstinputlisting[language=sail]{sail_latex/sailmaxatom.tex}}
-
-\newcommand{\sailmin}{\label{zmin} \lstinputlisting[language=sail]{sail_latex/sailmin.tex}}
-
-\newcommand{\sailsailmaxv}{\label{zmax} \lstinputlisting[language=sail]{sail_latex/sailsailmaxv.tex}}
-
-\newcommand{\sailWriteRAM}{\label{zzyzyWriteRAM} \lstinputlisting[language=sail]{sail_latex/sailWriteRAM.tex}}
-
-\newcommand{\sailMIPSwrite}{\label{zzyzyMIPSzywrite} \lstinputlisting[language=sail]{sail_latex/sailMIPSwrite.tex}}
-
-\newcommand{\sailfnMIPSwrite}{\label{zzyzyMIPSzywrite} \lstinputlisting[language=sail]{sail_latex/sailfnMIPSwrite.tex}}
-
-\newcommand{\sailReadRAM}{\label{zzyzyReadRAM} \lstinputlisting[language=sail]{sail_latex/sailReadRAM.tex}}
-
-\newcommand{\sailMIPSread}{\label{zzyzyMIPSzyread} \lstinputlisting[language=sail]{sail_latex/sailMIPSread.tex}}
-
-\newcommand{\sailfnMIPSread}{\label{zzyzyMIPSzyread} \lstinputlisting[language=sail]{sail_latex/sailfnMIPSread.tex}}
-
-\newcommand{\sailzeightoperatorzzerozQzQznine}{\label{zzeightoperatorzzerozQzQznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozQzQznine.tex}}
-
-\newcommand{\sailfnzeightoperatorzzerozQzQznine}{\label{zzeightoperatorzzerozQzQznine} \lstinputlisting[language=sail]{sail_latex/sailfnzeightoperatorzzerozQzQznine.tex}}
-
-\newcommand{\sailpowtwo}{\label{zpowtwo} \lstinputlisting[language=sail]{sail_latex/sailpowtwo.tex}}
-
-\newcommand{\sailmipssignextend}{\label{zmipszysignzyextend} \lstinputlisting[language=sail]{sail_latex/sailmipssignextend.tex}}
-
-\newcommand{\sailmipszzeroextend}{\label{zmipszyzzerozyextend} \lstinputlisting[language=sail]{sail_latex/sailmipszzeroextend.tex}}
-
-\newcommand{\sailfnmipssignextend}{\label{zmipszysignzyextend} \lstinputlisting[language=sail]{sail_latex/sailfnmipssignextend.tex}}
-
-\newcommand{\sailfnmipszzeroextend}{\label{zmipszyzzerozyextend} \lstinputlisting[language=sail]{sail_latex/sailfnmipszzeroextend.tex}}
-
-\newcommand{\sailsignextend}{\label{zsignzyextend} \lstinputlisting[language=sail]{sail_latex/sailsignextend.tex}}
-
-\newcommand{\sailzzeroextend}{\label{zzzerozyextend} \lstinputlisting[language=sail]{sail_latex/sailzzeroextend.tex}}
-
-\newcommand{\sailzzeros}{\label{zzzeros} \lstinputlisting[language=sail]{sail_latex/sailzzeros.tex}}
-
-\newcommand{\sailfnzzeros}{\label{zzzeros} \lstinputlisting[language=sail]{sail_latex/sailfnzzeros.tex}}
-
-\newcommand{\sailones}{\label{zones} \lstinputlisting[language=sail]{sail_latex/sailones.tex}}
-
-\newcommand{\sailfnones}{\label{zones} \lstinputlisting[language=sail]{sail_latex/sailfnones.tex}}
-
-\newcommand{\sailzeightoperatorzzerozIsznine}{\label{zzeightoperatorzzerozIzysznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozIsznine.tex}}
-
-\newcommand{\sailzeightoperatorzzerozKzJsznine}{\label{zzeightoperatorzzerozKzJzysznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozKzJsznine.tex}}
-
-\newcommand{\sailzeightoperatorzzerozIuznine}{\label{zzeightoperatorzzerozIzyuznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozIuznine.tex}}
-
-\newcommand{\sailzeightoperatorzzerozKzJuznine}{\label{zzeightoperatorzzerozKzJzyuznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozKzJuznine.tex}}
-
-\newcommand{\sailfnzeightoperatorzzerozIsznine}{\label{zzeightoperatorzzerozIzysznine} \lstinputlisting[language=sail]{sail_latex/sailfnzeightoperatorzzerozIsznine.tex}}
-
-\newcommand{\sailfnzeightoperatorzzerozKzJsznine}{\label{zzeightoperatorzzerozKzJzysznine} \lstinputlisting[language=sail]{sail_latex/sailfnzeightoperatorzzerozKzJsznine.tex}}
-
-\newcommand{\sailfnzeightoperatorzzerozIuznine}{\label{zzeightoperatorzzerozIzyuznine} \lstinputlisting[language=sail]{sail_latex/sailfnzeightoperatorzzerozIuznine.tex}}
-
-\newcommand{\sailfnzeightoperatorzzerozKzJuznine}{\label{zzeightoperatorzzerozKzJzyuznine} \lstinputlisting[language=sail]{sail_latex/sailfnzeightoperatorzzerozKzJuznine.tex}}
-
-\newcommand{\sailbooltobits}{\label{zboolzytozybits} \lstinputlisting[language=sail]{sail_latex/sailbooltobits.tex}}
-
-\newcommand{\sailfnbooltobits}{\label{zboolzytozybits} \lstinputlisting[language=sail]{sail_latex/sailfnbooltobits.tex}}
-
-\newcommand{\sailbittobool}{\label{zbitzytozybool} \lstinputlisting[language=sail]{sail_latex/sailbittobool.tex}}
-
-\newcommand{\sailfnbittobool}{\label{zbitzytozybool} \lstinputlisting[language=sail]{sail_latex/sailfnbittobool.tex}}
-
-\newcommand{\sailbitstobool}{\label{zbitszytozybool} \lstinputlisting[language=sail]{sail_latex/sailbitstobool.tex}}
-
-\newcommand{\sailfnbitstobool}{\label{zbitszytozybool} \lstinputlisting[language=sail]{sail_latex/sailfnbitstobool.tex}}
-
-\newcommand{\sailshiftbitsright}{\label{zshiftzybitszyright} \lstinputlisting[language=sail]{sail_latex/sailshiftbitsright.tex}}
-
-\newcommand{\sailshiftbitsleft}{\label{zshiftzybitszyleft} \lstinputlisting[language=sail]{sail_latex/sailshiftbitsleft.tex}}
-
-\newcommand{\sailshiftl}{\label{zshiftl} \lstinputlisting[language=sail]{sail_latex/sailshiftl.tex}}
-
-\newcommand{\sailshiftr}{\label{zshiftr} \lstinputlisting[language=sail]{sail_latex/sailshiftr.tex}}
-
-\newcommand{\sailzeightoperatorzzerozKzKznine}{\label{zzeightoperatorzzerozKzKznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozKzKznine.tex}}
-
-\newcommand{\sailzeightoperatorzzerozIzIznine}{\label{zzeightoperatorzzerozIzIznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozIzIznine.tex}}
-
-\newcommand{\sailzeightoperatorzzerozKzKsznine}{\label{zzeightoperatorzzerozKzKzysznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozKzKsznine.tex}}
-
-\newcommand{\sailzeightoperatorzzerozAsznine}{\label{zzeightoperatorzzerozAzysznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozAsznine.tex}}
-
-\newcommand{\sailzeightoperatorzzerozAuznine}{\label{zzeightoperatorzzerozAzyuznine} \lstinputlisting[language=sail]{sail_latex/sailzeightoperatorzzerozAuznine.tex}}
-
-\newcommand{\sailtobits}{\label{ztozybits}
-\function{to\_bits} converts an integer to a bit vector of given length. If the integer is negative a twos-complement representation is used. If the integer is too large (or too negative) to fit in the requested length then it is truncated to the least significant bits.
-\lstinputlisting[language=sail]{sail_latex/sailtobits.tex}}
-
-\newcommand{\sailfntobits}{\label{ztozybits} \lstinputlisting[language=sail]{sail_latex/sailfntobits.tex}}
-
-\newcommand{\sailmask}{\label{zmask} \lstinputlisting[language=sail]{sail_latex/sailmask.tex}}
-
-\newcommand{\sailfnmask}{\label{zmask} \lstinputlisting[language=sail]{sail_latex/sailfnmask.tex}}
-
-\newcommand{\sailgettimens}{\label{zgetzytimezyns} \lstinputlisting[language=sail]{sail_latex/sailgettimens.tex}}
-
-\newcommand{\sailCauseReg}{\label{zCauseReg} \lstinputlisting[language=sail]{sail_latex/sailCauseReg.tex}}
-
-\newcommand{\sailMkCauseReg}{\label{zMkzyCauseReg} \lstinputlisting[language=sail]{sail_latex/sailMkCauseReg.tex}}
-
-\newcommand{\sailfnMkCauseReg}{\label{zMkzyCauseReg} \lstinputlisting[language=sail]{sail_latex/sailfnMkCauseReg.tex}}
-
-\newcommand{\sailgetCauseRegbits}{\label{zzygetzyCauseRegzybits} \lstinputlisting[language=sail]{sail_latex/sailgetCauseRegbits.tex}}
-
-\newcommand{\sailfngetCauseRegbits}{\label{zzygetzyCauseRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfngetCauseRegbits.tex}}
-
-\newcommand{\sailsetCauseRegbits}{\label{zzysetzyCauseRegzybits} \lstinputlisting[language=sail]{sail_latex/sailsetCauseRegbits.tex}}
-
-\newcommand{\sailfnsetCauseRegbits}{\label{zzysetzyCauseRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfnsetCauseRegbits.tex}}
-
-\newcommand{\sailupdateCauseRegbits}{\label{zzyupdatezyCauseRegzybits} \lstinputlisting[language=sail]{sail_latex/sailupdateCauseRegbits.tex}}
-
-\newcommand{\sailfnupdateCauseRegbits}{\label{zzyupdatezyCauseRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfnupdateCauseRegbits.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailupdatebitsvvvvvvv}{\label{zupdatezybits} \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailupdatebitsvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailmodbitsvvvvvvv}{\label{zzymodzybits} \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailmodbitsvvvvvvv.tex}}
-
-\newcommand{\sailgetCauseRegBD}{\label{zzygetzyCauseRegzyBD} \lstinputlisting[language=sail]{sail_latex/sailgetCauseRegBD.tex}}
-
-\newcommand{\sailfngetCauseRegBD}{\label{zzygetzyCauseRegzyBD} \lstinputlisting[language=sail]{sail_latex/sailfngetCauseRegBD.tex}}
-
-\newcommand{\sailsetCauseRegBD}{\label{zzysetzyCauseRegzyBD} \lstinputlisting[language=sail]{sail_latex/sailsetCauseRegBD.tex}}
-
-\newcommand{\sailfnsetCauseRegBD}{\label{zzysetzyCauseRegzyBD} \lstinputlisting[language=sail]{sail_latex/sailfnsetCauseRegBD.tex}}
-
-\newcommand{\sailupdateCauseRegBD}{\label{zzyupdatezyCauseRegzyBD} \lstinputlisting[language=sail]{sail_latex/sailupdateCauseRegBD.tex}}
-
-\newcommand{\sailfnupdateCauseRegBD}{\label{zzyupdatezyCauseRegzyBD} \lstinputlisting[language=sail]{sail_latex/sailfnupdateCauseRegBD.tex}}
-
-\newcommand{\sailupdateBD}{\label{zupdatezyBD} \lstinputlisting[language=sail]{sail_latex/sailupdateBD.tex}}
-
-\newcommand{\sailmodBD}{\label{zzymodzyBD} \lstinputlisting[language=sail]{sail_latex/sailmodBD.tex}}
-
-\newcommand{\sailgetCauseRegCE}{\label{zzygetzyCauseRegzyCE} \lstinputlisting[language=sail]{sail_latex/sailgetCauseRegCE.tex}}
-
-\newcommand{\sailfngetCauseRegCE}{\label{zzygetzyCauseRegzyCE} \lstinputlisting[language=sail]{sail_latex/sailfngetCauseRegCE.tex}}
-
-\newcommand{\sailsetCauseRegCE}{\label{zzysetzyCauseRegzyCE} \lstinputlisting[language=sail]{sail_latex/sailsetCauseRegCE.tex}}
-
-\newcommand{\sailfnsetCauseRegCE}{\label{zzysetzyCauseRegzyCE} \lstinputlisting[language=sail]{sail_latex/sailfnsetCauseRegCE.tex}}
-
-\newcommand{\sailupdateCauseRegCE}{\label{zzyupdatezyCauseRegzyCE} \lstinputlisting[language=sail]{sail_latex/sailupdateCauseRegCE.tex}}
-
-\newcommand{\sailfnupdateCauseRegCE}{\label{zzyupdatezyCauseRegzyCE} \lstinputlisting[language=sail]{sail_latex/sailfnupdateCauseRegCE.tex}}
-
-\newcommand{\sailupdateCE}{\label{zupdatezyCE} \lstinputlisting[language=sail]{sail_latex/sailupdateCE.tex}}
-
-\newcommand{\sailmodCE}{\label{zzymodzyCE} \lstinputlisting[language=sail]{sail_latex/sailmodCE.tex}}
-
-\newcommand{\sailgetCauseRegIV}{\label{zzygetzyCauseRegzyIV} \lstinputlisting[language=sail]{sail_latex/sailgetCauseRegIV.tex}}
-
-\newcommand{\sailfngetCauseRegIV}{\label{zzygetzyCauseRegzyIV} \lstinputlisting[language=sail]{sail_latex/sailfngetCauseRegIV.tex}}
-
-\newcommand{\sailsetCauseRegIV}{\label{zzysetzyCauseRegzyIV} \lstinputlisting[language=sail]{sail_latex/sailsetCauseRegIV.tex}}
-
-\newcommand{\sailfnsetCauseRegIV}{\label{zzysetzyCauseRegzyIV} \lstinputlisting[language=sail]{sail_latex/sailfnsetCauseRegIV.tex}}
-
-\newcommand{\sailupdateCauseRegIV}{\label{zzyupdatezyCauseRegzyIV} \lstinputlisting[language=sail]{sail_latex/sailupdateCauseRegIV.tex}}
-
-\newcommand{\sailfnupdateCauseRegIV}{\label{zzyupdatezyCauseRegzyIV} \lstinputlisting[language=sail]{sail_latex/sailfnupdateCauseRegIV.tex}}
-
-\newcommand{\sailupdateIV}{\label{zupdatezyIV} \lstinputlisting[language=sail]{sail_latex/sailupdateIV.tex}}
-
-\newcommand{\sailmodIV}{\label{zzymodzyIV} \lstinputlisting[language=sail]{sail_latex/sailmodIV.tex}}
-
-\newcommand{\sailgetCauseRegWP}{\label{zzygetzyCauseRegzyWP} \lstinputlisting[language=sail]{sail_latex/sailgetCauseRegWP.tex}}
-
-\newcommand{\sailfngetCauseRegWP}{\label{zzygetzyCauseRegzyWP} \lstinputlisting[language=sail]{sail_latex/sailfngetCauseRegWP.tex}}
-
-\newcommand{\sailsetCauseRegWP}{\label{zzysetzyCauseRegzyWP} \lstinputlisting[language=sail]{sail_latex/sailsetCauseRegWP.tex}}
-
-\newcommand{\sailfnsetCauseRegWP}{\label{zzysetzyCauseRegzyWP} \lstinputlisting[language=sail]{sail_latex/sailfnsetCauseRegWP.tex}}
-
-\newcommand{\sailupdateCauseRegWP}{\label{zzyupdatezyCauseRegzyWP} \lstinputlisting[language=sail]{sail_latex/sailupdateCauseRegWP.tex}}
-
-\newcommand{\sailfnupdateCauseRegWP}{\label{zzyupdatezyCauseRegzyWP} \lstinputlisting[language=sail]{sail_latex/sailfnupdateCauseRegWP.tex}}
-
-\newcommand{\sailupdateWP}{\label{zupdatezyWP} \lstinputlisting[language=sail]{sail_latex/sailupdateWP.tex}}
-
-\newcommand{\sailmodWP}{\label{zzymodzyWP} \lstinputlisting[language=sail]{sail_latex/sailmodWP.tex}}
-
-\newcommand{\sailgetCauseRegIP}{\label{zzygetzyCauseRegzyIP} \lstinputlisting[language=sail]{sail_latex/sailgetCauseRegIP.tex}}
-
-\newcommand{\sailfngetCauseRegIP}{\label{zzygetzyCauseRegzyIP} \lstinputlisting[language=sail]{sail_latex/sailfngetCauseRegIP.tex}}
-
-\newcommand{\sailsetCauseRegIP}{\label{zzysetzyCauseRegzyIP} \lstinputlisting[language=sail]{sail_latex/sailsetCauseRegIP.tex}}
-
-\newcommand{\sailfnsetCauseRegIP}{\label{zzysetzyCauseRegzyIP} \lstinputlisting[language=sail]{sail_latex/sailfnsetCauseRegIP.tex}}
-
-\newcommand{\sailupdateCauseRegIP}{\label{zzyupdatezyCauseRegzyIP} \lstinputlisting[language=sail]{sail_latex/sailupdateCauseRegIP.tex}}
-
-\newcommand{\sailfnupdateCauseRegIP}{\label{zzyupdatezyCauseRegzyIP} \lstinputlisting[language=sail]{sail_latex/sailfnupdateCauseRegIP.tex}}
-
-\newcommand{\sailupdateIP}{\label{zupdatezyIP} \lstinputlisting[language=sail]{sail_latex/sailupdateIP.tex}}
-
-\newcommand{\sailmodIP}{\label{zzymodzyIP} \lstinputlisting[language=sail]{sail_latex/sailmodIP.tex}}
-
-\newcommand{\sailgetCauseRegExcCode}{\label{zzygetzyCauseRegzyExcCode} \lstinputlisting[language=sail]{sail_latex/sailgetCauseRegExcCode.tex}}
-
-\newcommand{\sailfngetCauseRegExcCode}{\label{zzygetzyCauseRegzyExcCode} \lstinputlisting[language=sail]{sail_latex/sailfngetCauseRegExcCode.tex}}
-
-\newcommand{\sailsetCauseRegExcCode}{\label{zzysetzyCauseRegzyExcCode} \lstinputlisting[language=sail]{sail_latex/sailsetCauseRegExcCode.tex}}
-
-\newcommand{\sailfnsetCauseRegExcCode}{\label{zzysetzyCauseRegzyExcCode} \lstinputlisting[language=sail]{sail_latex/sailfnsetCauseRegExcCode.tex}}
-
-\newcommand{\sailupdateCauseRegExcCode}{\label{zzyupdatezyCauseRegzyExcCode} \lstinputlisting[language=sail]{sail_latex/sailupdateCauseRegExcCode.tex}}
-
-\newcommand{\sailfnupdateCauseRegExcCode}{\label{zzyupdatezyCauseRegzyExcCode} \lstinputlisting[language=sail]{sail_latex/sailfnupdateCauseRegExcCode.tex}}
-
-\newcommand{\sailsailupdateExcCodev}{\label{zupdatezyExcCode} \lstinputlisting[language=sail]{sail_latex/sailsailupdateExcCodev.tex}}
-
-\newcommand{\sailsailmodExcCodev}{\label{zzymodzyExcCode} \lstinputlisting[language=sail]{sail_latex/sailsailmodExcCodev.tex}}
-
-\newcommand{\sailTLBEntryLoReg}{\label{zTLBEntryLoReg} \lstinputlisting[language=sail]{sail_latex/sailTLBEntryLoReg.tex}}
-
-\newcommand{\sailMkTLBEntryLoReg}{\label{zMkzyTLBEntryLoReg} \lstinputlisting[language=sail]{sail_latex/sailMkTLBEntryLoReg.tex}}
-
-\newcommand{\sailfnMkTLBEntryLoReg}{\label{zMkzyTLBEntryLoReg} \lstinputlisting[language=sail]{sail_latex/sailfnMkTLBEntryLoReg.tex}}
-
-\newcommand{\sailgetTLBEntryLoRegbits}{\label{zzygetzyTLBEntryLoRegzybits} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryLoRegbits.tex}}
-
-\newcommand{\sailfngetTLBEntryLoRegbits}{\label{zzygetzyTLBEntryLoRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryLoRegbits.tex}}
-
-\newcommand{\sailsetTLBEntryLoRegbits}{\label{zzysetzyTLBEntryLoRegzybits} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryLoRegbits.tex}}
-
-\newcommand{\sailfnsetTLBEntryLoRegbits}{\label{zzysetzyTLBEntryLoRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryLoRegbits.tex}}
-
-\newcommand{\sailupdateTLBEntryLoRegbits}{\label{zzyupdatezyTLBEntryLoRegzybits} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryLoRegbits.tex}}
-
-\newcommand{\sailfnupdateTLBEntryLoRegbits}{\label{zzyupdatezyTLBEntryLoRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryLoRegbits.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailupdatebitsvvvvvv}{\label{zupdatezybits} \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailupdatebitsvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailmodbitsvvvvvv}{\label{zzymodzybits} \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailmodbitsvvvvvv.tex}}
-
-\newcommand{\sailgetTLBEntryLoRegCapS}{\label{zzygetzyTLBEntryLoRegzyCapS} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryLoRegCapS.tex}}
-
-\newcommand{\sailfngetTLBEntryLoRegCapS}{\label{zzygetzyTLBEntryLoRegzyCapS} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryLoRegCapS.tex}}
-
-\newcommand{\sailsetTLBEntryLoRegCapS}{\label{zzysetzyTLBEntryLoRegzyCapS} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryLoRegCapS.tex}}
-
-\newcommand{\sailfnsetTLBEntryLoRegCapS}{\label{zzysetzyTLBEntryLoRegzyCapS} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryLoRegCapS.tex}}
-
-\newcommand{\sailupdateTLBEntryLoRegCapS}{\label{zzyupdatezyTLBEntryLoRegzyCapS} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryLoRegCapS.tex}}
-
-\newcommand{\sailfnupdateTLBEntryLoRegCapS}{\label{zzyupdatezyTLBEntryLoRegzyCapS} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryLoRegCapS.tex}}
-
-\newcommand{\sailupdateCapS}{\label{zupdatezyCapS} \lstinputlisting[language=sail]{sail_latex/sailupdateCapS.tex}}
-
-\newcommand{\sailmodCapS}{\label{zzymodzyCapS} \lstinputlisting[language=sail]{sail_latex/sailmodCapS.tex}}
-
-\newcommand{\sailgetTLBEntryLoRegCapL}{\label{zzygetzyTLBEntryLoRegzyCapL} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryLoRegCapL.tex}}
-
-\newcommand{\sailfngetTLBEntryLoRegCapL}{\label{zzygetzyTLBEntryLoRegzyCapL} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryLoRegCapL.tex}}
-
-\newcommand{\sailsetTLBEntryLoRegCapL}{\label{zzysetzyTLBEntryLoRegzyCapL} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryLoRegCapL.tex}}
-
-\newcommand{\sailfnsetTLBEntryLoRegCapL}{\label{zzysetzyTLBEntryLoRegzyCapL} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryLoRegCapL.tex}}
-
-\newcommand{\sailupdateTLBEntryLoRegCapL}{\label{zzyupdatezyTLBEntryLoRegzyCapL} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryLoRegCapL.tex}}
-
-\newcommand{\sailfnupdateTLBEntryLoRegCapL}{\label{zzyupdatezyTLBEntryLoRegzyCapL} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryLoRegCapL.tex}}
-
-\newcommand{\sailupdateCapL}{\label{zupdatezyCapL} \lstinputlisting[language=sail]{sail_latex/sailupdateCapL.tex}}
-
-\newcommand{\sailmodCapL}{\label{zzymodzyCapL} \lstinputlisting[language=sail]{sail_latex/sailmodCapL.tex}}
-
-\newcommand{\sailgetTLBEntryLoRegPFN}{\label{zzygetzyTLBEntryLoRegzyPFN} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryLoRegPFN.tex}}
-
-\newcommand{\sailfngetTLBEntryLoRegPFN}{\label{zzygetzyTLBEntryLoRegzyPFN} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryLoRegPFN.tex}}
-
-\newcommand{\sailsetTLBEntryLoRegPFN}{\label{zzysetzyTLBEntryLoRegzyPFN} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryLoRegPFN.tex}}
-
-\newcommand{\sailfnsetTLBEntryLoRegPFN}{\label{zzysetzyTLBEntryLoRegzyPFN} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryLoRegPFN.tex}}
-
-\newcommand{\sailupdateTLBEntryLoRegPFN}{\label{zzyupdatezyTLBEntryLoRegzyPFN} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryLoRegPFN.tex}}
-
-\newcommand{\sailfnupdateTLBEntryLoRegPFN}{\label{zzyupdatezyTLBEntryLoRegzyPFN} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryLoRegPFN.tex}}
-
-\newcommand{\sailupdatePFN}{\label{zupdatezyPFN} \lstinputlisting[language=sail]{sail_latex/sailupdatePFN.tex}}
-
-\newcommand{\sailmodPFN}{\label{zzymodzyPFN} \lstinputlisting[language=sail]{sail_latex/sailmodPFN.tex}}
-
-\newcommand{\sailgetTLBEntryLoRegC}{\label{zzygetzyTLBEntryLoRegzyC} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryLoRegC.tex}}
-
-\newcommand{\sailfngetTLBEntryLoRegC}{\label{zzygetzyTLBEntryLoRegzyC} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryLoRegC.tex}}
-
-\newcommand{\sailsetTLBEntryLoRegC}{\label{zzysetzyTLBEntryLoRegzyC} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryLoRegC.tex}}
-
-\newcommand{\sailfnsetTLBEntryLoRegC}{\label{zzysetzyTLBEntryLoRegzyC} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryLoRegC.tex}}
-
-\newcommand{\sailupdateTLBEntryLoRegC}{\label{zzyupdatezyTLBEntryLoRegzyC} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryLoRegC.tex}}
-
-\newcommand{\sailfnupdateTLBEntryLoRegC}{\label{zzyupdatezyTLBEntryLoRegzyC} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryLoRegC.tex}}
-
-\newcommand{\sailupdateC}{\label{zupdatezyC} \lstinputlisting[language=sail]{sail_latex/sailupdateC.tex}}
-
-\newcommand{\sailmodC}{\label{zzymodzyC} \lstinputlisting[language=sail]{sail_latex/sailmodC.tex}}
-
-\newcommand{\sailgetTLBEntryLoRegD}{\label{zzygetzyTLBEntryLoRegzyD} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryLoRegD.tex}}
-
-\newcommand{\sailfngetTLBEntryLoRegD}{\label{zzygetzyTLBEntryLoRegzyD} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryLoRegD.tex}}
-
-\newcommand{\sailsetTLBEntryLoRegD}{\label{zzysetzyTLBEntryLoRegzyD} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryLoRegD.tex}}
-
-\newcommand{\sailfnsetTLBEntryLoRegD}{\label{zzysetzyTLBEntryLoRegzyD} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryLoRegD.tex}}
-
-\newcommand{\sailupdateTLBEntryLoRegD}{\label{zzyupdatezyTLBEntryLoRegzyD} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryLoRegD.tex}}
-
-\newcommand{\sailfnupdateTLBEntryLoRegD}{\label{zzyupdatezyTLBEntryLoRegzyD} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryLoRegD.tex}}
-
-\newcommand{\sailupdateD}{\label{zupdatezyD} \lstinputlisting[language=sail]{sail_latex/sailupdateD.tex}}
-
-\newcommand{\sailmodD}{\label{zzymodzyD} \lstinputlisting[language=sail]{sail_latex/sailmodD.tex}}
-
-\newcommand{\sailgetTLBEntryLoRegV}{\label{zzygetzyTLBEntryLoRegzyV} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryLoRegV.tex}}
-
-\newcommand{\sailfngetTLBEntryLoRegV}{\label{zzygetzyTLBEntryLoRegzyV} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryLoRegV.tex}}
-
-\newcommand{\sailsetTLBEntryLoRegV}{\label{zzysetzyTLBEntryLoRegzyV} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryLoRegV.tex}}
-
-\newcommand{\sailfnsetTLBEntryLoRegV}{\label{zzysetzyTLBEntryLoRegzyV} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryLoRegV.tex}}
-
-\newcommand{\sailupdateTLBEntryLoRegV}{\label{zzyupdatezyTLBEntryLoRegzyV} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryLoRegV.tex}}
-
-\newcommand{\sailfnupdateTLBEntryLoRegV}{\label{zzyupdatezyTLBEntryLoRegzyV} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryLoRegV.tex}}
-
-\newcommand{\sailupdateV}{\label{zupdatezyV} \lstinputlisting[language=sail]{sail_latex/sailupdateV.tex}}
-
-\newcommand{\sailmodV}{\label{zzymodzyV} \lstinputlisting[language=sail]{sail_latex/sailmodV.tex}}
-
-\newcommand{\sailgetTLBEntryLoRegG}{\label{zzygetzyTLBEntryLoRegzyG} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryLoRegG.tex}}
-
-\newcommand{\sailfngetTLBEntryLoRegG}{\label{zzygetzyTLBEntryLoRegzyG} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryLoRegG.tex}}
-
-\newcommand{\sailsetTLBEntryLoRegG}{\label{zzysetzyTLBEntryLoRegzyG} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryLoRegG.tex}}
-
-\newcommand{\sailfnsetTLBEntryLoRegG}{\label{zzysetzyTLBEntryLoRegzyG} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryLoRegG.tex}}
-
-\newcommand{\sailupdateTLBEntryLoRegG}{\label{zzyupdatezyTLBEntryLoRegzyG} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryLoRegG.tex}}
-
-\newcommand{\sailfnupdateTLBEntryLoRegG}{\label{zzyupdatezyTLBEntryLoRegzyG} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryLoRegG.tex}}
-
-\newcommand{\sailsailupdateGv}{\label{zupdatezyG} \lstinputlisting[language=sail]{sail_latex/sailsailupdateGv.tex}}
-
-\newcommand{\sailsailmodGv}{\label{zzymodzyG} \lstinputlisting[language=sail]{sail_latex/sailsailmodGv.tex}}
-
-\newcommand{\sailTLBEntryHiReg}{\label{zTLBEntryHiReg} \lstinputlisting[language=sail]{sail_latex/sailTLBEntryHiReg.tex}}
-
-\newcommand{\sailMkTLBEntryHiReg}{\label{zMkzyTLBEntryHiReg} \lstinputlisting[language=sail]{sail_latex/sailMkTLBEntryHiReg.tex}}
-
-\newcommand{\sailfnMkTLBEntryHiReg}{\label{zMkzyTLBEntryHiReg} \lstinputlisting[language=sail]{sail_latex/sailfnMkTLBEntryHiReg.tex}}
-
-\newcommand{\sailgetTLBEntryHiRegbits}{\label{zzygetzyTLBEntryHiRegzybits} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryHiRegbits.tex}}
-
-\newcommand{\sailfngetTLBEntryHiRegbits}{\label{zzygetzyTLBEntryHiRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryHiRegbits.tex}}
-
-\newcommand{\sailsetTLBEntryHiRegbits}{\label{zzysetzyTLBEntryHiRegzybits} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryHiRegbits.tex}}
-
-\newcommand{\sailfnsetTLBEntryHiRegbits}{\label{zzysetzyTLBEntryHiRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryHiRegbits.tex}}
-
-\newcommand{\sailupdateTLBEntryHiRegbits}{\label{zzyupdatezyTLBEntryHiRegzybits} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryHiRegbits.tex}}
-
-\newcommand{\sailfnupdateTLBEntryHiRegbits}{\label{zzyupdatezyTLBEntryHiRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryHiRegbits.tex}}
-
-\newcommand{\sailsailsailsailsailsailupdatebitsvvvvv}{\label{zupdatezybits} \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailupdatebitsvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailmodbitsvvvvv}{\label{zzymodzybits} \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailmodbitsvvvvv.tex}}
-
-\newcommand{\sailgetTLBEntryHiRegR}{\label{zzygetzyTLBEntryHiRegzyR} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryHiRegR.tex}}
-
-\newcommand{\sailfngetTLBEntryHiRegR}{\label{zzygetzyTLBEntryHiRegzyR} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryHiRegR.tex}}
-
-\newcommand{\sailsetTLBEntryHiRegR}{\label{zzysetzyTLBEntryHiRegzyR} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryHiRegR.tex}}
-
-\newcommand{\sailfnsetTLBEntryHiRegR}{\label{zzysetzyTLBEntryHiRegzyR} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryHiRegR.tex}}
-
-\newcommand{\sailupdateTLBEntryHiRegR}{\label{zzyupdatezyTLBEntryHiRegzyR} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryHiRegR.tex}}
-
-\newcommand{\sailfnupdateTLBEntryHiRegR}{\label{zzyupdatezyTLBEntryHiRegzyR} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryHiRegR.tex}}
-
-\newcommand{\sailsailupdateRv}{\label{zupdatezyR} \lstinputlisting[language=sail]{sail_latex/sailsailupdateRv.tex}}
-
-\newcommand{\sailsailmodRv}{\label{zzymodzyR} \lstinputlisting[language=sail]{sail_latex/sailsailmodRv.tex}}
-
-\newcommand{\sailgetTLBEntryHiRegVPNtwo}{\label{zzygetzyTLBEntryHiRegzyVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryHiRegVPNtwo.tex}}
-
-\newcommand{\sailfngetTLBEntryHiRegVPNtwo}{\label{zzygetzyTLBEntryHiRegzyVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryHiRegVPNtwo.tex}}
-
-\newcommand{\sailsetTLBEntryHiRegVPNtwo}{\label{zzysetzyTLBEntryHiRegzyVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryHiRegVPNtwo.tex}}
-
-\newcommand{\sailfnsetTLBEntryHiRegVPNtwo}{\label{zzysetzyTLBEntryHiRegzyVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryHiRegVPNtwo.tex}}
-
-\newcommand{\sailupdateTLBEntryHiRegVPNtwo}{\label{zzyupdatezyTLBEntryHiRegzyVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryHiRegVPNtwo.tex}}
-
-\newcommand{\sailfnupdateTLBEntryHiRegVPNtwo}{\label{zzyupdatezyTLBEntryHiRegzyVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryHiRegVPNtwo.tex}}
-
-\newcommand{\sailsailupdateVPNtwov}{\label{zupdatezyVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailsailupdateVPNtwov.tex}}
-
-\newcommand{\sailsailmodVPNtwov}{\label{zzymodzyVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailsailmodVPNtwov.tex}}
-
-\newcommand{\sailgetTLBEntryHiRegASID}{\label{zzygetzyTLBEntryHiRegzyASID} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryHiRegASID.tex}}
-
-\newcommand{\sailfngetTLBEntryHiRegASID}{\label{zzygetzyTLBEntryHiRegzyASID} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryHiRegASID.tex}}
-
-\newcommand{\sailsetTLBEntryHiRegASID}{\label{zzysetzyTLBEntryHiRegzyASID} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryHiRegASID.tex}}
-
-\newcommand{\sailfnsetTLBEntryHiRegASID}{\label{zzysetzyTLBEntryHiRegzyASID} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryHiRegASID.tex}}
-
-\newcommand{\sailupdateTLBEntryHiRegASID}{\label{zzyupdatezyTLBEntryHiRegzyASID} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryHiRegASID.tex}}
-
-\newcommand{\sailfnupdateTLBEntryHiRegASID}{\label{zzyupdatezyTLBEntryHiRegzyASID} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryHiRegASID.tex}}
-
-\newcommand{\sailsailupdateASIDv}{\label{zupdatezyASID} \lstinputlisting[language=sail]{sail_latex/sailsailupdateASIDv.tex}}
-
-\newcommand{\sailsailmodASIDv}{\label{zzymodzyASID} \lstinputlisting[language=sail]{sail_latex/sailsailmodASIDv.tex}}
-
-\newcommand{\sailContextReg}{\label{zContextReg} \lstinputlisting[language=sail]{sail_latex/sailContextReg.tex}}
-
-\newcommand{\sailMkContextReg}{\label{zMkzyContextReg} \lstinputlisting[language=sail]{sail_latex/sailMkContextReg.tex}}
-
-\newcommand{\sailfnMkContextReg}{\label{zMkzyContextReg} \lstinputlisting[language=sail]{sail_latex/sailfnMkContextReg.tex}}
-
-\newcommand{\sailgetContextRegbits}{\label{zzygetzyContextRegzybits} \lstinputlisting[language=sail]{sail_latex/sailgetContextRegbits.tex}}
-
-\newcommand{\sailfngetContextRegbits}{\label{zzygetzyContextRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfngetContextRegbits.tex}}
-
-\newcommand{\sailsetContextRegbits}{\label{zzysetzyContextRegzybits} \lstinputlisting[language=sail]{sail_latex/sailsetContextRegbits.tex}}
-
-\newcommand{\sailfnsetContextRegbits}{\label{zzysetzyContextRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfnsetContextRegbits.tex}}
-
-\newcommand{\sailupdateContextRegbits}{\label{zzyupdatezyContextRegzybits} \lstinputlisting[language=sail]{sail_latex/sailupdateContextRegbits.tex}}
-
-\newcommand{\sailfnupdateContextRegbits}{\label{zzyupdatezyContextRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfnupdateContextRegbits.tex}}
-
-\newcommand{\sailsailsailsailsailupdatebitsvvvv}{\label{zupdatezybits} \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailupdatebitsvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailmodbitsvvvv}{\label{zzymodzybits} \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailmodbitsvvvv.tex}}
-
-\newcommand{\sailgetContextRegPTEBase}{\label{zzygetzyContextRegzyPTEBase} \lstinputlisting[language=sail]{sail_latex/sailgetContextRegPTEBase.tex}}
-
-\newcommand{\sailfngetContextRegPTEBase}{\label{zzygetzyContextRegzyPTEBase} \lstinputlisting[language=sail]{sail_latex/sailfngetContextRegPTEBase.tex}}
-
-\newcommand{\sailsetContextRegPTEBase}{\label{zzysetzyContextRegzyPTEBase} \lstinputlisting[language=sail]{sail_latex/sailsetContextRegPTEBase.tex}}
-
-\newcommand{\sailfnsetContextRegPTEBase}{\label{zzysetzyContextRegzyPTEBase} \lstinputlisting[language=sail]{sail_latex/sailfnsetContextRegPTEBase.tex}}
-
-\newcommand{\sailupdateContextRegPTEBase}{\label{zzyupdatezyContextRegzyPTEBase} \lstinputlisting[language=sail]{sail_latex/sailupdateContextRegPTEBase.tex}}
-
-\newcommand{\sailfnupdateContextRegPTEBase}{\label{zzyupdatezyContextRegzyPTEBase} \lstinputlisting[language=sail]{sail_latex/sailfnupdateContextRegPTEBase.tex}}
-
-\newcommand{\sailupdatePTEBase}{\label{zupdatezyPTEBase} \lstinputlisting[language=sail]{sail_latex/sailupdatePTEBase.tex}}
-
-\newcommand{\sailmodPTEBase}{\label{zzymodzyPTEBase} \lstinputlisting[language=sail]{sail_latex/sailmodPTEBase.tex}}
-
-\newcommand{\sailgetContextRegBadVPNtwo}{\label{zzygetzyContextRegzyBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailgetContextRegBadVPNtwo.tex}}
-
-\newcommand{\sailfngetContextRegBadVPNtwo}{\label{zzygetzyContextRegzyBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailfngetContextRegBadVPNtwo.tex}}
-
-\newcommand{\sailsetContextRegBadVPNtwo}{\label{zzysetzyContextRegzyBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailsetContextRegBadVPNtwo.tex}}
-
-\newcommand{\sailfnsetContextRegBadVPNtwo}{\label{zzysetzyContextRegzyBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailfnsetContextRegBadVPNtwo.tex}}
-
-\newcommand{\sailupdateContextRegBadVPNtwo}{\label{zzyupdatezyContextRegzyBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailupdateContextRegBadVPNtwo.tex}}
-
-\newcommand{\sailfnupdateContextRegBadVPNtwo}{\label{zzyupdatezyContextRegzyBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailfnupdateContextRegBadVPNtwo.tex}}
-
-\newcommand{\sailupdateBadVPNtwo}{\label{zupdatezyBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailupdateBadVPNtwo.tex}}
-
-\newcommand{\sailmodBadVPNtwo}{\label{zzymodzyBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailmodBadVPNtwo.tex}}
-
-\newcommand{\sailXContextReg}{\label{zXContextReg} \lstinputlisting[language=sail]{sail_latex/sailXContextReg.tex}}
-
-\newcommand{\sailMkXContextReg}{\label{zMkzyXContextReg} \lstinputlisting[language=sail]{sail_latex/sailMkXContextReg.tex}}
-
-\newcommand{\sailfnMkXContextReg}{\label{zMkzyXContextReg} \lstinputlisting[language=sail]{sail_latex/sailfnMkXContextReg.tex}}
-
-\newcommand{\sailgetXContextRegbits}{\label{zzygetzyXContextRegzybits} \lstinputlisting[language=sail]{sail_latex/sailgetXContextRegbits.tex}}
-
-\newcommand{\sailfngetXContextRegbits}{\label{zzygetzyXContextRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfngetXContextRegbits.tex}}
-
-\newcommand{\sailsetXContextRegbits}{\label{zzysetzyXContextRegzybits} \lstinputlisting[language=sail]{sail_latex/sailsetXContextRegbits.tex}}
-
-\newcommand{\sailfnsetXContextRegbits}{\label{zzysetzyXContextRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfnsetXContextRegbits.tex}}
-
-\newcommand{\sailupdateXContextRegbits}{\label{zzyupdatezyXContextRegzybits} \lstinputlisting[language=sail]{sail_latex/sailupdateXContextRegbits.tex}}
-
-\newcommand{\sailfnupdateXContextRegbits}{\label{zzyupdatezyXContextRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfnupdateXContextRegbits.tex}}
-
-\newcommand{\sailsailsailsailupdatebitsvvv}{\label{zupdatezybits} \lstinputlisting[language=sail]{sail_latex/sailsailsailsailupdatebitsvvv.tex}}
-
-\newcommand{\sailsailsailsailmodbitsvvv}{\label{zzymodzybits} \lstinputlisting[language=sail]{sail_latex/sailsailsailsailmodbitsvvv.tex}}
-
-\newcommand{\sailgetXContextRegXPTEBase}{\label{zzygetzyXContextRegzyXPTEBase} \lstinputlisting[language=sail]{sail_latex/sailgetXContextRegXPTEBase.tex}}
-
-\newcommand{\sailfngetXContextRegXPTEBase}{\label{zzygetzyXContextRegzyXPTEBase} \lstinputlisting[language=sail]{sail_latex/sailfngetXContextRegXPTEBase.tex}}
-
-\newcommand{\sailsetXContextRegXPTEBase}{\label{zzysetzyXContextRegzyXPTEBase} \lstinputlisting[language=sail]{sail_latex/sailsetXContextRegXPTEBase.tex}}
-
-\newcommand{\sailfnsetXContextRegXPTEBase}{\label{zzysetzyXContextRegzyXPTEBase} \lstinputlisting[language=sail]{sail_latex/sailfnsetXContextRegXPTEBase.tex}}
-
-\newcommand{\sailupdateXContextRegXPTEBase}{\label{zzyupdatezyXContextRegzyXPTEBase} \lstinputlisting[language=sail]{sail_latex/sailupdateXContextRegXPTEBase.tex}}
-
-\newcommand{\sailfnupdateXContextRegXPTEBase}{\label{zzyupdatezyXContextRegzyXPTEBase} \lstinputlisting[language=sail]{sail_latex/sailfnupdateXContextRegXPTEBase.tex}}
-
-\newcommand{\sailupdateXPTEBase}{\label{zupdatezyXPTEBase} \lstinputlisting[language=sail]{sail_latex/sailupdateXPTEBase.tex}}
-
-\newcommand{\sailmodXPTEBase}{\label{zzymodzyXPTEBase} \lstinputlisting[language=sail]{sail_latex/sailmodXPTEBase.tex}}
-
-\newcommand{\sailgetXContextRegXR}{\label{zzygetzyXContextRegzyXR} \lstinputlisting[language=sail]{sail_latex/sailgetXContextRegXR.tex}}
-
-\newcommand{\sailfngetXContextRegXR}{\label{zzygetzyXContextRegzyXR} \lstinputlisting[language=sail]{sail_latex/sailfngetXContextRegXR.tex}}
-
-\newcommand{\sailsetXContextRegXR}{\label{zzysetzyXContextRegzyXR} \lstinputlisting[language=sail]{sail_latex/sailsetXContextRegXR.tex}}
-
-\newcommand{\sailfnsetXContextRegXR}{\label{zzysetzyXContextRegzyXR} \lstinputlisting[language=sail]{sail_latex/sailfnsetXContextRegXR.tex}}
-
-\newcommand{\sailupdateXContextRegXR}{\label{zzyupdatezyXContextRegzyXR} \lstinputlisting[language=sail]{sail_latex/sailupdateXContextRegXR.tex}}
-
-\newcommand{\sailfnupdateXContextRegXR}{\label{zzyupdatezyXContextRegzyXR} \lstinputlisting[language=sail]{sail_latex/sailfnupdateXContextRegXR.tex}}
-
-\newcommand{\sailupdateXR}{\label{zupdatezyXR} \lstinputlisting[language=sail]{sail_latex/sailupdateXR.tex}}
-
-\newcommand{\sailmodXR}{\label{zzymodzyXR} \lstinputlisting[language=sail]{sail_latex/sailmodXR.tex}}
-
-\newcommand{\sailgetXContextRegXBadVPNtwo}{\label{zzygetzyXContextRegzyXBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailgetXContextRegXBadVPNtwo.tex}}
-
-\newcommand{\sailfngetXContextRegXBadVPNtwo}{\label{zzygetzyXContextRegzyXBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailfngetXContextRegXBadVPNtwo.tex}}
-
-\newcommand{\sailsetXContextRegXBadVPNtwo}{\label{zzysetzyXContextRegzyXBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailsetXContextRegXBadVPNtwo.tex}}
-
-\newcommand{\sailfnsetXContextRegXBadVPNtwo}{\label{zzysetzyXContextRegzyXBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailfnsetXContextRegXBadVPNtwo.tex}}
-
-\newcommand{\sailupdateXContextRegXBadVPNtwo}{\label{zzyupdatezyXContextRegzyXBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailupdateXContextRegXBadVPNtwo.tex}}
-
-\newcommand{\sailfnupdateXContextRegXBadVPNtwo}{\label{zzyupdatezyXContextRegzyXBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailfnupdateXContextRegXBadVPNtwo.tex}}
-
-\newcommand{\sailupdateXBadVPNtwo}{\label{zupdatezyXBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailupdateXBadVPNtwo.tex}}
-
-\newcommand{\sailmodXBadVPNtwo}{\label{zzymodzyXBadVPNtwo} \lstinputlisting[language=sail]{sail_latex/sailmodXBadVPNtwo.tex}}
-
-\newcommand{\sailTLBIndexT}{\label{zTLBIndexT} \lstinputlisting[language=sail]{sail_latex/sailTLBIndexT.tex}}
-
-\newcommand{\sailMAX}{\label{zMAX} \lstinputlisting[language=sail]{sail_latex/sailMAX.tex}}
-
-\newcommand{\sailfnMAX}{\label{zMAX} \lstinputlisting[language=sail]{sail_latex/sailfnMAX.tex}}
-
-\newcommand{\sailTLBEntry}{\label{zTLBEntry} \lstinputlisting[language=sail]{sail_latex/sailTLBEntry.tex}}
-
-\newcommand{\sailMkTLBEntry}{\label{zMkzyTLBEntry} \lstinputlisting[language=sail]{sail_latex/sailMkTLBEntry.tex}}
-
-\newcommand{\sailfnMkTLBEntry}{\label{zMkzyTLBEntry} \lstinputlisting[language=sail]{sail_latex/sailfnMkTLBEntry.tex}}
-
-\newcommand{\sailgetTLBEntrybits}{\label{zzygetzyTLBEntryzybits} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntrybits.tex}}
-
-\newcommand{\sailfngetTLBEntrybits}{\label{zzygetzyTLBEntryzybits} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntrybits.tex}}
-
-\newcommand{\sailsetTLBEntrybits}{\label{zzysetzyTLBEntryzybits} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntrybits.tex}}
-
-\newcommand{\sailfnsetTLBEntrybits}{\label{zzysetzyTLBEntryzybits} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntrybits.tex}}
-
-\newcommand{\sailupdateTLBEntrybits}{\label{zzyupdatezyTLBEntryzybits} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntrybits.tex}}
-
-\newcommand{\sailfnupdateTLBEntrybits}{\label{zzyupdatezyTLBEntryzybits} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntrybits.tex}}
-
-\newcommand{\sailsailsailupdatebitsvv}{\label{zupdatezybits} \lstinputlisting[language=sail]{sail_latex/sailsailsailupdatebitsvv.tex}}
-
-\newcommand{\sailsailsailmodbitsvv}{\label{zzymodzybits} \lstinputlisting[language=sail]{sail_latex/sailsailsailmodbitsvv.tex}}
-
-\newcommand{\sailgetTLBEntrypagemask}{\label{zzygetzyTLBEntryzypagemask} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntrypagemask.tex}}
-
-\newcommand{\sailfngetTLBEntrypagemask}{\label{zzygetzyTLBEntryzypagemask} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntrypagemask.tex}}
-
-\newcommand{\sailsetTLBEntrypagemask}{\label{zzysetzyTLBEntryzypagemask} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntrypagemask.tex}}
-
-\newcommand{\sailfnsetTLBEntrypagemask}{\label{zzysetzyTLBEntryzypagemask} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntrypagemask.tex}}
-
-\newcommand{\sailupdateTLBEntrypagemask}{\label{zzyupdatezyTLBEntryzypagemask} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntrypagemask.tex}}
-
-\newcommand{\sailfnupdateTLBEntrypagemask}{\label{zzyupdatezyTLBEntryzypagemask} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntrypagemask.tex}}
-
-\newcommand{\sailupdatepagemask}{\label{zupdatezypagemask} \lstinputlisting[language=sail]{sail_latex/sailupdatepagemask.tex}}
-
-\newcommand{\sailmodpagemask}{\label{zzymodzypagemask} \lstinputlisting[language=sail]{sail_latex/sailmodpagemask.tex}}
-
-\newcommand{\sailgetTLBEntryr}{\label{zzygetzyTLBEntryzyr} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryr.tex}}
-
-\newcommand{\sailfngetTLBEntryr}{\label{zzygetzyTLBEntryzyr} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryr.tex}}
-
-\newcommand{\sailsetTLBEntryr}{\label{zzysetzyTLBEntryzyr} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryr.tex}}
-
-\newcommand{\sailfnsetTLBEntryr}{\label{zzysetzyTLBEntryzyr} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryr.tex}}
-
-\newcommand{\sailupdateTLBEntryr}{\label{zzyupdatezyTLBEntryzyr} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryr.tex}}
-
-\newcommand{\sailfnupdateTLBEntryr}{\label{zzyupdatezyTLBEntryzyr} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryr.tex}}
-
-\newcommand{\sailupdater}{\label{zupdatezyr} \lstinputlisting[language=sail]{sail_latex/sailupdater.tex}}
-
-\newcommand{\sailmodr}{\label{zzymodzyr} \lstinputlisting[language=sail]{sail_latex/sailmodr.tex}}
-
-\newcommand{\sailgetTLBEntryvpntwo}{\label{zzygetzyTLBEntryzyvpntwo} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryvpntwo.tex}}
-
-\newcommand{\sailfngetTLBEntryvpntwo}{\label{zzygetzyTLBEntryzyvpntwo} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryvpntwo.tex}}
-
-\newcommand{\sailsetTLBEntryvpntwo}{\label{zzysetzyTLBEntryzyvpntwo} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryvpntwo.tex}}
-
-\newcommand{\sailfnsetTLBEntryvpntwo}{\label{zzysetzyTLBEntryzyvpntwo} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryvpntwo.tex}}
-
-\newcommand{\sailupdateTLBEntryvpntwo}{\label{zzyupdatezyTLBEntryzyvpntwo} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryvpntwo.tex}}
-
-\newcommand{\sailfnupdateTLBEntryvpntwo}{\label{zzyupdatezyTLBEntryzyvpntwo} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryvpntwo.tex}}
-
-\newcommand{\sailupdatevpntwo}{\label{zupdatezyvpntwo} \lstinputlisting[language=sail]{sail_latex/sailupdatevpntwo.tex}}
-
-\newcommand{\sailmodvpntwo}{\label{zzymodzyvpntwo} \lstinputlisting[language=sail]{sail_latex/sailmodvpntwo.tex}}
-
-\newcommand{\sailgetTLBEntryasid}{\label{zzygetzyTLBEntryzyasid} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryasid.tex}}
-
-\newcommand{\sailfngetTLBEntryasid}{\label{zzygetzyTLBEntryzyasid} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryasid.tex}}
-
-\newcommand{\sailsetTLBEntryasid}{\label{zzysetzyTLBEntryzyasid} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryasid.tex}}
-
-\newcommand{\sailfnsetTLBEntryasid}{\label{zzysetzyTLBEntryzyasid} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryasid.tex}}
-
-\newcommand{\sailupdateTLBEntryasid}{\label{zzyupdatezyTLBEntryzyasid} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryasid.tex}}
-
-\newcommand{\sailfnupdateTLBEntryasid}{\label{zzyupdatezyTLBEntryzyasid} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryasid.tex}}
-
-\newcommand{\sailupdateasid}{\label{zupdatezyasid} \lstinputlisting[language=sail]{sail_latex/sailupdateasid.tex}}
-
-\newcommand{\sailmodasid}{\label{zzymodzyasid} \lstinputlisting[language=sail]{sail_latex/sailmodasid.tex}}
-
-\newcommand{\sailgetTLBEntryg}{\label{zzygetzyTLBEntryzyg} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryg.tex}}
-
-\newcommand{\sailfngetTLBEntryg}{\label{zzygetzyTLBEntryzyg} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryg.tex}}
-
-\newcommand{\sailsetTLBEntryg}{\label{zzysetzyTLBEntryzyg} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryg.tex}}
-
-\newcommand{\sailfnsetTLBEntryg}{\label{zzysetzyTLBEntryzyg} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryg.tex}}
-
-\newcommand{\sailupdateTLBEntryg}{\label{zzyupdatezyTLBEntryzyg} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryg.tex}}
-
-\newcommand{\sailfnupdateTLBEntryg}{\label{zzyupdatezyTLBEntryzyg} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryg.tex}}
-
-\newcommand{\sailupdateg}{\label{zupdatezyg} \lstinputlisting[language=sail]{sail_latex/sailupdateg.tex}}
-
-\newcommand{\sailmodg}{\label{zzymodzyg} \lstinputlisting[language=sail]{sail_latex/sailmodg.tex}}
-
-\newcommand{\sailgetTLBEntryvalid}{\label{zzygetzyTLBEntryzyvalid} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryvalid.tex}}
-
-\newcommand{\sailfngetTLBEntryvalid}{\label{zzygetzyTLBEntryzyvalid} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryvalid.tex}}
-
-\newcommand{\sailsetTLBEntryvalid}{\label{zzysetzyTLBEntryzyvalid} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryvalid.tex}}
-
-\newcommand{\sailfnsetTLBEntryvalid}{\label{zzysetzyTLBEntryzyvalid} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryvalid.tex}}
-
-\newcommand{\sailupdateTLBEntryvalid}{\label{zzyupdatezyTLBEntryzyvalid} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryvalid.tex}}
-
-\newcommand{\sailfnupdateTLBEntryvalid}{\label{zzyupdatezyTLBEntryzyvalid} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryvalid.tex}}
-
-\newcommand{\sailupdatevalid}{\label{zupdatezyvalid} \lstinputlisting[language=sail]{sail_latex/sailupdatevalid.tex}}
-
-\newcommand{\sailmodvalid}{\label{zzymodzyvalid} \lstinputlisting[language=sail]{sail_latex/sailmodvalid.tex}}
-
-\newcommand{\sailgetTLBEntrycapsone}{\label{zzygetzyTLBEntryzycapsone} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntrycapsone.tex}}
-
-\newcommand{\sailfngetTLBEntrycapsone}{\label{zzygetzyTLBEntryzycapsone} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntrycapsone.tex}}
-
-\newcommand{\sailsetTLBEntrycapsone}{\label{zzysetzyTLBEntryzycapsone} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntrycapsone.tex}}
-
-\newcommand{\sailfnsetTLBEntrycapsone}{\label{zzysetzyTLBEntryzycapsone} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntrycapsone.tex}}
-
-\newcommand{\sailupdateTLBEntrycapsone}{\label{zzyupdatezyTLBEntryzycapsone} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntrycapsone.tex}}
-
-\newcommand{\sailfnupdateTLBEntrycapsone}{\label{zzyupdatezyTLBEntryzycapsone} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntrycapsone.tex}}
-
-\newcommand{\sailupdatecapsone}{\label{zupdatezycapsone} \lstinputlisting[language=sail]{sail_latex/sailupdatecapsone.tex}}
-
-\newcommand{\sailmodcapsone}{\label{zzymodzycapsone} \lstinputlisting[language=sail]{sail_latex/sailmodcapsone.tex}}
-
-\newcommand{\sailgetTLBEntrycaplone}{\label{zzygetzyTLBEntryzycaplone} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntrycaplone.tex}}
-
-\newcommand{\sailfngetTLBEntrycaplone}{\label{zzygetzyTLBEntryzycaplone} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntrycaplone.tex}}
-
-\newcommand{\sailsetTLBEntrycaplone}{\label{zzysetzyTLBEntryzycaplone} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntrycaplone.tex}}
-
-\newcommand{\sailfnsetTLBEntrycaplone}{\label{zzysetzyTLBEntryzycaplone} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntrycaplone.tex}}
-
-\newcommand{\sailupdateTLBEntrycaplone}{\label{zzyupdatezyTLBEntryzycaplone} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntrycaplone.tex}}
-
-\newcommand{\sailfnupdateTLBEntrycaplone}{\label{zzyupdatezyTLBEntryzycaplone} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntrycaplone.tex}}
-
-\newcommand{\sailupdatecaplone}{\label{zupdatezycaplone} \lstinputlisting[language=sail]{sail_latex/sailupdatecaplone.tex}}
-
-\newcommand{\sailmodcaplone}{\label{zzymodzycaplone} \lstinputlisting[language=sail]{sail_latex/sailmodcaplone.tex}}
-
-\newcommand{\sailgetTLBEntrypfnone}{\label{zzygetzyTLBEntryzypfnone} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntrypfnone.tex}}
-
-\newcommand{\sailfngetTLBEntrypfnone}{\label{zzygetzyTLBEntryzypfnone} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntrypfnone.tex}}
-
-\newcommand{\sailsetTLBEntrypfnone}{\label{zzysetzyTLBEntryzypfnone} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntrypfnone.tex}}
-
-\newcommand{\sailfnsetTLBEntrypfnone}{\label{zzysetzyTLBEntryzypfnone} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntrypfnone.tex}}
-
-\newcommand{\sailupdateTLBEntrypfnone}{\label{zzyupdatezyTLBEntryzypfnone} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntrypfnone.tex}}
-
-\newcommand{\sailfnupdateTLBEntrypfnone}{\label{zzyupdatezyTLBEntryzypfnone} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntrypfnone.tex}}
-
-\newcommand{\sailupdatepfnone}{\label{zupdatezypfnone} \lstinputlisting[language=sail]{sail_latex/sailupdatepfnone.tex}}
-
-\newcommand{\sailmodpfnone}{\label{zzymodzypfnone} \lstinputlisting[language=sail]{sail_latex/sailmodpfnone.tex}}
-
-\newcommand{\sailgetTLBEntrycone}{\label{zzygetzyTLBEntryzycone} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntrycone.tex}}
-
-\newcommand{\sailfngetTLBEntrycone}{\label{zzygetzyTLBEntryzycone} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntrycone.tex}}
-
-\newcommand{\sailsetTLBEntrycone}{\label{zzysetzyTLBEntryzycone} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntrycone.tex}}
-
-\newcommand{\sailfnsetTLBEntrycone}{\label{zzysetzyTLBEntryzycone} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntrycone.tex}}
-
-\newcommand{\sailupdateTLBEntrycone}{\label{zzyupdatezyTLBEntryzycone} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntrycone.tex}}
-
-\newcommand{\sailfnupdateTLBEntrycone}{\label{zzyupdatezyTLBEntryzycone} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntrycone.tex}}
-
-\newcommand{\sailupdatecone}{\label{zupdatezycone} \lstinputlisting[language=sail]{sail_latex/sailupdatecone.tex}}
-
-\newcommand{\sailmodcone}{\label{zzymodzycone} \lstinputlisting[language=sail]{sail_latex/sailmodcone.tex}}
-
-\newcommand{\sailgetTLBEntrydone}{\label{zzygetzyTLBEntryzydone} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntrydone.tex}}
-
-\newcommand{\sailfngetTLBEntrydone}{\label{zzygetzyTLBEntryzydone} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntrydone.tex}}
-
-\newcommand{\sailsetTLBEntrydone}{\label{zzysetzyTLBEntryzydone} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntrydone.tex}}
-
-\newcommand{\sailfnsetTLBEntrydone}{\label{zzysetzyTLBEntryzydone} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntrydone.tex}}
-
-\newcommand{\sailupdateTLBEntrydone}{\label{zzyupdatezyTLBEntryzydone} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntrydone.tex}}
-
-\newcommand{\sailfnupdateTLBEntrydone}{\label{zzyupdatezyTLBEntryzydone} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntrydone.tex}}
-
-\newcommand{\sailupdatedone}{\label{zupdatezydone} \lstinputlisting[language=sail]{sail_latex/sailupdatedone.tex}}
-
-\newcommand{\sailmoddone}{\label{zzymodzydone} \lstinputlisting[language=sail]{sail_latex/sailmoddone.tex}}
-
-\newcommand{\sailgetTLBEntryvone}{\label{zzygetzyTLBEntryzyvone} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryvone.tex}}
-
-\newcommand{\sailfngetTLBEntryvone}{\label{zzygetzyTLBEntryzyvone} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryvone.tex}}
-
-\newcommand{\sailsetTLBEntryvone}{\label{zzysetzyTLBEntryzyvone} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryvone.tex}}
-
-\newcommand{\sailfnsetTLBEntryvone}{\label{zzysetzyTLBEntryzyvone} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryvone.tex}}
-
-\newcommand{\sailupdateTLBEntryvone}{\label{zzyupdatezyTLBEntryzyvone} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryvone.tex}}
-
-\newcommand{\sailfnupdateTLBEntryvone}{\label{zzyupdatezyTLBEntryzyvone} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryvone.tex}}
-
-\newcommand{\sailupdatevone}{\label{zupdatezyvone} \lstinputlisting[language=sail]{sail_latex/sailupdatevone.tex}}
-
-\newcommand{\sailmodvone}{\label{zzymodzyvone} \lstinputlisting[language=sail]{sail_latex/sailmodvone.tex}}
-
-\newcommand{\sailgetTLBEntrycapszero}{\label{zzygetzyTLBEntryzycapszero} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntrycapszero.tex}}
-
-\newcommand{\sailfngetTLBEntrycapszero}{\label{zzygetzyTLBEntryzycapszero} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntrycapszero.tex}}
-
-\newcommand{\sailsetTLBEntrycapszero}{\label{zzysetzyTLBEntryzycapszero} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntrycapszero.tex}}
-
-\newcommand{\sailfnsetTLBEntrycapszero}{\label{zzysetzyTLBEntryzycapszero} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntrycapszero.tex}}
-
-\newcommand{\sailupdateTLBEntrycapszero}{\label{zzyupdatezyTLBEntryzycapszero} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntrycapszero.tex}}
-
-\newcommand{\sailfnupdateTLBEntrycapszero}{\label{zzyupdatezyTLBEntryzycapszero} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntrycapszero.tex}}
-
-\newcommand{\sailupdatecapszero}{\label{zupdatezycapszero} \lstinputlisting[language=sail]{sail_latex/sailupdatecapszero.tex}}
-
-\newcommand{\sailmodcapszero}{\label{zzymodzycapszero} \lstinputlisting[language=sail]{sail_latex/sailmodcapszero.tex}}
-
-\newcommand{\sailgetTLBEntrycaplzero}{\label{zzygetzyTLBEntryzycaplzero} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntrycaplzero.tex}}
-
-\newcommand{\sailfngetTLBEntrycaplzero}{\label{zzygetzyTLBEntryzycaplzero} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntrycaplzero.tex}}
-
-\newcommand{\sailsetTLBEntrycaplzero}{\label{zzysetzyTLBEntryzycaplzero} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntrycaplzero.tex}}
-
-\newcommand{\sailfnsetTLBEntrycaplzero}{\label{zzysetzyTLBEntryzycaplzero} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntrycaplzero.tex}}
-
-\newcommand{\sailupdateTLBEntrycaplzero}{\label{zzyupdatezyTLBEntryzycaplzero} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntrycaplzero.tex}}
-
-\newcommand{\sailfnupdateTLBEntrycaplzero}{\label{zzyupdatezyTLBEntryzycaplzero} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntrycaplzero.tex}}
-
-\newcommand{\sailupdatecaplzero}{\label{zupdatezycaplzero} \lstinputlisting[language=sail]{sail_latex/sailupdatecaplzero.tex}}
-
-\newcommand{\sailmodcaplzero}{\label{zzymodzycaplzero} \lstinputlisting[language=sail]{sail_latex/sailmodcaplzero.tex}}
-
-\newcommand{\sailgetTLBEntrypfnzero}{\label{zzygetzyTLBEntryzypfnzero} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntrypfnzero.tex}}
-
-\newcommand{\sailfngetTLBEntrypfnzero}{\label{zzygetzyTLBEntryzypfnzero} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntrypfnzero.tex}}
-
-\newcommand{\sailsetTLBEntrypfnzero}{\label{zzysetzyTLBEntryzypfnzero} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntrypfnzero.tex}}
-
-\newcommand{\sailfnsetTLBEntrypfnzero}{\label{zzysetzyTLBEntryzypfnzero} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntrypfnzero.tex}}
-
-\newcommand{\sailupdateTLBEntrypfnzero}{\label{zzyupdatezyTLBEntryzypfnzero} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntrypfnzero.tex}}
-
-\newcommand{\sailfnupdateTLBEntrypfnzero}{\label{zzyupdatezyTLBEntryzypfnzero} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntrypfnzero.tex}}
-
-\newcommand{\sailupdatepfnzero}{\label{zupdatezypfnzero} \lstinputlisting[language=sail]{sail_latex/sailupdatepfnzero.tex}}
-
-\newcommand{\sailmodpfnzero}{\label{zzymodzypfnzero} \lstinputlisting[language=sail]{sail_latex/sailmodpfnzero.tex}}
-
-\newcommand{\sailgetTLBEntryczero}{\label{zzygetzyTLBEntryzyczero} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryczero.tex}}
-
-\newcommand{\sailfngetTLBEntryczero}{\label{zzygetzyTLBEntryzyczero} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryczero.tex}}
-
-\newcommand{\sailsetTLBEntryczero}{\label{zzysetzyTLBEntryzyczero} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryczero.tex}}
-
-\newcommand{\sailfnsetTLBEntryczero}{\label{zzysetzyTLBEntryzyczero} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryczero.tex}}
-
-\newcommand{\sailupdateTLBEntryczero}{\label{zzyupdatezyTLBEntryzyczero} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryczero.tex}}
-
-\newcommand{\sailfnupdateTLBEntryczero}{\label{zzyupdatezyTLBEntryzyczero} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryczero.tex}}
-
-\newcommand{\sailupdateczero}{\label{zupdatezyczero} \lstinputlisting[language=sail]{sail_latex/sailupdateczero.tex}}
-
-\newcommand{\sailmodczero}{\label{zzymodzyczero} \lstinputlisting[language=sail]{sail_latex/sailmodczero.tex}}
-
-\newcommand{\sailgetTLBEntrydzero}{\label{zzygetzyTLBEntryzydzero} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntrydzero.tex}}
-
-\newcommand{\sailfngetTLBEntrydzero}{\label{zzygetzyTLBEntryzydzero} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntrydzero.tex}}
-
-\newcommand{\sailsetTLBEntrydzero}{\label{zzysetzyTLBEntryzydzero} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntrydzero.tex}}
-
-\newcommand{\sailfnsetTLBEntrydzero}{\label{zzysetzyTLBEntryzydzero} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntrydzero.tex}}
-
-\newcommand{\sailupdateTLBEntrydzero}{\label{zzyupdatezyTLBEntryzydzero} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntrydzero.tex}}
-
-\newcommand{\sailfnupdateTLBEntrydzero}{\label{zzyupdatezyTLBEntryzydzero} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntrydzero.tex}}
-
-\newcommand{\sailupdatedzero}{\label{zupdatezydzero} \lstinputlisting[language=sail]{sail_latex/sailupdatedzero.tex}}
-
-\newcommand{\sailmoddzero}{\label{zzymodzydzero} \lstinputlisting[language=sail]{sail_latex/sailmoddzero.tex}}
-
-\newcommand{\sailgetTLBEntryvzero}{\label{zzygetzyTLBEntryzyvzero} \lstinputlisting[language=sail]{sail_latex/sailgetTLBEntryvzero.tex}}
-
-\newcommand{\sailfngetTLBEntryvzero}{\label{zzygetzyTLBEntryzyvzero} \lstinputlisting[language=sail]{sail_latex/sailfngetTLBEntryvzero.tex}}
-
-\newcommand{\sailsetTLBEntryvzero}{\label{zzysetzyTLBEntryzyvzero} \lstinputlisting[language=sail]{sail_latex/sailsetTLBEntryvzero.tex}}
-
-\newcommand{\sailfnsetTLBEntryvzero}{\label{zzysetzyTLBEntryzyvzero} \lstinputlisting[language=sail]{sail_latex/sailfnsetTLBEntryvzero.tex}}
-
-\newcommand{\sailupdateTLBEntryvzero}{\label{zzyupdatezyTLBEntryzyvzero} \lstinputlisting[language=sail]{sail_latex/sailupdateTLBEntryvzero.tex}}
-
-\newcommand{\sailfnupdateTLBEntryvzero}{\label{zzyupdatezyTLBEntryzyvzero} \lstinputlisting[language=sail]{sail_latex/sailfnupdateTLBEntryvzero.tex}}
-
-\newcommand{\sailupdatevzero}{\label{zupdatezyvzero} \lstinputlisting[language=sail]{sail_latex/sailupdatevzero.tex}}
-
-\newcommand{\sailmodvzero}{\label{zzymodzyvzero} \lstinputlisting[language=sail]{sail_latex/sailmodvzero.tex}}
-
-\newcommand{\sailStatusReg}{\label{zStatusReg} \lstinputlisting[language=sail]{sail_latex/sailStatusReg.tex}}
-
-\newcommand{\sailMkStatusReg}{\label{zMkzyStatusReg} \lstinputlisting[language=sail]{sail_latex/sailMkStatusReg.tex}}
-
-\newcommand{\sailfnMkStatusReg}{\label{zMkzyStatusReg} \lstinputlisting[language=sail]{sail_latex/sailfnMkStatusReg.tex}}
-
-\newcommand{\sailgetStatusRegbits}{\label{zzygetzyStatusRegzybits} \lstinputlisting[language=sail]{sail_latex/sailgetStatusRegbits.tex}}
-
-\newcommand{\sailfngetStatusRegbits}{\label{zzygetzyStatusRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfngetStatusRegbits.tex}}
-
-\newcommand{\sailsetStatusRegbits}{\label{zzysetzyStatusRegzybits} \lstinputlisting[language=sail]{sail_latex/sailsetStatusRegbits.tex}}
-
-\newcommand{\sailfnsetStatusRegbits}{\label{zzysetzyStatusRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfnsetStatusRegbits.tex}}
-
-\newcommand{\sailupdateStatusRegbits}{\label{zzyupdatezyStatusRegzybits} \lstinputlisting[language=sail]{sail_latex/sailupdateStatusRegbits.tex}}
-
-\newcommand{\sailfnupdateStatusRegbits}{\label{zzyupdatezyStatusRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfnupdateStatusRegbits.tex}}
-
-\newcommand{\sailsailupdatebitsv}{\label{zupdatezybits} \lstinputlisting[language=sail]{sail_latex/sailsailupdatebitsv.tex}}
-
-\newcommand{\sailsailmodbitsv}{\label{zzymodzybits} \lstinputlisting[language=sail]{sail_latex/sailsailmodbitsv.tex}}
-
-\newcommand{\sailgetStatusRegCU}{\label{zzygetzyStatusRegzyCU} \lstinputlisting[language=sail]{sail_latex/sailgetStatusRegCU.tex}}
-
-\newcommand{\sailfngetStatusRegCU}{\label{zzygetzyStatusRegzyCU} \lstinputlisting[language=sail]{sail_latex/sailfngetStatusRegCU.tex}}
-
-\newcommand{\sailsetStatusRegCU}{\label{zzysetzyStatusRegzyCU} \lstinputlisting[language=sail]{sail_latex/sailsetStatusRegCU.tex}}
-
-\newcommand{\sailfnsetStatusRegCU}{\label{zzysetzyStatusRegzyCU} \lstinputlisting[language=sail]{sail_latex/sailfnsetStatusRegCU.tex}}
-
-\newcommand{\sailupdateStatusRegCU}{\label{zzyupdatezyStatusRegzyCU} \lstinputlisting[language=sail]{sail_latex/sailupdateStatusRegCU.tex}}
-
-\newcommand{\sailfnupdateStatusRegCU}{\label{zzyupdatezyStatusRegzyCU} \lstinputlisting[language=sail]{sail_latex/sailfnupdateStatusRegCU.tex}}
-
-\newcommand{\sailupdateCU}{\label{zupdatezyCU} \lstinputlisting[language=sail]{sail_latex/sailupdateCU.tex}}
-
-\newcommand{\sailmodCU}{\label{zzymodzyCU} \lstinputlisting[language=sail]{sail_latex/sailmodCU.tex}}
-
-\newcommand{\sailgetStatusRegBEV}{\label{zzygetzyStatusRegzyBEV} \lstinputlisting[language=sail]{sail_latex/sailgetStatusRegBEV.tex}}
-
-\newcommand{\sailfngetStatusRegBEV}{\label{zzygetzyStatusRegzyBEV} \lstinputlisting[language=sail]{sail_latex/sailfngetStatusRegBEV.tex}}
-
-\newcommand{\sailsetStatusRegBEV}{\label{zzysetzyStatusRegzyBEV} \lstinputlisting[language=sail]{sail_latex/sailsetStatusRegBEV.tex}}
-
-\newcommand{\sailfnsetStatusRegBEV}{\label{zzysetzyStatusRegzyBEV} \lstinputlisting[language=sail]{sail_latex/sailfnsetStatusRegBEV.tex}}
-
-\newcommand{\sailupdateStatusRegBEV}{\label{zzyupdatezyStatusRegzyBEV} \lstinputlisting[language=sail]{sail_latex/sailupdateStatusRegBEV.tex}}
-
-\newcommand{\sailfnupdateStatusRegBEV}{\label{zzyupdatezyStatusRegzyBEV} \lstinputlisting[language=sail]{sail_latex/sailfnupdateStatusRegBEV.tex}}
-
-\newcommand{\sailupdateBEV}{\label{zupdatezyBEV} \lstinputlisting[language=sail]{sail_latex/sailupdateBEV.tex}}
-
-\newcommand{\sailmodBEV}{\label{zzymodzyBEV} \lstinputlisting[language=sail]{sail_latex/sailmodBEV.tex}}
-
-\newcommand{\sailgetStatusRegIM}{\label{zzygetzyStatusRegzyIM} \lstinputlisting[language=sail]{sail_latex/sailgetStatusRegIM.tex}}
-
-\newcommand{\sailfngetStatusRegIM}{\label{zzygetzyStatusRegzyIM} \lstinputlisting[language=sail]{sail_latex/sailfngetStatusRegIM.tex}}
-
-\newcommand{\sailsetStatusRegIM}{\label{zzysetzyStatusRegzyIM} \lstinputlisting[language=sail]{sail_latex/sailsetStatusRegIM.tex}}
-
-\newcommand{\sailfnsetStatusRegIM}{\label{zzysetzyStatusRegzyIM} \lstinputlisting[language=sail]{sail_latex/sailfnsetStatusRegIM.tex}}
-
-\newcommand{\sailupdateStatusRegIM}{\label{zzyupdatezyStatusRegzyIM} \lstinputlisting[language=sail]{sail_latex/sailupdateStatusRegIM.tex}}
-
-\newcommand{\sailfnupdateStatusRegIM}{\label{zzyupdatezyStatusRegzyIM} \lstinputlisting[language=sail]{sail_latex/sailfnupdateStatusRegIM.tex}}
-
-\newcommand{\sailupdateIM}{\label{zupdatezyIM} \lstinputlisting[language=sail]{sail_latex/sailupdateIM.tex}}
-
-\newcommand{\sailmodIM}{\label{zzymodzyIM} \lstinputlisting[language=sail]{sail_latex/sailmodIM.tex}}
-
-\newcommand{\sailgetStatusRegKX}{\label{zzygetzyStatusRegzyKX} \lstinputlisting[language=sail]{sail_latex/sailgetStatusRegKX.tex}}
-
-\newcommand{\sailfngetStatusRegKX}{\label{zzygetzyStatusRegzyKX} \lstinputlisting[language=sail]{sail_latex/sailfngetStatusRegKX.tex}}
-
-\newcommand{\sailsetStatusRegKX}{\label{zzysetzyStatusRegzyKX} \lstinputlisting[language=sail]{sail_latex/sailsetStatusRegKX.tex}}
-
-\newcommand{\sailfnsetStatusRegKX}{\label{zzysetzyStatusRegzyKX} \lstinputlisting[language=sail]{sail_latex/sailfnsetStatusRegKX.tex}}
-
-\newcommand{\sailupdateStatusRegKX}{\label{zzyupdatezyStatusRegzyKX} \lstinputlisting[language=sail]{sail_latex/sailupdateStatusRegKX.tex}}
-
-\newcommand{\sailfnupdateStatusRegKX}{\label{zzyupdatezyStatusRegzyKX} \lstinputlisting[language=sail]{sail_latex/sailfnupdateStatusRegKX.tex}}
-
-\newcommand{\sailupdateKX}{\label{zupdatezyKX} \lstinputlisting[language=sail]{sail_latex/sailupdateKX.tex}}
-
-\newcommand{\sailmodKX}{\label{zzymodzyKX} \lstinputlisting[language=sail]{sail_latex/sailmodKX.tex}}
-
-\newcommand{\sailgetStatusRegSX}{\label{zzygetzyStatusRegzySX} \lstinputlisting[language=sail]{sail_latex/sailgetStatusRegSX.tex}}
-
-\newcommand{\sailfngetStatusRegSX}{\label{zzygetzyStatusRegzySX} \lstinputlisting[language=sail]{sail_latex/sailfngetStatusRegSX.tex}}
-
-\newcommand{\sailsetStatusRegSX}{\label{zzysetzyStatusRegzySX} \lstinputlisting[language=sail]{sail_latex/sailsetStatusRegSX.tex}}
-
-\newcommand{\sailfnsetStatusRegSX}{\label{zzysetzyStatusRegzySX} \lstinputlisting[language=sail]{sail_latex/sailfnsetStatusRegSX.tex}}
-
-\newcommand{\sailupdateStatusRegSX}{\label{zzyupdatezyStatusRegzySX} \lstinputlisting[language=sail]{sail_latex/sailupdateStatusRegSX.tex}}
-
-\newcommand{\sailfnupdateStatusRegSX}{\label{zzyupdatezyStatusRegzySX} \lstinputlisting[language=sail]{sail_latex/sailfnupdateStatusRegSX.tex}}
-
-\newcommand{\sailupdateSX}{\label{zupdatezySX} \lstinputlisting[language=sail]{sail_latex/sailupdateSX.tex}}
-
-\newcommand{\sailmodSX}{\label{zzymodzySX} \lstinputlisting[language=sail]{sail_latex/sailmodSX.tex}}
-
-\newcommand{\sailgetStatusRegUX}{\label{zzygetzyStatusRegzyUX} \lstinputlisting[language=sail]{sail_latex/sailgetStatusRegUX.tex}}
-
-\newcommand{\sailfngetStatusRegUX}{\label{zzygetzyStatusRegzyUX} \lstinputlisting[language=sail]{sail_latex/sailfngetStatusRegUX.tex}}
-
-\newcommand{\sailsetStatusRegUX}{\label{zzysetzyStatusRegzyUX} \lstinputlisting[language=sail]{sail_latex/sailsetStatusRegUX.tex}}
-
-\newcommand{\sailfnsetStatusRegUX}{\label{zzysetzyStatusRegzyUX} \lstinputlisting[language=sail]{sail_latex/sailfnsetStatusRegUX.tex}}
-
-\newcommand{\sailupdateStatusRegUX}{\label{zzyupdatezyStatusRegzyUX} \lstinputlisting[language=sail]{sail_latex/sailupdateStatusRegUX.tex}}
-
-\newcommand{\sailfnupdateStatusRegUX}{\label{zzyupdatezyStatusRegzyUX} \lstinputlisting[language=sail]{sail_latex/sailfnupdateStatusRegUX.tex}}
-
-\newcommand{\sailupdateUX}{\label{zupdatezyUX} \lstinputlisting[language=sail]{sail_latex/sailupdateUX.tex}}
-
-\newcommand{\sailmodUX}{\label{zzymodzyUX} \lstinputlisting[language=sail]{sail_latex/sailmodUX.tex}}
-
-\newcommand{\sailgetStatusRegKSU}{\label{zzygetzyStatusRegzyKSU} \lstinputlisting[language=sail]{sail_latex/sailgetStatusRegKSU.tex}}
-
-\newcommand{\sailfngetStatusRegKSU}{\label{zzygetzyStatusRegzyKSU} \lstinputlisting[language=sail]{sail_latex/sailfngetStatusRegKSU.tex}}
-
-\newcommand{\sailsetStatusRegKSU}{\label{zzysetzyStatusRegzyKSU} \lstinputlisting[language=sail]{sail_latex/sailsetStatusRegKSU.tex}}
-
-\newcommand{\sailfnsetStatusRegKSU}{\label{zzysetzyStatusRegzyKSU} \lstinputlisting[language=sail]{sail_latex/sailfnsetStatusRegKSU.tex}}
-
-\newcommand{\sailupdateStatusRegKSU}{\label{zzyupdatezyStatusRegzyKSU} \lstinputlisting[language=sail]{sail_latex/sailupdateStatusRegKSU.tex}}
-
-\newcommand{\sailfnupdateStatusRegKSU}{\label{zzyupdatezyStatusRegzyKSU} \lstinputlisting[language=sail]{sail_latex/sailfnupdateStatusRegKSU.tex}}
-
-\newcommand{\sailupdateKSU}{\label{zupdatezyKSU} \lstinputlisting[language=sail]{sail_latex/sailupdateKSU.tex}}
-
-\newcommand{\sailmodKSU}{\label{zzymodzyKSU} \lstinputlisting[language=sail]{sail_latex/sailmodKSU.tex}}
-
-\newcommand{\sailgetStatusRegERL}{\label{zzygetzyStatusRegzyERL} \lstinputlisting[language=sail]{sail_latex/sailgetStatusRegERL.tex}}
-
-\newcommand{\sailfngetStatusRegERL}{\label{zzygetzyStatusRegzyERL} \lstinputlisting[language=sail]{sail_latex/sailfngetStatusRegERL.tex}}
-
-\newcommand{\sailsetStatusRegERL}{\label{zzysetzyStatusRegzyERL} \lstinputlisting[language=sail]{sail_latex/sailsetStatusRegERL.tex}}
-
-\newcommand{\sailfnsetStatusRegERL}{\label{zzysetzyStatusRegzyERL} \lstinputlisting[language=sail]{sail_latex/sailfnsetStatusRegERL.tex}}
-
-\newcommand{\sailupdateStatusRegERL}{\label{zzyupdatezyStatusRegzyERL} \lstinputlisting[language=sail]{sail_latex/sailupdateStatusRegERL.tex}}
-
-\newcommand{\sailfnupdateStatusRegERL}{\label{zzyupdatezyStatusRegzyERL} \lstinputlisting[language=sail]{sail_latex/sailfnupdateStatusRegERL.tex}}
-
-\newcommand{\sailupdateERL}{\label{zupdatezyERL} \lstinputlisting[language=sail]{sail_latex/sailupdateERL.tex}}
-
-\newcommand{\sailmodERL}{\label{zzymodzyERL} \lstinputlisting[language=sail]{sail_latex/sailmodERL.tex}}
-
-\newcommand{\sailgetStatusRegEXL}{\label{zzygetzyStatusRegzyEXL} \lstinputlisting[language=sail]{sail_latex/sailgetStatusRegEXL.tex}}
-
-\newcommand{\sailfngetStatusRegEXL}{\label{zzygetzyStatusRegzyEXL} \lstinputlisting[language=sail]{sail_latex/sailfngetStatusRegEXL.tex}}
-
-\newcommand{\sailsetStatusRegEXL}{\label{zzysetzyStatusRegzyEXL} \lstinputlisting[language=sail]{sail_latex/sailsetStatusRegEXL.tex}}
-
-\newcommand{\sailfnsetStatusRegEXL}{\label{zzysetzyStatusRegzyEXL} \lstinputlisting[language=sail]{sail_latex/sailfnsetStatusRegEXL.tex}}
-
-\newcommand{\sailupdateStatusRegEXL}{\label{zzyupdatezyStatusRegzyEXL} \lstinputlisting[language=sail]{sail_latex/sailupdateStatusRegEXL.tex}}
-
-\newcommand{\sailfnupdateStatusRegEXL}{\label{zzyupdatezyStatusRegzyEXL} \lstinputlisting[language=sail]{sail_latex/sailfnupdateStatusRegEXL.tex}}
-
-\newcommand{\sailupdateEXL}{\label{zupdatezyEXL} \lstinputlisting[language=sail]{sail_latex/sailupdateEXL.tex}}
-
-\newcommand{\sailmodEXL}{\label{zzymodzyEXL} \lstinputlisting[language=sail]{sail_latex/sailmodEXL.tex}}
-
-\newcommand{\sailgetStatusRegIE}{\label{zzygetzyStatusRegzyIE} \lstinputlisting[language=sail]{sail_latex/sailgetStatusRegIE.tex}}
-
-\newcommand{\sailfngetStatusRegIE}{\label{zzygetzyStatusRegzyIE} \lstinputlisting[language=sail]{sail_latex/sailfngetStatusRegIE.tex}}
-
-\newcommand{\sailsetStatusRegIE}{\label{zzysetzyStatusRegzyIE} \lstinputlisting[language=sail]{sail_latex/sailsetStatusRegIE.tex}}
-
-\newcommand{\sailfnsetStatusRegIE}{\label{zzysetzyStatusRegzyIE} \lstinputlisting[language=sail]{sail_latex/sailfnsetStatusRegIE.tex}}
-
-\newcommand{\sailupdateStatusRegIE}{\label{zzyupdatezyStatusRegzyIE} \lstinputlisting[language=sail]{sail_latex/sailupdateStatusRegIE.tex}}
-
-\newcommand{\sailfnupdateStatusRegIE}{\label{zzyupdatezyStatusRegzyIE} \lstinputlisting[language=sail]{sail_latex/sailfnupdateStatusRegIE.tex}}
-
-\newcommand{\sailupdateIE}{\label{zupdatezyIE} \lstinputlisting[language=sail]{sail_latex/sailupdateIE.tex}}
-
-\newcommand{\sailmodIE}{\label{zzymodzyIE} \lstinputlisting[language=sail]{sail_latex/sailmodIE.tex}}
-
-\newcommand{\sailexecutebranch}{\label{zexecutezybranch} \lstinputlisting[language=sail]{sail_latex/sailexecutebranch.tex}}
-
-\newcommand{\sailfnexecutebranch}{\label{zexecutezybranch} \lstinputlisting[language=sail]{sail_latex/sailfnexecutebranch.tex}}
-
-\newcommand{\sailNotWordVal}{\label{zNotWordVal} \lstinputlisting[language=sail]{sail_latex/sailNotWordVal.tex}}
-
-\newcommand{\sailfnNotWordVal}{\label{zNotWordVal} \lstinputlisting[language=sail]{sail_latex/sailfnNotWordVal.tex}}
-
-\newcommand{\sailrGPR}{\label{zrGPR} \lstinputlisting[language=sail]{sail_latex/sailrGPR.tex}}
-
-\newcommand{\sailfnrGPR}{\label{zrGPR} \lstinputlisting[language=sail]{sail_latex/sailfnrGPR.tex}}
-
-\newcommand{\sailwGPR}{\label{zwGPR} \lstinputlisting[language=sail]{sail_latex/sailwGPR.tex}}
-
-\newcommand{\sailfnwGPR}{\label{zwGPR} \lstinputlisting[language=sail]{sail_latex/sailfnwGPR.tex}}
-
-\newcommand{\sailMEMr}{\label{zMEMr} \lstinputlisting[language=sail]{sail_latex/sailMEMr.tex}}
-
-\newcommand{\sailMEMrreserve}{\label{zMEMrzyreserve} \lstinputlisting[language=sail]{sail_latex/sailMEMrreserve.tex}}
-
-\newcommand{\sailMEMsync}{\label{zMEMzysync} \lstinputlisting[language=sail]{sail_latex/sailMEMsync.tex}}
-
-\newcommand{\sailMEMea}{\label{zMEMea} \lstinputlisting[language=sail]{sail_latex/sailMEMea.tex}}
-
-\newcommand{\sailMEMeaconditional}{\label{zMEMeazyconditional} \lstinputlisting[language=sail]{sail_latex/sailMEMeaconditional.tex}}
-
-\newcommand{\sailMEMval}{\label{zMEMval} \lstinputlisting[language=sail]{sail_latex/sailMEMval.tex}}
-
-\newcommand{\sailMEMvalconditional}{\label{zMEMvalzyconditional} \lstinputlisting[language=sail]{sail_latex/sailMEMvalconditional.tex}}
-
-\newcommand{\sailskipeamem}{\label{zskipzyeamem} \lstinputlisting[language=sail]{sail_latex/sailskipeamem.tex}}
-
-\newcommand{\sailskipbarr}{\label{zskipzybarr} \lstinputlisting[language=sail]{sail_latex/sailskipbarr.tex}}
-
-\newcommand{\sailskipwreg}{\label{zskipzywreg} \lstinputlisting[language=sail]{sail_latex/sailskipwreg.tex}}
-
-\newcommand{\sailskiprreg}{\label{zskipzyrreg} \lstinputlisting[language=sail]{sail_latex/sailskiprreg.tex}}
-
-\newcommand{\sailskipwmvt}{\label{zskipzywmvt} \lstinputlisting[language=sail]{sail_latex/sailskipwmvt.tex}}
-
-\newcommand{\sailskiprmemt}{\label{zskipzyrmemt} \lstinputlisting[language=sail]{sail_latex/sailskiprmemt.tex}}
-
-\newcommand{\sailskipescape}{\label{zskipzyescape} \lstinputlisting[language=sail]{sail_latex/sailskipescape.tex}}
-
-\newcommand{\sailfnMEMr}{\label{zMEMr} \lstinputlisting[language=sail]{sail_latex/sailfnMEMr.tex}}
-
-\newcommand{\sailfnMEMrreserve}{\label{zMEMrzyreserve} \lstinputlisting[language=sail]{sail_latex/sailfnMEMrreserve.tex}}
-
-\newcommand{\sailfnMEMsync}{\label{zMEMzysync} \lstinputlisting[language=sail]{sail_latex/sailfnMEMsync.tex}}
-
-\newcommand{\sailfnMEMea}{\label{zMEMea} \lstinputlisting[language=sail]{sail_latex/sailfnMEMea.tex}}
-
-\newcommand{\sailfnMEMeaconditional}{\label{zMEMeazyconditional} \lstinputlisting[language=sail]{sail_latex/sailfnMEMeaconditional.tex}}
-
-\newcommand{\sailfnMEMval}{\label{zMEMval} \lstinputlisting[language=sail]{sail_latex/sailfnMEMval.tex}}
-
-\newcommand{\sailfnMEMvalconditional}{\label{zMEMvalzyconditional} \lstinputlisting[language=sail]{sail_latex/sailfnMEMvalconditional.tex}}
-
-\newcommand{\sailException}{\label{zException} \lstinputlisting[language=sail]{sail_latex/sailException.tex}}
-
-\newcommand{\sailExceptionofnum}{\label{zExceptionzyofzynum} \lstinputlisting[language=sail]{sail_latex/sailExceptionofnum.tex}}
-
-\newcommand{\sailfnExceptionofnum}{\label{zExceptionzyofzynum} \lstinputlisting[language=sail]{sail_latex/sailfnExceptionofnum.tex}}
-
-\newcommand{\sailnumofException}{\label{znumzyofzyException} \lstinputlisting[language=sail]{sail_latex/sailnumofException.tex}}
-
-\newcommand{\sailfnnumofException}{\label{znumzyofzyException} \lstinputlisting[language=sail]{sail_latex/sailfnnumofException.tex}}
-
-\newcommand{\sailExceptionCode}{\label{zExceptionCode} \lstinputlisting[language=sail]{sail_latex/sailExceptionCode.tex}}
-
-\newcommand{\sailfnExceptionCode}{\label{zExceptionCode} \lstinputlisting[language=sail]{sail_latex/sailfnExceptionCode.tex}}
-
-\newcommand{\sailSignalExceptionMIPS}{\label{zSignalExceptionMIPS} \lstinputlisting[language=sail]{sail_latex/sailSignalExceptionMIPS.tex}}
-
-\newcommand{\sailfnSignalExceptionMIPS}{\label{zSignalExceptionMIPS} \lstinputlisting[language=sail]{sail_latex/sailfnSignalExceptionMIPS.tex}}
-
-\newcommand{\sailSignalException}{\label{zSignalException} \lstinputlisting[language=sail]{sail_latex/sailSignalException.tex}}
-
-\newcommand{\sailSignalExceptionBadAddr}{\label{zSignalExceptionBadAddr} \lstinputlisting[language=sail]{sail_latex/sailSignalExceptionBadAddr.tex}}
-
-\newcommand{\sailfnSignalExceptionBadAddr}{\label{zSignalExceptionBadAddr} \lstinputlisting[language=sail]{sail_latex/sailfnSignalExceptionBadAddr.tex}}
-
-\newcommand{\sailSignalExceptionTLB}{\label{zSignalExceptionTLB} \lstinputlisting[language=sail]{sail_latex/sailSignalExceptionTLB.tex}}
-
-\newcommand{\sailfnSignalExceptionTLB}{\label{zSignalExceptionTLB} \lstinputlisting[language=sail]{sail_latex/sailfnSignalExceptionTLB.tex}}
-
-\newcommand{\sailMemAccessType}{\label{zMemAccessType} \lstinputlisting[language=sail]{sail_latex/sailMemAccessType.tex}}
-
-\newcommand{\sailMemAccessTypeofnum}{\label{zMemAccessTypezyofzynum} \lstinputlisting[language=sail]{sail_latex/sailMemAccessTypeofnum.tex}}
-
-\newcommand{\sailfnMemAccessTypeofnum}{\label{zMemAccessTypezyofzynum} \lstinputlisting[language=sail]{sail_latex/sailfnMemAccessTypeofnum.tex}}
-
-\newcommand{\sailnumofMemAccessType}{\label{znumzyofzyMemAccessType} \lstinputlisting[language=sail]{sail_latex/sailnumofMemAccessType.tex}}
-
-\newcommand{\sailfnnumofMemAccessType}{\label{znumzyofzyMemAccessType} \lstinputlisting[language=sail]{sail_latex/sailfnnumofMemAccessType.tex}}
-
-\newcommand{\sailAccessLevel}{\label{zAccessLevel} \lstinputlisting[language=sail]{sail_latex/sailAccessLevel.tex}}
-
-\newcommand{\sailAccessLevelofnum}{\label{zAccessLevelzyofzynum} \lstinputlisting[language=sail]{sail_latex/sailAccessLevelofnum.tex}}
-
-\newcommand{\sailfnAccessLevelofnum}{\label{zAccessLevelzyofzynum} \lstinputlisting[language=sail]{sail_latex/sailfnAccessLevelofnum.tex}}
-
-\newcommand{\sailnumofAccessLevel}{\label{znumzyofzyAccessLevel} \lstinputlisting[language=sail]{sail_latex/sailnumofAccessLevel.tex}}
-
-\newcommand{\sailfnnumofAccessLevel}{\label{znumzyofzyAccessLevel} \lstinputlisting[language=sail]{sail_latex/sailfnnumofAccessLevel.tex}}
-
-\newcommand{\sailintofAccessLevel}{\label{zintzyofzyAccessLevel} \lstinputlisting[language=sail]{sail_latex/sailintofAccessLevel.tex}}
-
-\newcommand{\sailfnintofAccessLevel}{\label{zintzyofzyAccessLevel} \lstinputlisting[language=sail]{sail_latex/sailfnintofAccessLevel.tex}}
-
-\newcommand{\sailgrantsAccess}{\label{zgrantsAccess}
-Returns whether the first AccessLevel is sufficient to grant access at the second, required, access level.
- \lstinputlisting[language=sail]{sail_latex/sailgrantsAccess.tex}}
-
-\newcommand{\sailfngrantsAccess}{\label{zgrantsAccess} \lstinputlisting[language=sail]{sail_latex/sailfngrantsAccess.tex}}
-
-\newcommand{\sailgetAccessLevel}{\label{zgetAccessLevel}
-Returns the current effective access level determined by accessing the relevant parts of the MIPS status register.
- \lstinputlisting[language=sail]{sail_latex/sailgetAccessLevel.tex}}
-
-\newcommand{\sailfngetAccessLevel}{\label{zgetAccessLevel} \lstinputlisting[language=sail]{sail_latex/sailfngetAccessLevel.tex}}
-
-\newcommand{\sailcheckCPzeroAccess}{\label{zcheckCPzeroAccess} \lstinputlisting[language=sail]{sail_latex/sailcheckCPzeroAccess.tex}}
-
-\newcommand{\sailfncheckCPzeroAccess}{\label{zcheckCPzeroAccess} \lstinputlisting[language=sail]{sail_latex/sailfncheckCPzeroAccess.tex}}
-
-\newcommand{\sailincrementCPzeroCount}{\label{zincrementCPzeroCount} \lstinputlisting[language=sail]{sail_latex/sailincrementCPzeroCount.tex}}
-
-\newcommand{\sailfnincrementCPzeroCount}{\label{zincrementCPzeroCount} \lstinputlisting[language=sail]{sail_latex/sailfnincrementCPzeroCount.tex}}
-
-\newcommand{\sailregno}{\label{zregno} \lstinputlisting[language=sail]{sail_latex/sailregno.tex}}
-
-\newcommand{\sailimmonesix}{\label{zimmonesix} \lstinputlisting[language=sail]{sail_latex/sailimmonesix.tex}}
-
-\newcommand{\sailregregreg}{\label{zregregreg} \lstinputlisting[language=sail]{sail_latex/sailregregreg.tex}}
-
-\newcommand{\sailregregimmonesix}{\label{zregregimmonesix} \lstinputlisting[language=sail]{sail_latex/sailregregimmonesix.tex}}
-
-\newcommand{\saildecodefailure}{\label{zdecodezyfailure} \lstinputlisting[language=sail]{sail_latex/saildecodefailure.tex}}
-
-\newcommand{\saildecodefailureofnum}{\label{zdecodezyfailurezyofzynum} \lstinputlisting[language=sail]{sail_latex/saildecodefailureofnum.tex}}
-
-\newcommand{\sailfndecodefailureofnum}{\label{zdecodezyfailurezyofzynum} \lstinputlisting[language=sail]{sail_latex/sailfndecodefailureofnum.tex}}
-
-\newcommand{\sailnumofdecodefailure}{\label{znumzyofzydecodezyfailure} \lstinputlisting[language=sail]{sail_latex/sailnumofdecodefailure.tex}}
-
-\newcommand{\sailfnnumofdecodefailure}{\label{znumzyofzydecodezyfailure} \lstinputlisting[language=sail]{sail_latex/sailfnnumofdecodefailure.tex}}
-
-\newcommand{\sailComparison}{\label{zComparison} \lstinputlisting[language=sail]{sail_latex/sailComparison.tex}}
-
-\newcommand{\sailComparisonofnum}{\label{zComparisonzyofzynum} \lstinputlisting[language=sail]{sail_latex/sailComparisonofnum.tex}}
-
-\newcommand{\sailfnComparisonofnum}{\label{zComparisonzyofzynum} \lstinputlisting[language=sail]{sail_latex/sailfnComparisonofnum.tex}}
-
-\newcommand{\sailnumofComparison}{\label{znumzyofzyComparison} \lstinputlisting[language=sail]{sail_latex/sailnumofComparison.tex}}
-
-\newcommand{\sailfnnumofComparison}{\label{znumzyofzyComparison} \lstinputlisting[language=sail]{sail_latex/sailfnnumofComparison.tex}}
-
-\newcommand{\sailcompare}{\label{zcompare} \lstinputlisting[language=sail]{sail_latex/sailcompare.tex}}
-
-\newcommand{\sailfncompare}{\label{zcompare} \lstinputlisting[language=sail]{sail_latex/sailfncompare.tex}}
-
-\newcommand{\sailWordType}{\label{zWordType} \lstinputlisting[language=sail]{sail_latex/sailWordType.tex}}
-
-\newcommand{\sailWordTypeofnum}{\label{zWordTypezyofzynum} \lstinputlisting[language=sail]{sail_latex/sailWordTypeofnum.tex}}
-
-\newcommand{\sailfnWordTypeofnum}{\label{zWordTypezyofzynum} \lstinputlisting[language=sail]{sail_latex/sailfnWordTypeofnum.tex}}
-
-\newcommand{\sailnumofWordType}{\label{znumzyofzyWordType} \lstinputlisting[language=sail]{sail_latex/sailnumofWordType.tex}}
-
-\newcommand{\sailfnnumofWordType}{\label{znumzyofzyWordType} \lstinputlisting[language=sail]{sail_latex/sailfnnumofWordType.tex}}
-
-\newcommand{\sailWordTypeUnaligned}{\label{zWordTypeUnaligned} \lstinputlisting[language=sail]{sail_latex/sailWordTypeUnaligned.tex}}
-
-\newcommand{\sailWordTypeUnalignedofnum}{\label{zWordTypeUnalignedzyofzynum} \lstinputlisting[language=sail]{sail_latex/sailWordTypeUnalignedofnum.tex}}
-
-\newcommand{\sailfnWordTypeUnalignedofnum}{\label{zWordTypeUnalignedzyofzynum} \lstinputlisting[language=sail]{sail_latex/sailfnWordTypeUnalignedofnum.tex}}
-
-\newcommand{\sailnumofWordTypeUnaligned}{\label{znumzyofzyWordTypeUnaligned} \lstinputlisting[language=sail]{sail_latex/sailnumofWordTypeUnaligned.tex}}
-
-\newcommand{\sailfnnumofWordTypeUnaligned}{\label{znumzyofzyWordTypeUnaligned} \lstinputlisting[language=sail]{sail_latex/sailfnnumofWordTypeUnaligned.tex}}
-
-\newcommand{\sailwordWidthBytes}{\label{zwordWidthBytes} \lstinputlisting[language=sail]{sail_latex/sailwordWidthBytes.tex}}
-
-\newcommand{\sailfnwordWidthBytes}{\label{zwordWidthBytes} \lstinputlisting[language=sail]{sail_latex/sailfnwordWidthBytes.tex}}
-
-\newcommand{\sailisAddressAligned}{\label{zisAddressAligned} \lstinputlisting[language=sail]{sail_latex/sailisAddressAligned.tex}}
-
-\newcommand{\sailfnisAddressAligned}{\label{zisAddressAligned} \lstinputlisting[language=sail]{sail_latex/sailfnisAddressAligned.tex}}
-
-\newcommand{\sailreverseendianness}{\label{zreversezyendianness} \lstinputlisting[language=sail]{sail_latex/sailreverseendianness.tex}}
-
-\newcommand{\sailMEMrwrapper}{\label{zMEMrzywrapper} \lstinputlisting[language=sail]{sail_latex/sailMEMrwrapper.tex}}
-
-\newcommand{\sailfnMEMrwrapper}{\label{zMEMrzywrapper} \lstinputlisting[language=sail]{sail_latex/sailfnMEMrwrapper.tex}}
-
-\newcommand{\sailMEMrreservewrapper}{\label{zMEMrzyreservezywrapper} \lstinputlisting[language=sail]{sail_latex/sailMEMrreservewrapper.tex}}
-
-\newcommand{\sailfnMEMrreservewrapper}{\label{zMEMrzyreservezywrapper} \lstinputlisting[language=sail]{sail_latex/sailfnMEMrreservewrapper.tex}}
-
-\newcommand{\sailinitcpzerostate}{\label{zinitzycpzerozystate} \lstinputlisting[language=sail]{sail_latex/sailinitcpzerostate.tex}}
-
-\newcommand{\sailfninitcpzerostate}{\label{zinitzycpzerozystate} \lstinputlisting[language=sail]{sail_latex/sailfninitcpzerostate.tex}}
-
-\newcommand{\sailinitcptwostate}{\label{zinitzycptwozystate} \lstinputlisting[language=sail]{sail_latex/sailinitcptwostate.tex}}
-
-\newcommand{\sailcptwonextpc}{\label{zcptwozynextzypc} \lstinputlisting[language=sail]{sail_latex/sailcptwonextpc.tex}}
-
-\newcommand{\saildumpcptwostate}{\label{zdumpzycptwozystate} \lstinputlisting[language=sail]{sail_latex/saildumpcptwostate.tex}}
-
-\newcommand{\sailtlbEntryMatch}{\label{ztlbEntryMatch} \lstinputlisting[language=sail]{sail_latex/sailtlbEntryMatch.tex}}
-
-\newcommand{\sailfntlbEntryMatch}{\label{ztlbEntryMatch} \lstinputlisting[language=sail]{sail_latex/sailfntlbEntryMatch.tex}}
-
-\newcommand{\sailtlbSearch}{\label{ztlbSearch} \lstinputlisting[language=sail]{sail_latex/sailtlbSearch.tex}}
-
-\newcommand{\sailfntlbSearch}{\label{ztlbSearch} \lstinputlisting[language=sail]{sail_latex/sailfntlbSearch.tex}}
-
-\newcommand{\sailTLBTranslatetwo}{\label{zTLBTranslatetwo} \lstinputlisting[language=sail]{sail_latex/sailTLBTranslatetwo.tex}}
-
-\newcommand{\sailfnTLBTranslatetwo}{\label{zTLBTranslatetwo} \lstinputlisting[language=sail]{sail_latex/sailfnTLBTranslatetwo.tex}}
-
-\newcommand{\sailTLBTranslateC}{\label{zTLBTranslateC} \lstinputlisting[language=sail]{sail_latex/sailTLBTranslateC.tex}}
-
-\newcommand{\sailfnTLBTranslateC}{\label{zTLBTranslateC} \lstinputlisting[language=sail]{sail_latex/sailfnTLBTranslateC.tex}}
-
-\newcommand{\sailTLBTranslate}{\label{zTLBTranslate} \lstinputlisting[language=sail]{sail_latex/sailTLBTranslate.tex}}
-
-\newcommand{\sailfnTLBTranslate}{\label{zTLBTranslate} \lstinputlisting[language=sail]{sail_latex/sailfnTLBTranslate.tex}}
-
-\newcommand{\sailCapLen}{\label{zCapLen} \lstinputlisting[language=sail]{sail_latex/sailCapLen.tex}}
-
-\newcommand{\sailuintsixfour}{\label{zuintsixfour} \lstinputlisting[language=sail]{sail_latex/sailuintsixfour.tex}}
-
-\newcommand{\sailCPtrCmpOp}{\label{zCPtrCmpOp} \lstinputlisting[language=sail]{sail_latex/sailCPtrCmpOp.tex}}
-
-\newcommand{\sailCPtrCmpOpofnum}{\label{zCPtrCmpOpzyofzynum} \lstinputlisting[language=sail]{sail_latex/sailCPtrCmpOpofnum.tex}}
-
-\newcommand{\sailfnCPtrCmpOpofnum}{\label{zCPtrCmpOpzyofzynum} \lstinputlisting[language=sail]{sail_latex/sailfnCPtrCmpOpofnum.tex}}
-
-\newcommand{\sailnumofCPtrCmpOp}{\label{znumzyofzyCPtrCmpOp} \lstinputlisting[language=sail]{sail_latex/sailnumofCPtrCmpOp.tex}}
-
-\newcommand{\sailfnnumofCPtrCmpOp}{\label{znumzyofzyCPtrCmpOp} \lstinputlisting[language=sail]{sail_latex/sailfnnumofCPtrCmpOp.tex}}
-
-\newcommand{\sailClearRegSet}{\label{zClearRegSet} \lstinputlisting[language=sail]{sail_latex/sailClearRegSet.tex}}
-
-\newcommand{\sailClearRegSetofnum}{\label{zClearRegSetzyofzynum} \lstinputlisting[language=sail]{sail_latex/sailClearRegSetofnum.tex}}
-
-\newcommand{\sailfnClearRegSetofnum}{\label{zClearRegSetzyofzynum} \lstinputlisting[language=sail]{sail_latex/sailfnClearRegSetofnum.tex}}
-
-\newcommand{\sailnumofClearRegSet}{\label{znumzyofzyClearRegSet} \lstinputlisting[language=sail]{sail_latex/sailnumofClearRegSet.tex}}
-
-\newcommand{\sailfnnumofClearRegSet}{\label{znumzyofzyClearRegSet} \lstinputlisting[language=sail]{sail_latex/sailfnnumofClearRegSet.tex}}
-
-\newcommand{\sailCapReg}{\label{zCapReg} \lstinputlisting[language=sail]{sail_latex/sailCapReg.tex}}
-
-\newcommand{\sailCapStruct}{\label{zCapStruct} \lstinputlisting[language=sail]{sail_latex/sailCapStruct.tex}}
-
-\newcommand{\sailcapRegToCapStruct}{\label{zcapRegToCapStruct} \lstinputlisting[language=sail]{sail_latex/sailcapRegToCapStruct.tex}}
-
-\newcommand{\sailfncapRegToCapStruct}{\label{zcapRegToCapStruct} \lstinputlisting[language=sail]{sail_latex/sailfncapRegToCapStruct.tex}}
-
-\newcommand{\sailgetCapPerms}{\label{zgetCapPerms} \lstinputlisting[language=sail]{sail_latex/sailgetCapPerms.tex}}
-
-\newcommand{\sailfngetCapPerms}{\label{zgetCapPerms} \lstinputlisting[language=sail]{sail_latex/sailfngetCapPerms.tex}}
-
-\newcommand{\sailcapStructToMemBitstwofivesix}{\label{zcapStructToMemBitstwofivesix} \lstinputlisting[language=sail]{sail_latex/sailcapStructToMemBitstwofivesix.tex}}
-
-\newcommand{\sailfncapStructToMemBitstwofivesix}{\label{zcapStructToMemBitstwofivesix} \lstinputlisting[language=sail]{sail_latex/sailfncapStructToMemBitstwofivesix.tex}}
-
-\newcommand{\sailcapStructToMemBits}{\label{zcapStructToMemBits} \lstinputlisting[language=sail]{sail_latex/sailcapStructToMemBits.tex}}
-
-\newcommand{\sailfncapStructToMemBits}{\label{zcapStructToMemBits} \lstinputlisting[language=sail]{sail_latex/sailfncapStructToMemBits.tex}}
-
-\newcommand{\sailmemBitsToCapBits}{\label{zmemBitsToCapBits} \lstinputlisting[language=sail]{sail_latex/sailmemBitsToCapBits.tex}}
-
-\newcommand{\sailfnmemBitsToCapBits}{\label{zmemBitsToCapBits} \lstinputlisting[language=sail]{sail_latex/sailfnmemBitsToCapBits.tex}}
-
-\newcommand{\sailcapStructToCapReg}{\label{zcapStructToCapReg} \lstinputlisting[language=sail]{sail_latex/sailcapStructToCapReg.tex}}
-
-\newcommand{\sailfncapStructToCapReg}{\label{zcapStructToCapReg} \lstinputlisting[language=sail]{sail_latex/sailfncapStructToCapReg.tex}}
-
-\newcommand{\sailsetCapPerms}{\label{zsetCapPerms} \lstinputlisting[language=sail]{sail_latex/sailsetCapPerms.tex}}
-
-\newcommand{\sailfnsetCapPerms}{\label{zsetCapPerms} \lstinputlisting[language=sail]{sail_latex/sailfnsetCapPerms.tex}}
-
-\newcommand{\sailsealCap}{\label{zsealCap} \lstinputlisting[language=sail]{sail_latex/sailsealCap.tex}}
-
-\newcommand{\sailfnsealCap}{\label{zsealCap} \lstinputlisting[language=sail]{sail_latex/sailfnsealCap.tex}}
-
-\newcommand{\sailgetCapBase}{\label{zgetCapBase} \lstinputlisting[language=sail]{sail_latex/sailgetCapBase.tex}}
-
-\newcommand{\sailfngetCapBase}{\label{zgetCapBase} \lstinputlisting[language=sail]{sail_latex/sailfngetCapBase.tex}}
-
-\newcommand{\sailgetCapTop}{\label{zgetCapTop} \lstinputlisting[language=sail]{sail_latex/sailgetCapTop.tex}}
-
-\newcommand{\sailfngetCapTop}{\label{zgetCapTop} \lstinputlisting[language=sail]{sail_latex/sailfngetCapTop.tex}}
-
-\newcommand{\sailgetCapOffset}{\label{zgetCapOffset} \lstinputlisting[language=sail]{sail_latex/sailgetCapOffset.tex}}
-
-\newcommand{\sailfngetCapOffset}{\label{zgetCapOffset} \lstinputlisting[language=sail]{sail_latex/sailfngetCapOffset.tex}}
-
-\newcommand{\sailgetCapLength}{\label{zgetCapLength} \lstinputlisting[language=sail]{sail_latex/sailgetCapLength.tex}}
-
-\newcommand{\sailfngetCapLength}{\label{zgetCapLength} \lstinputlisting[language=sail]{sail_latex/sailfngetCapLength.tex}}
-
-\newcommand{\sailgetCapCursor}{\label{zgetCapCursor} \lstinputlisting[language=sail]{sail_latex/sailgetCapCursor.tex}}
-
-\newcommand{\sailfngetCapCursor}{\label{zgetCapCursor} \lstinputlisting[language=sail]{sail_latex/sailfngetCapCursor.tex}}
-
-\newcommand{\sailsetCapOffset}{\label{zsetCapOffset}
-Set the offset capability of the a capability to given value and return the result, along with a boolean indicating true if the operation preserved the existing bounds of the capability. When using compressed capabilities, setting the offset far outside the capability bounds can cause the result to become unrepresentable (XXX mention guarantees). Additionally in some implementations a fast representablity check may be used that could cause the operation to return failure even though the capability would be representable (XXX provide details).
- \lstinputlisting[language=sail]{sail_latex/sailsetCapOffset.tex}}
-
-\newcommand{\sailfnsetCapOffset}{\label{zsetCapOffset} \lstinputlisting[language=sail]{sail_latex/sailfnsetCapOffset.tex}}
-
-\newcommand{\sailincCapOffset}{\label{zincCapOffset}
-\function{incCapOffset} is the same as \function{setCapOffset} except that the 64-bit value is added to the current capability offset modulo $2^{64}$ (i.e. signed twos-complement arithemtic).
- \lstinputlisting[language=sail]{sail_latex/sailincCapOffset.tex}}
-
-\newcommand{\sailfnincCapOffset}{\label{zincCapOffset} \lstinputlisting[language=sail]{sail_latex/sailfnincCapOffset.tex}}
-
-\newcommand{\sailsetCapBounds}{\label{zsetCapBounds}
-Returns a capability derived from the given capability by setting the base and top to values provided. The offset of the resulting capability is zero. In case the requested bounds are not exactly representable the returned boolean is false and the returned capability has bounds at least including the region bounded by base and top but rounded to representable values.
- \lstinputlisting[language=sail]{sail_latex/sailsetCapBounds.tex}}
-
-\newcommand{\sailfnsetCapBounds}{\label{zsetCapBounds} \lstinputlisting[language=sail]{sail_latex/sailfnsetCapBounds.tex}}
-
-\newcommand{\sailinttocap}{\label{zintzytozycap} \lstinputlisting[language=sail]{sail_latex/sailinttocap.tex}}
-
-\newcommand{\sailfninttocap}{\label{zintzytozycap} \lstinputlisting[language=sail]{sail_latex/sailfninttocap.tex}}
-
-\newcommand{\sailexecute}{\label{zexecute} \lstinputlisting[language=sail]{sail_latex/sailexecute.tex}}
-
-\newcommand{\saildecode}{\label{zdecode} \lstinputlisting[language=sail]{sail_latex/saildecode.tex}}
-
-\newcommand{\sailreadCapReg}{\label{zreadCapReg}
-This function reads a given capability register and returns its contents converted to a CapStruct.
-If the argument is zero then the null capability is returned.
-\lstinputlisting[language=sail]{sail_latex/sailreadCapReg.tex}}
-
-\newcommand{\sailfnreadCapReg}{\label{zreadCapReg} \lstinputlisting[language=sail]{sail_latex/sailfnreadCapReg.tex}}
-
-\newcommand{\sailreadCapRegDDC}{\label{zreadCapRegDDC}
-This is the same as readCapReg except that when the argument is zero the value of DDC is returned
-instead of the null capability. This is used for instructions that expect an address, where using
-null would always generate an exception.
-\lstinputlisting[language=sail]{sail_latex/sailreadCapRegDDC.tex}}
-
-\newcommand{\sailfnreadCapRegDDC}{\label{zreadCapRegDDC} \lstinputlisting[language=sail]{sail_latex/sailfnreadCapRegDDC.tex}}
-
-\newcommand{\sailwriteCapReg}{\label{zwriteCapReg} \lstinputlisting[language=sail]{sail_latex/sailwriteCapReg.tex}}
-
-\newcommand{\sailfnwriteCapReg}{\label{zwriteCapReg} \lstinputlisting[language=sail]{sail_latex/sailfnwriteCapReg.tex}}
-
-\newcommand{\sailCapEx}{\label{zCapEx} \lstinputlisting[language=sail]{sail_latex/sailCapEx.tex}}
-
-\newcommand{\sailCapExofnum}{\label{zCapExzyofzynum} \lstinputlisting[language=sail]{sail_latex/sailCapExofnum.tex}}
-
-\newcommand{\sailfnCapExofnum}{\label{zCapExzyofzynum} \lstinputlisting[language=sail]{sail_latex/sailfnCapExofnum.tex}}
-
-\newcommand{\sailnumofCapEx}{\label{znumzyofzyCapEx} \lstinputlisting[language=sail]{sail_latex/sailnumofCapEx.tex}}
-
-\newcommand{\sailfnnumofCapEx}{\label{znumzyofzyCapEx} \lstinputlisting[language=sail]{sail_latex/sailfnnumofCapEx.tex}}
-
-\newcommand{\sailCapExCode}{\label{zCapExCode} \lstinputlisting[language=sail]{sail_latex/sailCapExCode.tex}}
-
-\newcommand{\sailfnCapExCode}{\label{zCapExCode} \lstinputlisting[language=sail]{sail_latex/sailfnCapExCode.tex}}
-
-\newcommand{\sailCapCauseReg}{\label{zCapCauseReg} \lstinputlisting[language=sail]{sail_latex/sailCapCauseReg.tex}}
-
-\newcommand{\sailMkCapCauseReg}{\label{zMkzyCapCauseReg} \lstinputlisting[language=sail]{sail_latex/sailMkCapCauseReg.tex}}
-
-\newcommand{\sailfnMkCapCauseReg}{\label{zMkzyCapCauseReg} \lstinputlisting[language=sail]{sail_latex/sailfnMkCapCauseReg.tex}}
-
-\newcommand{\sailgetCapCauseRegbits}{\label{zzygetzyCapCauseRegzybits} \lstinputlisting[language=sail]{sail_latex/sailgetCapCauseRegbits.tex}}
-
-\newcommand{\sailfngetCapCauseRegbits}{\label{zzygetzyCapCauseRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfngetCapCauseRegbits.tex}}
-
-\newcommand{\sailsetCapCauseRegbits}{\label{zzysetzyCapCauseRegzybits} \lstinputlisting[language=sail]{sail_latex/sailsetCapCauseRegbits.tex}}
-
-\newcommand{\sailfnsetCapCauseRegbits}{\label{zzysetzyCapCauseRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfnsetCapCauseRegbits.tex}}
-
-\newcommand{\sailupdateCapCauseRegbits}{\label{zzyupdatezyCapCauseRegzybits} \lstinputlisting[language=sail]{sail_latex/sailupdateCapCauseRegbits.tex}}
-
-\newcommand{\sailfnupdateCapCauseRegbits}{\label{zzyupdatezyCapCauseRegzybits} \lstinputlisting[language=sail]{sail_latex/sailfnupdateCapCauseRegbits.tex}}
-
-\newcommand{\sailupdatebits}{\label{zupdatezybits} \lstinputlisting[language=sail]{sail_latex/sailupdatebits.tex}}
-
-\newcommand{\sailmodbits}{\label{zzymodzybits} \lstinputlisting[language=sail]{sail_latex/sailmodbits.tex}}
-
-\newcommand{\sailgetCapCauseRegExcCode}{\label{zzygetzyCapCauseRegzyExcCode} \lstinputlisting[language=sail]{sail_latex/sailgetCapCauseRegExcCode.tex}}
-
-\newcommand{\sailfngetCapCauseRegExcCode}{\label{zzygetzyCapCauseRegzyExcCode} \lstinputlisting[language=sail]{sail_latex/sailfngetCapCauseRegExcCode.tex}}
-
-\newcommand{\sailsetCapCauseRegExcCode}{\label{zzysetzyCapCauseRegzyExcCode} \lstinputlisting[language=sail]{sail_latex/sailsetCapCauseRegExcCode.tex}}
-
-\newcommand{\sailfnsetCapCauseRegExcCode}{\label{zzysetzyCapCauseRegzyExcCode} \lstinputlisting[language=sail]{sail_latex/sailfnsetCapCauseRegExcCode.tex}}
-
-\newcommand{\sailupdateCapCauseRegExcCode}{\label{zzyupdatezyCapCauseRegzyExcCode} \lstinputlisting[language=sail]{sail_latex/sailupdateCapCauseRegExcCode.tex}}
-
-\newcommand{\sailfnupdateCapCauseRegExcCode}{\label{zzyupdatezyCapCauseRegzyExcCode} \lstinputlisting[language=sail]{sail_latex/sailfnupdateCapCauseRegExcCode.tex}}
-
-\newcommand{\sailupdateExcCode}{\label{zupdatezyExcCode} \lstinputlisting[language=sail]{sail_latex/sailupdateExcCode.tex}}
-
-\newcommand{\sailmodExcCode}{\label{zzymodzyExcCode} \lstinputlisting[language=sail]{sail_latex/sailmodExcCode.tex}}
-
-\newcommand{\sailgetCapCauseRegRegNum}{\label{zzygetzyCapCauseRegzyRegNum} \lstinputlisting[language=sail]{sail_latex/sailgetCapCauseRegRegNum.tex}}
-
-\newcommand{\sailfngetCapCauseRegRegNum}{\label{zzygetzyCapCauseRegzyRegNum} \lstinputlisting[language=sail]{sail_latex/sailfngetCapCauseRegRegNum.tex}}
-
-\newcommand{\sailsetCapCauseRegRegNum}{\label{zzysetzyCapCauseRegzyRegNum} \lstinputlisting[language=sail]{sail_latex/sailsetCapCauseRegRegNum.tex}}
-
-\newcommand{\sailfnsetCapCauseRegRegNum}{\label{zzysetzyCapCauseRegzyRegNum} \lstinputlisting[language=sail]{sail_latex/sailfnsetCapCauseRegRegNum.tex}}
-
-\newcommand{\sailupdateCapCauseRegRegNum}{\label{zzyupdatezyCapCauseRegzyRegNum} \lstinputlisting[language=sail]{sail_latex/sailupdateCapCauseRegRegNum.tex}}
-
-\newcommand{\sailfnupdateCapCauseRegRegNum}{\label{zzyupdatezyCapCauseRegzyRegNum} \lstinputlisting[language=sail]{sail_latex/sailfnupdateCapCauseRegRegNum.tex}}
-
-\newcommand{\sailupdateRegNum}{\label{zupdatezyRegNum} \lstinputlisting[language=sail]{sail_latex/sailupdateRegNum.tex}}
-
-\newcommand{\sailmodRegNum}{\label{zzymodzyRegNum} \lstinputlisting[language=sail]{sail_latex/sailmodRegNum.tex}}
-
-\newcommand{\sailexecutebranchpcc}{\label{zexecutezybranchzypcc} \lstinputlisting[language=sail]{sail_latex/sailexecutebranchpcc.tex}}
-
-\newcommand{\sailfnexecutebranchpcc}{\label{zexecutezybranchzypcc} \lstinputlisting[language=sail]{sail_latex/sailfnexecutebranchpcc.tex}}
-
-\newcommand{\sailfnSignalException}{\label{zSignalException} \lstinputlisting[language=sail]{sail_latex/sailfnSignalException.tex}}
-
-\newcommand{\sailERETHook}{\label{zERETHook} \lstinputlisting[language=sail]{sail_latex/sailERETHook.tex}}
-
-\newcommand{\sailfnERETHook}{\label{zERETHook} \lstinputlisting[language=sail]{sail_latex/sailfnERETHook.tex}}
-
-\newcommand{\sailraisectwoexceptioneight}{\label{zraisezyctwozyexceptioneight} \lstinputlisting[language=sail]{sail_latex/sailraisectwoexceptioneight.tex}}
-
-\newcommand{\sailfnraisectwoexceptioneight}{\label{zraisezyctwozyexceptioneight} \lstinputlisting[language=sail]{sail_latex/sailfnraisectwoexceptioneight.tex}}
-
-\newcommand{\sailraisectwoexception}{\label{zraisezyctwozyexception} \lstinputlisting[language=sail]{sail_latex/sailraisectwoexception.tex}}
-
-\newcommand{\sailfnraisectwoexception}{\label{zraisezyctwozyexception} \lstinputlisting[language=sail]{sail_latex/sailfnraisectwoexception.tex}}
-
-\newcommand{\sailraisectwoexceptionnoreg}{\label{zraisezyctwozyexceptionzynoreg} \lstinputlisting[language=sail]{sail_latex/sailraisectwoexceptionnoreg.tex}}
-
-\newcommand{\sailfnraisectwoexceptionnoreg}{\label{zraisezyctwozyexceptionzynoreg} \lstinputlisting[language=sail]{sail_latex/sailfnraisectwoexceptionnoreg.tex}}
-
-\newcommand{\sailpccaccesssystemregs}{\label{zpcczyaccesszysystemzyregs} \lstinputlisting[language=sail]{sail_latex/sailpccaccesssystemregs.tex}}
-
-\newcommand{\sailfnpccaccesssystemregs}{\label{zpcczyaccesszysystemzyregs} \lstinputlisting[language=sail]{sail_latex/sailfnpccaccesssystemregs.tex}}
-
-\newcommand{\sailregisterinaccessible}{\label{zregisterzyinaccessible}
-The following function should be called before reading or writing any capability register to check whether it is one of the protected system capabilities. Although it is usually a general purpose capabilty the invoked data capabiltiy (IDC) is restricted in the branch delay slot of the CCall (selector one) instruction to protect the confidentiality and integrity of the invoked sandbox.
- \lstinputlisting[language=sail]{sail_latex/sailregisterinaccessible.tex}}
-
-\newcommand{\sailfnregisterinaccessible}{\label{zregisterzyinaccessible} \lstinputlisting[language=sail]{sail_latex/sailfnregisterinaccessible.tex}}
-
-\newcommand{\sailMEMrtag}{\label{zMEMrzytag} \lstinputlisting[language=sail]{sail_latex/sailMEMrtag.tex}}
-
-\newcommand{\sailMEMwtag}{\label{zMEMwzytag} \lstinputlisting[language=sail]{sail_latex/sailMEMwtag.tex}}
-
-\newcommand{\sailMEMrtagged}{\label{zMEMrzytagged} \lstinputlisting[language=sail]{sail_latex/sailMEMrtagged.tex}}
-
-\newcommand{\sailfnMEMrtagged}{\label{zMEMrzytagged} \lstinputlisting[language=sail]{sail_latex/sailfnMEMrtagged.tex}}
-
-\newcommand{\sailMEMrtaggedreserve}{\label{zMEMrzytaggedzyreserve} \lstinputlisting[language=sail]{sail_latex/sailMEMrtaggedreserve.tex}}
-
-\newcommand{\sailfnMEMrtaggedreserve}{\label{zMEMrzytaggedzyreserve} \lstinputlisting[language=sail]{sail_latex/sailfnMEMrtaggedreserve.tex}}
-
-\newcommand{\sailMEMwtagged}{\label{zMEMwzytagged} \lstinputlisting[language=sail]{sail_latex/sailMEMwtagged.tex}}
-
-\newcommand{\sailfnMEMwtagged}{\label{zMEMwzytagged} \lstinputlisting[language=sail]{sail_latex/sailfnMEMwtagged.tex}}
-
-\newcommand{\sailMEMwtaggedconditional}{\label{zMEMwzytaggedzyconditional} \lstinputlisting[language=sail]{sail_latex/sailMEMwtaggedconditional.tex}}
-
-\newcommand{\sailfnMEMwtaggedconditional}{\label{zMEMwzytaggedzyconditional} \lstinputlisting[language=sail]{sail_latex/sailfnMEMwtaggedconditional.tex}}
-
-\newcommand{\sailMEMwwrapper}{\label{zMEMwzywrapper} \lstinputlisting[language=sail]{sail_latex/sailMEMwwrapper.tex}}
-
-\newcommand{\sailfnMEMwwrapper}{\label{zMEMwzywrapper} \lstinputlisting[language=sail]{sail_latex/sailfnMEMwwrapper.tex}}
-
-\newcommand{\sailMEMwconditionalwrapper}{\label{zMEMwzyconditionalzywrapper} \lstinputlisting[language=sail]{sail_latex/sailMEMwconditionalwrapper.tex}}
-
-\newcommand{\sailfnMEMwconditionalwrapper}{\label{zMEMwzyconditionalzywrapper} \lstinputlisting[language=sail]{sail_latex/sailfnMEMwconditionalwrapper.tex}}
-
-\newcommand{\sailcheckDDCPerms}{\label{zcheckDDCPerms} \lstinputlisting[language=sail]{sail_latex/sailcheckDDCPerms.tex}}
-
-\newcommand{\sailfncheckDDCPerms}{\label{zcheckDDCPerms} \lstinputlisting[language=sail]{sail_latex/sailfncheckDDCPerms.tex}}
-
-\newcommand{\sailaddrWrapper}{\label{zaddrWrapper} \lstinputlisting[language=sail]{sail_latex/sailaddrWrapper.tex}}
-
-\newcommand{\sailfnaddrWrapper}{\label{zaddrWrapper} \lstinputlisting[language=sail]{sail_latex/sailfnaddrWrapper.tex}}
-
-\newcommand{\sailaddrWrapperUnaligned}{\label{zaddrWrapperUnaligned} \lstinputlisting[language=sail]{sail_latex/sailaddrWrapperUnaligned.tex}}
-
-\newcommand{\sailfnaddrWrapperUnaligned}{\label{zaddrWrapperUnaligned} \lstinputlisting[language=sail]{sail_latex/sailfnaddrWrapperUnaligned.tex}}
-
-\newcommand{\sailTranslatePC}{\label{zTranslatePC} \lstinputlisting[language=sail]{sail_latex/sailTranslatePC.tex}}
-
-\newcommand{\sailfnTranslatePC}{\label{zTranslatePC} \lstinputlisting[language=sail]{sail_latex/sailfnTranslatePC.tex}}
-
-\newcommand{\sailcheckCPtwousable}{\label{zcheckCPtwousable}
-All capability instrucitons must first check that the capability
-co-processor is enabled using the following function that raises a
-co-processor unusable exception if a CP0Status.CU2 is not set. This
-allows the operating system to only save and restore the full
-capability context for processes that use capabilities.
-\lstinputlisting[language=sail]{sail_latex/sailcheckCPtwousable.tex}}
-
-\newcommand{\sailfncheckCPtwousable}{\label{zcheckCPtwousable} \lstinputlisting[language=sail]{sail_latex/sailfncheckCPtwousable.tex}}
-
-\newcommand{\sailfninitcptwostate}{\label{zinitzycptwozystate} \lstinputlisting[language=sail]{sail_latex/sailfninitcptwostate.tex}}
-
-\newcommand{\sailfncptwonextpc}{\label{zcptwozynextzypc} \lstinputlisting[language=sail]{sail_latex/sailfncptwonextpc.tex}}
-
-\newcommand{\sailcapToString}{\label{zcapToString} \lstinputlisting[language=sail]{sail_latex/sailcapToString.tex}}
-
-\newcommand{\sailfncapToString}{\label{zcapToString} \lstinputlisting[language=sail]{sail_latex/sailfncapToString.tex}}
-
-\newcommand{\sailfndumpcptwostate}{\label{zdumpzycptwozystate} \lstinputlisting[language=sail]{sail_latex/sailfndumpcptwostate.tex}}
-
-\newcommand{\sailextendLoad}{\label{zextendLoad} \lstinputlisting[language=sail]{sail_latex/sailextendLoad.tex}}
-
-\newcommand{\sailfnextendLoad}{\label{zextendLoad} \lstinputlisting[language=sail]{sail_latex/sailfnextendLoad.tex}}
-
-\newcommand{\sailTLBWriteEntry}{\label{zTLBWriteEntry} \lstinputlisting[language=sail]{sail_latex/sailTLBWriteEntry.tex}}
-
-\newcommand{\sailfnTLBWriteEntry}{\label{zTLBWriteEntry} \lstinputlisting[language=sail]{sail_latex/sailfnTLBWriteEntry.tex}}
-
-\newcommand{\sailfndecodeSomeDADDIU}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDADDIU.tex}}
-
-\newcommand{\sailfndecodeSomeDADDU}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDADDU.tex}}
-
-\newcommand{\sailfndecodeSomeDADDI}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDADDI.tex}}
-
-\newcommand{\sailfndecodeSomeDADD}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDADD.tex}}
-
-\newcommand{\sailfndecodeSomeADD}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeADD.tex}}
-
-\newcommand{\sailfndecodeSomeADDI}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeADDI.tex}}
-
-\newcommand{\sailfndecodeSomeADDU}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeADDU.tex}}
-
-\newcommand{\sailfndecodeSomeADDIU}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeADDIU.tex}}
-
-\newcommand{\sailfndecodeSomeDSUBU}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDSUBU.tex}}
-
-\newcommand{\sailfndecodeSomeDSUB}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDSUB.tex}}
-
-\newcommand{\sailfndecodeSomeSUB}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSUB.tex}}
-
-\newcommand{\sailfndecodeSomeSUBU}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSUBU.tex}}
-
-\newcommand{\sailfndecodeSomeAND}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeAND.tex}}
-
-\newcommand{\sailfndecodeSomeANDI}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeANDI.tex}}
-
-\newcommand{\sailfndecodeSomeOR}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeOR.tex}}
-
-\newcommand{\sailfndecodeSomeORI}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeORI.tex}}
-
-\newcommand{\sailfndecodeSomeNOR}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeNOR.tex}}
-
-\newcommand{\sailfndecodeSomeXOR}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeXOR.tex}}
-
-\newcommand{\sailfndecodeSomeXORI}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeXORI.tex}}
-
-\newcommand{\sailfndecodeSomeLUI}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeLUI.tex}}
-
-\newcommand{\sailfndecodeSomeDSLL}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDSLL.tex}}
-
-\newcommand{\sailfndecodeSomeDSLLthreetwo}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDSLLthreetwo.tex}}
-
-\newcommand{\sailfndecodeSomeDSLLV}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDSLLV.tex}}
-
-\newcommand{\sailfndecodeSomeDSRA}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDSRA.tex}}
-
-\newcommand{\sailfndecodeSomeDSRAthreetwo}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDSRAthreetwo.tex}}
-
-\newcommand{\sailfndecodeSomeDSRAV}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDSRAV.tex}}
-
-\newcommand{\sailfndecodeSomeDSRL}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDSRL.tex}}
-
-\newcommand{\sailfndecodeSomeDSRLthreetwo}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDSRLthreetwo.tex}}
-
-\newcommand{\sailfndecodeSomeDSRLV}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDSRLV.tex}}
-
-\newcommand{\sailfndecodeSomeSLL}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSLL.tex}}
-
-\newcommand{\sailfndecodeSomeSLLV}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSLLV.tex}}
-
-\newcommand{\sailfndecodeSomeSRA}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSRA.tex}}
-
-\newcommand{\sailfndecodeSomeSRAV}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSRAV.tex}}
-
-\newcommand{\sailfndecodeSomeSRL}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSRL.tex}}
-
-\newcommand{\sailfndecodeSomeSRLV}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSRLV.tex}}
-
-\newcommand{\sailfndecodeSomeSLT}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSLT.tex}}
-
-\newcommand{\sailfndecodeSomeSLTI}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSLTI.tex}}
-
-\newcommand{\sailfndecodeSomeSLTU}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSLTU.tex}}
-
-\newcommand{\sailfndecodeSomeSLTIU}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSLTIU.tex}}
-
-\newcommand{\sailfndecodeSomeMOVN}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMOVN.tex}}
-
-\newcommand{\sailfndecodeSomeMOVZ}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMOVZ.tex}}
-
-\newcommand{\sailfndecodeSomeMFHIrd}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMFHIrd.tex}}
-
-\newcommand{\sailfndecodeSomeMFLOrd}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMFLOrd.tex}}
-
-\newcommand{\sailfndecodeSomeMTHIrs}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMTHIrs.tex}}
-
-\newcommand{\sailfndecodeSomeMTLOrs}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMTLOrs.tex}}
-
-\newcommand{\sailfndecodeSomeMUL}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMUL.tex}}
-
-\newcommand{\sailfndecodeSomeMULT}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMULT.tex}}
-
-\newcommand{\sailfndecodeSomeMULTU}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMULTU.tex}}
-
-\newcommand{\sailfndecodeSomeDMULT}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDMULT.tex}}
-
-\newcommand{\sailfndecodeSomeDMULTU}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDMULTU.tex}}
-
-\newcommand{\sailfndecodeSomeMADD}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMADD.tex}}
-
-\newcommand{\sailfndecodeSomeMADDU}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMADDU.tex}}
-
-\newcommand{\sailfndecodeSomeMSUB}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMSUB.tex}}
-
-\newcommand{\sailfndecodeSomeMSUBU}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMSUBU.tex}}
-
-\newcommand{\sailfndecodeSomeDIV}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDIV.tex}}
-
-\newcommand{\sailfndecodeSomeDIVU}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDIVU.tex}}
-
-\newcommand{\sailfndecodeSomeDDIV}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDDIV.tex}}
-
-\newcommand{\sailfndecodeSomeDDIVU}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeDDIVU.tex}}
-
-\newcommand{\sailfndecodeSomeJoffset}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeJoffset.tex}}
-
-\newcommand{\sailfndecodeSomeJALoffset}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeJALoffset.tex}}
-
-\newcommand{\sailfndecodeSomeJRrs}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeJRrs.tex}}
-
-\newcommand{\sailfndecodeSomeJALR}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeJALR.tex}}
-
-\newcommand{\sailfndecodeSomeBEQ}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeBEQ.tex}}
-
-\newcommand{\sailsailfndecodeSomeBEQv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeBEQv.tex}}
-
-\newcommand{\sailsailsailfndecodeSomeBEQvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailfndecodeSomeBEQvv.tex}}
-
-\newcommand{\sailsailsailsailfndecodeSomeBEQvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailfndecodeSomeBEQvvv.tex}}
-
-\newcommand{\sailfndecodeSomeBCMPZ}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeBCMPZ.tex}}
-
-\newcommand{\sailsailfndecodeSomeBCMPZv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeBCMPZv.tex}}
-
-\newcommand{\sailsailsailfndecodeSomeBCMPZvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailfndecodeSomeBCMPZvv.tex}}
-
-\newcommand{\sailsailsailsailfndecodeSomeBCMPZvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailfndecodeSomeBCMPZvvv.tex}}
-
-\newcommand{\sailsailsailsailsailfndecodeSomeBCMPZvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailfndecodeSomeBCMPZvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailfndecodeSomeBCMPZvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailfndecodeSomeBCMPZvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvvvv.tex}}
-
-\newcommand{\sailfndecodeSomeSYSCALL}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSYSCALL.tex}}
-
-\newcommand{\sailfndecodeSomeBREAK}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeBREAK.tex}}
-
-\newcommand{\sailfndecodeSomeWAIT}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeWAIT.tex}}
-
-\newcommand{\sailfndecodeSomeTRAPREG}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeTRAPREG.tex}}
-
-\newcommand{\sailsailfndecodeSomeTRAPREGv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeTRAPREGv.tex}}
-
-\newcommand{\sailsailsailfndecodeSomeTRAPREGvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailfndecodeSomeTRAPREGvv.tex}}
-
-\newcommand{\sailsailsailsailfndecodeSomeTRAPREGvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailfndecodeSomeTRAPREGvvv.tex}}
-
-\newcommand{\sailsailsailsailsailfndecodeSomeTRAPREGvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailfndecodeSomeTRAPREGvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailfndecodeSomeTRAPREGvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailfndecodeSomeTRAPREGvvvvv.tex}}
-
-\newcommand{\sailfndecodeSomeTRAPIMM}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeTRAPIMM.tex}}
-
-\newcommand{\sailsailfndecodeSomeTRAPIMMv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeTRAPIMMv.tex}}
-
-\newcommand{\sailsailsailfndecodeSomeTRAPIMMvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailfndecodeSomeTRAPIMMvv.tex}}
-
-\newcommand{\sailsailsailsailfndecodeSomeTRAPIMMvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailfndecodeSomeTRAPIMMvvv.tex}}
-
-\newcommand{\sailsailsailsailsailfndecodeSomeTRAPIMMvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailfndecodeSomeTRAPIMMvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailfndecodeSomeTRAPIMMvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailfndecodeSomeTRAPIMMvvvvv.tex}}
-
-\newcommand{\sailfndecodeSomeLoad}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeLoad.tex}}
-
-\newcommand{\sailsailfndecodeSomeLoadv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeLoadv.tex}}
-
-\newcommand{\sailsailsailfndecodeSomeLoadvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailfndecodeSomeLoadvv.tex}}
-
-\newcommand{\sailsailsailsailfndecodeSomeLoadvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailfndecodeSomeLoadvvv.tex}}
-
-\newcommand{\sailsailsailsailsailfndecodeSomeLoadvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailfndecodeSomeLoadvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailfndecodeSomeLoadvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailfndecodeSomeLoadvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailfndecodeSomeLoadvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailfndecodeSomeLoadvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailfndecodeSomeLoadvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeLoadvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailfndecodeSomeLoadvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeLoadvvvvvvvv.tex}}
-
-\newcommand{\sailfndecodeSomeStore}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeStore.tex}}
-
-\newcommand{\sailsailfndecodeSomeStorev}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeStorev.tex}}
-
-\newcommand{\sailsailsailfndecodeSomeStorevv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailfndecodeSomeStorevv.tex}}
-
-\newcommand{\sailsailsailsailfndecodeSomeStorevvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailfndecodeSomeStorevvv.tex}}
-
-\newcommand{\sailsailsailsailsailfndecodeSomeStorevvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailfndecodeSomeStorevvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailfndecodeSomeStorevvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailfndecodeSomeStorevvvvv.tex}}
-
-\newcommand{\sailfndecodeSomeLWL}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeLWL.tex}}
-
-\newcommand{\sailfndecodeSomeLWR}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeLWR.tex}}
-
-\newcommand{\sailfndecodeSomeSWL}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSWL.tex}}
-
-\newcommand{\sailfndecodeSomeSWR}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSWR.tex}}
-
-\newcommand{\sailfndecodeSomeLDL}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeLDL.tex}}
-
-\newcommand{\sailfndecodeSomeLDR}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeLDR.tex}}
-
-\newcommand{\sailfndecodeSomeSDL}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSDL.tex}}
-
-\newcommand{\sailfndecodeSomeSDR}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSDR.tex}}
-
-\newcommand{\sailfndecodeSomeCACHE}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCACHE.tex}}
-
-\newcommand{\sailfndecodeSomeSYNC}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeSYNC.tex}}
-
-\newcommand{\sailfndecodeSomeMFCzero}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMFCzero.tex}}
-
-\newcommand{\sailsailfndecodeSomeMFCzerov}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeMFCzerov.tex}}
-
-\newcommand{\sailfndecodeSomeHCF}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeHCF.tex}}
-
-\newcommand{\sailsailfndecodeSomeHCFv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeHCFv.tex}}
-
-\newcommand{\sailfndecodeSomeMTCzero}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeMTCzero.tex}}
-
-\newcommand{\sailsailfndecodeSomeMTCzerov}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeMTCzerov.tex}}
-
-\newcommand{\sailfndecodeSome}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSome.tex}}
-
-\newcommand{\sailsailfndecodeSomev}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomev.tex}}
-
-\newcommand{\sailsailsailfndecodeSomevv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailfndecodeSomevv.tex}}
-
-\newcommand{\sailsailsailsailfndecodeSomevvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailfndecodeSomevvv.tex}}
-
-\newcommand{\sailfndecodeSomeRDHWR}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeRDHWR.tex}}
-
-\newcommand{\sailfndecodeSomeERET}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeERET.tex}}
-
-\newcommand{\sailfndecodeSomeCGetPerm}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCGetPerm.tex}}
-
-\newcommand{\sailfndecodeSomeCGetType}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCGetType.tex}}
-
-\newcommand{\sailfndecodeSomeCGetBase}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCGetBase.tex}}
-
-\newcommand{\sailfndecodeSomeCGetLen}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCGetLen.tex}}
-
-\newcommand{\sailfndecodeSomeCGetTag}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCGetTag.tex}}
-
-\newcommand{\sailfndecodeSomeCGetSealed}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCGetSealed.tex}}
-
-\newcommand{\sailfndecodeSomeCGetCauserd}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCGetCauserd.tex}}
-
-\newcommand{\sailfndecodeSomeCReturn}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCReturn.tex}}
-
-\newcommand{\sailfndecodeSomeCGetOffset}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCGetOffset.tex}}
-
-\newcommand{\sailfndecodeSomeCSetCausert}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCSetCausert.tex}}
-
-\newcommand{\sailfndecodeSomeCAndPerm}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCAndPerm.tex}}
-
-\newcommand{\sailfndecodeSomeCToPtr}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCToPtr.tex}}
-
-\newcommand{\sailfndecodeSomeCPtrCmp}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCPtrCmp.tex}}
-
-\newcommand{\sailsailfndecodeSomeCPtrCmpv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCPtrCmpv.tex}}
-
-\newcommand{\sailsailsailfndecodeSomeCPtrCmpvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailfndecodeSomeCPtrCmpvv.tex}}
-
-\newcommand{\sailsailsailsailfndecodeSomeCPtrCmpvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailfndecodeSomeCPtrCmpvvv.tex}}
-
-\newcommand{\sailsailsailsailsailfndecodeSomeCPtrCmpvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailfndecodeSomeCPtrCmpvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvv.tex}}
-
-\newcommand{\sailfndecodeSomeCIncOffset}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCIncOffset.tex}}
-
-\newcommand{\sailfndecodeSomeCSetOffset}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCSetOffset.tex}}
-
-\newcommand{\sailfndecodeSomeCSetBounds}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCSetBounds.tex}}
-
-\newcommand{\sailfndecodeSomeCClearTag}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCClearTag.tex}}
-
-\newcommand{\sailfndecodeSomeCFromPtr}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCFromPtr.tex}}
-
-\newcommand{\sailfndecodeSomeCCheckPerm}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCCheckPerm.tex}}
-
-\newcommand{\sailfndecodeSomeCCheckType}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCCheckType.tex}}
-
-\newcommand{\sailfndecodeSomeCSeal}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCSeal.tex}}
-
-\newcommand{\sailfndecodeSomeCUnseal}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCUnseal.tex}}
-
-\newcommand{\sailfndecodeSomeCJALR}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCJALR.tex}}
-
-\newcommand{\sailsailfndecodeSomeCJALRv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCJALRv.tex}}
-
-\newcommand{\sailsailfndecodeSomeCGetCauserdv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCGetCauserdv.tex}}
-
-\newcommand{\sailfndecodeSomeCSetCausers}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCSetCausers.tex}}
-
-\newcommand{\sailfndecodeSomeCGetPCCcd}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCGetPCCcd.tex}}
-
-\newcommand{\sailsailsailfndecodeSomeCJALRvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailfndecodeSomeCJALRvv.tex}}
-
-\newcommand{\sailsailfndecodeSomeCCheckPermv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCCheckPermv.tex}}
-
-\newcommand{\sailsailfndecodeSomeCCheckTypev}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCCheckTypev.tex}}
-
-\newcommand{\sailsailfndecodeSomeCClearTagv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCClearTagv.tex}}
-
-\newcommand{\sailfndecodeSomeCMOVX}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCMOVX.tex}}
-
-\newcommand{\sailsailsailsailfndecodeSomeCJALRvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailfndecodeSomeCJALRvvv.tex}}
-
-\newcommand{\sailsailfndecodeSomeCGetPermv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCGetPermv.tex}}
-
-\newcommand{\sailsailfndecodeSomeCGetTypev}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCGetTypev.tex}}
-
-\newcommand{\sailsailfndecodeSomeCGetBasev}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCGetBasev.tex}}
-
-\newcommand{\sailsailfndecodeSomeCGetLenv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCGetLenv.tex}}
-
-\newcommand{\sailsailfndecodeSomeCGetTagv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCGetTagv.tex}}
-
-\newcommand{\sailsailfndecodeSomeCGetSealedv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCGetSealedv.tex}}
-
-\newcommand{\sailsailfndecodeSomeCGetOffsetv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCGetOffsetv.tex}}
-
-\newcommand{\sailfndecodeSomeCGetPCCSetOffset}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCGetPCCSetOffset.tex}}
-
-\newcommand{\sailfndecodeSomeCReadHwr}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCReadHwr.tex}}
-
-\newcommand{\sailfndecodeSomeCWriteHwr}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCWriteHwr.tex}}
-
-\newcommand{\sailfndecodeSomeCGetAddr}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCGetAddr.tex}}
-
-\newcommand{\sailsailfndecodeSomeCSealv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCSealv.tex}}
-
-\newcommand{\sailsailfndecodeSomeCUnsealv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCUnsealv.tex}}
-
-\newcommand{\sailsailfndecodeSomeCAndPermv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCAndPermv.tex}}
-
-\newcommand{\sailsailfndecodeSomeCSetOffsetv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCSetOffsetv.tex}}
-
-\newcommand{\sailsailfndecodeSomeCSetBoundsv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCSetBoundsv.tex}}
-
-\newcommand{\sailfndecodeSomeCSetBoundsExact}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCSetBoundsExact.tex}}
-
-\newcommand{\sailsailfndecodeSomeCIncOffsetv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCIncOffsetv.tex}}
-
-\newcommand{\sailfndecodeSomeCBuildCap}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCBuildCap.tex}}
-
-\newcommand{\sailfndecodeSomeCCopyType}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCCopyType.tex}}
-
-\newcommand{\sailfndecodeSomeCCSeal}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCCSeal.tex}}
-
-\newcommand{\sailsailfndecodeSomeCToPtrv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCToPtrv.tex}}
-
-\newcommand{\sailsailfndecodeSomeCFromPtrv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCFromPtrv.tex}}
-
-\newcommand{\sailfndecodeSomeCSub}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCSub.tex}}
-
-\newcommand{\sailsailfndecodeSomeCMOVXv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCMOVXv.tex}}
-
-\newcommand{\sailsailsailfndecodeSomeCMOVXvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailfndecodeSomeCMOVXvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvvvv.tex}}
-
-\newcommand{\sailfndecodeSomeCTestSubset}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCTestSubset.tex}}
-
-\newcommand{\sailfndecodeSomeCBX}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCBX.tex}}
-
-\newcommand{\sailsailfndecodeSomeCBXv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCBXv.tex}}
-
-\newcommand{\sailfndecodeSomeCBZ}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCBZ.tex}}
-
-\newcommand{\sailsailfndecodeSomeCBZv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCBZv.tex}}
-
-\newcommand{\sailsailfndecodeSomeCReturnv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCReturnv.tex}}
-
-\newcommand{\sailfndecodeSomeCCall}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCCall.tex}}
-
-\newcommand{\sailfndecodeSomeClearRegs}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeClearRegs.tex}}
-
-\newcommand{\sailsailfndecodeSomeClearRegsv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeClearRegsv.tex}}
-
-\newcommand{\sailsailsailfndecodeSomeClearRegsvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailfndecodeSomeClearRegsvv.tex}}
-
-\newcommand{\sailsailsailsailfndecodeSomeClearRegsvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailfndecodeSomeClearRegsvvv.tex}}
-
-\newcommand{\sailfndecodeSomeCIncOffsetImmediate}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCIncOffsetImmediate.tex}}
-
-\newcommand{\sailfndecodeSomeCSetBoundsImmediate}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCSetBoundsImmediate.tex}}
-
-\newcommand{\sailfndecodeSomeCLoad}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCLoad.tex}}
-
-\newcommand{\sailsailfndecodeSomeCLoadv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCLoadv.tex}}
-
-\newcommand{\sailsailsailfndecodeSomeCLoadvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailfndecodeSomeCLoadvv.tex}}
-
-\newcommand{\sailsailsailsailfndecodeSomeCLoadvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailfndecodeSomeCLoadvvv.tex}}
-
-\newcommand{\sailsailsailsailsailfndecodeSomeCLoadvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailfndecodeSomeCLoadvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailfndecodeSomeCLoadvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailfndecodeSomeCLoadvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvvvv.tex}}
-
-\newcommand{\sailfndecodeSomeCStore}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCStore.tex}}
-
-\newcommand{\sailsailfndecodeSomeCStorev}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCStorev.tex}}
-
-\newcommand{\sailsailsailfndecodeSomeCStorevv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailfndecodeSomeCStorevv.tex}}
-
-\newcommand{\sailsailsailsailfndecodeSomeCStorevvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailfndecodeSomeCStorevvv.tex}}
-
-\newcommand{\sailsailsailsailsailfndecodeSomeCStorevvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailfndecodeSomeCStorevvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailfndecodeSomeCStorevvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailfndecodeSomeCStorevvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailfndecodeSomeCStorevvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailfndecodeSomeCStorevvvvvv.tex}}
-
-\newcommand{\sailsailsailsailsailsailsailsailfndecodeSomeCStorevvvvvvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCStorevvvvvvv.tex}}
-
-\newcommand{\sailfndecodeSomeCSC}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCSC.tex}}
-
-\newcommand{\sailsailfndecodeSomeCSCv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCSCv.tex}}
-
-\newcommand{\sailfndecodeSomeCLC}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCLC.tex}}
-
-\newcommand{\sailsailfndecodeSomeCLCv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfndecodeSomeCLCv.tex}}
-
-\newcommand{\sailsailsailfndecodeSomeCLCvv}{ \lstinputlisting[language=sail]{sail_latex/sailsailsailfndecodeSomeCLCvv.tex}}
-
-\newcommand{\sailfndecodeSomeCtwoDumprt}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeCtwoDumprt.tex}}
-
-\newcommand{\sailfndecodeSomeRI}{ \lstinputlisting[language=sail]{sail_latex/sailfndecodeSomeRI.tex}}
-
-
-
-\newcommand{\sailfnexecuteDADDIU}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDADDIU.tex}}
-
-\newcommand{\sailfnexecuteDADDU}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDADDU.tex}}
-
-\newcommand{\sailfnexecuteDADDI}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDADDI.tex}}
-
-\newcommand{\sailfnexecuteDADD}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDADD.tex}}
-
-\newcommand{\sailfnexecuteADD}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteADD.tex}}
-
-\newcommand{\sailfnexecuteADDI}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteADDI.tex}}
-
-\newcommand{\sailfnexecuteADDU}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteADDU.tex}}
-
-\newcommand{\sailfnexecuteADDIU}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteADDIU.tex}}
-
-\newcommand{\sailfnexecuteDSUBU}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDSUBU.tex}}
-
-\newcommand{\sailfnexecuteDSUB}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDSUB.tex}}
-
-\newcommand{\sailfnexecuteSUB}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSUB.tex}}
-
-\newcommand{\sailfnexecuteSUBU}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSUBU.tex}}
-
-\newcommand{\sailfnexecuteAND}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteAND.tex}}
-
-\newcommand{\sailfnexecuteANDI}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteANDI.tex}}
-
-\newcommand{\sailfnexecuteOR}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteOR.tex}}
-
-\newcommand{\sailfnexecuteORI}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteORI.tex}}
-
-\newcommand{\sailfnexecuteNOR}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteNOR.tex}}
-
-\newcommand{\sailfnexecuteXOR}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteXOR.tex}}
-
-\newcommand{\sailfnexecuteXORI}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteXORI.tex}}
-
-\newcommand{\sailfnexecuteLUI}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteLUI.tex}}
-
-\newcommand{\sailfnexecuteDSLL}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDSLL.tex}}
-
-\newcommand{\sailfnexecuteDSLLthreetwo}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDSLLthreetwo.tex}}
-
-\newcommand{\sailfnexecuteDSLLV}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDSLLV.tex}}
-
-\newcommand{\sailfnexecuteDSRA}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDSRA.tex}}
-
-\newcommand{\sailfnexecuteDSRAthreetwo}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDSRAthreetwo.tex}}
-
-\newcommand{\sailfnexecuteDSRAV}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDSRAV.tex}}
-
-\newcommand{\sailfnexecuteDSRL}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDSRL.tex}}
-
-\newcommand{\sailfnexecuteDSRLthreetwo}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDSRLthreetwo.tex}}
-
-\newcommand{\sailfnexecuteDSRLV}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDSRLV.tex}}
-
-\newcommand{\sailfnexecuteSLL}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSLL.tex}}
-
-\newcommand{\sailfnexecuteSLLV}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSLLV.tex}}
-
-\newcommand{\sailfnexecuteSRA}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSRA.tex}}
-
-\newcommand{\sailfnexecuteSRAV}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSRAV.tex}}
-
-\newcommand{\sailfnexecuteSRL}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSRL.tex}}
-
-\newcommand{\sailfnexecuteSRLV}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSRLV.tex}}
-
-\newcommand{\sailfnexecuteSLT}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSLT.tex}}
-
-\newcommand{\sailfnexecuteSLTI}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSLTI.tex}}
-
-\newcommand{\sailfnexecuteSLTU}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSLTU.tex}}
-
-\newcommand{\sailfnexecuteSLTIU}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSLTIU.tex}}
-
-\newcommand{\sailfnexecuteMOVN}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMOVN.tex}}
-
-\newcommand{\sailfnexecuteMOVZ}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMOVZ.tex}}
-
-\newcommand{\sailfnexecuteMFHI}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMFHI.tex}}
-
-\newcommand{\sailfnexecuteMFLO}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMFLO.tex}}
-
-\newcommand{\sailfnexecuteMTHI}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMTHI.tex}}
-
-\newcommand{\sailfnexecuteMTLO}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMTLO.tex}}
-
-\newcommand{\sailfnexecuteMUL}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMUL.tex}}
-
-\newcommand{\sailfnexecuteMULT}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMULT.tex}}
-
-\newcommand{\sailfnexecuteMULTU}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMULTU.tex}}
-
-\newcommand{\sailfnexecuteDMULT}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDMULT.tex}}
-
-\newcommand{\sailfnexecuteDMULTU}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDMULTU.tex}}
-
-\newcommand{\sailfnexecuteMADD}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMADD.tex}}
-
-\newcommand{\sailfnexecuteMADDU}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMADDU.tex}}
-
-\newcommand{\sailfnexecuteMSUB}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMSUB.tex}}
-
-\newcommand{\sailfnexecuteMSUBU}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMSUBU.tex}}
-
-\newcommand{\sailfnexecuteDIV}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDIV.tex}}
-
-\newcommand{\sailfnexecuteDIVU}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDIVU.tex}}
-
-\newcommand{\sailfnexecuteDDIV}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDDIV.tex}}
-
-\newcommand{\sailfnexecuteDDIVU}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteDDIVU.tex}}
-
-\newcommand{\sailfnexecuteJ}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteJ.tex}}
-
-\newcommand{\sailfnexecuteJAL}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteJAL.tex}}
-
-\newcommand{\sailfnexecuteJR}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteJR.tex}}
-
-\newcommand{\sailfnexecuteJALR}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteJALR.tex}}
-
-\newcommand{\sailfnexecuteBEQ}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteBEQ.tex}}
-
-\newcommand{\sailfnexecuteBCMPZ}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteBCMPZ.tex}}
-
-\newcommand{\sailfnexecuteSYSCALL}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSYSCALL.tex}}
-
-\newcommand{\sailfnexecuteBREAK}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteBREAK.tex}}
-
-\newcommand{\sailfnexecuteWAIT}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteWAIT.tex}}
-
-\newcommand{\sailfnexecuteTRAPREG}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteTRAPREG.tex}}
-
-\newcommand{\sailfnexecuteTRAPIMM}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteTRAPIMM.tex}}
-
-\newcommand{\sailfnexecuteLoad}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteLoad.tex}}
-
-\newcommand{\sailfnexecuteStore}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteStore.tex}}
-
-\newcommand{\sailfnexecuteLWL}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteLWL.tex}}
-
-\newcommand{\sailfnexecuteLWR}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteLWR.tex}}
-
-\newcommand{\sailfnexecuteSWL}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSWL.tex}}
-
-\newcommand{\sailfnexecuteSWR}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSWR.tex}}
-
-\newcommand{\sailfnexecuteLDL}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteLDL.tex}}
-
-\newcommand{\sailfnexecuteLDR}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteLDR.tex}}
-
-\newcommand{\sailfnexecuteSDL}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSDL.tex}}
-
-\newcommand{\sailfnexecuteSDR}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSDR.tex}}
-
-\newcommand{\sailfnexecuteCACHE}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCACHE.tex}}
-
-\newcommand{\sailfnexecuteSYNC}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteSYNC.tex}}
-
-\newcommand{\sailfnexecuteMFCzero}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMFCzero.tex}}
-
-\newcommand{\sailfnexecuteHCF}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteHCF.tex}}
-
-\newcommand{\sailfnexecuteMTCzero}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteMTCzero.tex}}
-
-\newcommand{\sailfnexecuteTLBWI}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteTLBWI.tex}}
-
-\newcommand{\sailfnexecuteTLBWR}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteTLBWR.tex}}
-
-\newcommand{\sailfnexecuteTLBR}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteTLBR.tex}}
-
-\newcommand{\sailfnexecuteTLBP}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteTLBP.tex}}
-
-\newcommand{\sailfnexecuteRDHWR}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteRDHWR.tex}}
-
-\newcommand{\sailfnexecuteERET}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteERET.tex}}
-
-\newcommand{\sailfnexecuteCGetPerm}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCGetPerm.tex}}
-
-\newcommand{\sailfnexecuteCGetType}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCGetType.tex}}
-
-\newcommand{\sailfnexecuteCGetBase}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCGetBase.tex}}
-
-\newcommand{\sailfnexecuteCGetOffset}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCGetOffset.tex}}
-
-\newcommand{\sailfnexecuteCGetLen}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCGetLen.tex}}
-
-\newcommand{\sailfnexecuteCGetTag}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCGetTag.tex}}
-
-\newcommand{\sailfnexecuteCGetSealed}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCGetSealed.tex}}
-
-\newcommand{\sailfnexecuteCGetAddr}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCGetAddr.tex}}
-
-\newcommand{\sailfnexecuteCGetPCC}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCGetPCC.tex}}
-
-\newcommand{\sailfnexecuteCGetPCCSetOffset}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCGetPCCSetOffset.tex}}
-
-\newcommand{\sailfnexecuteCGetCause}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCGetCause.tex}}
-
-\newcommand{\sailfnexecuteCSetCause}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCSetCause.tex}}
-
-\newcommand{\sailfnexecuteCReadHwr}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCReadHwr.tex}}
-
-\newcommand{\sailfnexecuteCWriteHwr}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCWriteHwr.tex}}
-
-\newcommand{\sailfnexecuteCAndPerm}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCAndPerm.tex}}
-
-\newcommand{\sailfnexecuteCToPtr}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCToPtr.tex}}
-
-\newcommand{\sailfnexecuteCSub}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCSub.tex}}
-
-\newcommand{\sailfnexecuteCPtrCmp}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCPtrCmp.tex}}
-
-\newcommand{\sailfnexecuteCIncOffset}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCIncOffset.tex}}
-
-\newcommand{\sailfnexecuteCIncOffsetImmediate}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCIncOffsetImmediate.tex}}
-
-\newcommand{\sailfnexecuteCSetOffset}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCSetOffset.tex}}
-
-\newcommand{\sailfnexecuteCSetBounds}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCSetBounds.tex}}
-
-\newcommand{\sailfnexecuteCSetBoundsImmediate}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCSetBoundsImmediate.tex}}
-
-\newcommand{\sailfnexecuteCSetBoundsExact}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCSetBoundsExact.tex}}
-
-\newcommand{\sailfnexecuteCClearTag}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCClearTag.tex}}
-
-\newcommand{\sailfnexecuteCMOVX}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCMOVX.tex}}
-
-\newcommand{\sailfnexecuteClearRegs}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteClearRegs.tex}}
-
-\newcommand{\sailfnexecuteCFromPtr}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCFromPtr.tex}}
-
-\newcommand{\sailfnexecuteCBuildCap}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCBuildCap.tex}}
-
-\newcommand{\sailfnexecuteCCopyType}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCCopyType.tex}}
-
-\newcommand{\sailfnexecuteCCheckPerm}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCCheckPerm.tex}}
-
-\newcommand{\sailfnexecuteCCheckType}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCCheckType.tex}}
-
-\newcommand{\sailfnexecuteCTestSubset}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCTestSubset.tex}}
-
-\newcommand{\sailfnexecuteCSeal}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCSeal.tex}}
-
-\newcommand{\sailfnexecuteCCSeal}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCCSeal.tex}}
-
-\newcommand{\sailfnexecuteCUnseal}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCUnseal.tex}}
-
-\newcommand{\sailfnexecuteCCall}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCCall.tex}}
-
-\newcommand{\sailsailfnexecuteCCallv}{ \lstinputlisting[language=sail]{sail_latex/sailsailfnexecuteCCallv.tex}}
-
-\newcommand{\sailfnexecuteCReturn}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCReturn.tex}}
-
-\newcommand{\sailfnexecuteCBX}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCBX.tex}}
-
-\newcommand{\sailfnexecuteCBZ}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCBZ.tex}}
-
-\newcommand{\sailfnexecuteCJALR}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCJALR.tex}}
-
-\newcommand{\sailfnexecuteCLoad}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCLoad.tex}}
-
-\newcommand{\sailfnexecuteCStore}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCStore.tex}}
-
-\newcommand{\sailfnexecuteCSC}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCSC.tex}}
-
-\newcommand{\sailfnexecuteCLC}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCLC.tex}}
-
-\newcommand{\sailfnexecuteCtwoDump}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteCtwoDump.tex}}
-
-\newcommand{\sailfnexecuteRI}{ \lstinputlisting[language=sail]{sail_latex/sailfnexecuteRI.tex}}
-
-
-
-\newcommand{\sailsupportedinstructions}{\label{zsupportedzyinstructions} \lstinputlisting[language=sail]{sail_latex/sailsupportedinstructions.tex}}
-
-\newcommand{\sailfnsupportedinstructions}{\label{zsupportedzyinstructions} \lstinputlisting[language=sail]{sail_latex/sailfnsupportedinstructions.tex}}
-
diff --git a/cheri/sail_latex/sailAccessLevel.tex b/cheri/sail_latex/sailAccessLevel.tex
deleted file mode 100644
index 9e7ad495..00000000
--- a/cheri/sail_latex/sailAccessLevel.tex
+++ /dev/null
@@ -1 +0,0 @@
-enum AccessLevel = {User, Supervisor, Kernel}
diff --git a/cheri/sail_latex/sailAccessLevelofnum.tex b/cheri/sail_latex/sailAccessLevelofnum.tex
deleted file mode 100644
index d958c3e0..00000000
--- a/cheri/sail_latex/sailAccessLevelofnum.tex
+++ /dev/null
@@ -1 +0,0 @@
-val AccessLevel_of_num : forall ('e : Int), 0 <= 'e & 'e <= 2. atom('e) -> AccessLevel
diff --git a/cheri/sail_latex/sailBitStr.tex b/cheri/sail_latex/sailBitStr.tex
deleted file mode 100644
index a0d408ab..00000000
--- a/cheri/sail_latex/sailBitStr.tex
+++ /dev/null
@@ -1 +0,0 @@
-val BitStr = "string_of_bits" : forall 'n. #\hyperref[zbits]{bits}#('n) -> string
diff --git a/cheri/sail_latex/sailCPtrCmpOp.tex b/cheri/sail_latex/sailCPtrCmpOp.tex
deleted file mode 100644
index cb0a73ae..00000000
--- a/cheri/sail_latex/sailCPtrCmpOp.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-enum CPtrCmpOp = {
- CEQ,
- CNE,
- CLT,
- CLE,
- CLTU,
- CLEU,
- CEXEQ,
- CNEXEQ
-}
diff --git a/cheri/sail_latex/sailCPtrCmpOpofnum.tex b/cheri/sail_latex/sailCPtrCmpOpofnum.tex
deleted file mode 100644
index bd6ca31c..00000000
--- a/cheri/sail_latex/sailCPtrCmpOpofnum.tex
+++ /dev/null
@@ -1 +0,0 @@
-val CPtrCmpOp_of_num : forall ('e : Int), 0 <= 'e & 'e <= 7. atom('e) -> CPtrCmpOp
diff --git a/cheri/sail_latex/sailCapCauseReg.tex b/cheri/sail_latex/sailCapCauseReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailCapCauseReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailCapEx.tex b/cheri/sail_latex/sailCapEx.tex
deleted file mode 100644
index 636c85c9..00000000
--- a/cheri/sail_latex/sailCapEx.tex
+++ /dev/null
@@ -1,25 +0,0 @@
-enum CapEx = {
- CapEx_None,
- CapEx_LengthViolation,
- CapEx_TagViolation,
- CapEx_SealViolation,
- CapEx_TypeViolation,
- CapEx_CallTrap,
- CapEx_ReturnTrap,
- CapEx_TSSUnderFlow,
- CapEx_UserDefViolation,
- CapEx_TLBNoStoreCap,
- CapEx_InexactBounds,
- CapEx_GlobalViolation,
- CapEx_PermitExecuteViolation,
- CapEx_PermitLoadViolation,
- CapEx_PermitStoreViolation,
- CapEx_PermitLoadCapViolation,
- CapEx_PermitStoreCapViolation,
- CapEx_PermitStoreLocalCapViolation,
- CapEx_PermitSealViolation,
- CapEx_AccessSystemRegsViolation,
- CapEx_PermitCCallViolation,
- CapEx_AccessCCallIDCViolation,
- CapEx_PermitUnsealViolation
-}
diff --git a/cheri/sail_latex/sailCapExCode.tex b/cheri/sail_latex/sailCapExCode.tex
deleted file mode 100644
index 3611e1b8..00000000
--- a/cheri/sail_latex/sailCapExCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-val CapExCode : CapEx -> bits(8)
diff --git a/cheri/sail_latex/sailCapExofnum.tex b/cheri/sail_latex/sailCapExofnum.tex
deleted file mode 100644
index dec981a6..00000000
--- a/cheri/sail_latex/sailCapExofnum.tex
+++ /dev/null
@@ -1 +0,0 @@
-val CapEx_of_num : forall ('e : Int), 0 <= 'e & 'e <= 22. atom('e) -> CapEx
diff --git a/cheri/sail_latex/sailCapLen.tex b/cheri/sail_latex/sailCapLen.tex
deleted file mode 100644
index 812f45ff..00000000
--- a/cheri/sail_latex/sailCapLen.tex
+++ /dev/null
@@ -1 +0,0 @@
-type CapLen = range(0, 2 ^ 65)
diff --git a/cheri/sail_latex/sailCapReg.tex b/cheri/sail_latex/sailCapReg.tex
deleted file mode 100644
index f217492a..00000000
--- a/cheri/sail_latex/sailCapReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-type CapReg = #\hyperref[zbits]{bits}#(257)
diff --git a/cheri/sail_latex/sailCapStruct.tex b/cheri/sail_latex/sailCapStruct.tex
deleted file mode 100644
index 4b9a3386..00000000
--- a/cheri/sail_latex/sailCapStruct.tex
+++ /dev/null
@@ -1,22 +0,0 @@
-struct CapStruct = {
- tag : bool ,
- padding : #\hyperref[zbits]{bits}#(8) ,
- otype : #\hyperref[zbits]{bits}#(24),
- uperms : #\hyperref[zbits]{bits}#(16),
- perm_reserved11_14 : #\hyperref[zbits]{bits}#(4) ,
- access_system_regs : bool ,
- permit_unseal : bool ,
- permit_ccall : bool ,
- permit_seal : bool ,
- permit_store_local_cap : bool ,
- permit_store_cap : bool ,
- permit_load_cap : bool ,
- permit_store : bool ,
- permit_load : bool ,
- permit_execute : bool ,
- global : bool ,
- sealed : bool ,
- address : #\hyperref[zbits]{bits}#(64),
- base : #\hyperref[zbits]{bits}#(64),
- length : #\hyperref[zbits]{bits}#(64),
-}
diff --git a/cheri/sail_latex/sailCauseReg.tex b/cheri/sail_latex/sailCauseReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailCauseReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailClearRegSet.tex b/cheri/sail_latex/sailClearRegSet.tex
deleted file mode 100644
index c04ea7d4..00000000
--- a/cheri/sail_latex/sailClearRegSet.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-enum ClearRegSet = {
-GPLo,
-GPHi,
-CLo,
-CHi
-}
diff --git a/cheri/sail_latex/sailClearRegSetofnum.tex b/cheri/sail_latex/sailClearRegSetofnum.tex
deleted file mode 100644
index c73d36d9..00000000
--- a/cheri/sail_latex/sailClearRegSetofnum.tex
+++ /dev/null
@@ -1 +0,0 @@
-val ClearRegSet_of_num : forall ('e : Int), 0 <= 'e & 'e <= 3. atom('e) -> ClearRegSet
diff --git a/cheri/sail_latex/sailComparison.tex b/cheri/sail_latex/sailComparison.tex
deleted file mode 100644
index 083fc498..00000000
--- a/cheri/sail_latex/sailComparison.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-enum Comparison = {
- EQ, /* equal */
- NE, /* not equal */
- GE, /* signed greater than or equal */
- GEU,/* unsigned greater than or equal */
- GT, /* signed strictly greater than */
- LE, /* signed less than or equal */
- LT, /* signed strictly less than */
- LTU /* unsigned less than or qual */
-}
diff --git a/cheri/sail_latex/sailComparisonofnum.tex b/cheri/sail_latex/sailComparisonofnum.tex
deleted file mode 100644
index 02c9c48e..00000000
--- a/cheri/sail_latex/sailComparisonofnum.tex
+++ /dev/null
@@ -1 +0,0 @@
-val Comparison_of_num : forall ('e : Int), 0 <= 'e & 'e <= 7. atom('e) -> Comparison
diff --git a/cheri/sail_latex/sailContextReg.tex b/cheri/sail_latex/sailContextReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailContextReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailERETHook.tex b/cheri/sail_latex/sailERETHook.tex
deleted file mode 100644
index 8eadde7b..00000000
--- a/cheri/sail_latex/sailERETHook.tex
+++ /dev/null
@@ -1 +0,0 @@
-val ERETHook : unit -> unit effect {rreg, wreg}
diff --git a/cheri/sail_latex/sailException.tex b/cheri/sail_latex/sailException.tex
deleted file mode 100644
index 800328ec..00000000
--- a/cheri/sail_latex/sailException.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-enum Exception =
-{
- Interrupt, TLBMod, TLBL, TLBS, AdEL, AdES, Sys, Bp, ResI, CpU, Ov, Tr, C2E, C2Trap,
- XTLBRefillL, XTLBRefillS, XTLBInvL, XTLBInvS, MCheck
-}
diff --git a/cheri/sail_latex/sailExceptionCode.tex b/cheri/sail_latex/sailExceptionCode.tex
deleted file mode 100644
index 395b9670..00000000
--- a/cheri/sail_latex/sailExceptionCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-val ExceptionCode : Exception -> bits(5)
diff --git a/cheri/sail_latex/sailExceptionofnum.tex b/cheri/sail_latex/sailExceptionofnum.tex
deleted file mode 100644
index 394ae4e1..00000000
--- a/cheri/sail_latex/sailExceptionofnum.tex
+++ /dev/null
@@ -1 +0,0 @@
-val Exception_of_num : forall ('e : Int), 0 <= 'e & 'e <= 18. atom('e) -> Exception
diff --git a/cheri/sail_latex/sailMAX.tex b/cheri/sail_latex/sailMAX.tex
deleted file mode 100644
index 07bace3b..00000000
--- a/cheri/sail_latex/sailMAX.tex
+++ /dev/null
@@ -1 +0,0 @@
-val MAX : forall 'n. atom('n) -> atom(2 ^ 'n - 1) effect pure
diff --git a/cheri/sail_latex/sailMEMea.tex b/cheri/sail_latex/sailMEMea.tex
deleted file mode 100644
index c5225019..00000000
--- a/cheri/sail_latex/sailMEMea.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val MEMea = {lem: "MEMea"} : forall 'n.
- ( #\hyperref[zbits]{bits}#(64) , atom('n)) -> unit effect { eamem }
diff --git a/cheri/sail_latex/sailMEMeaconditional.tex b/cheri/sail_latex/sailMEMeaconditional.tex
deleted file mode 100644
index d966b986..00000000
--- a/cheri/sail_latex/sailMEMeaconditional.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val MEMea_conditional = {lem: "MEMea_conditional"} : forall 'n.
- ( #\hyperref[zbits]{bits}#(64) , atom('n)) -> unit effect { eamem }
diff --git a/cheri/sail_latex/sailMEMr.tex b/cheri/sail_latex/sailMEMr.tex
deleted file mode 100644
index 75ddc94c..00000000
--- a/cheri/sail_latex/sailMEMr.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val MEMr = {lem: "MEMr"} : forall 'n, 'n >= 0.
- ( #\hyperref[zbits]{bits}#(64) , atom('n) ) -> (#\hyperref[zbits]{bits}#(8 * 'n)) effect { rmem }
diff --git a/cheri/sail_latex/sailMEMrreserve.tex b/cheri/sail_latex/sailMEMrreserve.tex
deleted file mode 100644
index 11b4f3db..00000000
--- a/cheri/sail_latex/sailMEMrreserve.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val MEMr_reserve = {lem: "MEMr_reserve"} : forall 'n, 'n >= 0.
- ( #\hyperref[zbits]{bits}#(64) , atom('n) ) -> (#\hyperref[zbits]{bits}#(8 * 'n)) effect { rmem }
diff --git a/cheri/sail_latex/sailMEMrreservewrapper.tex b/cheri/sail_latex/sailMEMrreservewrapper.tex
deleted file mode 100644
index b12713a2..00000000
--- a/cheri/sail_latex/sailMEMrreservewrapper.tex
+++ /dev/null
@@ -1 +0,0 @@
-val MEMr_reserve_wrapper : forall 'n, 1 <= 'n <= 8 . ( #\hyperref[zbits]{bits}#(64) , atom('n) ) -> (#\hyperref[zbits]{bits}#(8 * 'n)) effect { rmem }
diff --git a/cheri/sail_latex/sailMEMrtag.tex b/cheri/sail_latex/sailMEMrtag.tex
deleted file mode 100644
index 9bcda0f4..00000000
--- a/cheri/sail_latex/sailMEMrtag.tex
+++ /dev/null
@@ -1 +0,0 @@
-val MEMr_tag = "read_tag_bool" : #\hyperref[zbits]{bits}#(64) -> bool effect { rmemt }
diff --git a/cheri/sail_latex/sailMEMrtagged.tex b/cheri/sail_latex/sailMEMrtagged.tex
deleted file mode 100644
index 92c90c7b..00000000
--- a/cheri/sail_latex/sailMEMrtagged.tex
+++ /dev/null
@@ -1 +0,0 @@
-val MEMr_tagged : #\hyperref[zbits]{bits}#(64) -> (bool, #\hyperref[zbits]{bits}#('cap_size * 8)) effect { escape, rmem, rmemt }
diff --git a/cheri/sail_latex/sailMEMrtaggedreserve.tex b/cheri/sail_latex/sailMEMrtaggedreserve.tex
deleted file mode 100644
index fb080251..00000000
--- a/cheri/sail_latex/sailMEMrtaggedreserve.tex
+++ /dev/null
@@ -1 +0,0 @@
-val MEMr_tagged_reserve : #\hyperref[zbits]{bits}#(64) -> (bool, #\hyperref[zbits]{bits}#('cap_size * 8)) effect { escape, rmem, rmemt }
diff --git a/cheri/sail_latex/sailMEMrwrapper.tex b/cheri/sail_latex/sailMEMrwrapper.tex
deleted file mode 100644
index 7c8ce2fd..00000000
--- a/cheri/sail_latex/sailMEMrwrapper.tex
+++ /dev/null
@@ -1 +0,0 @@
-val MEMr_wrapper : forall 'n, 1 <= 'n <= 8 . (#\hyperref[zbits]{bits}#(64), atom('n)) -> #\hyperref[zbits]{bits}#(8*'n) effect {rmem, rreg, wreg}
diff --git a/cheri/sail_latex/sailMEMsync.tex b/cheri/sail_latex/sailMEMsync.tex
deleted file mode 100644
index 5a66f5db..00000000
--- a/cheri/sail_latex/sailMEMsync.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val MEM_sync = {lem: "MEM_sync"} :
- unit -> unit effect { barr }
diff --git a/cheri/sail_latex/sailMEMval.tex b/cheri/sail_latex/sailMEMval.tex
deleted file mode 100644
index 67c34697..00000000
--- a/cheri/sail_latex/sailMEMval.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val MEMval = {lem: "MEMval"} : forall 'n.
- ( #\hyperref[zbits]{bits}#(64) , atom('n), #\hyperref[zbits]{bits}#(8*'n)) -> unit effect { wmv }
diff --git a/cheri/sail_latex/sailMEMvalconditional.tex b/cheri/sail_latex/sailMEMvalconditional.tex
deleted file mode 100644
index 9e0029e5..00000000
--- a/cheri/sail_latex/sailMEMvalconditional.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val MEMval_conditional = {lem: "MEMval_conditional"} : forall 'n.
- ( #\hyperref[zbits]{bits}#(64) , atom('n), #\hyperref[zbits]{bits}#(8*'n)) -> bool effect { wmv }
diff --git a/cheri/sail_latex/sailMEMwconditionalwrapper.tex b/cheri/sail_latex/sailMEMwconditionalwrapper.tex
deleted file mode 100644
index 1d7cb3e8..00000000
--- a/cheri/sail_latex/sailMEMwconditionalwrapper.tex
+++ /dev/null
@@ -1 +0,0 @@
-val MEMw_conditional_wrapper : forall 'n, 'n >= 1. (#\hyperref[zbits]{bits}#(64), atom('n), #\hyperref[zbits]{bits}#(8 * 'n)) -> bool effect {escape, wmv, wmvt, eamem}
diff --git a/cheri/sail_latex/sailMEMwtag.tex b/cheri/sail_latex/sailMEMwtag.tex
deleted file mode 100644
index 1319a340..00000000
--- a/cheri/sail_latex/sailMEMwtag.tex
+++ /dev/null
@@ -1 +0,0 @@
-val MEMw_tag = "write_tag_bool" : (#\hyperref[zbits]{bits}#(64) , bool) -> unit effect { wmvt }
diff --git a/cheri/sail_latex/sailMEMwtagged.tex b/cheri/sail_latex/sailMEMwtagged.tex
deleted file mode 100644
index 4f8fd683..00000000
--- a/cheri/sail_latex/sailMEMwtagged.tex
+++ /dev/null
@@ -1 +0,0 @@
-val MEMw_tagged : (#\hyperref[zbits]{bits}#(64), bool, #\hyperref[zbits]{bits}#('cap_size * 8)) -> unit effect { escape, eamem, wmv, wmvt }
diff --git a/cheri/sail_latex/sailMEMwtaggedconditional.tex b/cheri/sail_latex/sailMEMwtaggedconditional.tex
deleted file mode 100644
index f5ef7e17..00000000
--- a/cheri/sail_latex/sailMEMwtaggedconditional.tex
+++ /dev/null
@@ -1 +0,0 @@
-val MEMw_tagged_conditional : (#\hyperref[zbits]{bits}#(64), bool, #\hyperref[zbits]{bits}#('cap_size * 8)) -> bool effect { escape, eamem, wmv, wmvt }
diff --git a/cheri/sail_latex/sailMEMwwrapper.tex b/cheri/sail_latex/sailMEMwwrapper.tex
deleted file mode 100644
index db438818..00000000
--- a/cheri/sail_latex/sailMEMwwrapper.tex
+++ /dev/null
@@ -1 +0,0 @@
-val MEMw_wrapper : forall 'n, 'n >= 1. (#\hyperref[zbits]{bits}#(64), atom('n), #\hyperref[zbits]{bits}#(8 * 'n)) -> unit effect {escape, wmv, wmvt, wreg, eamem}
diff --git a/cheri/sail_latex/sailMIPSread.tex b/cheri/sail_latex/sailMIPSread.tex
deleted file mode 100644
index 92ca59cc..00000000
--- a/cheri/sail_latex/sailMIPSread.tex
+++ /dev/null
@@ -1 +0,0 @@
-val __MIPS_read : forall 'n, 'n >= 0. (#\hyperref[zbits]{bits}#(64), atom('n)) -> #\hyperref[zbits]{bits}#(8 * 'n) effect {rmem}
diff --git a/cheri/sail_latex/sailMIPSwrite.tex b/cheri/sail_latex/sailMIPSwrite.tex
deleted file mode 100644
index cc67fa20..00000000
--- a/cheri/sail_latex/sailMIPSwrite.tex
+++ /dev/null
@@ -1 +0,0 @@
-val __MIPS_write : forall 'n. (#\hyperref[zbits]{bits}#(64), atom('n), #\hyperref[zbits]{bits}#(8 * 'n)) -> unit effect {wmv}
diff --git a/cheri/sail_latex/sailMemAccessType.tex b/cheri/sail_latex/sailMemAccessType.tex
deleted file mode 100644
index 436b40bc..00000000
--- a/cheri/sail_latex/sailMemAccessType.tex
+++ /dev/null
@@ -1 +0,0 @@
-enum MemAccessType = {Instruction, LoadData, StoreData}
diff --git a/cheri/sail_latex/sailMemAccessTypeofnum.tex b/cheri/sail_latex/sailMemAccessTypeofnum.tex
deleted file mode 100644
index 9147f6e3..00000000
--- a/cheri/sail_latex/sailMemAccessTypeofnum.tex
+++ /dev/null
@@ -1 +0,0 @@
-val MemAccessType_of_num : forall ('e : Int), 0 <= 'e & 'e <= 2. atom('e) -> MemAccessType
diff --git a/cheri/sail_latex/sailMkCapCauseReg.tex b/cheri/sail_latex/sailMkCapCauseReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailMkCapCauseReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailMkCauseReg.tex b/cheri/sail_latex/sailMkCauseReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailMkCauseReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailMkContextReg.tex b/cheri/sail_latex/sailMkContextReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailMkContextReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailMkStatusReg.tex b/cheri/sail_latex/sailMkStatusReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailMkStatusReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailMkTLBEntry.tex b/cheri/sail_latex/sailMkTLBEntry.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailMkTLBEntry.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailMkTLBEntryHiReg.tex b/cheri/sail_latex/sailMkTLBEntryHiReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailMkTLBEntryHiReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailMkTLBEntryLoReg.tex b/cheri/sail_latex/sailMkTLBEntryLoReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailMkTLBEntryLoReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailMkXContextReg.tex b/cheri/sail_latex/sailMkXContextReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailMkXContextReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailNotWordVal.tex b/cheri/sail_latex/sailNotWordVal.tex
deleted file mode 100644
index e6689c14..00000000
--- a/cheri/sail_latex/sailNotWordVal.tex
+++ /dev/null
@@ -1 +0,0 @@
-val NotWordVal : #\hyperref[zbits]{bits}#(64) -> bool effect pure
diff --git a/cheri/sail_latex/sailReadRAM.tex b/cheri/sail_latex/sailReadRAM.tex
deleted file mode 100644
index 68d629a6..00000000
--- a/cheri/sail_latex/sailReadRAM.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val __ReadRAM = "read_ram" : forall 'n 'm, 'n >= 0.
- (atom('m), atom('n), #\hyperref[zbits]{bits}#('m), #\hyperref[zbits]{bits}#('m)) -> #\hyperref[zbits]{bits}#(8 * 'n) effect {rmem}
diff --git a/cheri/sail_latex/sailSignalException.tex b/cheri/sail_latex/sailSignalException.tex
deleted file mode 100644
index 44205587..00000000
--- a/cheri/sail_latex/sailSignalException.tex
+++ /dev/null
@@ -1 +0,0 @@
-val SignalException : forall ('o : Type) . Exception -> 'o effect {escape, rreg, wreg}
diff --git a/cheri/sail_latex/sailSignalExceptionBadAddr.tex b/cheri/sail_latex/sailSignalExceptionBadAddr.tex
deleted file mode 100644
index f54e77e7..00000000
--- a/cheri/sail_latex/sailSignalExceptionBadAddr.tex
+++ /dev/null
@@ -1 +0,0 @@
-val SignalExceptionBadAddr : forall ('o : Type) . (Exception, #\hyperref[zbits]{bits}#(64)) -> 'o effect {escape, rreg, wreg}
diff --git a/cheri/sail_latex/sailSignalExceptionMIPS.tex b/cheri/sail_latex/sailSignalExceptionMIPS.tex
deleted file mode 100644
index ce88e5d6..00000000
--- a/cheri/sail_latex/sailSignalExceptionMIPS.tex
+++ /dev/null
@@ -1 +0,0 @@
-val SignalExceptionMIPS : forall ('o : Type) . (Exception, #\hyperref[zbits]{bits}#(64)) -> 'o effect {escape, rreg, wreg}
diff --git a/cheri/sail_latex/sailSignalExceptionTLB.tex b/cheri/sail_latex/sailSignalExceptionTLB.tex
deleted file mode 100644
index 08036f99..00000000
--- a/cheri/sail_latex/sailSignalExceptionTLB.tex
+++ /dev/null
@@ -1 +0,0 @@
-val SignalExceptionTLB : forall ('o : Type) . (Exception, #\hyperref[zbits]{bits}#(64)) -> 'o effect {escape, rreg, wreg}
diff --git a/cheri/sail_latex/sailStatusReg.tex b/cheri/sail_latex/sailStatusReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailStatusReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailTLBEntry.tex b/cheri/sail_latex/sailTLBEntry.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailTLBEntry.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailTLBEntryHiReg.tex b/cheri/sail_latex/sailTLBEntryHiReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailTLBEntryHiReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailTLBEntryLoReg.tex b/cheri/sail_latex/sailTLBEntryLoReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailTLBEntryLoReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailTLBIndexT.tex b/cheri/sail_latex/sailTLBIndexT.tex
deleted file mode 100644
index c51bd6bb..00000000
--- a/cheri/sail_latex/sailTLBIndexT.tex
+++ /dev/null
@@ -1 +0,0 @@
-type TLBIndexT = (#\hyperref[zbits]{bits}#(6))
diff --git a/cheri/sail_latex/sailTLBTranslate.tex b/cheri/sail_latex/sailTLBTranslate.tex
deleted file mode 100644
index d09725f9..00000000
--- a/cheri/sail_latex/sailTLBTranslate.tex
+++ /dev/null
@@ -1 +0,0 @@
-val TLBTranslate : (#\hyperref[zbits]{bits}#(64), MemAccessType) -> #\hyperref[zbits]{bits}#(64) effect {rreg, wreg, escape, undef}
diff --git a/cheri/sail_latex/sailTLBTranslateC.tex b/cheri/sail_latex/sailTLBTranslateC.tex
deleted file mode 100644
index 0d99ab7e..00000000
--- a/cheri/sail_latex/sailTLBTranslateC.tex
+++ /dev/null
@@ -1 +0,0 @@
-val TLBTranslateC : (#\hyperref[zbits]{bits}#(64), MemAccessType) -> (#\hyperref[zbits]{bits}#(64), bool) effect {escape, rreg, undef, wreg}
diff --git a/cheri/sail_latex/sailTLBTranslatetwo.tex b/cheri/sail_latex/sailTLBTranslatetwo.tex
deleted file mode 100644
index 310675f4..00000000
--- a/cheri/sail_latex/sailTLBTranslatetwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-val TLBTranslate2 : (#\hyperref[zbits]{bits}#(64), MemAccessType) -> (#\hyperref[zbits]{bits}#(64), bool) effect {rreg, wreg, undef, escape}
diff --git a/cheri/sail_latex/sailTLBWriteEntry.tex b/cheri/sail_latex/sailTLBWriteEntry.tex
deleted file mode 100644
index 84d4fa70..00000000
--- a/cheri/sail_latex/sailTLBWriteEntry.tex
+++ /dev/null
@@ -1 +0,0 @@
-val TLBWriteEntry : TLBIndexT -> unit effect {rreg, wreg, escape}
diff --git a/cheri/sail_latex/sailTranslatePC.tex b/cheri/sail_latex/sailTranslatePC.tex
deleted file mode 100644
index c962c7e1..00000000
--- a/cheri/sail_latex/sailTranslatePC.tex
+++ /dev/null
@@ -1 +0,0 @@
-val TranslatePC : #\hyperref[zbits]{bits}#(64) -> #\hyperref[zbits]{bits}#(64) effect {rreg, wreg, escape, undef}
diff --git a/cheri/sail_latex/sailWordType.tex b/cheri/sail_latex/sailWordType.tex
deleted file mode 100644
index 632efe95..00000000
--- a/cheri/sail_latex/sailWordType.tex
+++ /dev/null
@@ -1 +0,0 @@
-enum WordType = { B, H, W, D}
diff --git a/cheri/sail_latex/sailWordTypeUnaligned.tex b/cheri/sail_latex/sailWordTypeUnaligned.tex
deleted file mode 100644
index 3724733e..00000000
--- a/cheri/sail_latex/sailWordTypeUnaligned.tex
+++ /dev/null
@@ -1 +0,0 @@
-enum WordTypeUnaligned = { WL, WR, DL, DR }
diff --git a/cheri/sail_latex/sailWordTypeUnalignedofnum.tex b/cheri/sail_latex/sailWordTypeUnalignedofnum.tex
deleted file mode 100644
index a36d9748..00000000
--- a/cheri/sail_latex/sailWordTypeUnalignedofnum.tex
+++ /dev/null
@@ -1 +0,0 @@
-val WordTypeUnaligned_of_num : forall ('e : Int), 0 <= 'e & 'e <= 3. atom('e) -> WordTypeUnaligned
diff --git a/cheri/sail_latex/sailWordTypeofnum.tex b/cheri/sail_latex/sailWordTypeofnum.tex
deleted file mode 100644
index 85872610..00000000
--- a/cheri/sail_latex/sailWordTypeofnum.tex
+++ /dev/null
@@ -1 +0,0 @@
-val WordType_of_num : forall ('e : Int), 0 <= 'e & 'e <= 3. atom('e) -> WordType
diff --git a/cheri/sail_latex/sailWriteRAM.tex b/cheri/sail_latex/sailWriteRAM.tex
deleted file mode 100644
index 2ed4aca2..00000000
--- a/cheri/sail_latex/sailWriteRAM.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val __WriteRAM = "write_ram" : forall 'n 'm.
- (atom('m), atom('n), #\hyperref[zbits]{bits}#('m), #\hyperref[zbits]{bits}#('m), #\hyperref[zbits]{bits}#(8 * 'n)) -> bool effect {wmv}
diff --git a/cheri/sail_latex/sailXContextReg.tex b/cheri/sail_latex/sailXContextReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailXContextReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailabsatom.tex b/cheri/sail_latex/sailabsatom.tex
deleted file mode 100644
index 5164ef32..00000000
--- a/cheri/sail_latex/sailabsatom.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-val abs_atom = {
- smt : "abs",
- ocaml: "abs_int",
- lem: "abs_int",
- c: "abs_int",
- coq: "abs_with_eq"
-} : forall 'n. atom('n) -> {'o, 'o = #\hyperref[zabszyatom]{abs\_atom}#('n). atom('o)}
diff --git a/cheri/sail_latex/sailabsint.tex b/cheri/sail_latex/sailabsint.tex
deleted file mode 100644
index d3b67cfb..00000000
--- a/cheri/sail_latex/sailabsint.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val abs_int = {
- smt : "abs",
- ocaml: "abs_int",
- lem: "abs_int",
- coq: "Z.abs"
-} : (int, int) -> int
diff --git a/cheri/sail_latex/sailaddatom.tex b/cheri/sail_latex/sailaddatom.tex
deleted file mode 100644
index 8b6ac810..00000000
--- a/cheri/sail_latex/sailaddatom.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val add_atom = {ocaml: "add_int", lem: "integerAdd", c: "add_int", coq: "Z.add"} : forall 'n 'm.
- (atom('n), atom('m)) -> atom('n + 'm)
diff --git a/cheri/sail_latex/sailaddbits.tex b/cheri/sail_latex/sailaddbits.tex
deleted file mode 100644
index 95f653d1..00000000
--- a/cheri/sail_latex/sailaddbits.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val add_bits = {
- ocaml: "add_vec",
- lem: "add_vec",
- c: "add_bits",
- coq: "add_vec"
-} : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailaddbitsint.tex b/cheri/sail_latex/sailaddbitsint.tex
deleted file mode 100644
index ee9a8aa2..00000000
--- a/cheri/sail_latex/sailaddbitsint.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val add_bits_int = {
- ocaml: "add_vec_int",
- lem: "add_vec_int",
- c: "add_bits_int",
- coq: "add_vec_int"
-} : forall 'n. (#\hyperref[zbits]{bits}#('n), int) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailaddint.tex b/cheri/sail_latex/sailaddint.tex
deleted file mode 100644
index 9fe5b078..00000000
--- a/cheri/sail_latex/sailaddint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val add_int = {ocaml: "add_int", lem: "integerAdd", c: "add_int", coq: "Z.add"} : (int, int) -> int
diff --git a/cheri/sail_latex/sailaddrWrapper.tex b/cheri/sail_latex/sailaddrWrapper.tex
deleted file mode 100644
index 506f9f99..00000000
--- a/cheri/sail_latex/sailaddrWrapper.tex
+++ /dev/null
@@ -1 +0,0 @@
-val addrWrapper : (#\hyperref[zbits]{bits}#(64), MemAccessType, WordType) -> #\hyperref[zbits]{bits}#(64) effect {rreg, wreg, escape}
diff --git a/cheri/sail_latex/sailaddrWrapperUnaligned.tex b/cheri/sail_latex/sailaddrWrapperUnaligned.tex
deleted file mode 100644
index bb266a52..00000000
--- a/cheri/sail_latex/sailaddrWrapperUnaligned.tex
+++ /dev/null
@@ -1 +0,0 @@
-val addrWrapperUnaligned : (#\hyperref[zbits]{bits}#(64), MemAccessType, WordTypeUnaligned) -> #\hyperref[zbits]{bits}#(64) effect {rreg, wreg, escape}
diff --git a/cheri/sail_latex/sailaddrange.tex b/cheri/sail_latex/sailaddrange.tex
deleted file mode 100644
index fbf498b1..00000000
--- a/cheri/sail_latex/sailaddrange.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val add_range = {ocaml: "add_int", lem: "integerAdd", coq: "add_range", c: "add_int"} : forall 'n 'm 'o 'p.
- (range('n, 'm), range('o, 'p)) -> range('n + 'o, 'm + 'p)
diff --git a/cheri/sail_latex/sailaddvec.tex b/cheri/sail_latex/sailaddvec.tex
deleted file mode 100644
index bb625afe..00000000
--- a/cheri/sail_latex/sailaddvec.tex
+++ /dev/null
@@ -1 +0,0 @@
-val add_vec = "add_vec" : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailaddvecint.tex b/cheri/sail_latex/sailaddvecint.tex
deleted file mode 100644
index 189ad4aa..00000000
--- a/cheri/sail_latex/sailaddvecint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val add_vec_int = "add_vec_int" : forall 'n. (#\hyperref[zbits]{bits}#('n), int) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailandbits.tex b/cheri/sail_latex/sailandbits.tex
deleted file mode 100644
index 8e35bd5b..00000000
--- a/cheri/sail_latex/sailandbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val and_bits = {c:"and_bits", _: "and_vec"} : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailandbool.tex b/cheri/sail_latex/sailandbool.tex
deleted file mode 100644
index 926dce9f..00000000
--- a/cheri/sail_latex/sailandbool.tex
+++ /dev/null
@@ -1 +0,0 @@
-val and_bool = {coq: "andb", _: "and_bool"} : (bool, bool) -> bool
diff --git a/cheri/sail_latex/sailappend.tex b/cheri/sail_latex/sailappend.tex
deleted file mode 100644
index 56c12116..00000000
--- a/cheri/sail_latex/sailappend.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload append = {bitvector_concat} \ No newline at end of file
diff --git a/cheri/sail_latex/sailappendsixfour.tex b/cheri/sail_latex/sailappendsixfour.tex
deleted file mode 100644
index 633593b3..00000000
--- a/cheri/sail_latex/sailappendsixfour.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "append_64" : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#(64)) -> #\hyperref[zbits]{bits}#('n + 64)
diff --git a/cheri/sail_latex/sailbits.tex b/cheri/sail_latex/sailbits.tex
deleted file mode 100644
index 88255b5a..00000000
--- a/cheri/sail_latex/sailbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-type #\hyperref[zbits]{bits}# ('n : Int) = vector('n, dec, bit)
diff --git a/cheri/sail_latex/sailbitstobool.tex b/cheri/sail_latex/sailbitstobool.tex
deleted file mode 100644
index 17cb3483..00000000
--- a/cheri/sail_latex/sailbitstobool.tex
+++ /dev/null
@@ -1 +0,0 @@
-val cast bits_to_bool : #\hyperref[zbits]{bits}#(1) -> bool
diff --git a/cheri/sail_latex/sailbittobool.tex b/cheri/sail_latex/sailbittobool.tex
deleted file mode 100644
index 13a2dfb8..00000000
--- a/cheri/sail_latex/sailbittobool.tex
+++ /dev/null
@@ -1 +0,0 @@
-val cast bit_to_bool : bit -> bool
diff --git a/cheri/sail_latex/sailbitvectoraccess.tex b/cheri/sail_latex/sailbitvectoraccess.tex
deleted file mode 100644
index 4bb98eb8..00000000
--- a/cheri/sail_latex/sailbitvectoraccess.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val bitvector_access = {
- ocaml: "access",
- lem: "access_vec_dec",
- coq: "access_vec_dec",
- c: "vector_access"
-} : forall ('n : Int), 'n >= 0. (#\hyperref[zbits]{bits}#('n), int) -> bit
diff --git a/cheri/sail_latex/sailbitvectorconcat.tex b/cheri/sail_latex/sailbitvectorconcat.tex
deleted file mode 100644
index afc03901..00000000
--- a/cheri/sail_latex/sailbitvectorconcat.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val bitvector_concat = {ocaml: "append", lem: "concat_vec", c: "append", coq: "concat_vec"} : forall ('n : Int) ('m : Int).
- (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('m)) -> #\hyperref[zbits]{bits}#('n + 'm)
diff --git a/cheri/sail_latex/sailbitvectorlength.tex b/cheri/sail_latex/sailbitvectorlength.tex
deleted file mode 100644
index ac601acd..00000000
--- a/cheri/sail_latex/sailbitvectorlength.tex
+++ /dev/null
@@ -1 +0,0 @@
-val bitvector_length = {coq: "length_mword", _:"length"} : forall 'n. #\hyperref[zbits]{bits}#('n) -> atom('n)
diff --git a/cheri/sail_latex/sailbitvectorupdate.tex b/cheri/sail_latex/sailbitvectorupdate.tex
deleted file mode 100644
index 6524146e..00000000
--- a/cheri/sail_latex/sailbitvectorupdate.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val bitvector_update = {
- ocaml: "update",
- lem: "update_vec_dec",
- coq: "update_vec_dec",
- c: "vector_update"
-} : forall 'n, 'n >= 0. (#\hyperref[zbits]{bits}#('n), int, bit) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailbooltobits.tex b/cheri/sail_latex/sailbooltobits.tex
deleted file mode 100644
index 711ab763..00000000
--- a/cheri/sail_latex/sailbooltobits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val cast bool_to_bits : bool -> #\hyperref[zbits]{bits}#(1)
diff --git a/cheri/sail_latex/sailcapRegToCapStruct.tex b/cheri/sail_latex/sailcapRegToCapStruct.tex
deleted file mode 100644
index bd64d554..00000000
--- a/cheri/sail_latex/sailcapRegToCapStruct.tex
+++ /dev/null
@@ -1 +0,0 @@
-val capRegToCapStruct : CapReg -> CapStruct
diff --git a/cheri/sail_latex/sailcapStructToCapReg.tex b/cheri/sail_latex/sailcapStructToCapReg.tex
deleted file mode 100644
index b5409845..00000000
--- a/cheri/sail_latex/sailcapStructToCapReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-val capStructToCapReg : CapStruct -> CapReg
diff --git a/cheri/sail_latex/sailcapStructToMemBits.tex b/cheri/sail_latex/sailcapStructToMemBits.tex
deleted file mode 100644
index 36f3a22b..00000000
--- a/cheri/sail_latex/sailcapStructToMemBits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val capStructToMemBits : CapStruct -> bits(256)
diff --git a/cheri/sail_latex/sailcapStructToMemBitstwofivesix.tex b/cheri/sail_latex/sailcapStructToMemBitstwofivesix.tex
deleted file mode 100644
index dacd98f8..00000000
--- a/cheri/sail_latex/sailcapStructToMemBitstwofivesix.tex
+++ /dev/null
@@ -1 +0,0 @@
-val capStructToMemBits256 : CapStruct -> bits(256)
diff --git a/cheri/sail_latex/sailcapToString.tex b/cheri/sail_latex/sailcapToString.tex
deleted file mode 100644
index 554d4320..00000000
--- a/cheri/sail_latex/sailcapToString.tex
+++ /dev/null
@@ -1 +0,0 @@
-val capToString : CapStruct -> string effect {escape}
diff --git a/cheri/sail_latex/sailcastunitvec.tex b/cheri/sail_latex/sailcastunitvec.tex
deleted file mode 100644
index e0391ded..00000000
--- a/cheri/sail_latex/sailcastunitvec.tex
+++ /dev/null
@@ -1 +0,0 @@
-val cast cast_unit_vec : bit -> #\hyperref[zbits]{bits}#(1)
diff --git a/cheri/sail_latex/sailcheckCPtwousable.tex b/cheri/sail_latex/sailcheckCPtwousable.tex
deleted file mode 100644
index bfdca829..00000000
--- a/cheri/sail_latex/sailcheckCPtwousable.tex
+++ /dev/null
@@ -1 +0,0 @@
-val checkCP2usable : unit -> unit effect {rreg, wreg, escape}
diff --git a/cheri/sail_latex/sailcheckCPzeroAccess.tex b/cheri/sail_latex/sailcheckCPzeroAccess.tex
deleted file mode 100644
index facf1a49..00000000
--- a/cheri/sail_latex/sailcheckCPzeroAccess.tex
+++ /dev/null
@@ -1 +0,0 @@
-val checkCP0Access : unit->unit effect{escape, rreg, wreg}
diff --git a/cheri/sail_latex/sailcheckDDCPerms.tex b/cheri/sail_latex/sailcheckDDCPerms.tex
deleted file mode 100644
index f8598091..00000000
--- a/cheri/sail_latex/sailcheckDDCPerms.tex
+++ /dev/null
@@ -1 +0,0 @@
-val checkDDCPerms : (CapStruct, MemAccessType) -> unit effect {escape, rreg, wreg}
diff --git a/cheri/sail_latex/sailcompare.tex b/cheri/sail_latex/sailcompare.tex
deleted file mode 100644
index 487ee094..00000000
--- a/cheri/sail_latex/sailcompare.tex
+++ /dev/null
@@ -1 +0,0 @@
-val compare : (Comparison, #\hyperref[zbits]{bits}#(64), #\hyperref[zbits]{bits}#(64)) -> bool
diff --git a/cheri/sail_latex/sailconcatstr.tex b/cheri/sail_latex/sailconcatstr.tex
deleted file mode 100644
index 07556728..00000000
--- a/cheri/sail_latex/sailconcatstr.tex
+++ /dev/null
@@ -1 +0,0 @@
-val concat_str = {lem: "stringAppend", coq: "String.append", _: "concat_str"} : (string, string) -> string
diff --git a/cheri/sail_latex/sailcptwonextpc.tex b/cheri/sail_latex/sailcptwonextpc.tex
deleted file mode 100644
index dca02a22..00000000
--- a/cheri/sail_latex/sailcptwonextpc.tex
+++ /dev/null
@@ -1 +0,0 @@
-val cp2_next_pc: unit -> unit effect {rreg, wreg}
diff --git a/cheri/sail_latex/saildecode.tex b/cheri/sail_latex/saildecode.tex
deleted file mode 100644
index 0dc95714..00000000
--- a/cheri/sail_latex/saildecode.tex
+++ /dev/null
@@ -1 +0,0 @@
-val decode : #\hyperref[zbits]{bits}#(32) -> #\hyperref[zoption]{option}#(ast) effect pure
diff --git a/cheri/sail_latex/saildecodefailure.tex b/cheri/sail_latex/saildecodefailure.tex
deleted file mode 100644
index 454da4c5..00000000
--- a/cheri/sail_latex/saildecodefailure.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-enum decode_failure = {
- no_matching_pattern,
- unsupported_instruction,
- illegal_instruction,
- internal_error
-}
diff --git a/cheri/sail_latex/saildecodefailureofnum.tex b/cheri/sail_latex/saildecodefailureofnum.tex
deleted file mode 100644
index 318b7b9d..00000000
--- a/cheri/sail_latex/saildecodefailureofnum.tex
+++ /dev/null
@@ -1 +0,0 @@
-val decode_failure_of_num : forall ('e : Int), 0 <= 'e & 'e <= 3. atom('e) -> decode_failure
diff --git a/cheri/sail_latex/saildiv.tex b/cheri/sail_latex/saildiv.tex
deleted file mode 100644
index 58318fe9..00000000
--- a/cheri/sail_latex/saildiv.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-val div = {
- smt: "div",
- ocaml: "quotient",
- lem: "integerDiv",
- c: "tdiv_int",
- coq: "div_with_eq"
-} : forall 'n 'm. (atom('n), atom('m)) -> {'o, 'o = #\hyperref[zdiv]{div}#('n, 'm). atom('o)}
diff --git a/cheri/sail_latex/saildivint.tex b/cheri/sail_latex/saildivint.tex
deleted file mode 100644
index 34ae6121..00000000
--- a/cheri/sail_latex/saildivint.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-val div_int = {
- smt: "div",
- ocaml: "quotient",
- lem: "integerDiv",
- c: "tdiv_int",
- coq: "Z.quot"
-} : (int, int) -> int
diff --git a/cheri/sail_latex/saildumpcptwostate.tex b/cheri/sail_latex/saildumpcptwostate.tex
deleted file mode 100644
index 46ee6818..00000000
--- a/cheri/sail_latex/saildumpcptwostate.tex
+++ /dev/null
@@ -1 +0,0 @@
-val dump_cp2_state : unit -> unit effect {rreg, escape}
diff --git a/cheri/sail_latex/saileqanything.tex b/cheri/sail_latex/saileqanything.tex
deleted file mode 100644
index 9b5d3c92..00000000
--- a/cheri/sail_latex/saileqanything.tex
+++ /dev/null
@@ -1 +0,0 @@
-val eq_anything = {ocaml: "(#\hyperref[zfun]{fun}# (x, y) -> x = y)", lem: "eq", coq: "generic_eq", _:"eq_anything"} : forall ('a : Type). ('a, 'a) -> bool
diff --git a/cheri/sail_latex/saileqatom.tex b/cheri/sail_latex/saileqatom.tex
deleted file mode 100644
index 0325ab15..00000000
--- a/cheri/sail_latex/saileqatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val eq_atom = {ocaml: "eq_int", lem: "eq", c: "eq_int", coq: "Z.eqb"} : forall 'n 'm. (atom('n), atom('m)) -> bool
diff --git a/cheri/sail_latex/saileqbit.tex b/cheri/sail_latex/saileqbit.tex
deleted file mode 100644
index 205d3436..00000000
--- a/cheri/sail_latex/saileqbit.tex
+++ /dev/null
@@ -1 +0,0 @@
-val eq_bit = { lem : "eq", _ : "eq_bit" } : (bit, bit) -> bool
diff --git a/cheri/sail_latex/saileqbits.tex b/cheri/sail_latex/saileqbits.tex
deleted file mode 100644
index e78ed19a..00000000
--- a/cheri/sail_latex/saileqbits.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val eq_bits = {
- ocaml: "eq_list",
- lem: "eq_vec",
- c: "eq_bits",
- coq: "eq_vec"
-} : forall 'n. (vector('n, dec, bit), vector('n, dec, bit)) -> bool
diff --git a/cheri/sail_latex/saileqbittwo.tex b/cheri/sail_latex/saileqbittwo.tex
deleted file mode 100644
index 59353940..00000000
--- a/cheri/sail_latex/saileqbittwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-val eq_bit2 = "eq_bit" : (bit, bit) -> bool
diff --git a/cheri/sail_latex/saileqbool.tex b/cheri/sail_latex/saileqbool.tex
deleted file mode 100644
index 4d2c346b..00000000
--- a/cheri/sail_latex/saileqbool.tex
+++ /dev/null
@@ -1 +0,0 @@
-val eq_bool = {ocaml: "eq_bool", lem: "eq", c: "eq_bool", coq: "Bool.eqb"} : (bool, bool) -> bool
diff --git a/cheri/sail_latex/saileqint.tex b/cheri/sail_latex/saileqint.tex
deleted file mode 100644
index 4c0462c1..00000000
--- a/cheri/sail_latex/saileqint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val eq_int = {ocaml: "eq_int", lem: "eq", c: "eq_int", coq: "Z.eqb"} : (int, int) -> bool
diff --git a/cheri/sail_latex/saileqrange.tex b/cheri/sail_latex/saileqrange.tex
deleted file mode 100644
index 7f1cd5f2..00000000
--- a/cheri/sail_latex/saileqrange.tex
+++ /dev/null
@@ -1 +0,0 @@
-val eq_range = {ocaml: "eq_int", lem: "eq", c: "eq_int", coq: "eq_range"} : forall 'n 'm 'o 'p. (range('n, 'm), range('o, 'p)) -> bool
diff --git a/cheri/sail_latex/sailexecute.tex b/cheri/sail_latex/sailexecute.tex
deleted file mode 100644
index 69282932..00000000
--- a/cheri/sail_latex/sailexecute.tex
+++ /dev/null
@@ -1 +0,0 @@
-val execute : ast -> unit effect {barr, eamem, escape, rmem, rmemt, rreg, undef, wmv, wmvt, wreg}
diff --git a/cheri/sail_latex/sailexecutebranch.tex b/cheri/sail_latex/sailexecutebranch.tex
deleted file mode 100644
index a4582e82..00000000
--- a/cheri/sail_latex/sailexecutebranch.tex
+++ /dev/null
@@ -1 +0,0 @@
-val execute_branch : #\hyperref[zbits]{bits}#(64) -> unit effect {wreg}
diff --git a/cheri/sail_latex/sailexecutebranchpcc.tex b/cheri/sail_latex/sailexecutebranchpcc.tex
deleted file mode 100644
index f94d4e7d..00000000
--- a/cheri/sail_latex/sailexecutebranchpcc.tex
+++ /dev/null
@@ -1 +0,0 @@
-val execute_branch_pcc : CapStruct -> unit effect {wreg}
diff --git a/cheri/sail_latex/sailextendLoad.tex b/cheri/sail_latex/sailextendLoad.tex
deleted file mode 100644
index d403c83c..00000000
--- a/cheri/sail_latex/sailextendLoad.tex
+++ /dev/null
@@ -1 +0,0 @@
-val extendLoad : forall 'sz, 'sz <= 64 . (#\hyperref[zbits]{bits}#('sz), bool) -> #\hyperref[zbits]{bits}#(64) effect pure
diff --git a/cheri/sail_latex/sailfnAccessLevelofnum.tex b/cheri/sail_latex/sailfnAccessLevelofnum.tex
deleted file mode 100644
index a8446000..00000000
--- a/cheri/sail_latex/sailfnAccessLevelofnum.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function AccessLevel_of_num arg# = match arg# {
- 0 => User,
- 1 => Supervisor,
- _ => Kernel
-}
diff --git a/cheri/sail_latex/sailfnCPtrCmpOpofnum.tex b/cheri/sail_latex/sailfnCPtrCmpOpofnum.tex
deleted file mode 100644
index 6ab563f3..00000000
--- a/cheri/sail_latex/sailfnCPtrCmpOpofnum.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function CPtrCmpOp_of_num arg# = match arg# {
- 0 => CEQ,
- 1 => CNE,
- 2 => CLT,
- 3 => CLE,
- 4 => CLTU,
- 5 => CLEU,
- 6 => CEXEQ,
- _ => CNEXEQ
-}
diff --git a/cheri/sail_latex/sailfnCapExCode.tex b/cheri/sail_latex/sailfnCapExCode.tex
deleted file mode 100644
index 324612a0..00000000
--- a/cheri/sail_latex/sailfnCapExCode.tex
+++ /dev/null
@@ -1,26 +0,0 @@
-function #\hyperref[zCapExCode]{CapExCode}#(ex) : CapEx -> #\hyperref[zbits]{bits}#(8)=
- match ex {
- CapEx_None => 0x00,
- CapEx_LengthViolation => 0x01,
- CapEx_TagViolation => 0x02,
- CapEx_SealViolation => 0x03,
- CapEx_TypeViolation => 0x04,
- CapEx_CallTrap => 0x05,
- CapEx_ReturnTrap => 0x06,
- CapEx_TSSUnderFlow => 0x07,
- CapEx_UserDefViolation => 0x08,
- CapEx_TLBNoStoreCap => 0x09,
- CapEx_InexactBounds => 0x0a,
- CapEx_GlobalViolation => 0x10,
- CapEx_PermitExecuteViolation => 0x11,
- CapEx_PermitLoadViolation => 0x12,
- CapEx_PermitStoreViolation => 0x13,
- CapEx_PermitLoadCapViolation => 0x14,
- CapEx_PermitStoreCapViolation => 0x15,
- CapEx_PermitStoreLocalCapViolation => 0x16,
- CapEx_PermitSealViolation => 0x17,
- CapEx_AccessSystemRegsViolation => 0x18,
- CapEx_PermitCCallViolation => 0x19,
- CapEx_AccessCCallIDCViolation => 0x1a,
- CapEx_PermitUnsealViolation => 0x1b
- }
diff --git a/cheri/sail_latex/sailfnCapExofnum.tex b/cheri/sail_latex/sailfnCapExofnum.tex
deleted file mode 100644
index 1bb6f2d1..00000000
--- a/cheri/sail_latex/sailfnCapExofnum.tex
+++ /dev/null
@@ -1,25 +0,0 @@
-function CapEx_of_num arg# = match arg# {
- 0 => CapEx_None,
- 1 => CapEx_LengthViolation,
- 2 => CapEx_TagViolation,
- 3 => CapEx_SealViolation,
- 4 => CapEx_TypeViolation,
- 5 => CapEx_CallTrap,
- 6 => CapEx_ReturnTrap,
- 7 => CapEx_TSSUnderFlow,
- 8 => CapEx_UserDefViolation,
- 9 => CapEx_TLBNoStoreCap,
- 10 => CapEx_InexactBounds,
- 11 => CapEx_GlobalViolation,
- 12 => CapEx_PermitExecuteViolation,
- 13 => CapEx_PermitLoadViolation,
- 14 => CapEx_PermitStoreViolation,
- 15 => CapEx_PermitLoadCapViolation,
- 16 => CapEx_PermitStoreCapViolation,
- 17 => CapEx_PermitStoreLocalCapViolation,
- 18 => CapEx_PermitSealViolation,
- 19 => CapEx_AccessSystemRegsViolation,
- 20 => CapEx_PermitCCallViolation,
- 21 => CapEx_AccessCCallIDCViolation,
- _ => CapEx_PermitUnsealViolation
-}
diff --git a/cheri/sail_latex/sailfnClearRegSetofnum.tex b/cheri/sail_latex/sailfnClearRegSetofnum.tex
deleted file mode 100644
index edfe64e3..00000000
--- a/cheri/sail_latex/sailfnClearRegSetofnum.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function ClearRegSet_of_num arg# = match arg# {
- 0 => GPLo,
- 1 => GPHi,
- 2 => CLo,
- _ => CHi
-}
diff --git a/cheri/sail_latex/sailfnComparisonofnum.tex b/cheri/sail_latex/sailfnComparisonofnum.tex
deleted file mode 100644
index 8ff4bfc1..00000000
--- a/cheri/sail_latex/sailfnComparisonofnum.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function Comparison_of_num arg# = match arg# {
- 0 => EQ,
- 1 => NE,
- 2 => GE,
- 3 => GEU,
- 4 => GT,
- 5 => LE,
- 6 => LT,
- _ => LTU
-}
diff --git a/cheri/sail_latex/sailfnERETHook.tex b/cheri/sail_latex/sailfnERETHook.tex
deleted file mode 100644
index bac1f738..00000000
--- a/cheri/sail_latex/sailfnERETHook.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function #\hyperref[zERETHook]{ERETHook}#() : unit -> unit =
- {
- nextPCC = EPCC;
- delayedPCC = EPCC; /* always write delayedPCC together with nextPCC so
- that non-capability branches don't override PCC */
- }
diff --git a/cheri/sail_latex/sailfnExceptionCode.tex b/cheri/sail_latex/sailfnExceptionCode.tex
deleted file mode 100644
index b34ab2ab..00000000
--- a/cheri/sail_latex/sailfnExceptionCode.tex
+++ /dev/null
@@ -1,23 +0,0 @@
-function #\hyperref[zExceptionCode]{ExceptionCode}# (ex) : Exception -> #\hyperref[zbits]{bits}#(5)=
- let x : #\hyperref[zbits]{bits}#(8) = match ex
- {
- Interrupt => 0x00, /* Interrupt */
- TLBMod => 0x01, /* TLB modification exception */
- TLBL => 0x02, /* TLB #\hyperref[zexception]{exception}# (load or fetch) */
- TLBS => 0x03, /* TLB #\hyperref[zexception]{exception}# (store) */
- AdEL => 0x04, /* Address #\hyperref[zerror]{error}# (load or fetch) */
- AdES => 0x05, /* Address #\hyperref[zerror]{error}# (store) */
- Sys => 0x08, /* Syscall */
- Bp => 0x09, /* Breakpoint */
- ResI => 0x0a, /* Reserved instruction */
- CpU => 0x0b, /* Coprocessor Unusable */
- Ov => 0x0c, /* Arithmetic overflow */
- Tr => 0x0d, /* Trap */
- C2E => 0x12, /* C2E coprocessor 2 exception */
- C2Trap => 0x12, /* C2Trap maps to same exception code, different vector */
- XTLBRefillL => 0x02,
- XTLBRefillS => 0x03,
- XTLBInvL => 0x02,
- XTLBInvS => 0x03,
- MCheck => 0x18
- } in x[4..0]
diff --git a/cheri/sail_latex/sailfnExceptionofnum.tex b/cheri/sail_latex/sailfnExceptionofnum.tex
deleted file mode 100644
index 0ffd2ef1..00000000
--- a/cheri/sail_latex/sailfnExceptionofnum.tex
+++ /dev/null
@@ -1,21 +0,0 @@
-function Exception_of_num arg# = match arg# {
- 0 => Interrupt,
- 1 => TLBMod,
- 2 => TLBL,
- 3 => TLBS,
- 4 => AdEL,
- 5 => AdES,
- 6 => Sys,
- 7 => Bp,
- 8 => ResI,
- 9 => CpU,
- 10 => Ov,
- 11 => Tr,
- 12 => C2E,
- 13 => C2Trap,
- 14 => XTLBRefillL,
- 15 => XTLBRefillS,
- 16 => XTLBInvL,
- 17 => XTLBInvS,
- _ => MCheck
-}
diff --git a/cheri/sail_latex/sailfnMAX.tex b/cheri/sail_latex/sailfnMAX.tex
deleted file mode 100644
index e9a6a650..00000000
--- a/cheri/sail_latex/sailfnMAX.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zMAX]{MAX}#(n) = #\hyperref[zpowtwo]{pow2}#(n) - 1
diff --git a/cheri/sail_latex/sailfnMEMea.tex b/cheri/sail_latex/sailfnMEMea.tex
deleted file mode 100644
index 1bd08739..00000000
--- a/cheri/sail_latex/sailfnMEMea.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zMEMea]{MEMea}# (addr, size) = #\hyperref[zskipzyeamem]{skip\_eamem}#()
diff --git a/cheri/sail_latex/sailfnMEMeaconditional.tex b/cheri/sail_latex/sailfnMEMeaconditional.tex
deleted file mode 100644
index 65930634..00000000
--- a/cheri/sail_latex/sailfnMEMeaconditional.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zMEMeazyconditional]{MEMea\_conditional}# (addr, size) = #\hyperref[zskipzyeamem]{skip\_eamem}#()
diff --git a/cheri/sail_latex/sailfnMEMr.tex b/cheri/sail_latex/sailfnMEMr.tex
deleted file mode 100644
index bae85b70..00000000
--- a/cheri/sail_latex/sailfnMEMr.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zMEMr]{MEMr}# (addr, size) = #\hyperref[zzyzyMIPSzyread]{\_\_MIPS\_read}#(addr, size)
diff --git a/cheri/sail_latex/sailfnMEMrreserve.tex b/cheri/sail_latex/sailfnMEMrreserve.tex
deleted file mode 100644
index 9339f02b..00000000
--- a/cheri/sail_latex/sailfnMEMrreserve.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zMEMrzyreserve]{MEMr\_reserve}# (addr, size) = #\hyperref[zzyzyMIPSzyread]{\_\_MIPS\_read}#(addr, size)
diff --git a/cheri/sail_latex/sailfnMEMrreservewrapper.tex b/cheri/sail_latex/sailfnMEMrreservewrapper.tex
deleted file mode 100644
index fc8ea6c7..00000000
--- a/cheri/sail_latex/sailfnMEMrreservewrapper.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zMEMrzyreservezywrapper]{MEMr\_reserve\_wrapper}# (addr , size) =
- #\hyperref[zreversezyendianness]{reverse\_endianness}#(#\hyperref[zMEMrzyreserve]{MEMr\_reserve}#(addr, size))
diff --git a/cheri/sail_latex/sailfnMEMrtagged.tex b/cheri/sail_latex/sailfnMEMrtagged.tex
deleted file mode 100644
index 8c338860..00000000
--- a/cheri/sail_latex/sailfnMEMrtagged.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-function #\hyperref[zMEMrzytagged]{MEMr\_tagged}# (addr) =
-{
- /* assumes addr is cap. aligned */
- assert(#\hyperref[zunsigned]{unsigned}#(addr) % cap_size == 0);
- let tag = #\hyperref[zMEMrzytag]{MEMr\_tag}#(addr) in
- let data = #\hyperref[zMEMr]{MEMr}#(addr, cap_size) in
- (tag, #\hyperref[zreversezyendianness]{reverse\_endianness}#(data))
-}
diff --git a/cheri/sail_latex/sailfnMEMrtaggedreserve.tex b/cheri/sail_latex/sailfnMEMrtaggedreserve.tex
deleted file mode 100644
index 2605592a..00000000
--- a/cheri/sail_latex/sailfnMEMrtaggedreserve.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-function #\hyperref[zMEMrzytaggedzyreserve]{MEMr\_tagged\_reserve}# (addr) =
-{
- /* assumes addr is cap. aligned */
- assert(#\hyperref[zunsigned]{unsigned}#(addr) % cap_size == 0);
- let tag = #\hyperref[zMEMrzytag]{MEMr\_tag}#(addr) in
- let data = #\hyperref[zMEMrzyreserve]{MEMr\_reserve}#(addr, cap_size) in
- (tag, #\hyperref[zreversezyendianness]{reverse\_endianness}#(data))
-}
diff --git a/cheri/sail_latex/sailfnMEMrwrapper.tex b/cheri/sail_latex/sailfnMEMrwrapper.tex
deleted file mode 100644
index 68576849..00000000
--- a/cheri/sail_latex/sailfnMEMrwrapper.tex
+++ /dev/null
@@ -1,13 +0,0 @@
-function #\hyperref[zMEMrzywrapper]{MEMr\_wrapper}# (addr, size) =
- if (addr == 0x000000007f000000) then
- {
- let rvalid = UART_RVALID in
- {
- UART_RVALID = [bitzero];
- #\hyperref[zmask]{mask}#(0x00000000 @ UART_RDATA @ rvalid @ 0b0000000 @ 0x0000)
- }
- }
- else if (addr == 0x000000007f000004) then
- #\hyperref[zmask]{mask}#(0x000000000004ffff) /* Always plenty of write space available and jtag activity */
- else
- #\hyperref[zreversezyendianness]{reverse\_endianness}#(#\hyperref[zMEMr]{MEMr}#(addr, size)) /* MEMr assumes little endian */
diff --git a/cheri/sail_latex/sailfnMEMsync.tex b/cheri/sail_latex/sailfnMEMsync.tex
deleted file mode 100644
index 5a0bc91c..00000000
--- a/cheri/sail_latex/sailfnMEMsync.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zMEMzysync]{MEM\_sync}# () = #\hyperref[zskipzybarr]{skip\_barr}#()
diff --git a/cheri/sail_latex/sailfnMEMval.tex b/cheri/sail_latex/sailfnMEMval.tex
deleted file mode 100644
index 73795344..00000000
--- a/cheri/sail_latex/sailfnMEMval.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zMEMval]{MEMval}# (addr, size, data) = #\hyperref[zzyzyMIPSzywrite]{\_\_MIPS\_write}#(addr, size, data)
diff --git a/cheri/sail_latex/sailfnMEMvalconditional.tex b/cheri/sail_latex/sailfnMEMvalconditional.tex
deleted file mode 100644
index 906bbd68..00000000
--- a/cheri/sail_latex/sailfnMEMvalconditional.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zMEMvalzyconditional]{MEMval\_conditional}# (addr, size, data) = { #\hyperref[zzyzyMIPSzywrite]{\_\_MIPS\_write}#(addr, size, data); true }
diff --git a/cheri/sail_latex/sailfnMEMwconditionalwrapper.tex b/cheri/sail_latex/sailfnMEMwconditionalwrapper.tex
deleted file mode 100644
index 04ce8389..00000000
--- a/cheri/sail_latex/sailfnMEMwconditionalwrapper.tex
+++ /dev/null
@@ -1,11 +0,0 @@
-function #\hyperref[zMEMwzyconditionalzywrapper]{MEMw\_conditional\_wrapper}#(addr, size, data) =
- {
- /* require that writes don't cross capability #\hyperref[zboundaries]{boundaries}# (should be true due to mips alignment requirements) */
- assert((addr & cap_addr_mask) == ((addr + #\hyperref[ztozybits]{to\_bits}#(64, size - 1)) & cap_addr_mask));
- #\hyperref[zMEMeazyconditional]{MEMea\_conditional}#(addr, size);
- success = #\hyperref[zMEMvalzyconditional]{MEMval\_conditional}#(addr,size,#\hyperref[zreversezyendianness]{reverse\_endianness}#(data));
- if success then
- /* On cheri non-capability writes must clear the corresponding tag */
- #\hyperref[zMEMwzytag]{MEMw\_tag}#(addr & cap_addr_mask, false);
- success;
- }
diff --git a/cheri/sail_latex/sailfnMEMwtagged.tex b/cheri/sail_latex/sailfnMEMwtagged.tex
deleted file mode 100644
index 3b7aab53..00000000
--- a/cheri/sail_latex/sailfnMEMwtagged.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-function #\hyperref[zMEMwzytagged]{MEMw\_tagged}#(addr, tag, data) =
-{
- /* assumes addr is cap. aligned */
- assert(#\hyperref[zunsigned]{unsigned}#(addr) % cap_size == 0);
- #\hyperref[zMEMea]{MEMea}#(addr, cap_size);
- #\hyperref[zMEMval]{MEMval}#(addr, cap_size, #\hyperref[zreversezyendianness]{reverse\_endianness}#(data));
- #\hyperref[zMEMwzytag]{MEMw\_tag}#(addr, tag);
-}
diff --git a/cheri/sail_latex/sailfnMEMwtaggedconditional.tex b/cheri/sail_latex/sailfnMEMwtaggedconditional.tex
deleted file mode 100644
index 75d9efb3..00000000
--- a/cheri/sail_latex/sailfnMEMwtaggedconditional.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function #\hyperref[zMEMwzytaggedzyconditional]{MEMw\_tagged\_conditional}#(addr, tag, data) =
-{
- /* assumes addr is cap. aligned */
- assert(#\hyperref[zunsigned]{unsigned}#(addr) % cap_size == 0);
- #\hyperref[zMEMeazyconditional]{MEMea\_conditional}#(addr, cap_size);
- success = #\hyperref[zMEMvalzyconditional]{MEMval\_conditional}#(addr, cap_size, #\hyperref[zreversezyendianness]{reverse\_endianness}#(data));
- if success then
- #\hyperref[zMEMwzytag]{MEMw\_tag}#(addr, tag);
- success;
-}
diff --git a/cheri/sail_latex/sailfnMEMwwrapper.tex b/cheri/sail_latex/sailfnMEMwwrapper.tex
deleted file mode 100644
index 6f83825c..00000000
--- a/cheri/sail_latex/sailfnMEMwwrapper.tex
+++ /dev/null
@@ -1,16 +0,0 @@
-function #\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(addr, size, data) =
- let ledata = #\hyperref[zreversezyendianness]{reverse\_endianness}#(data) in
- if (addr == 0x000000007f000000) then
- {
- UART_WDATA = ledata[7..0];
- UART_WRITTEN = 0b1;
- }
- else
- {
- /* require that writes don't cross capability #\hyperref[zboundaries]{boundaries}# (should be true due to mips alignment requirements) */
- assert((addr & cap_addr_mask) == ((addr + #\hyperref[ztozybits]{to\_bits}#(64, size - 1)) & cap_addr_mask));
- #\hyperref[zMEMea]{MEMea}#(addr, size);
- #\hyperref[zMEMval]{MEMval}#(addr, size, ledata);
- /* On cheri non-capability writes must clear the corresponding tag*/
- #\hyperref[zMEMwzytag]{MEMw\_tag}#(addr & cap_addr_mask, false);
- }
diff --git a/cheri/sail_latex/sailfnMIPSread.tex b/cheri/sail_latex/sailfnMIPSread.tex
deleted file mode 100644
index ee937856..00000000
--- a/cheri/sail_latex/sailfnMIPSread.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zzyzyMIPSzyread]{\_\_MIPS\_read}# (addr, width) = #\hyperref[zzyzyReadRAM]{\_\_ReadRAM}#(64, width, 0x0000_0000_0000_0000, addr)
diff --git a/cheri/sail_latex/sailfnMIPSwrite.tex b/cheri/sail_latex/sailfnMIPSwrite.tex
deleted file mode 100644
index 5e81f335..00000000
--- a/cheri/sail_latex/sailfnMIPSwrite.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zzyzyMIPSzywrite]{\_\_MIPS\_write}# (addr, width, data) = let _ = #\hyperref[zzyzyWriteRAM]{\_\_WriteRAM}#(64, width, 0x0000_0000_0000_0000, addr, data) in ()
diff --git a/cheri/sail_latex/sailfnMemAccessTypeofnum.tex b/cheri/sail_latex/sailfnMemAccessTypeofnum.tex
deleted file mode 100644
index a16af4e9..00000000
--- a/cheri/sail_latex/sailfnMemAccessTypeofnum.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function MemAccessType_of_num arg# = match arg# {
- 0 => Instruction,
- 1 => LoadData,
- _ => StoreData
-}
diff --git a/cheri/sail_latex/sailfnMkCapCauseReg.tex b/cheri/sail_latex/sailfnMkCapCauseReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnMkCapCauseReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnMkCauseReg.tex b/cheri/sail_latex/sailfnMkCauseReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnMkCauseReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnMkContextReg.tex b/cheri/sail_latex/sailfnMkContextReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnMkContextReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnMkStatusReg.tex b/cheri/sail_latex/sailfnMkStatusReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnMkStatusReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnMkTLBEntry.tex b/cheri/sail_latex/sailfnMkTLBEntry.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnMkTLBEntry.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnMkTLBEntryHiReg.tex b/cheri/sail_latex/sailfnMkTLBEntryHiReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnMkTLBEntryHiReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnMkTLBEntryLoReg.tex b/cheri/sail_latex/sailfnMkTLBEntryLoReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnMkTLBEntryLoReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnMkXContextReg.tex b/cheri/sail_latex/sailfnMkXContextReg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnMkXContextReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnNotWordVal.tex b/cheri/sail_latex/sailfnNotWordVal.tex
deleted file mode 100644
index b6222084..00000000
--- a/cheri/sail_latex/sailfnNotWordVal.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zNotWordVal]{NotWordVal}# (word) =
- (word[31] ^^ 32) != word[63..32]
diff --git a/cheri/sail_latex/sailfnSignalException.tex b/cheri/sail_latex/sailfnSignalException.tex
deleted file mode 100644
index a91f582e..00000000
--- a/cheri/sail_latex/sailfnSignalException.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-function #\hyperref[zSignalException]{SignalException}# (ex) =
- {
- if (#\hyperref[znot]{not}# (CP0Status.#\hyperref[zEXL]{EXL}#())) then {
- let pc = PC in
- let pcc = #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(PCC) in
- let (success, epcc) = #\hyperref[zsetCapOffset]{setCapOffset}#(pcc, pc) in
- if (success) then
- EPCC = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(epcc)
- else
- EPCC = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(#\hyperref[zintzytozycap]{int\_to\_cap}#(#\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zgetCapBase]{getCapBase}#(pcc)) + #\hyperref[zunsigned]{unsigned}#(pc)));
- };
-
- nextPCC = KCC;
- delayedPCC = KCC; /* always write delayedPCC together with nextPCC so
- that non-capability branches don't override PCC */
- let base = #\hyperref[zgetCapBase]{getCapBase}#(#\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(KCC)) in
- #\hyperref[zSignalExceptionMIPS]{SignalExceptionMIPS}#(ex, #\hyperref[ztozybits]{to\_bits}#(64, base));
- }
diff --git a/cheri/sail_latex/sailfnSignalExceptionBadAddr.tex b/cheri/sail_latex/sailfnSignalExceptionBadAddr.tex
deleted file mode 100644
index d35ed9e8..00000000
--- a/cheri/sail_latex/sailfnSignalExceptionBadAddr.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function #\hyperref[zSignalExceptionBadAddr]{SignalExceptionBadAddr}#(ex, badAddr) =
- {
- CP0BadVAddr = badAddr;
- #\hyperref[zSignalException]{SignalException}#(ex);
- }
diff --git a/cheri/sail_latex/sailfnSignalExceptionMIPS.tex b/cheri/sail_latex/sailfnSignalExceptionMIPS.tex
deleted file mode 100644
index 8d3f762a..00000000
--- a/cheri/sail_latex/sailfnSignalExceptionMIPS.tex
+++ /dev/null
@@ -1,39 +0,0 @@
-function #\hyperref[zSignalExceptionMIPS]{SignalExceptionMIPS}# (ex, kccBase) =
- {
- /* Only update EPC and BD if not already in EXL mode */
- if (~ (CP0Status.#\hyperref[zEXL]{EXL}#())) then
- {
- if (inBranchDelay[0]) then
- {
- CP0EPC = PC - 4;
- CP0Cause->#\hyperref[zBD]{BD}#() = 0b1;
- }
- else
- {
- CP0EPC = PC;
- CP0Cause->#\hyperref[zBD]{BD}#() = 0b0;
- }
- };
-
- /* choose an exception vector to branch to. Some are not supported
- e.g. Reset */
- vectorOffset =
- if (CP0Status.#\hyperref[zEXL]{EXL}#()) then
- 0x180 /* Always use common vector if in exception mode already */
- else if ((ex == XTLBRefillL) | (ex == XTLBRefillS)) then
- 0x080
- else if (ex == C2Trap) then
- 0x280 /* Special vector for CHERI traps */
- else
- 0x180; /* Common vector */
- vectorBase : #\hyperref[zbits]{bits}#(64) = if CP0Status.#\hyperref[zBEV]{BEV}#() then
- 0xFFFFFFFFBFC00200
- else
- 0xFFFFFFFF80000000;
- /* On CHERI we have to subtract KCC.base so that we end up at the
- right absolute vector address after indirecting via new PCC */
- nextPC = vectorBase + #\hyperref[zsignzyextend]{sign\_extend}#(vectorOffset) - kccBase;
- CP0Cause->#\hyperref[zExcCode]{ExcCode}#() = #\hyperref[zExceptionCode]{ExceptionCode}#(ex);
- CP0Status->#\hyperref[zEXL]{EXL}#() = 0b1;
- throw (#\hyperref[zISAException]{ISAException}#());
- }
diff --git a/cheri/sail_latex/sailfnSignalExceptionTLB.tex b/cheri/sail_latex/sailfnSignalExceptionTLB.tex
deleted file mode 100644
index a523d7b6..00000000
--- a/cheri/sail_latex/sailfnSignalExceptionTLB.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-function #\hyperref[zSignalExceptionTLB]{SignalExceptionTLB}#(ex, badAddr) = {
- CP0BadVAddr = badAddr;
- TLBContext->#\hyperref[zBadVPNtwo]{BadVPN2}#() = (badAddr[31..13]);
- TLBXContext->#\hyperref[zXBadVPNtwo]{XBadVPN2}#()= (badAddr[39..13]);
- TLBXContext->#\hyperref[zXR]{XR}#() = (badAddr[63..62]);
- TLBEntryHi->#\hyperref[zR]{R}#() = (badAddr[63..62]);
- TLBEntryHi->#\hyperref[zVPNtwo]{VPN2}#() = (badAddr[39..13]);
- #\hyperref[zSignalException]{SignalException}#(ex);
-}
diff --git a/cheri/sail_latex/sailfnTLBTranslate.tex b/cheri/sail_latex/sailfnTLBTranslate.tex
deleted file mode 100644
index e40518c3..00000000
--- a/cheri/sail_latex/sailfnTLBTranslate.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zTLBTranslate]{TLBTranslate}# (vAddr, accessType) =
- let (addr, c) = #\hyperref[zTLBTranslateC]{TLBTranslateC}#(vAddr, accessType) in addr
diff --git a/cheri/sail_latex/sailfnTLBTranslateC.tex b/cheri/sail_latex/sailfnTLBTranslateC.tex
deleted file mode 100644
index d71c0841..00000000
--- a/cheri/sail_latex/sailfnTLBTranslateC.tex
+++ /dev/null
@@ -1,31 +0,0 @@
-function #\hyperref[zTLBTranslateC]{TLBTranslateC}# (vAddr, accessType) =
- {
- let currentAccessLevel = #\hyperref[zgetAccessLevel]{getAccessLevel}#() in
- let compat32 = (vAddr[61..31] == 0b1111111111111111111111111111111) in
- let (requiredLevel, addr) : (AccessLevel, #\hyperref[zoption]{option}#(#\hyperref[zbits]{bits}#(64))) = match (vAddr[63..62]) {
- 0b11 => match (compat32, vAddr[30..29]) { /* xkseg */
- (true, 0b11) => (Kernel, #\hyperref[zNone]{None}#() : #\hyperref[zoption]{option}#(#\hyperref[zbits]{bits}#(64))), /* kseg3 mapped 32-bit compat */
- (true, 0b10) => (Supervisor, #\hyperref[zNone]{None}#() : #\hyperref[zoption]{option}#(#\hyperref[zbits]{bits}#(64))), /* sseg mapped 32-bit compat */
- (true, 0b01) => (Kernel, #\hyperref[zSome]{Some}#(0x00000000 @ 0b000 @ vAddr[28..0])), /* kseg1 unmapped uncached 32-bit compat */
- (true, 0b00) => (Kernel, #\hyperref[zSome]{Some}#(0x00000000 @ 0b000 @ vAddr[28..0])), /* kseg0 unmapped cached 32-bit compat */
- (_, _) => (Kernel, #\hyperref[zNone]{None}#() : #\hyperref[zoption]{option}#(#\hyperref[zbits]{bits}#(64))) /* xkseg mapped */
- },
- 0b10 => (Kernel, #\hyperref[zSome]{Some}#(0b00000 @ vAddr[58..0])), /* xkphys bits 61-59 are cache #\hyperref[zmode]{mode}# (ignored) */
- 0b01 => (Supervisor, #\hyperref[zNone]{None}#() : #\hyperref[zoption]{option}#(#\hyperref[zbits]{bits}#(64))), /* xsseg - supervisor mapped */
- 0b00 => (User, #\hyperref[zNone]{None}#() : #\hyperref[zoption]{option}#(#\hyperref[zbits]{bits}#(64))) /* xuseg - user mapped */
- } in
- if #\hyperref[znot]{not}#(#\hyperref[zgrantsAccess]{grantsAccess}#(currentAccessLevel, requiredLevel)) then
- #\hyperref[zSignalExceptionBadAddr]{SignalExceptionBadAddr}#(if (accessType == StoreData) then AdES else AdEL, vAddr)
- else
- let (pa, c) : (#\hyperref[zbits]{bits}#(64), bool) = match addr {
- #\hyperref[zSome]{Some}#(a) => (a, false),
- #\hyperref[zNone]{None}#() => if ((~(compat32)) & (#\hyperref[zunsigned]{unsigned}#(vAddr[61..0]) > MAX_VA)) then
- #\hyperref[zSignalExceptionBadAddr]{SignalExceptionBadAddr}#(if (accessType == StoreData) then AdES else AdEL, vAddr)
- else
- #\hyperref[zTLBTranslatetwo]{TLBTranslate2}#(vAddr, accessType)
- }
- in if (#\hyperref[zunsigned]{unsigned}#(pa) > MAX_PA) then
- #\hyperref[zSignalExceptionBadAddr]{SignalExceptionBadAddr}#(if (accessType == StoreData) then AdES else AdEL, vAddr)
- else
- (pa, c)
- }
diff --git a/cheri/sail_latex/sailfnTLBTranslatetwo.tex b/cheri/sail_latex/sailfnTLBTranslatetwo.tex
deleted file mode 100644
index 126159f7..00000000
--- a/cheri/sail_latex/sailfnTLBTranslatetwo.tex
+++ /dev/null
@@ -1,36 +0,0 @@
-function #\hyperref[zTLBTranslatetwo]{TLBTranslate2}# (vAddr, accessType) = {
- let idx = #\hyperref[ztlbSearch]{tlbSearch}#(vAddr) in
- match idx {
- #\hyperref[zSome]{Some}#(idx) =>
- let i as atom(_) = #\hyperref[zunsigned]{unsigned}#(idx) in
- let entry = #\hyperref[zregzyderef]{reg\_deref}#(TLBEntries[i]) in
- let entryMask = entry.#\hyperref[zpagemask]{pagemask}#() in
- let 'evenOddBit : range(12,28) = match (entryMask) {
- 0x0000 => 12,
- 0x0003 => 14,
- 0x000f => 16,
- 0x003f => 18,
- 0x00ff => 20,
- 0x03ff => 22,
- 0x0fff => 24,
- 0x3fff => 26,
- 0xffff => 28,
- _ => undefined
- } in
- let isOdd = (vAddr[evenOddBit]) in
- let (caps : #\hyperref[zbits]{bits}#(1), capl : #\hyperref[zbits]{bits}#(1), pfn : #\hyperref[zbits]{bits}#(24), d : #\hyperref[zbits]{bits}#(1), v : #\hyperref[zbits]{bits}#(1)) =
- if (isOdd) then
- (entry.#\hyperref[zcapsone]{caps1}#(), entry.#\hyperref[zcaplone]{capl1}#(), entry.#\hyperref[zpfnone]{pfn1}#(), entry.#\hyperref[zdone]{d1}#(), entry.#\hyperref[zvone]{v1}#())
- else
- (entry.#\hyperref[zcapszero]{caps0}#(), entry.#\hyperref[zcaplzero]{capl0}#(), entry.#\hyperref[zpfnzero]{pfn0}#(), entry.#\hyperref[zdzero]{d0}#(), entry.#\hyperref[zvzero]{v0}#()) in
- if (~(v)) then
- #\hyperref[zSignalExceptionTLB]{SignalExceptionTLB}#(if (accessType == StoreData) then XTLBInvS else XTLBInvL, vAddr)
- else if ((accessType == StoreData) & ~(d)) then
- #\hyperref[zSignalExceptionTLB]{SignalExceptionTLB}#(TLBMod, vAddr)
- else
- let res : #\hyperref[zbits]{bits}#(64) = #\hyperref[zzzerozyextend]{zero\_extend}#(pfn[23..(evenOddBit - 12)] @ vAddr[(evenOddBit - 1) .. 0]) in
- (res, #\hyperref[zbitszytozybool]{bits\_to\_bool}#(if (accessType == StoreData) then caps else capl)),
- #\hyperref[zNone]{None}#() => #\hyperref[zSignalExceptionTLB]{SignalExceptionTLB}#(
- if (accessType == StoreData) then XTLBRefillS else XTLBRefillL, vAddr)
- }
-}
diff --git a/cheri/sail_latex/sailfnTLBWriteEntry.tex b/cheri/sail_latex/sailfnTLBWriteEntry.tex
deleted file mode 100644
index ba2762ea..00000000
--- a/cheri/sail_latex/sailfnTLBWriteEntry.tex
+++ /dev/null
@@ -1,36 +0,0 @@
-function #\hyperref[zTLBWriteEntry]{TLBWriteEntry}#(idx) = {
- pagemask = TLBPageMask;
- match pagemask {
- 0x0000 => (),
- 0x0003 => (),
- 0x000f => (),
- 0x003f => (),
- 0x00ff => (),
- 0x03ff => (),
- 0x0fff => (),
- 0x3fff => (),
- 0xffff => (),
- _ => (#\hyperref[zSignalException]{SignalException}#(MCheck))
- };
- let i as atom(_) = #\hyperref[zunsigned]{unsigned}#(idx) in
- let entry = TLBEntries[i] in {
- entry.#\hyperref[zpagemask]{pagemask}#() = pagemask;
- entry.#\hyperref[zr]{r}#() = TLBEntryHi.#\hyperref[zR]{R}#();
- entry.#\hyperref[zvpntwo]{vpn2}#() = TLBEntryHi.#\hyperref[zVPNtwo]{VPN2}#();
- entry.#\hyperref[zasid]{asid}#() = TLBEntryHi.#\hyperref[zASID]{ASID}#();
- entry.#\hyperref[zg]{g}#() = ((TLBEntryLo0.#\hyperref[zG]{G}#()) & (TLBEntryLo1.#\hyperref[zG]{G}#()));
- entry.#\hyperref[zvalid]{valid}#() = bitone;
- entry.#\hyperref[zcapszero]{caps0}#() = TLBEntryLo0.#\hyperref[zCapS]{CapS}#();
- entry.#\hyperref[zcaplzero]{capl0}#() = TLBEntryLo0.#\hyperref[zCapL]{CapL}#();
- entry.#\hyperref[zpfnzero]{pfn0}#() = TLBEntryLo0.#\hyperref[zPFN]{PFN}#();
- entry.#\hyperref[zczero]{c0}#() = TLBEntryLo0.#\hyperref[zC]{C}#();
- entry.#\hyperref[zdzero]{d0}#() = TLBEntryLo0.#\hyperref[zD]{D}#();
- entry.#\hyperref[zvzero]{v0}#() = TLBEntryLo0.#\hyperref[zV]{V}#();
- entry.#\hyperref[zcapsone]{caps1}#() = TLBEntryLo1.#\hyperref[zCapS]{CapS}#();
- entry.#\hyperref[zcaplone]{capl1}#() = TLBEntryLo1.#\hyperref[zCapL]{CapL}#();
- entry.#\hyperref[zpfnone]{pfn1}#() = TLBEntryLo1.#\hyperref[zPFN]{PFN}#();
- entry.#\hyperref[zcone]{c1}#() = TLBEntryLo1.#\hyperref[zC]{C}#();
- entry.#\hyperref[zdone]{d1}#() = TLBEntryLo1.#\hyperref[zD]{D}#();
- entry.#\hyperref[zvone]{v1}#() = TLBEntryLo1.#\hyperref[zV]{V}#();
- }
-}
diff --git a/cheri/sail_latex/sailfnTranslatePC.tex b/cheri/sail_latex/sailfnTranslatePC.tex
deleted file mode 100644
index 5e43ffb4..00000000
--- a/cheri/sail_latex/sailfnTranslatePC.tex
+++ /dev/null
@@ -1,15 +0,0 @@
-function #\hyperref[zTranslatePC]{TranslatePC}# (vAddr) = {
- #\hyperref[zincrementCPzeroCount]{incrementCP0Count}#();
- let pcc = #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(PCC);
- let base = #\hyperref[zgetCapBase]{getCapBase}#(pcc);
- let top = #\hyperref[zgetCapTop]{getCapTop}#(pcc);
- let absPC = base + #\hyperref[zunsigned]{unsigned}#(vAddr);
- if ((absPC % 4) != 0) then /* bad PC alignment */
- (#\hyperref[zSignalExceptionBadAddr]{SignalExceptionBadAddr}#(AdEL, #\hyperref[ztozybits]{to\_bits}#(64, absPC))) /* XXX absPC may be truncated */
- else if #\hyperref[znot]{not}# (pcc.tag) then
- (#\hyperref[zraisezyctwozyexceptionzynoreg]{raise\_c2\_exception\_noreg}#(CapEx_TagViolation))
- else if ((absPC + 4) > top) then
- (#\hyperref[zraisezyctwozyexceptionzynoreg]{raise\_c2\_exception\_noreg}#(CapEx_LengthViolation))
- else
- #\hyperref[zTLBTranslate]{TLBTranslate}#(#\hyperref[ztozybits]{to\_bits}#(64, absPC), Instruction) /* XXX assert absPC never gets truncated due to above check and top <= 2^64 for valid caps */
-}
diff --git a/cheri/sail_latex/sailfnWordTypeUnalignedofnum.tex b/cheri/sail_latex/sailfnWordTypeUnalignedofnum.tex
deleted file mode 100644
index 7b690587..00000000
--- a/cheri/sail_latex/sailfnWordTypeUnalignedofnum.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function WordTypeUnaligned_of_num arg# = match arg# {
- 0 => WL,
- 1 => WR,
- 2 => DL,
- _ => DR
-}
diff --git a/cheri/sail_latex/sailfnWordTypeofnum.tex b/cheri/sail_latex/sailfnWordTypeofnum.tex
deleted file mode 100644
index f431606a..00000000
--- a/cheri/sail_latex/sailfnWordTypeofnum.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function WordType_of_num arg# = match arg# {
- 0 => B,
- 1 => H,
- 2 => W,
- _ => D
-}
diff --git a/cheri/sail_latex/sailfnaddrWrapper.tex b/cheri/sail_latex/sailfnaddrWrapper.tex
deleted file mode 100644
index 6f1dd662..00000000
--- a/cheri/sail_latex/sailfnaddrWrapper.tex
+++ /dev/null
@@ -1,16 +0,0 @@
-function #\hyperref[zaddrWrapper]{addrWrapper}#(addr, accessType, width) =
- {
- ddc = #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(DDC);
- #\hyperref[zcheckDDCPerms]{checkDDCPerms}#(ddc, accessType);
- cursor = #\hyperref[zgetCapCursor]{getCapCursor}#(ddc);
- vAddr = (cursor + #\hyperref[zunsigned]{unsigned}#(addr)) % #\hyperref[zpowtwo]{pow2}#(64);
- size = #\hyperref[zwordWidthBytes]{wordWidthBytes}#(width);
- base = #\hyperref[zgetCapBase]{getCapBase}#(ddc);
- top = #\hyperref[zgetCapTop]{getCapTop}#(ddc);
- if ((vAddr + size) > top) then
- (#\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, 0b00000))
- else if (vAddr < base) then
- (#\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, 0b00000))
- else
- #\hyperref[ztozybits]{to\_bits}#(64, vAddr);
- }
diff --git a/cheri/sail_latex/sailfnaddrWrapperUnaligned.tex b/cheri/sail_latex/sailfnaddrWrapperUnaligned.tex
deleted file mode 100644
index 47567f7e..00000000
--- a/cheri/sail_latex/sailfnaddrWrapperUnaligned.tex
+++ /dev/null
@@ -1,24 +0,0 @@
-function #\hyperref[zaddrWrapperUnaligned]{addrWrapperUnaligned}#(addr, accessType, width) =
- {
- ddc = #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(DDC);
- #\hyperref[zcheckDDCPerms]{checkDDCPerms}#(ddc, accessType);
- cursor = #\hyperref[zgetCapCursor]{getCapCursor}#(ddc);
- vAddr = (cursor + #\hyperref[zunsigned]{unsigned}#(addr)) % #\hyperref[zpowtwo]{pow2}#(64);
- woffset = vAddr % 4;
- doffset = vAddr % 8;
- /* Compute the address and size of the bytes touched -- this depends on alignment. */
- let (waddr, size) : (int, int) = match width {
- WL => (vAddr, 4 - woffset),
- WR => (vAddr - woffset, woffset + 1),
- DL => (vAddr, 8 - doffset),
- DR => (vAddr - doffset, doffset + 1)
- };
- base = #\hyperref[zgetCapBase]{getCapBase}#(ddc);
- top = #\hyperref[zgetCapTop]{getCapTop}#(ddc);
- if ((waddr + size) > top) then
- (#\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, 0b00000))
- else if (waddr < base) then
- (#\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, 0b00000))
- else
- #\hyperref[ztozybits]{to\_bits}#(64, vAddr);
- }
diff --git a/cheri/sail_latex/sailfnbitstobool.tex b/cheri/sail_latex/sailfnbitstobool.tex
deleted file mode 100644
index 1cb33076..00000000
--- a/cheri/sail_latex/sailfnbitstobool.tex
+++ /dev/null
@@ -1 +0,0 @@
-function bits_to_bool x = #\hyperref[zbitzytozybool]{bit\_to\_bool}#(x[0])
diff --git a/cheri/sail_latex/sailfnbittobool.tex b/cheri/sail_latex/sailfnbittobool.tex
deleted file mode 100644
index a5eea578..00000000
--- a/cheri/sail_latex/sailfnbittobool.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function bit_to_bool b = match b {
- bitone => true,
- _ => false
-}
diff --git a/cheri/sail_latex/sailfnbooltobits.tex b/cheri/sail_latex/sailfnbooltobits.tex
deleted file mode 100644
index 99075369..00000000
--- a/cheri/sail_latex/sailfnbooltobits.tex
+++ /dev/null
@@ -1 +0,0 @@
-function bool_to_bits x = if x then 0b1 else 0b0
diff --git a/cheri/sail_latex/sailfncapRegToCapStruct.tex b/cheri/sail_latex/sailfncapRegToCapStruct.tex
deleted file mode 100644
index 5209e9f9..00000000
--- a/cheri/sail_latex/sailfncapRegToCapStruct.tex
+++ /dev/null
@@ -1,23 +0,0 @@
-function #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(capReg) : CapReg -> CapStruct =
- struct {
- tag = capReg[256],
- padding = capReg[255..248],
- otype = capReg[247..224],
- uperms = capReg[223..208],
- perm_reserved11_14 = capReg[207..204],
- access_system_regs = capReg[203],
- permit_unseal = capReg[202],
- permit_ccall = capReg[201],
- permit_seal = capReg[200],
- permit_store_local_cap = capReg[199],
- permit_store_cap = capReg[198],
- permit_load_cap = capReg[197],
- permit_store = capReg[196],
- permit_load = capReg[195],
- permit_execute = capReg[194],
- global = capReg[193],
- sealed = capReg[192],
- address = capReg[191..128],
- base = capReg[127..64],
- length = capReg[63..0]
- }
diff --git a/cheri/sail_latex/sailfncapStructToCapReg.tex b/cheri/sail_latex/sailfncapStructToCapReg.tex
deleted file mode 100644
index d0828429..00000000
--- a/cheri/sail_latex/sailfncapStructToCapReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(cap) : CapStruct -> CapReg = cap.tag @ #\hyperref[zcapStructToMemBitstwofivesix]{capStructToMemBits256}#(cap)
diff --git a/cheri/sail_latex/sailfncapStructToMemBits.tex b/cheri/sail_latex/sailfncapStructToMemBits.tex
deleted file mode 100644
index b85816b3..00000000
--- a/cheri/sail_latex/sailfncapStructToMemBits.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zcapStructToMemBits]{capStructToMemBits}#(cap) : CapStruct -> #\hyperref[zbits]{bits}#(256)=
- #\hyperref[zcapStructToMemBitstwofivesix]{capStructToMemBits256}#(cap) ^ null_cap_bits
diff --git a/cheri/sail_latex/sailfncapStructToMemBitstwofivesix.tex b/cheri/sail_latex/sailfncapStructToMemBitstwofivesix.tex
deleted file mode 100644
index 0c775ae4..00000000
--- a/cheri/sail_latex/sailfncapStructToMemBitstwofivesix.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function #\hyperref[zcapStructToMemBitstwofivesix]{capStructToMemBits256}#(cap) : CapStruct -> #\hyperref[zbits]{bits}#(256) =
- (
- cap.padding
- @ cap.otype
- @ #\hyperref[zgetCapPerms]{getCapPerms}#(cap)
- @ cap.sealed
- @ cap.address
- @ cap.base
- @ cap.length
- )
diff --git a/cheri/sail_latex/sailfncapToString.tex b/cheri/sail_latex/sailfncapToString.tex
deleted file mode 100644
index 2ad25883..00000000
--- a/cheri/sail_latex/sailfncapToString.tex
+++ /dev/null
@@ -1,16 +0,0 @@
-function capToString cap = {
- #\hyperref[zskipzyescape]{skip\_escape}#(); /* because cheri128 getCapX functions contain asserts but cheri256 ones do not */
- #\hyperref[zconcatzystr]{concat\_str}#(" t:",
- #\hyperref[zconcatzystr]{concat\_str}#(if cap.tag then "1" else "0",
- #\hyperref[zconcatzystr]{concat\_str}#(" s:",
- #\hyperref[zconcatzystr]{concat\_str}#(if cap.sealed then "1" else "0",
- #\hyperref[zconcatzystr]{concat\_str}#(" perms:",
- #\hyperref[zconcatzystr]{concat\_str}#(#\hyperref[zBitStr]{BitStr}#(0b0 @ #\hyperref[zgetCapPerms]{getCapPerms}#(cap)),
- #\hyperref[zconcatzystr]{concat\_str}#(" type:",
- #\hyperref[zconcatzystr]{concat\_str}#(#\hyperref[zBitStr]{BitStr}#(cap.otype),
- #\hyperref[zconcatzystr]{concat\_str}#(" offset:",
- #\hyperref[zconcatzystr]{concat\_str}#(#\hyperref[zBitStr]{BitStr}#(#\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zgetCapOffset]{getCapOffset}#(cap))),
- #\hyperref[zconcatzystr]{concat\_str}#(" base:",
- #\hyperref[zconcatzystr]{concat\_str}#(#\hyperref[zBitStr]{BitStr}#(#\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zgetCapBase]{getCapBase}#(cap))),
- #\hyperref[zconcatzystr]{concat\_str}#(" length:", #\hyperref[zBitStr]{BitStr}#(#\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zmin]{min}#(#\hyperref[zgetCapLength]{getCapLength}#(cap), #\hyperref[zMAX]{MAX}#(64)))))))))))))))))
- }
diff --git a/cheri/sail_latex/sailfncastunitvec.tex b/cheri/sail_latex/sailfncastunitvec.tex
deleted file mode 100644
index 1bb7a9e0..00000000
--- a/cheri/sail_latex/sailfncastunitvec.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function cast_unit_vec b = match b {
- bitzero => 0b0,
- _ => 0b1
-}
diff --git a/cheri/sail_latex/sailfncheckCPtwousable.tex b/cheri/sail_latex/sailfncheckCPtwousable.tex
deleted file mode 100644
index 8e7c29d7..00000000
--- a/cheri/sail_latex/sailfncheckCPtwousable.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function #\hyperref[zcheckCPtwousable]{checkCP2usable}# () =
- if #\hyperref[znot]{not}# (CP0Status.#\hyperref[zCU]{CU}#()[2]) then {
- CP0Cause->#\hyperref[zCE]{CE}#() = 0b10;
- #\hyperref[zSignalException]{SignalException}#(CpU);
- }
diff --git a/cheri/sail_latex/sailfncheckCPzeroAccess.tex b/cheri/sail_latex/sailfncheckCPzeroAccess.tex
deleted file mode 100644
index d63f00cf..00000000
--- a/cheri/sail_latex/sailfncheckCPzeroAccess.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-function #\hyperref[zcheckCPzeroAccess]{checkCP0Access}# () =
- {
- let accessLevel = #\hyperref[zgetAccessLevel]{getAccessLevel}#() in
- if ((accessLevel != Kernel) & (~(CP0Status.#\hyperref[zCU]{CU}#()[0]))) then
- {
- CP0Cause->#\hyperref[zCE]{CE}#() = 0b00;
- #\hyperref[zSignalException]{SignalException}#(CpU);
- }
- }
diff --git a/cheri/sail_latex/sailfncheckDDCPerms.tex b/cheri/sail_latex/sailfncheckDDCPerms.tex
deleted file mode 100644
index 1675c666..00000000
--- a/cheri/sail_latex/sailfncheckDDCPerms.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-function #\hyperref[zcheckDDCPerms]{checkDDCPerms}#(ddc : CapStruct, accessType: MemAccessType) =
- {
- if (#\hyperref[znot]{not}# (ddc.tag)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, 0b00000)
- else if (ddc.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, 0b00000);
- match accessType {
- Instruction => assert(false), /* Only data accesses use DDC */
- LoadData => if (~(ddc.permit_load)) then (#\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitLoadViolation, 0b00000)),
- StoreData => if (~(ddc.permit_store)) then (#\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitStoreViolation, 0b00000))
- };
- }
diff --git a/cheri/sail_latex/sailfncompare.tex b/cheri/sail_latex/sailfncompare.tex
deleted file mode 100644
index f4378ba7..00000000
--- a/cheri/sail_latex/sailfncompare.tex
+++ /dev/null
@@ -1,11 +0,0 @@
-function #\hyperref[zcompare]{compare}# (cmp, valA, valB) =
- match cmp {
- EQ => valA == valB,
- NE => valA != valB,
- GE => valA >=_s valB,
- GEU => valA >=_u valB,
- GT => valB <_s valA,
- LE => valB >=_s valA,
- LT => valA <_s valB,
- LTU => valA <_u valB
- }
diff --git a/cheri/sail_latex/sailfncptwonextpc.tex b/cheri/sail_latex/sailfncptwonextpc.tex
deleted file mode 100644
index c2a9c944..00000000
--- a/cheri/sail_latex/sailfncptwonextpc.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-function #\hyperref[zcptwozynextzypc]{cp2\_next\_pc}# () = {
- PCC = nextPCC;
- if inBranchDelay then {
- nextPCC = delayedPCC;
- } else {
- inCCallDelay = 0b0;
- };
-}
diff --git a/cheri/sail_latex/sailfndecodeSome.tex b/cheri/sail_latex/sailfndecodeSome.tex
deleted file mode 100644
index 00a53489..00000000
--- a/cheri/sail_latex/sailfndecodeSome.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010000 @ 0b10000000000000000000 @ 0b000010) = #\hyperref[zSome]{Some}#(#\hyperref[zTLBWI]{TLBWI}#() : ast)
diff --git a/cheri/sail_latex/sailfndecodeSomeADD.tex b/cheri/sail_latex/sailfndecodeSomeADD.tex
deleted file mode 100644
index 4b01b543..00000000
--- a/cheri/sail_latex/sailfndecodeSomeADD.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100000) =
- #\hyperref[zSome]{Some}#(#\hyperref[zADD]{ADD}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeADDI.tex b/cheri/sail_latex/sailfndecodeSomeADDI.tex
deleted file mode 100644
index 7706322f..00000000
--- a/cheri/sail_latex/sailfndecodeSomeADDI.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b001000 @ rs : regno @ rt : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zADDI]{ADDI}#(rs, rt, imm))
diff --git a/cheri/sail_latex/sailfndecodeSomeADDIU.tex b/cheri/sail_latex/sailfndecodeSomeADDIU.tex
deleted file mode 100644
index 27972a96..00000000
--- a/cheri/sail_latex/sailfndecodeSomeADDIU.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b001001 @ rs : regno @ rt : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zADDIU]{ADDIU}#(rs, rt, imm))
diff --git a/cheri/sail_latex/sailfndecodeSomeADDU.tex b/cheri/sail_latex/sailfndecodeSomeADDU.tex
deleted file mode 100644
index 259cdfc9..00000000
--- a/cheri/sail_latex/sailfndecodeSomeADDU.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100001) =
- #\hyperref[zSome]{Some}#(#\hyperref[zADDU]{ADDU}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeAND.tex b/cheri/sail_latex/sailfndecodeSomeAND.tex
deleted file mode 100644
index ecc6f7cb..00000000
--- a/cheri/sail_latex/sailfndecodeSomeAND.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100100) =
- #\hyperref[zSome]{Some}#(#\hyperref[zAND]{AND}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeANDI.tex b/cheri/sail_latex/sailfndecodeSomeANDI.tex
deleted file mode 100644
index fea6a112..00000000
--- a/cheri/sail_latex/sailfndecodeSomeANDI.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b001100 @ rs : regno @ rt : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zANDI]{ANDI}#(rs, rt, imm))
diff --git a/cheri/sail_latex/sailfndecodeSomeBCMPZ.tex b/cheri/sail_latex/sailfndecodeSomeBCMPZ.tex
deleted file mode 100644
index 3221c8a3..00000000
--- a/cheri/sail_latex/sailfndecodeSomeBCMPZ.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000001 @ rs : regno @ 0b00000 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBCMPZ]{BCMPZ}#(rs, imm, LT, false, false)) /* BLTZ */
diff --git a/cheri/sail_latex/sailfndecodeSomeBEQ.tex b/cheri/sail_latex/sailfndecodeSomeBEQ.tex
deleted file mode 100644
index e520223e..00000000
--- a/cheri/sail_latex/sailfndecodeSomeBEQ.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000100 @ rs : regno @ rt : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBEQ]{BEQ}#(rs, rt, imm, false, false)) /* BEQ */
diff --git a/cheri/sail_latex/sailfndecodeSomeBREAK.tex b/cheri/sail_latex/sailfndecodeSomeBREAK.tex
deleted file mode 100644
index e4978b0a..00000000
--- a/cheri/sail_latex/sailfndecodeSomeBREAK.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ code : #\hyperref[zbits]{bits}#(20) @ 0b001101) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBREAK]{BREAK}#()) /* code is ignored */
diff --git a/cheri/sail_latex/sailfndecodeSomeCACHE.tex b/cheri/sail_latex/sailfndecodeSomeCACHE.tex
deleted file mode 100644
index c9f100fe..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCACHE.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b101111 @ base : regno @ op : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zCACHE]{CACHE}#(base, op, imm))
diff --git a/cheri/sail_latex/sailfndecodeSomeCAndPerm.tex b/cheri/sail_latex/sailfndecodeSomeCAndPerm.tex
deleted file mode 100644
index 04f8dbb2..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCAndPerm.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00100 @ cd : regno @ cb : regno @ rt : regno @ 0b000 @ 0b000) = #\hyperref[zSome]{Some}#(#\hyperref[zCAndPerm]{CAndPerm}#(cd, cb, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeCBX.tex b/cheri/sail_latex/sailfndecodeSomeCBX.tex
deleted file mode 100644
index f009388f..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCBX.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01001 @ cd : regno @ imm : #\hyperref[zbits]{bits}#(16)) = #\hyperref[zSome]{Some}#(#\hyperref[zCBX]{CBX}#(cd, imm, true)) /* CBTU */
diff --git a/cheri/sail_latex/sailfndecodeSomeCBZ.tex b/cheri/sail_latex/sailfndecodeSomeCBZ.tex
deleted file mode 100644
index db46dbd2..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCBZ.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10001 @ cd : regno @ imm : #\hyperref[zbits]{bits}#(16)) = #\hyperref[zSome]{Some}#(#\hyperref[zCBZ]{CBZ}#(cd, imm, false)) /* CBEZ */
diff --git a/cheri/sail_latex/sailfndecodeSomeCBuildCap.tex b/cheri/sail_latex/sailfndecodeSomeCBuildCap.tex
deleted file mode 100644
index c070e1be..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCBuildCap.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cb : regno @ ct : regno @ 0b011101) = #\hyperref[zSome]{Some}#(#\hyperref[zCBuildCap]{CBuildCap}#(cd, cb, ct))
diff --git a/cheri/sail_latex/sailfndecodeSomeCCSeal.tex b/cheri/sail_latex/sailfndecodeSomeCCSeal.tex
deleted file mode 100644
index 4703af82..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCCSeal.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ ct : regno @ 0b011111) = #\hyperref[zSome]{Some}#(#\hyperref[zCCSeal]{CCSeal}#(cd, cs, ct))
diff --git a/cheri/sail_latex/sailfndecodeSomeCCall.tex b/cheri/sail_latex/sailfndecodeSomeCCall.tex
deleted file mode 100644
index 32395a34..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCCall.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00101 @ cs : regno @ cb : regno @ selector : #\hyperref[zbits]{bits}#(11)) = #\hyperref[zSome]{Some}#(#\hyperref[zCCall]{CCall}#(cs, cb, selector))
diff --git a/cheri/sail_latex/sailfndecodeSomeCCheckPerm.tex b/cheri/sail_latex/sailfndecodeSomeCCheckPerm.tex
deleted file mode 100644
index 1d293316..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCCheckPerm.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01011 @ cs : regno @ 0b00000 @ rt : regno @ 0b000@ 0b000) = #\hyperref[zSome]{Some}#(#\hyperref[zCCheckPerm]{CCheckPerm}#(cs, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeCCheckType.tex b/cheri/sail_latex/sailfndecodeSomeCCheckType.tex
deleted file mode 100644
index 85b4f5ee..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCCheckType.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01011 @ cs : regno @ cb : regno @ 0b00000 @ 0b000@ 0b001) = #\hyperref[zSome]{Some}#(#\hyperref[zCCheckType]{CCheckType}#(cs, cb))
diff --git a/cheri/sail_latex/sailfndecodeSomeCClearTag.tex b/cheri/sail_latex/sailfndecodeSomeCClearTag.tex
deleted file mode 100644
index aad3e0e4..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCClearTag.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00100 @ cd : regno @ cb : regno @ 0b00000 @ 0b000@ 0b101) = #\hyperref[zSome]{Some}#(#\hyperref[zCClearTag]{CClearTag}#(cd, cb))
diff --git a/cheri/sail_latex/sailfndecodeSomeCCopyType.tex b/cheri/sail_latex/sailfndecodeSomeCCopyType.tex
deleted file mode 100644
index 6c7a5fb8..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCCopyType.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cb : regno @ ct : regno @ 0b011110) = #\hyperref[zSome]{Some}#(#\hyperref[zCCopyType]{CCopyType}#(cd, cb, ct))
diff --git a/cheri/sail_latex/sailfndecodeSomeCFromPtr.tex b/cheri/sail_latex/sailfndecodeSomeCFromPtr.tex
deleted file mode 100644
index 9c992ac0..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCFromPtr.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00100 @ cd : regno @ cb : regno @ rt : regno @ 0b000@ 0b111) = #\hyperref[zSome]{Some}#(#\hyperref[zCFromPtr]{CFromPtr}#(cd, cb, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeCGetAddr.tex b/cheri/sail_latex/sailfndecodeSomeCGetAddr.tex
deleted file mode 100644
index 89672867..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCGetAddr.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cb : regno @ sel : regno @ 0b01111 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetAddr]{CGetAddr}#(cb, sel))
diff --git a/cheri/sail_latex/sailfndecodeSomeCGetBase.tex b/cheri/sail_latex/sailfndecodeSomeCGetBase.tex
deleted file mode 100644
index 3ff0c663..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCGetBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00000000 @ 0b010) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetBase]{CGetBase}#(rd, cb))
diff --git a/cheri/sail_latex/sailfndecodeSomeCGetCauserd.tex b/cheri/sail_latex/sailfndecodeSomeCGetCauserd.tex
deleted file mode 100644
index 4ffeb4ab..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCGetCauserd.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ 0b00000 @ 0b00000000 @ 0b100) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetCause]{CGetCause}#(rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeCGetLen.tex b/cheri/sail_latex/sailfndecodeSomeCGetLen.tex
deleted file mode 100644
index 2a39bae6..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCGetLen.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00000000 @ 0b011) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetLen]{CGetLen}#(rd, cb))
diff --git a/cheri/sail_latex/sailfndecodeSomeCGetOffset.tex b/cheri/sail_latex/sailfndecodeSomeCGetOffset.tex
deleted file mode 100644
index 7ac298c2..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCGetOffset.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01101 @ rd : regno @ cb : regno @ 0b00000000 @ 0b010) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetOffset]{CGetOffset}#(rd, cb)) /* NB encoding does not follow pattern */
diff --git a/cheri/sail_latex/sailfndecodeSomeCGetPCCSetOffset.tex b/cheri/sail_latex/sailfndecodeSomeCGetPCCSetOffset.tex
deleted file mode 100644
index dd92b2fd..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCGetPCCSetOffset.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ rs : regno @ 0b00111 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetPCCSetOffset]{CGetPCCSetOffset}#(cd, rs))
diff --git a/cheri/sail_latex/sailfndecodeSomeCGetPCCcd.tex b/cheri/sail_latex/sailfndecodeSomeCGetPCCcd.tex
deleted file mode 100644
index 5357a1e4..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCGetPCCcd.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ 0b00000 @ 0b11111 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetPCC]{CGetPCC}#(cd))
diff --git a/cheri/sail_latex/sailfndecodeSomeCGetPerm.tex b/cheri/sail_latex/sailfndecodeSomeCGetPerm.tex
deleted file mode 100644
index 0a14b6a1..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCGetPerm.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00000000 @ 0b000) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetPerm]{CGetPerm}#(rd, cb))
diff --git a/cheri/sail_latex/sailfndecodeSomeCGetSealed.tex b/cheri/sail_latex/sailfndecodeSomeCGetSealed.tex
deleted file mode 100644
index c7511dfa..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCGetSealed.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00000000 @ 0b110) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetSealed]{CGetSealed}#(rd, cb))
diff --git a/cheri/sail_latex/sailfndecodeSomeCGetTag.tex b/cheri/sail_latex/sailfndecodeSomeCGetTag.tex
deleted file mode 100644
index 794216a2..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCGetTag.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00000000 @ 0b101) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetTag]{CGetTag}#(rd, cb))
diff --git a/cheri/sail_latex/sailfndecodeSomeCGetType.tex b/cheri/sail_latex/sailfndecodeSomeCGetType.tex
deleted file mode 100644
index 1568e5a4..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCGetType.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00000000 @ 0b001) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetType]{CGetType}#(rd, cb))
diff --git a/cheri/sail_latex/sailfndecodeSomeCIncOffset.tex b/cheri/sail_latex/sailfndecodeSomeCIncOffset.tex
deleted file mode 100644
index 893e774b..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCIncOffset.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01101 @ cd : regno @ cb : regno @ rt : regno @ 0b000 @ 0b000) = #\hyperref[zSome]{Some}#(#\hyperref[zCIncOffset]{CIncOffset}#(cd, cb, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeCIncOffsetImmediate.tex b/cheri/sail_latex/sailfndecodeSomeCIncOffsetImmediate.tex
deleted file mode 100644
index a0287341..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCIncOffsetImmediate.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10011 @ cd : regno @ cb : regno @ imm : #\hyperref[zbits]{bits}#(11)) = #\hyperref[zSome]{Some}#(#\hyperref[zCIncOffsetImmediate]{CIncOffsetImmediate}#(cd, cb, imm))
diff --git a/cheri/sail_latex/sailfndecodeSomeCJALR.tex b/cheri/sail_latex/sailfndecodeSomeCJALR.tex
deleted file mode 100644
index 6d67580e..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCJALR.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00111 @ cd : regno @ cb : regno @ 0b00000 @ 0b000000) = #\hyperref[zSome]{Some}#(#\hyperref[zCJALR]{CJALR}#(cd, cb, true)) /* CJALR */
diff --git a/cheri/sail_latex/sailfndecodeSomeCLC.tex b/cheri/sail_latex/sailfndecodeSomeCLC.tex
deleted file mode 100644
index ee20ffd2..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCLC.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b110110 @ cd : regno @ cb : regno @ rt : regno @ offset : #\hyperref[zbits]{bits}#(11)) = #\hyperref[zSome]{Some}#(#\hyperref[zCLC]{CLC}#(cd, cb, rt, #\hyperref[zsignzyextend]{sign\_extend}#(offset), false)) /* CLC */
diff --git a/cheri/sail_latex/sailfndecodeSomeCLoad.tex b/cheri/sail_latex/sailfndecodeSomeCLoad.tex
deleted file mode 100644
index 4f0e7692..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCLoad.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b110010 @ rd : regno @ cb : regno@ rt : regno @ offset : #\hyperref[zbits]{bits}#(8) @ 0b0 @ 0b00) = #\hyperref[zSome]{Some}#(#\hyperref[zCLoad]{CLoad}#(rd, cb, rt, offset, false, B, false)) /* CLBU */
diff --git a/cheri/sail_latex/sailfndecodeSomeCMOVX.tex b/cheri/sail_latex/sailfndecodeSomeCMOVX.tex
deleted file mode 100644
index 57f4de7c..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCMOVX.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ 0b01010 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCMOVX]{CMOVX}#(cd, cs, 0b00000, false)) /* CMOVE */
diff --git a/cheri/sail_latex/sailfndecodeSomeCPtrCmp.tex b/cheri/sail_latex/sailfndecodeSomeCPtrCmp.tex
deleted file mode 100644
index 31f83677..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCPtrCmp.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b000) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, ct, CEQ))
diff --git a/cheri/sail_latex/sailfndecodeSomeCReadHwr.tex b/cheri/sail_latex/sailfndecodeSomeCReadHwr.tex
deleted file mode 100644
index 0bacf907..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCReadHwr.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ sel : regno @ 0b01101 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCReadHwr]{CReadHwr}#(cd, sel))
diff --git a/cheri/sail_latex/sailfndecodeSomeCReturn.tex b/cheri/sail_latex/sailfndecodeSomeCReturn.tex
deleted file mode 100644
index 9e773418..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCReturn.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00110 @ 0b000000000000000000000) = #\hyperref[zSome]{Some}#(#\hyperref[zCReturn]{CReturn}#())
diff --git a/cheri/sail_latex/sailfndecodeSomeCSC.tex b/cheri/sail_latex/sailfndecodeSomeCSC.tex
deleted file mode 100644
index 1271b654..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCSC.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b111110 @ cs : regno @ cb : regno@ rt : regno @ offset : #\hyperref[zbits]{bits}#(11)) = #\hyperref[zSome]{Some}#(#\hyperref[zCSC]{CSC}#(cs, cb, rt, 0b00000, offset, false))
diff --git a/cheri/sail_latex/sailfndecodeSomeCSeal.tex b/cheri/sail_latex/sailfndecodeSomeCSeal.tex
deleted file mode 100644
index 91cad204..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCSeal.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00010 @ cd : regno @ cs : regno @ ct : regno @ 0b000@ 0b000) = #\hyperref[zSome]{Some}#(#\hyperref[zCSeal]{CSeal}#(cd, cs, ct))
diff --git a/cheri/sail_latex/sailfndecodeSomeCSetBounds.tex b/cheri/sail_latex/sailfndecodeSomeCSetBounds.tex
deleted file mode 100644
index 0675556f..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCSetBounds.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00001 @ cd : regno @ cb : regno @ rt : regno @ 0b000000) = #\hyperref[zSome]{Some}#(#\hyperref[zCSetBounds]{CSetBounds}#(cd, cb, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeCSetBoundsExact.tex b/cheri/sail_latex/sailfndecodeSomeCSetBoundsExact.tex
deleted file mode 100644
index 39caef88..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCSetBoundsExact.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ rt : regno @ 0b001001) = #\hyperref[zSome]{Some}#(#\hyperref[zCSetBoundsExact]{CSetBoundsExact}#(cd, cs, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeCSetBoundsImmediate.tex b/cheri/sail_latex/sailfndecodeSomeCSetBoundsImmediate.tex
deleted file mode 100644
index ce53cb78..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCSetBoundsImmediate.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10100 @ cd : regno @ cb : regno @ imm : #\hyperref[zbits]{bits}#(11)) = #\hyperref[zSome]{Some}#(#\hyperref[zCSetBoundsImmediate]{CSetBoundsImmediate}#(cd, cb, imm))
diff --git a/cheri/sail_latex/sailfndecodeSomeCSetCausers.tex b/cheri/sail_latex/sailfndecodeSomeCSetCausers.tex
deleted file mode 100644
index a775811b..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCSetCausers.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rs : regno @ 0b00010 @ 0b11111 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCSetCause]{CSetCause}#(rs))
diff --git a/cheri/sail_latex/sailfndecodeSomeCSetCausert.tex b/cheri/sail_latex/sailfndecodeSomeCSetCausert.tex
deleted file mode 100644
index dc995af3..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCSetCausert.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00100 @ 0b00000 @ 0b00000 @ rt : regno @ 0b000 @ 0b100) = #\hyperref[zSome]{Some}#(#\hyperref[zCSetCause]{CSetCause}#(rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeCSetOffset.tex b/cheri/sail_latex/sailfndecodeSomeCSetOffset.tex
deleted file mode 100644
index f2b367c4..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCSetOffset.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01101 @ cd : regno @ cb : regno @ rt : regno @ 0b000 @ 0b001) = #\hyperref[zSome]{Some}#(#\hyperref[zCSetOffset]{CSetOffset}#(cd, cb, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeCStore.tex b/cheri/sail_latex/sailfndecodeSomeCStore.tex
deleted file mode 100644
index e93884fc..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCStore.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b111010 @ rs : regno @ cb : regno@ rt : regno @ offset : #\hyperref[zbits]{bits}#(8) @ 0b0 @ 0b00) = #\hyperref[zSome]{Some}#(#\hyperref[zCStore]{CStore}#(rs, cb, rt, 0b00000, offset, B, false)) /* CSB */
diff --git a/cheri/sail_latex/sailfndecodeSomeCSub.tex b/cheri/sail_latex/sailfndecodeSomeCSub.tex
deleted file mode 100644
index bc2347e5..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCSub.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rt : regno @ cb : regno @ cs : regno @ 0b001010) = #\hyperref[zSome]{Some}#(#\hyperref[zCSub]{CSub}#(rt, cb, cs))
diff --git a/cheri/sail_latex/sailfndecodeSomeCTestSubset.tex b/cheri/sail_latex/sailfndecodeSomeCTestSubset.tex
deleted file mode 100644
index 1f950ad8..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCTestSubset.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ ct : regno @ 0b100000) = #\hyperref[zSome]{Some}#(#\hyperref[zCTestSubset]{CTestSubset}#(rd, cb, ct))
diff --git a/cheri/sail_latex/sailfndecodeSomeCToPtr.tex b/cheri/sail_latex/sailfndecodeSomeCToPtr.tex
deleted file mode 100644
index aac23e6c..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCToPtr.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01100 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b000) = #\hyperref[zSome]{Some}#(#\hyperref[zCToPtr]{CToPtr}#(rd, cb, ct))
diff --git a/cheri/sail_latex/sailfndecodeSomeCUnseal.tex b/cheri/sail_latex/sailfndecodeSomeCUnseal.tex
deleted file mode 100644
index 50de73da..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCUnseal.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00011 @ cd : regno @ cs : regno @ ct : regno @ 0b000@ 0b000) = #\hyperref[zSome]{Some}#(#\hyperref[zCUnseal]{CUnseal}#(cd, cs, ct))
diff --git a/cheri/sail_latex/sailfndecodeSomeCWriteHwr.tex b/cheri/sail_latex/sailfndecodeSomeCWriteHwr.tex
deleted file mode 100644
index 663fa792..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCWriteHwr.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cb : regno @ sel : regno @ 0b01110 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCWriteHwr]{CWriteHwr}#(cb, sel))
diff --git a/cheri/sail_latex/sailfndecodeSomeClearRegs.tex b/cheri/sail_latex/sailfndecodeSomeClearRegs.tex
deleted file mode 100644
index 37c28d29..00000000
--- a/cheri/sail_latex/sailfndecodeSomeClearRegs.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01111 @ 0b00000 @ imm : #\hyperref[zbits]{bits}#(16)) = #\hyperref[zSome]{Some}#(#\hyperref[zClearRegs]{ClearRegs}#(GPLo, imm))
diff --git a/cheri/sail_latex/sailfndecodeSomeCtwoDumprt.tex b/cheri/sail_latex/sailfndecodeSomeCtwoDumprt.tex
deleted file mode 100644
index cccfa876..00000000
--- a/cheri/sail_latex/sailfndecodeSomeCtwoDumprt.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00100 @ rt : regno @ 0x0006) = #\hyperref[zSome]{Some}#(#\hyperref[zCtwoDump]{C2Dump}#(rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeDADD.tex b/cheri/sail_latex/sailfndecodeSomeDADD.tex
deleted file mode 100644
index 84d05d11..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDADD.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b101100) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDADD]{DADD}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeDADDI.tex b/cheri/sail_latex/sailfndecodeSomeDADDI.tex
deleted file mode 100644
index 27f4cab7..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDADDI.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b011000 @ rs : regno @ rt : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDADDI]{DADDI}#(rs, rt, imm))
diff --git a/cheri/sail_latex/sailfndecodeSomeDADDIU.tex b/cheri/sail_latex/sailfndecodeSomeDADDIU.tex
deleted file mode 100644
index 66ffc405..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDADDIU.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b011001 @ rs : regno @ rt : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDADDIU]{DADDIU}#(rs, rt, imm))
diff --git a/cheri/sail_latex/sailfndecodeSomeDADDU.tex b/cheri/sail_latex/sailfndecodeSomeDADDU.tex
deleted file mode 100644
index 558ebacf..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDADDU.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b101101) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDADDU]{DADDU}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeDDIV.tex b/cheri/sail_latex/sailfndecodeSomeDDIV.tex
deleted file mode 100644
index 7e37f87d..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDDIV.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011110) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDDIV]{DDIV}#(rs, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeDDIVU.tex b/cheri/sail_latex/sailfndecodeSomeDDIVU.tex
deleted file mode 100644
index b34ce40f..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDDIVU.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011111) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDDIVU]{DDIVU}#(rs, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeDIV.tex b/cheri/sail_latex/sailfndecodeSomeDIV.tex
deleted file mode 100644
index f9d47a4f..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDIV.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011010) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDIV]{DIV}#(rs, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeDIVU.tex b/cheri/sail_latex/sailfndecodeSomeDIVU.tex
deleted file mode 100644
index 0e9c1385..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDIVU.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011011) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDIVU]{DIVU}#(rs, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeDMULT.tex b/cheri/sail_latex/sailfndecodeSomeDMULT.tex
deleted file mode 100644
index 0d2b12b5..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDMULT.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011100) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDMULT]{DMULT}#(rs, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeDMULTU.tex b/cheri/sail_latex/sailfndecodeSomeDMULTU.tex
deleted file mode 100644
index 53be685e..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDMULTU.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011101) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDMULTU]{DMULTU}#(rs, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeDSLL.tex b/cheri/sail_latex/sailfndecodeSomeDSLL.tex
deleted file mode 100644
index 824f4937..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDSLL.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : #\hyperref[zbits]{bits}#(5) @ 0b111000) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDSLL]{DSLL}#(rt, rd, sa))
diff --git a/cheri/sail_latex/sailfndecodeSomeDSLLV.tex b/cheri/sail_latex/sailfndecodeSomeDSLLV.tex
deleted file mode 100644
index 707e642c..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDSLLV.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b010100) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDSLLV]{DSLLV}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeDSLLthreetwo.tex b/cheri/sail_latex/sailfndecodeSomeDSLLthreetwo.tex
deleted file mode 100644
index 431ca9e7..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDSLLthreetwo.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : #\hyperref[zbits]{bits}#(5) @ 0b111100) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDSLLthreetwo]{DSLL32}#(rt, rd, sa))
diff --git a/cheri/sail_latex/sailfndecodeSomeDSRA.tex b/cheri/sail_latex/sailfndecodeSomeDSRA.tex
deleted file mode 100644
index 25dfe705..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDSRA.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : #\hyperref[zbits]{bits}#(5) @ 0b111011) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDSRA]{DSRA}#(rt, rd, sa))
diff --git a/cheri/sail_latex/sailfndecodeSomeDSRAV.tex b/cheri/sail_latex/sailfndecodeSomeDSRAV.tex
deleted file mode 100644
index b2b92bcb..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDSRAV.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b010111) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDSRAV]{DSRAV}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeDSRAthreetwo.tex b/cheri/sail_latex/sailfndecodeSomeDSRAthreetwo.tex
deleted file mode 100644
index a95f3995..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDSRAthreetwo.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : #\hyperref[zbits]{bits}#(5) @ 0b111111) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDSRAthreetwo]{DSRA32}#(rt, rd, sa))
diff --git a/cheri/sail_latex/sailfndecodeSomeDSRL.tex b/cheri/sail_latex/sailfndecodeSomeDSRL.tex
deleted file mode 100644
index d13257d3..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDSRL.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : #\hyperref[zbits]{bits}#(5) @ 0b111010) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDSRL]{DSRL}#(rt, rd, sa))
diff --git a/cheri/sail_latex/sailfndecodeSomeDSRLV.tex b/cheri/sail_latex/sailfndecodeSomeDSRLV.tex
deleted file mode 100644
index 626895ac..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDSRLV.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b010110) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDSRLV]{DSRLV}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeDSRLthreetwo.tex b/cheri/sail_latex/sailfndecodeSomeDSRLthreetwo.tex
deleted file mode 100644
index edfd4ace..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDSRLthreetwo.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : #\hyperref[zbits]{bits}#(5) @ 0b111110) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDSRLthreetwo]{DSRL32}#(rt, rd, sa))
diff --git a/cheri/sail_latex/sailfndecodeSomeDSUB.tex b/cheri/sail_latex/sailfndecodeSomeDSUB.tex
deleted file mode 100644
index 0a402a4f..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDSUB.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b101110) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDSUB]{DSUB}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeDSUBU.tex b/cheri/sail_latex/sailfndecodeSomeDSUBU.tex
deleted file mode 100644
index 635c5d1f..00000000
--- a/cheri/sail_latex/sailfndecodeSomeDSUBU.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b101111) =
- #\hyperref[zSome]{Some}#(#\hyperref[zDSUBU]{DSUBU}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeERET.tex b/cheri/sail_latex/sailfndecodeSomeERET.tex
deleted file mode 100644
index 95d4fa19..00000000
--- a/cheri/sail_latex/sailfndecodeSomeERET.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010000 @ 0b1 @ 0b0000000000000000000 @ 0b011000) =
- #\hyperref[zSome]{Some}#(#\hyperref[zERET]{ERET}#())
diff --git a/cheri/sail_latex/sailfndecodeSomeHCF.tex b/cheri/sail_latex/sailfndecodeSomeHCF.tex
deleted file mode 100644
index 6f335350..00000000
--- a/cheri/sail_latex/sailfndecodeSomeHCF.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010000 @ 0b00100 @ rt : regno @ 0b10111 @ 0b00000000000) =
- #\hyperref[zSome]{Some}#(#\hyperref[zHCF]{HCF}#())
diff --git a/cheri/sail_latex/sailfndecodeSomeJALR.tex b/cheri/sail_latex/sailfndecodeSomeJALR.tex
deleted file mode 100644
index 9d31119a..00000000
--- a/cheri/sail_latex/sailfndecodeSomeJALR.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ 0b00000 @ rd : regno @ hint : regno @ 0b001001) =
- #\hyperref[zSome]{Some}#(#\hyperref[zJALR]{JALR}#(rs, rd)) /* hint is ignored */
diff --git a/cheri/sail_latex/sailfndecodeSomeJALoffset.tex b/cheri/sail_latex/sailfndecodeSomeJALoffset.tex
deleted file mode 100644
index 6f89b7a2..00000000
--- a/cheri/sail_latex/sailfndecodeSomeJALoffset.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000011 @ offset : #\hyperref[zbits]{bits}#(26)) =
- #\hyperref[zSome]{Some}#(#\hyperref[zJAL]{JAL}#(offset))
diff --git a/cheri/sail_latex/sailfndecodeSomeJRrs.tex b/cheri/sail_latex/sailfndecodeSomeJRrs.tex
deleted file mode 100644
index 11f38614..00000000
--- a/cheri/sail_latex/sailfndecodeSomeJRrs.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ 0b00000 @ 0b00000 @ hint : regno @ 0b001000) =
- #\hyperref[zSome]{Some}#(#\hyperref[zJR]{JR}#(rs)) /* hint is ignored */
diff --git a/cheri/sail_latex/sailfndecodeSomeJoffset.tex b/cheri/sail_latex/sailfndecodeSomeJoffset.tex
deleted file mode 100644
index b7fe0c10..00000000
--- a/cheri/sail_latex/sailfndecodeSomeJoffset.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000010 @ offset : #\hyperref[zbits]{bits}#(26)) =
- #\hyperref[zSome]{Some}#(#\hyperref[zJ]{J}#(offset))
diff --git a/cheri/sail_latex/sailfndecodeSomeLDL.tex b/cheri/sail_latex/sailfndecodeSomeLDL.tex
deleted file mode 100644
index d0aa03e7..00000000
--- a/cheri/sail_latex/sailfndecodeSomeLDL.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}#(0b011010 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zLDL]{LDL}#(base, rt, offset))
diff --git a/cheri/sail_latex/sailfndecodeSomeLDR.tex b/cheri/sail_latex/sailfndecodeSomeLDR.tex
deleted file mode 100644
index e2587245..00000000
--- a/cheri/sail_latex/sailfndecodeSomeLDR.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}#(0b011011 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zLDR]{LDR}#(base, rt, offset))
diff --git a/cheri/sail_latex/sailfndecodeSomeLUI.tex b/cheri/sail_latex/sailfndecodeSomeLUI.tex
deleted file mode 100644
index e26f924d..00000000
--- a/cheri/sail_latex/sailfndecodeSomeLUI.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b001111 @ 0b00000 @ rt : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zLUI]{LUI}#(rt, imm))
diff --git a/cheri/sail_latex/sailfndecodeSomeLWL.tex b/cheri/sail_latex/sailfndecodeSomeLWL.tex
deleted file mode 100644
index 12e0398d..00000000
--- a/cheri/sail_latex/sailfndecodeSomeLWL.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}#(0b100010 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zLWL]{LWL}#(base, rt, offset))
diff --git a/cheri/sail_latex/sailfndecodeSomeLWR.tex b/cheri/sail_latex/sailfndecodeSomeLWR.tex
deleted file mode 100644
index fbbe2a6c..00000000
--- a/cheri/sail_latex/sailfndecodeSomeLWR.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}#(0b100110 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zLWR]{LWR}#(base, rt, offset))
diff --git a/cheri/sail_latex/sailfndecodeSomeLoad.tex b/cheri/sail_latex/sailfndecodeSomeLoad.tex
deleted file mode 100644
index b9376877..00000000
--- a/cheri/sail_latex/sailfndecodeSomeLoad.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b100000 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zLoad]{Load}#(B, true, false, base, rt, offset)) /* LB */
diff --git a/cheri/sail_latex/sailfndecodeSomeMADD.tex b/cheri/sail_latex/sailfndecodeSomeMADD.tex
deleted file mode 100644
index 3b8b9d75..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMADD.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b011100 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b000000) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMADD]{MADD}#(rs, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeMADDU.tex b/cheri/sail_latex/sailfndecodeSomeMADDU.tex
deleted file mode 100644
index a1b46968..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMADDU.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b011100 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b000001) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMADDU]{MADDU}#(rs, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeMFCzero.tex b/cheri/sail_latex/sailfndecodeSomeMFCzero.tex
deleted file mode 100644
index 67608b6d..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMFCzero.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010000 @ 0b00000 @ rt : regno @ rd : regno @ 0b00000000 @ sel : #\hyperref[zbits]{bits}#(3)) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMFCzero]{MFC0}#(rt, rd, sel, false)) /* MFC0 */
diff --git a/cheri/sail_latex/sailfndecodeSomeMFHIrd.tex b/cheri/sail_latex/sailfndecodeSomeMFHIrd.tex
deleted file mode 100644
index 9f48db83..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMFHIrd.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ 0b0000000000 @ rd : regno @ 0b00000 @ 0b010000) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMFHI]{MFHI}#(rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeMFLOrd.tex b/cheri/sail_latex/sailfndecodeSomeMFLOrd.tex
deleted file mode 100644
index 6ea47d5b..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMFLOrd.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ 0b0000000000 @ rd : regno @ 0b00000 @ 0b010010) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMFLO]{MFLO}#(rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeMOVN.tex b/cheri/sail_latex/sailfndecodeSomeMOVN.tex
deleted file mode 100644
index e975a85c..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMOVN.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b001011) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMOVN]{MOVN}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeMOVZ.tex b/cheri/sail_latex/sailfndecodeSomeMOVZ.tex
deleted file mode 100644
index a503217a..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMOVZ.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b001010) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMOVZ]{MOVZ}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeMSUB.tex b/cheri/sail_latex/sailfndecodeSomeMSUB.tex
deleted file mode 100644
index bfc18834..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMSUB.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b011100 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b000100) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMSUB]{MSUB}#(rs, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeMSUBU.tex b/cheri/sail_latex/sailfndecodeSomeMSUBU.tex
deleted file mode 100644
index 07efaff8..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMSUBU.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b011100 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b000101) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMSUBU]{MSUBU}#(rs, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeMTCzero.tex b/cheri/sail_latex/sailfndecodeSomeMTCzero.tex
deleted file mode 100644
index 890984a6..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMTCzero.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010000 @ 0b00100 @ rt : regno @ rd : regno @ 0b00000000 @ sel : #\hyperref[zbits]{bits}#(3)) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMTCzero]{MTC0}#(rt, rd, sel, false)) /* MTC0 */
diff --git a/cheri/sail_latex/sailfndecodeSomeMTHIrs.tex b/cheri/sail_latex/sailfndecodeSomeMTHIrs.tex
deleted file mode 100644
index bbe47eeb..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMTHIrs.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ 0b000000000000000 @ 0b010001) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMTHI]{MTHI}#(rs))
diff --git a/cheri/sail_latex/sailfndecodeSomeMTLOrs.tex b/cheri/sail_latex/sailfndecodeSomeMTLOrs.tex
deleted file mode 100644
index b6e4f81a..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMTLOrs.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ 0b000000000000000 @ 0b010011) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMTLO]{MTLO}#(rs))
diff --git a/cheri/sail_latex/sailfndecodeSomeMUL.tex b/cheri/sail_latex/sailfndecodeSomeMUL.tex
deleted file mode 100644
index 806554c1..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMUL.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b011100 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b000010) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMUL]{MUL}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeMULT.tex b/cheri/sail_latex/sailfndecodeSomeMULT.tex
deleted file mode 100644
index 3358669f..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMULT.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011000) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMULT]{MULT}#(rs, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeMULTU.tex b/cheri/sail_latex/sailfndecodeSomeMULTU.tex
deleted file mode 100644
index 1de82a86..00000000
--- a/cheri/sail_latex/sailfndecodeSomeMULTU.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011001) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMULTU]{MULTU}#(rs, rt))
diff --git a/cheri/sail_latex/sailfndecodeSomeNOR.tex b/cheri/sail_latex/sailfndecodeSomeNOR.tex
deleted file mode 100644
index 591bd681..00000000
--- a/cheri/sail_latex/sailfndecodeSomeNOR.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100111) =
- #\hyperref[zSome]{Some}#(#\hyperref[zNOR]{NOR}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeOR.tex b/cheri/sail_latex/sailfndecodeSomeOR.tex
deleted file mode 100644
index 4e4c898a..00000000
--- a/cheri/sail_latex/sailfndecodeSomeOR.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100101) =
- #\hyperref[zSome]{Some}#(#\hyperref[zOR]{OR}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeORI.tex b/cheri/sail_latex/sailfndecodeSomeORI.tex
deleted file mode 100644
index ab0e3590..00000000
--- a/cheri/sail_latex/sailfndecodeSomeORI.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b001101 @ rs : regno @ rt : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zORI]{ORI}#(rs, rt, imm))
diff --git a/cheri/sail_latex/sailfndecodeSomeRDHWR.tex b/cheri/sail_latex/sailfndecodeSomeRDHWR.tex
deleted file mode 100644
index ea58d589..00000000
--- a/cheri/sail_latex/sailfndecodeSomeRDHWR.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b011111 @ 0b00000 @ rt : regno @ rd : regno @ 0b00000 @ 0b111011) =
- #\hyperref[zSome]{Some}#(#\hyperref[zRDHWR]{RDHWR}#(rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeRI.tex b/cheri/sail_latex/sailfndecodeSomeRI.tex
deleted file mode 100644
index 33607cfb..00000000
--- a/cheri/sail_latex/sailfndecodeSomeRI.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause decode _ = #\hyperref[zSome]{Some}#(#\hyperref[zRI]{RI}#())
diff --git a/cheri/sail_latex/sailfndecodeSomeSDL.tex b/cheri/sail_latex/sailfndecodeSomeSDL.tex
deleted file mode 100644
index bf001ec3..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSDL.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}#(0b101100 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSDL]{SDL}#(base, rt, offset))
diff --git a/cheri/sail_latex/sailfndecodeSomeSDR.tex b/cheri/sail_latex/sailfndecodeSomeSDR.tex
deleted file mode 100644
index 437d09b0..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSDR.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}#(0b101101 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSDR]{SDR}#(base, rt, offset))
diff --git a/cheri/sail_latex/sailfndecodeSomeSLL.tex b/cheri/sail_latex/sailfndecodeSomeSLL.tex
deleted file mode 100644
index 2d130736..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSLL.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : regno @ 0b000000) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSLL]{SLL}#(rt, rd, sa))
diff --git a/cheri/sail_latex/sailfndecodeSomeSLLV.tex b/cheri/sail_latex/sailfndecodeSomeSLLV.tex
deleted file mode 100644
index b06ee12d..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSLLV.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b000100) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSLLV]{SLLV}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeSLT.tex b/cheri/sail_latex/sailfndecodeSomeSLT.tex
deleted file mode 100644
index b6651698..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSLT.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b101010) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSLT]{SLT}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeSLTI.tex b/cheri/sail_latex/sailfndecodeSomeSLTI.tex
deleted file mode 100644
index c1240f5b..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSLTI.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b001010 @ rs : regno @ rt : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSLTI]{SLTI}#(rs, rt, imm))
diff --git a/cheri/sail_latex/sailfndecodeSomeSLTIU.tex b/cheri/sail_latex/sailfndecodeSomeSLTIU.tex
deleted file mode 100644
index 72d15602..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSLTIU.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b001011 @ rs : regno @ rt : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSLTIU]{SLTIU}#(rs, rt, imm))
diff --git a/cheri/sail_latex/sailfndecodeSomeSLTU.tex b/cheri/sail_latex/sailfndecodeSomeSLTU.tex
deleted file mode 100644
index c735877d..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSLTU.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b101011) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSLTU]{SLTU}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeSRA.tex b/cheri/sail_latex/sailfndecodeSomeSRA.tex
deleted file mode 100644
index 2050a307..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSRA.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : regno @ 0b000011) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSRA]{SRA}#(rt, rd, sa))
diff --git a/cheri/sail_latex/sailfndecodeSomeSRAV.tex b/cheri/sail_latex/sailfndecodeSomeSRAV.tex
deleted file mode 100644
index a198a715..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSRAV.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b000111) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSRAV]{SRAV}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeSRL.tex b/cheri/sail_latex/sailfndecodeSomeSRL.tex
deleted file mode 100644
index 80c0dd7a..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSRL.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : regno @ 0b000010) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSRL]{SRL}#(rt, rd, sa))
diff --git a/cheri/sail_latex/sailfndecodeSomeSRLV.tex b/cheri/sail_latex/sailfndecodeSomeSRLV.tex
deleted file mode 100644
index b06e51d9..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSRLV.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b000110) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSRLV]{SRLV}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeSUB.tex b/cheri/sail_latex/sailfndecodeSomeSUB.tex
deleted file mode 100644
index 2ee4e29f..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSUB.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100010) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSUB]{SUB}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeSUBU.tex b/cheri/sail_latex/sailfndecodeSomeSUBU.tex
deleted file mode 100644
index 4f00e98b..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSUBU.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100011) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSUBU]{SUBU}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeSWL.tex b/cheri/sail_latex/sailfndecodeSomeSWL.tex
deleted file mode 100644
index 208f2397..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSWL.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}#(0b101010 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSWL]{SWL}#(base, rt, offset))
diff --git a/cheri/sail_latex/sailfndecodeSomeSWR.tex b/cheri/sail_latex/sailfndecodeSomeSWR.tex
deleted file mode 100644
index 41ef1162..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSWR.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}#(0b101110 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSWR]{SWR}#(base, rt, offset))
diff --git a/cheri/sail_latex/sailfndecodeSomeSYNC.tex b/cheri/sail_latex/sailfndecodeSomeSYNC.tex
deleted file mode 100644
index 12f85118..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSYNC.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ 0b00000 @ 0b00000 @ 0b00000 @ stype : regno @ 0b001111) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSYNC]{SYNC}#()) /* stype is currently ignored */
diff --git a/cheri/sail_latex/sailfndecodeSomeSYSCALL.tex b/cheri/sail_latex/sailfndecodeSomeSYSCALL.tex
deleted file mode 100644
index bace77fa..00000000
--- a/cheri/sail_latex/sailfndecodeSomeSYSCALL.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ code : #\hyperref[zbits]{bits}#(20) @ 0b001100) =
- #\hyperref[zSome]{Some}#(#\hyperref[zSYSCALL]{SYSCALL}#()) /* code is ignored */
diff --git a/cheri/sail_latex/sailfndecodeSomeStore.tex b/cheri/sail_latex/sailfndecodeSomeStore.tex
deleted file mode 100644
index 1a291fbd..00000000
--- a/cheri/sail_latex/sailfndecodeSomeStore.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b101000 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zStore]{Store}#(B, false, base, rt, offset)) /* SB */
diff --git a/cheri/sail_latex/sailfndecodeSomeTRAPIMM.tex b/cheri/sail_latex/sailfndecodeSomeTRAPIMM.tex
deleted file mode 100644
index 90ed1745..00000000
--- a/cheri/sail_latex/sailfndecodeSomeTRAPIMM.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000001 @ rs : regno @ 0b01100 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zTRAPIMM]{TRAPIMM}#(rs, imm, EQ)) /* TEQI */
diff --git a/cheri/sail_latex/sailfndecodeSomeTRAPREG.tex b/cheri/sail_latex/sailfndecodeSomeTRAPREG.tex
deleted file mode 100644
index 66126500..00000000
--- a/cheri/sail_latex/sailfndecodeSomeTRAPREG.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ code : #\hyperref[zbits]{bits}#(10) @ 0b110000) =
- #\hyperref[zSome]{Some}#(#\hyperref[zTRAPREG]{TRAPREG}#(rs, rt, GE)) /* TGE */
diff --git a/cheri/sail_latex/sailfndecodeSomeWAIT.tex b/cheri/sail_latex/sailfndecodeSomeWAIT.tex
deleted file mode 100644
index 443840f8..00000000
--- a/cheri/sail_latex/sailfndecodeSomeWAIT.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010000 @ 0x80000 @ 0b100000) =
- #\hyperref[zSome]{Some}#(#\hyperref[zWAIT]{WAIT}#()) /* we only accept code == 0 */
diff --git a/cheri/sail_latex/sailfndecodeSomeXOR.tex b/cheri/sail_latex/sailfndecodeSomeXOR.tex
deleted file mode 100644
index f25d968e..00000000
--- a/cheri/sail_latex/sailfndecodeSomeXOR.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100110) =
- #\hyperref[zSome]{Some}#(#\hyperref[zXOR]{XOR}#(rs, rt, rd))
diff --git a/cheri/sail_latex/sailfndecodeSomeXORI.tex b/cheri/sail_latex/sailfndecodeSomeXORI.tex
deleted file mode 100644
index 018ca5d7..00000000
--- a/cheri/sail_latex/sailfndecodeSomeXORI.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b001110 @ rs : regno @ rt : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zXORI]{XORI}#(rs, rt, imm))
diff --git a/cheri/sail_latex/sailfndecodefailureofnum.tex b/cheri/sail_latex/sailfndecodefailureofnum.tex
deleted file mode 100644
index 2ad9ff6d..00000000
--- a/cheri/sail_latex/sailfndecodefailureofnum.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function decode_failure_of_num arg# = match arg# {
- 0 => no_matching_pattern,
- 1 => unsupported_instruction,
- 2 => illegal_instruction,
- _ => internal_error
-}
diff --git a/cheri/sail_latex/sailfndumpcptwostate.tex b/cheri/sail_latex/sailfndumpcptwostate.tex
deleted file mode 100644
index 53ab717e..00000000
--- a/cheri/sail_latex/sailfndumpcptwostate.tex
+++ /dev/null
@@ -1,17 +0,0 @@
-function #\hyperref[zdumpzycptwozystate]{dump\_cp2\_state}# () = {
- #\hyperref[zprint]{print}#(#\hyperref[zconcatzystr]{concat\_str}#("DEBUG CAP PCC", #\hyperref[zcapToString]{capToString}#(#\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(PCC))));
- foreach(i from 0 to 31) {
- #\hyperref[zprint]{print}#(#\hyperref[zconcatzystr]{concat\_str}#("DEBUG CAP REG ", #\hyperref[zconcatzystr]{concat\_str}#(#\hyperref[zstringzyofzyint]{string\_of\_int}#(i), #\hyperref[zcapToString]{capToString}#(#\hyperref[zreadCapReg]{readCapReg}#(#\hyperref[ztozybits]{to\_bits}#(5, i))))))
- };
- #\hyperref[zprint]{print}#(#\hyperref[zconcatzystr]{concat\_str}#("DEBUG CAP HWREG 00", #\hyperref[zcapToString]{capToString}#(#\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(DDC))));
- #\hyperref[zprint]{print}#(#\hyperref[zconcatzystr]{concat\_str}#("DEBUG CAP HWREG 01", #\hyperref[zcapToString]{capToString}#(#\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(CTLSU))));
- #\hyperref[zprint]{print}#(#\hyperref[zconcatzystr]{concat\_str}#("DEBUG CAP HWREG 08", #\hyperref[zcapToString]{capToString}#(#\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(CTLSP))));
- /* TODO: these two should not be mirrored to match the FPGA */
- #\hyperref[zprint]{print}#(#\hyperref[zconcatzystr]{concat\_str}#("DEBUG CAP HWREG 22", #\hyperref[zcapToString]{capToString}#(#\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(KR1C))));
- #\hyperref[zprint]{print}#(#\hyperref[zconcatzystr]{concat\_str}#("DEBUG CAP HWREG 23", #\hyperref[zcapToString]{capToString}#(#\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(KR2C))));
- /* KCC, KDC, EPCC */
- #\hyperref[zprint]{print}#(#\hyperref[zconcatzystr]{concat\_str}#("DEBUG CAP HWREG 29", #\hyperref[zcapToString]{capToString}#(#\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(KCC))));
- #\hyperref[zprint]{print}#(#\hyperref[zconcatzystr]{concat\_str}#("DEBUG CAP HWREG 30", #\hyperref[zcapToString]{capToString}#(#\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(KDC))));
- #\hyperref[zprint]{print}#(#\hyperref[zconcatzystr]{concat\_str}#("DEBUG CAP HWREG 31", #\hyperref[zcapToString]{capToString}#(#\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(EPCC))));
-
-}
diff --git a/cheri/sail_latex/sailfnexecuteADD.tex b/cheri/sail_latex/sailfnexecuteADD.tex
deleted file mode 100644
index 2ad9da32..00000000
--- a/cheri/sail_latex/sailfnexecuteADD.tex
+++ /dev/null
@@ -1,13 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zADD]{ADD}#(rs, rt, rd)) =
- {
- opA : #\hyperref[zbits]{bits}#(64) = #\hyperref[zrGPR]{rGPR}#(rs);
- opB : #\hyperref[zbits]{bits}#(64) = #\hyperref[zrGPR]{rGPR}#(rt);
- if #\hyperref[zNotWordVal]{NotWordVal}#(opA) | #\hyperref[zNotWordVal]{NotWordVal}#(opB) then
- #\hyperref[zwGPR]{wGPR}#(rd) = undefined /* XXX could exit instead */
- else
- let sum33 : #\hyperref[zbits]{bits}#(33) = #\hyperref[zsignzyextend]{sign\_extend}#(opA[31 .. 0]) + #\hyperref[zsignzyextend]{sign\_extend}#(opB[31 .. 0])in
- if sum33[32] != sum33[31] then
- (#\hyperref[zSignalException]{SignalException}#(Ov))
- else
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zsignzyextend]{sign\_extend}#(sum33[31..0])
- }
diff --git a/cheri/sail_latex/sailfnexecuteADDI.tex b/cheri/sail_latex/sailfnexecuteADDI.tex
deleted file mode 100644
index 07076225..00000000
--- a/cheri/sail_latex/sailfnexecuteADDI.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zADDI]{ADDI}#(rs, rt, imm)) =
- {
- opA = #\hyperref[zrGPR]{rGPR}#(rs);
- if #\hyperref[zNotWordVal]{NotWordVal}#(opA) then
- #\hyperref[zwGPR]{wGPR}#(rt) = undefined /* XXX could exit instead */
- else
- let sum33 : #\hyperref[zbits]{bits}#(33) = #\hyperref[zsignzyextend]{sign\_extend}#(opA[31 .. 0]) + #\hyperref[zsignzyextend]{sign\_extend}#(imm) in
- if sum33[32] != sum33[31] then
- (#\hyperref[zSignalException]{SignalException}#(Ov))
- else
- #\hyperref[zwGPR]{wGPR}#(rt) = #\hyperref[zsignzyextend]{sign\_extend}#(sum33[31..0])
- }
diff --git a/cheri/sail_latex/sailfnexecuteADDIU.tex b/cheri/sail_latex/sailfnexecuteADDIU.tex
deleted file mode 100644
index 5be7b646..00000000
--- a/cheri/sail_latex/sailfnexecuteADDIU.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zADDIU]{ADDIU}#(rs, rt, imm)) =
- {
- opA = #\hyperref[zrGPR]{rGPR}#(rs);
- if #\hyperref[zNotWordVal]{NotWordVal}#(opA) then
- #\hyperref[zwGPR]{wGPR}#(rt) = undefined /* XXX could exit instead */
- else
- #\hyperref[zwGPR]{wGPR}#(rt) = #\hyperref[zsignzyextend]{sign\_extend}#((opA[31 .. 0]) + #\hyperref[zsignzyextend]{sign\_extend}#(imm))
- }
diff --git a/cheri/sail_latex/sailfnexecuteADDU.tex b/cheri/sail_latex/sailfnexecuteADDU.tex
deleted file mode 100644
index ec253078..00000000
--- a/cheri/sail_latex/sailfnexecuteADDU.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zADDU]{ADDU}#(rs, rt, rd)) =
- {
- opA = #\hyperref[zrGPR]{rGPR}#(rs);
- opB = #\hyperref[zrGPR]{rGPR}#(rt);
- if #\hyperref[zNotWordVal]{NotWordVal}#(opA) | #\hyperref[zNotWordVal]{NotWordVal}#(opB) then
- #\hyperref[zwGPR]{wGPR}#(rd) = undefined
- else
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zsignzyextend]{sign\_extend}#(opA[31..0] + opB[31..0])
- }
diff --git a/cheri/sail_latex/sailfnexecuteAND.tex b/cheri/sail_latex/sailfnexecuteAND.tex
deleted file mode 100644
index f24435e8..00000000
--- a/cheri/sail_latex/sailfnexecuteAND.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zAND]{AND}# (rs, rt, rd)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rd) = (#\hyperref[zrGPR]{rGPR}#(rs) & #\hyperref[zrGPR]{rGPR}#(rt))
- }
diff --git a/cheri/sail_latex/sailfnexecuteANDI.tex b/cheri/sail_latex/sailfnexecuteANDI.tex
deleted file mode 100644
index 03305987..00000000
--- a/cheri/sail_latex/sailfnexecuteANDI.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zANDI]{ANDI}# (rs, rt, imm)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rt) = (#\hyperref[zrGPR]{rGPR}#(rs) & #\hyperref[zzzerozyextend]{zero\_extend}#(imm))
- }
diff --git a/cheri/sail_latex/sailfnexecuteBCMPZ.tex b/cheri/sail_latex/sailfnexecuteBCMPZ.tex
deleted file mode 100644
index ffaa5df3..00000000
--- a/cheri/sail_latex/sailfnexecuteBCMPZ.tex
+++ /dev/null
@@ -1,17 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zBCMPZ]{BCMPZ}#(rs, imm, cmp, link, likely)) =
- {
- linkVal = PC + 8;
- regVal = #\hyperref[zrGPR]{rGPR}#(rs);
- condition = #\hyperref[zcompare]{compare}#(cmp, regVal, #\hyperref[zzzerozyextend]{zero\_extend}#(0b0));
- if (condition) then
- {
- let offset : #\hyperref[zbits]{bits}#(64) = (#\hyperref[zsignzyextend]{sign\_extend}#(imm @ 0b00) + 4) in
- #\hyperref[zexecutezybranch]{execute\_branch}#(PC + offset);
- }
- else if (likely) then
- {
- nextPC = PC + 8 /* skip branch delay */
- };
- if (link) then
- #\hyperref[zwGPR]{wGPR}#(0b11111) = linkVal
- }
diff --git a/cheri/sail_latex/sailfnexecuteBEQ.tex b/cheri/sail_latex/sailfnexecuteBEQ.tex
deleted file mode 100644
index 348c1c0e..00000000
--- a/cheri/sail_latex/sailfnexecuteBEQ.tex
+++ /dev/null
@@ -1,13 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zBEQ]{BEQ}#(rs, rd, imm, ne, likely)) =
- {
- if ((#\hyperref[zrGPR]{rGPR}#(rs) == #\hyperref[zrGPR]{rGPR}#(rd)) ^ ne) then
- {
- let offset : #\hyperref[zbits]{bits}#(64) = (#\hyperref[zsignzyextend]{sign\_extend}#(imm @ 0b00) + 4) in
- #\hyperref[zexecutezybranch]{execute\_branch}#(PC + offset);
- }
- else
- {
- if (likely) then
- nextPC = PC + 8; /* skip branch delay */
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteBREAK.tex b/cheri/sail_latex/sailfnexecuteBREAK.tex
deleted file mode 100644
index 06f15ea9..00000000
--- a/cheri/sail_latex/sailfnexecuteBREAK.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zBREAK]{BREAK}#()) =
- {
- (#\hyperref[zSignalException]{SignalException}#(Bp))
- }
diff --git a/cheri/sail_latex/sailfnexecuteCACHE.tex b/cheri/sail_latex/sailfnexecuteCACHE.tex
deleted file mode 100644
index 14ecf045..00000000
--- a/cheri/sail_latex/sailfnexecuteCACHE.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCACHE]{CACHE}#(base, op, imm)) =
- #\hyperref[zcheckCPzeroAccess]{checkCP0Access}# () /* pretty much a NOP because no caches */
diff --git a/cheri/sail_latex/sailfnexecuteCAndPerm.tex b/cheri/sail_latex/sailfnexecuteCAndPerm.tex
deleted file mode 100644
index b2cc7bc3..00000000
--- a/cheri/sail_latex/sailfnexecuteCAndPerm.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-function clause #\hyperref[zexecute]{execute}#(#\hyperref[zCAndPerm]{CAndPerm}#(cd, cb, rt)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- let cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- let rt_val = #\hyperref[zrGPR]{rGPR}#(rt);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else
- let perms = #\hyperref[zgetCapPerms]{getCapPerms}#(cb_val) in
- let newCap = #\hyperref[zsetCapPerms]{setCapPerms}#(cb_val, (perms & rt_val[30..0])) in
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, newCap);
-}
diff --git a/cheri/sail_latex/sailfnexecuteCBX.tex b/cheri/sail_latex/sailfnexecuteCBX.tex
deleted file mode 100644
index 47463a93..00000000
--- a/cheri/sail_latex/sailfnexecuteCBX.tex
+++ /dev/null
@@ -1,11 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCBX]{CBX}#(cb, imm, notset)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if (((#\hyperref[zreadCapReg]{readCapReg}#(cb)).tag) ^ notset) then
- {
- let offset : #\hyperref[zbits]{bits}#(64) = (#\hyperref[zsignzyextend]{sign\_extend}#(imm @ 0b00) + 4) in
- #\hyperref[zexecutezybranch]{execute\_branch}#(PC + offset);
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCBZ.tex b/cheri/sail_latex/sailfnexecuteCBZ.tex
deleted file mode 100644
index 99a6be08..00000000
--- a/cheri/sail_latex/sailfnexecuteCBZ.tex
+++ /dev/null
@@ -1,11 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCBZ]{CBZ}#(cb, imm, notzero)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if (((#\hyperref[zreadCapReg]{readCapReg}#(cb)) == null_cap) ^ notzero) then
- {
- let offset : #\hyperref[zbits]{bits}#(64) = (#\hyperref[zsignzyextend]{sign\_extend}#(imm @ 0b00) + 4) in
- #\hyperref[zexecutezybranch]{execute\_branch}#(PC + offset);
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCBuildCap.tex b/cheri/sail_latex/sailfnexecuteCBuildCap.tex
deleted file mode 100644
index cff66cc3..00000000
--- a/cheri/sail_latex/sailfnexecuteCBuildCap.tex
+++ /dev/null
@@ -1,40 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCBuildCap]{CBuildCap}#(cd, cb, ct)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cb_val = #\hyperref[zreadCapRegDDC]{readCapRegDDC}#(cb);
- ct_val = #\hyperref[zreadCapReg]{readCapReg}#(ct);
- cb_base = #\hyperref[zgetCapBase]{getCapBase}#(cb_val);
- ct_base = #\hyperref[zgetCapBase]{getCapBase}#(ct_val);
- cb_top = #\hyperref[zgetCapTop]{getCapTop}#(cb_val);
- ct_top = #\hyperref[zgetCapTop]{getCapTop}#(ct_val);
- cb_perms = #\hyperref[zgetCapPerms]{getCapPerms}#(cb_val);
- ct_perms = #\hyperref[zgetCapPerms]{getCapPerms}#(ct_val);
- ct_offset = #\hyperref[zgetCapOffset]{getCapOffset}#(ct_val);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(ct)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, ct)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else if ct_base < cb_base then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if ct_top > cb_top then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if ct_base > ct_top then /* check for length < 0 - possible because ct might be untagged */
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, ct)
- else if (ct_perms & cb_perms) != ct_perms then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_UserDefViolation, cb)
- else
- let (exact, cd1) = #\hyperref[zsetCapBounds]{setCapBounds}#(cb_val, #\hyperref[ztozybits]{to\_bits}#(64, ct_base), #\hyperref[ztozybits]{to\_bits}#(65, ct_top)) in
- let (representable, cd2) = #\hyperref[zsetCapOffset]{setCapOffset}#(cd1, #\hyperref[ztozybits]{to\_bits}#(64, ct_offset)) in
- let cd3 = #\hyperref[zsetCapPerms]{setCapPerms}#(cd2, ct_perms) in
- {
- assert(exact, ""); /* base and top came from ct originally so will be exact */
- assert(representable, ""); /* similarly offset should be representable XXX except for fastRepCheck */
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, cd3);
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCCSeal.tex b/cheri/sail_latex/sailfnexecuteCCSeal.tex
deleted file mode 100644
index 7a1bc402..00000000
--- a/cheri/sail_latex/sailfnexecuteCCSeal.tex
+++ /dev/null
@@ -1,37 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCCSeal]{CCSeal}#(cd, cs, ct)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cs_val = #\hyperref[zreadCapReg]{readCapReg}#(cs);
- ct_val = #\hyperref[zreadCapReg]{readCapReg}#(ct);
- ct_cursor = #\hyperref[zgetCapCursor]{getCapCursor}#(ct_val);
- ct_top = #\hyperref[zgetCapTop]{getCapTop}#(ct_val);
- ct_base = #\hyperref[zgetCapBase]{getCapBase}#(ct_val);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cs)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cs)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(ct)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, ct)
- else if #\hyperref[znot]{not}# (cs_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cs)
- else if (#\hyperref[znot]{not}# (ct_val.tag)) | (#\hyperref[zgetCapCursor]{getCapCursor}#(ct_val) == #\hyperref[zunsigned]{unsigned}#(bitone ^^ 64)) then
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, cs_val)
- else if (cs_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cs)
- else if (ct_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, ct)
- else if #\hyperref[znot]{not}# (ct_val.permit_seal) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitSealViolation, ct)
- else if (ct_cursor < ct_base) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, ct)
- else if (ct_cursor >= ct_top) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, ct)
- else if (ct_cursor > max_otype) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, ct)
- else
- let (success, newCap) = #\hyperref[zsealCap]{sealCap}#(cs_val, #\hyperref[ztozybits]{to\_bits}#(24, ct_cursor)) in
- if #\hyperref[znot]{not}# (success) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_InexactBounds, cs)
- else
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, newCap)
-}
diff --git a/cheri/sail_latex/sailfnexecuteCCall.tex b/cheri/sail_latex/sailfnexecuteCCall.tex
deleted file mode 100644
index 1cae71b0..00000000
--- a/cheri/sail_latex/sailfnexecuteCCall.tex
+++ /dev/null
@@ -1,32 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCCall]{CCall}#(cs, cb, 0b00000000000)) = /* selector=0 */
-{
- /* Partial implementation of CCall with checks in hardware, but raising a trap to perform trusted stack manipulation */
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cs_val = #\hyperref[zreadCapReg]{readCapReg}#(cs);
- cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- cs_cursor = #\hyperref[zgetCapCursor]{getCapCursor}#(cs_val);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cs)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cs)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if #\hyperref[znot]{not}# (cs_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cs)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if #\hyperref[znot]{not}# (cs_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cs)
- else if #\hyperref[znot]{not}# (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else if ((cs_val.otype) != (cb_val.otype)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TypeViolation, cs)
- else if #\hyperref[znot]{not}# (cs_val.permit_execute) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitExecuteViolation, cs)
- else if (cb_val.permit_execute) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitExecuteViolation, cb)
- else if (cs_cursor < #\hyperref[zgetCapBase]{getCapBase}#(cs_val)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cs)
- else if (cs_cursor >= #\hyperref[zgetCapTop]{getCapTop}#(cs_val)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cs)
- else
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_CallTrap, cs);
-}
diff --git a/cheri/sail_latex/sailfnexecuteCCheckPerm.tex b/cheri/sail_latex/sailfnexecuteCCheckPerm.tex
deleted file mode 100644
index 1a4ac93c..00000000
--- a/cheri/sail_latex/sailfnexecuteCCheckPerm.tex
+++ /dev/null
@@ -1,13 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCCheckPerm]{CCheckPerm}#(cs, rt)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cs_val = #\hyperref[zreadCapReg]{readCapReg}#(cs);
- cs_perms : #\hyperref[zbits]{bits}#(64) = #\hyperref[zzzerozyextend]{zero\_extend}#(#\hyperref[zgetCapPerms]{getCapPerms}#(cs_val));
- rt_perms = #\hyperref[zrGPR]{rGPR}#(rt);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cs)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cs)
- else if #\hyperref[znot]{not}# (cs_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cs)
- else if ((cs_perms & rt_perms) != rt_perms) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_UserDefViolation, cs)
-}
diff --git a/cheri/sail_latex/sailfnexecuteCCheckType.tex b/cheri/sail_latex/sailfnexecuteCCheckType.tex
deleted file mode 100644
index fa9da35a..00000000
--- a/cheri/sail_latex/sailfnexecuteCCheckType.tex
+++ /dev/null
@@ -1,20 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCCheckType]{CCheckType}#(cs, cb)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cs_val = #\hyperref[zreadCapReg]{readCapReg}#(cs);
- cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cs)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cs)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if #\hyperref[znot]{not}# (cs_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cs)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if #\hyperref[znot]{not}# (cs_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cs)
- else if #\hyperref[znot]{not}# (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else if ((cs_val.otype) != (cb_val.otype)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TypeViolation, cs)
-}
diff --git a/cheri/sail_latex/sailfnexecuteCClearTag.tex b/cheri/sail_latex/sailfnexecuteCClearTag.tex
deleted file mode 100644
index 54863f96..00000000
--- a/cheri/sail_latex/sailfnexecuteCClearTag.tex
+++ /dev/null
@@ -1,13 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCClearTag]{CClearTag}#(cd, cb)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else
- {
- cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, {cb_val with tag=false});
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCCopyType.tex b/cheri/sail_latex/sailfnexecuteCCopyType.tex
deleted file mode 100644
index dd34a178..00000000
--- a/cheri/sail_latex/sailfnexecuteCCopyType.tex
+++ /dev/null
@@ -1,31 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCCopyType]{CCopyType}#(cd, cb, ct)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- ct_val = #\hyperref[zreadCapReg]{readCapReg}#(ct);
- cb_base = #\hyperref[zgetCapBase]{getCapBase}#(cb_val);
- cb_top = #\hyperref[zgetCapTop]{getCapTop}#(cb_val);
- ct_otype = #\hyperref[zunsigned]{unsigned}#(ct_val.otype);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(ct)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, ct)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else if (ct_val.sealed) then {
- if ct_otype < cb_base then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if ct_otype >= cb_top then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else
- let (success, cap) = #\hyperref[zsetCapOffset]{setCapOffset}#(cb_val, #\hyperref[ztozybits]{to\_bits}#(64, ct_otype - cb_base)) in {
- assert(success, ""); /* offset is in bounds so must succeed */
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, cap);
- }
- } else
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, #\hyperref[zintzytozycap]{int\_to\_cap}#(bitone ^^ 64))
-}
diff --git a/cheri/sail_latex/sailfnexecuteCFromPtr.tex b/cheri/sail_latex/sailfnexecuteCFromPtr.tex
deleted file mode 100644
index eeb1fdc6..00000000
--- a/cheri/sail_latex/sailfnexecuteCFromPtr.tex
+++ /dev/null
@@ -1,22 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCFromPtr]{CFromPtr}#(cd, cb, rt)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cb_val = #\hyperref[zreadCapRegDDC]{readCapRegDDC}#(cb);
- rt_val = #\hyperref[zrGPR]{rGPR}#(rt);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if (rt_val == 0x0000000000000000) then
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, null_cap)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else
- let (success, newCap) = #\hyperref[zsetCapOffset]{setCapOffset}#(cb_val, rt_val) in
- if (success) then
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, newCap)
- else
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, #\hyperref[zintzytozycap]{int\_to\_cap}#(#\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zgetCapBase]{getCapBase}#(cb_val)) + rt_val))
-}
diff --git a/cheri/sail_latex/sailfnexecuteCGetAddr.tex b/cheri/sail_latex/sailfnexecuteCGetAddr.tex
deleted file mode 100644
index dd35b2ce..00000000
--- a/cheri/sail_latex/sailfnexecuteCGetAddr.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCGetAddr]{CGetAddr}#(rd, cb)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = #\hyperref[zreadCapReg]{readCapReg}#(cb) in
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zgetCapCursor]{getCapCursor}#(capVal));
-}
diff --git a/cheri/sail_latex/sailfnexecuteCGetBase.tex b/cheri/sail_latex/sailfnexecuteCGetBase.tex
deleted file mode 100644
index 305762b9..00000000
--- a/cheri/sail_latex/sailfnexecuteCGetBase.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCGetBase]{CGetBase}#(rd, cb)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = #\hyperref[zreadCapReg]{readCapReg}#(cb) in
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zgetCapBase]{getCapBase}#(capVal));
-}
diff --git a/cheri/sail_latex/sailfnexecuteCGetCause.tex b/cheri/sail_latex/sailfnexecuteCGetCause.tex
deleted file mode 100644
index 1753022e..00000000
--- a/cheri/sail_latex/sailfnexecuteCGetCause.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCGetCause]{CGetCause}#(rd)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if #\hyperref[znot]{not}# (#\hyperref[zpcczyaccesszysystemzyregs]{pcc\_access\_system\_regs}# ()) then
- #\hyperref[zraisezyctwozyexceptionzynoreg]{raise\_c2\_exception\_noreg}#(CapEx_AccessSystemRegsViolation)
- else
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zzzerozyextend]{zero\_extend}#(CapCause.#\hyperref[zbits]{bits}#())
-}
diff --git a/cheri/sail_latex/sailfnexecuteCGetLen.tex b/cheri/sail_latex/sailfnexecuteCGetLen.tex
deleted file mode 100644
index 53450720..00000000
--- a/cheri/sail_latex/sailfnexecuteCGetLen.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCGetLen]{CGetLen}#(rd, cb)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = #\hyperref[zreadCapReg]{readCapReg}#(cb) in
- let len65 = #\hyperref[zgetCapLength]{getCapLength}#(capVal) in
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[ztozybits]{to\_bits}#(64, if len65 > MAX_U64 then MAX_U64 else len65);
-}
diff --git a/cheri/sail_latex/sailfnexecuteCGetOffset.tex b/cheri/sail_latex/sailfnexecuteCGetOffset.tex
deleted file mode 100644
index de2e8e6c..00000000
--- a/cheri/sail_latex/sailfnexecuteCGetOffset.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCGetOffset]{CGetOffset}#(rd, cb)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = #\hyperref[zreadCapReg]{readCapReg}#(cb) in
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zgetCapOffset]{getCapOffset}#(capVal));
-}
diff --git a/cheri/sail_latex/sailfnexecuteCGetPCC.tex b/cheri/sail_latex/sailfnexecuteCGetPCC.tex
deleted file mode 100644
index 08b9aa67..00000000
--- a/cheri/sail_latex/sailfnexecuteCGetPCC.tex
+++ /dev/null
@@ -1,11 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCGetPCC]{CGetPCC}#(cd)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else
- let pcc = (#\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(PCC)) in
- let (success, pcc2) = #\hyperref[zsetCapOffset]{setCapOffset}#(pcc, PC) in
- {assert (success, ""); /* guaranteed to be in-bounds */
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, pcc2)};
-}
diff --git a/cheri/sail_latex/sailfnexecuteCGetPCCSetOffset.tex b/cheri/sail_latex/sailfnexecuteCGetPCCSetOffset.tex
deleted file mode 100644
index b9af822e..00000000
--- a/cheri/sail_latex/sailfnexecuteCGetPCCSetOffset.tex
+++ /dev/null
@@ -1,14 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCGetPCCSetOffset]{CGetPCCSetOffset}#(cd, rs)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else
- let pcc = (#\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(PCC)) in
- let rs_val = #\hyperref[zrGPR]{rGPR}#(rs) in
- let (success, newPCC) = #\hyperref[zsetCapOffset]{setCapOffset}#(pcc, rs_val) in
- if (success) then
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, newPCC)
- else
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, #\hyperref[zintzytozycap]{int\_to\_cap}#(rs_val));
-}
diff --git a/cheri/sail_latex/sailfnexecuteCGetPerm.tex b/cheri/sail_latex/sailfnexecuteCGetPerm.tex
deleted file mode 100644
index 8bde1b68..00000000
--- a/cheri/sail_latex/sailfnexecuteCGetPerm.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCGetPerm]{CGetPerm}#(rd, cb)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = #\hyperref[zreadCapReg]{readCapReg}#(cb) in
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zzzerozyextend]{zero\_extend}#(#\hyperref[zgetCapPerms]{getCapPerms}#(capVal));
-}
diff --git a/cheri/sail_latex/sailfnexecuteCGetSealed.tex b/cheri/sail_latex/sailfnexecuteCGetSealed.tex
deleted file mode 100644
index fb51d742..00000000
--- a/cheri/sail_latex/sailfnexecuteCGetSealed.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCGetSealed]{CGetSealed}#(rd, cb)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = #\hyperref[zreadCapReg]{readCapReg}#(cb) in
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zzzerozyextend]{zero\_extend}#(capVal.sealed);
-}
diff --git a/cheri/sail_latex/sailfnexecuteCGetTag.tex b/cheri/sail_latex/sailfnexecuteCGetTag.tex
deleted file mode 100644
index 827aed6e..00000000
--- a/cheri/sail_latex/sailfnexecuteCGetTag.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCGetTag]{CGetTag}#(rd, cb)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = #\hyperref[zreadCapReg]{readCapReg}#(cb) in
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zzzerozyextend]{zero\_extend}#(capVal.tag);
-}
diff --git a/cheri/sail_latex/sailfnexecuteCGetType.tex b/cheri/sail_latex/sailfnexecuteCGetType.tex
deleted file mode 100644
index abd4490d..00000000
--- a/cheri/sail_latex/sailfnexecuteCGetType.tex
+++ /dev/null
@@ -1,11 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCGetType]{CGetType}#(rd, cb)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else
- let capVal = #\hyperref[zreadCapReg]{readCapReg}#(cb) in
- #\hyperref[zwGPR]{wGPR}#(rd) = if (capVal.sealed)
- then #\hyperref[zzzerozyextend]{zero\_extend}#(capVal.otype)
- else (bitone ^^ 64)
-}
diff --git a/cheri/sail_latex/sailfnexecuteCIncOffset.tex b/cheri/sail_latex/sailfnexecuteCIncOffset.tex
deleted file mode 100644
index 4b4b1888..00000000
--- a/cheri/sail_latex/sailfnexecuteCIncOffset.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCIncOffset]{CIncOffset}#(cd, cb, rt)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- rt_val = #\hyperref[zrGPR]{rGPR}#(rt);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if ((cb_val.tag) & (cb_val.sealed) & (rt_val != 0x0000000000000000)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else
- let (success, newCap) = #\hyperref[zincCapOffset]{incCapOffset}#(cb_val, rt_val) in
- if (success) then
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, newCap)
- else
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, #\hyperref[zintzytozycap]{int\_to\_cap}#(#\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zgetCapBase]{getCapBase}#(cb_val)) + rt_val))
-}
diff --git a/cheri/sail_latex/sailfnexecuteCIncOffsetImmediate.tex b/cheri/sail_latex/sailfnexecuteCIncOffsetImmediate.tex
deleted file mode 100644
index d82f66c9..00000000
--- a/cheri/sail_latex/sailfnexecuteCIncOffsetImmediate.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCIncOffsetImmediate]{CIncOffsetImmediate}#(cd, cb, imm)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- let cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- let imm64 : #\hyperref[zbits]{bits}#(64) = #\hyperref[zsignzyextend]{sign\_extend}#(imm) in
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if ((cb_val.tag) & (cb_val.sealed)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else
- let (success, newCap) = #\hyperref[zincCapOffset]{incCapOffset}#(cb_val, imm64) in
- if (success) then
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, newCap)
- else
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, #\hyperref[zintzytozycap]{int\_to\_cap}#(#\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zgetCapBase]{getCapBase}#(cb_val)) + imm64))
-}
diff --git a/cheri/sail_latex/sailfnexecuteCJALR.tex b/cheri/sail_latex/sailfnexecuteCJALR.tex
deleted file mode 100644
index 76a5aa86..00000000
--- a/cheri/sail_latex/sailfnexecuteCJALR.tex
+++ /dev/null
@@ -1,35 +0,0 @@
-function clause #\hyperref[zexecute]{execute}#(#\hyperref[zCJALR]{CJALR}#(cd, cb, link)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- cb_ptr = #\hyperref[zgetCapCursor]{getCapCursor}#(cb_val);
- cb_top = #\hyperref[zgetCapTop]{getCapTop}#(cb_val);
- cb_base= #\hyperref[zgetCapBase]{getCapBase}#(cb_val);
- if (link & #\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.permit_execute) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitExecuteViolation, cb)
- else if (cb_ptr < cb_base) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if ((cb_ptr + 4) > cb_top) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if ((cb_ptr % 4) != 0) then
- #\hyperref[zSignalException]{SignalException}#(AdEL)
- else
- {
- if (link) then
- let pcc = #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(PCC) in
- let (success, linkCap) = #\hyperref[zsetCapOffset]{setCapOffset}#(pcc, PC+8) in
- if (success) then
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, linkCap)
- else
- assert(false, "");
- #\hyperref[zexecutezybranchzypcc]{execute\_branch\_pcc}#(cb_val);
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCLC.tex b/cheri/sail_latex/sailfnexecuteCLC.tex
deleted file mode 100644
index a128ee88..00000000
--- a/cheri/sail_latex/sailfnexecuteCLC.tex
+++ /dev/null
@@ -1,44 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCLC]{CLC}#(cd, cb, rt, offset, linked)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cb_val = #\hyperref[zreadCapRegDDC]{readCapRegDDC}#(cb);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.permit_load) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitLoadViolation, cb)
- else
- {
- cursor = #\hyperref[zgetCapCursor]{getCapCursor}#(cb_val);
- vAddr = (cursor + #\hyperref[zunsigned]{unsigned}#(#\hyperref[zrGPR]{rGPR}#(rt)) + 16 * #\hyperref[zsigned]{signed}#(offset)) % #\hyperref[zpowtwo]{pow2}#(64);
- vAddr64= #\hyperref[ztozybits]{to\_bits}#(64, vAddr);
- if ((vAddr + cap_size) > #\hyperref[zgetCapTop]{getCapTop}#(cb_val)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if (vAddr < #\hyperref[zgetCapBase]{getCapBase}#(cb_val)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if ((vAddr % cap_size) != 0) then
- #\hyperref[zSignalExceptionBadAddr]{SignalExceptionBadAddr}#(AdEL, vAddr64)
- else
- {
- let (pAddr, suppressTag) = #\hyperref[zTLBTranslateC]{TLBTranslateC}#(vAddr64, LoadData) in
- let 'cd = #\hyperref[zunsigned]{unsigned}#(cd) in
- if (linked) then
- {
- CP0LLBit = 0b1;
- CP0LLAddr = pAddr;
- let (tag, mem) = #\hyperref[zMEMrzytaggedzyreserve]{MEMr\_tagged\_reserve}#(pAddr) in
- (*CapRegs[cd]) = #\hyperref[zmemBitsToCapBits]{memBitsToCapBits}#(tag & (cb_val.permit_load_cap) & (#\hyperref[znot]{not}# (suppressTag)), mem);
- }
- else
- {
- let (tag, mem) = #\hyperref[zMEMrzytagged]{MEMr\_tagged}#(pAddr) in
- (*CapRegs[cd]) = #\hyperref[zmemBitsToCapBits]{memBitsToCapBits}#(tag & (cb_val.permit_load_cap) & (#\hyperref[znot]{not}# (suppressTag)), mem);
- }
- }
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCLoad.tex b/cheri/sail_latex/sailfnexecuteCLoad.tex
deleted file mode 100644
index 399e63f0..00000000
--- a/cheri/sail_latex/sailfnexecuteCLoad.tex
+++ /dev/null
@@ -1,39 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCLoad]{CLoad}#(rd, cb, rt, offset, signext, width, linked)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cb_val = #\hyperref[zreadCapRegDDC]{readCapRegDDC}#(cb);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.permit_load) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitLoadViolation, cb)
- else
- {
- let 'size = #\hyperref[zwordWidthBytes]{wordWidthBytes}#(width);
- let cursor = #\hyperref[zgetCapCursor]{getCapCursor}#(cb_val);
- let vAddr = (cursor + #\hyperref[zunsigned]{unsigned}#(#\hyperref[zrGPR]{rGPR}#(rt)) + size*#\hyperref[zsigned]{signed}#(offset)) % #\hyperref[zpowtwo]{pow2}#(64);
- let vAddr64 = #\hyperref[ztozybits]{to\_bits}#(64, vAddr);
- if ((vAddr + size) > #\hyperref[zgetCapTop]{getCapTop}#(cb_val)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if (vAddr < #\hyperref[zgetCapBase]{getCapBase}#(cb_val)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if #\hyperref[znot]{not}# (#\hyperref[zisAddressAligned]{isAddressAligned}#(vAddr64, width)) then
- #\hyperref[zSignalExceptionBadAddr]{SignalExceptionBadAddr}#(AdEL, vAddr64)
- else
- {
- pAddr = (#\hyperref[zTLBTranslate]{TLBTranslate}#(vAddr64, LoadData));
- memResult : #\hyperref[zbits]{bits}#(64) = if (linked) then
- {
- CP0LLBit = 0b1;
- CP0LLAddr = pAddr;
- #\hyperref[zextendLoad]{extendLoad}#(#\hyperref[zMEMrzyreservezywrapper]{MEMr\_reserve\_wrapper}#(pAddr, size), signext)
- }
- else
- #\hyperref[zextendLoad]{extendLoad}#(#\hyperref[zMEMrzywrapper]{MEMr\_wrapper}#(pAddr, size), signext);
- #\hyperref[zwGPR]{wGPR}#(rd) = memResult;
- }
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCMOVX.tex b/cheri/sail_latex/sailfnexecuteCMOVX.tex
deleted file mode 100644
index 94039992..00000000
--- a/cheri/sail_latex/sailfnexecuteCMOVX.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCMOVX]{CMOVX}#(cd, cb, rt, ismovn)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if ((#\hyperref[zrGPR]{rGPR}#(rt) == #\hyperref[zzzeros]{zeros}#()) ^ ismovn) then
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd) = #\hyperref[zreadCapReg]{readCapReg}#(cb);
-}
diff --git a/cheri/sail_latex/sailfnexecuteCPtrCmp.tex b/cheri/sail_latex/sailfnexecuteCPtrCmp.tex
deleted file mode 100644
index fc0f7c54..00000000
--- a/cheri/sail_latex/sailfnexecuteCPtrCmp.tex
+++ /dev/null
@@ -1,43 +0,0 @@
-function clause #\hyperref[zexecute]{execute}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, ct, op)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(ct)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, ct)
- else
- {
- let cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- let ct_val = #\hyperref[zreadCapReg]{readCapReg}#(ct);
- equal = false;
- ltu = false;
- lts = false;
- if (cb_val.tag != ct_val.tag) then
- {
- if #\hyperref[znot]{not}# (cb_val.tag) then
- {
- ltu = true;
- lts = true;
- }
- }
- else
- {
- cursor1 = #\hyperref[zgetCapCursor]{getCapCursor}#(cb_val);
- cursor2 = #\hyperref[zgetCapCursor]{getCapCursor}#(ct_val);
- equal = (cursor1 == cursor2);
- ltu = (cursor1 < cursor2);
- lts = #\hyperref[ztozybits]{to\_bits}#(64, cursor1) <_s #\hyperref[ztozybits]{to\_bits}#(64, cursor2);
- };
- let cmp : bool = match op {
- CEQ => equal,
- CNE => #\hyperref[znot]{not}# (equal),
- CLT => lts,
- CLE => lts | equal,
- CLTU => ltu,
- CLEU => ltu | equal,
- CEXEQ => cb_val == ct_val,
- CNEXEQ => cb_val != ct_val
- };
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zzzerozyextend]{zero\_extend}# (cmp)
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCReadHwr.tex b/cheri/sail_latex/sailfnexecuteCReadHwr.tex
deleted file mode 100644
index cc347d08..00000000
--- a/cheri/sail_latex/sailfnexecuteCReadHwr.tex
+++ /dev/null
@@ -1,35 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCReadHwr]{CReadHwr}#(cd, sel)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- let (needSup, needAccessSys) : (bool, bool) = match #\hyperref[zunsigned]{unsigned}#(sel) {
- 0 => (false, false), /* DDC -- no access control */
- 1 => (false, false), /* CTLSU -- no access control */
- 8 => (false, true), /* CTLSP -- privileged TLS */
- 22 => (true, false), /* KR1C */
- 23 => (true, false), /* KR2C */
- 29 => (true, true), /* KCC */
- 30 => (true, true), /* KDC */
- 31 => (true, true), /* EPCC */
- _ => #\hyperref[zSignalException]{SignalException}#(ResI)
- };
- if #\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if needAccessSys & #\hyperref[znot]{not}#(#\hyperref[zpcczyaccesszysystemzyregs]{pcc\_access\_system\_regs}#()) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, sel)
- else if needSup & #\hyperref[znot]{not}#(#\hyperref[zgrantsAccess]{grantsAccess}#(#\hyperref[zgetAccessLevel]{getAccessLevel}#(), Supervisor)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, sel)
- else {
- capVal : CapStruct = match #\hyperref[zunsigned]{unsigned}#(sel) {
- 0 => #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(DDC),
- 1 => #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(CTLSU),
- 8 => #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(CTLSP),
- 22 => #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(KR1C),
- 23 => #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(KR2C),
- 29 => #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(KCC),
- 30 => #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(KDC),
- 31 => #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(EPCC),
- _ => {assert(false, "should be unreachable code"); undefined}
- };
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, capVal);
- };
-}
diff --git a/cheri/sail_latex/sailfnexecuteCReturn.tex b/cheri/sail_latex/sailfnexecuteCReturn.tex
deleted file mode 100644
index 67f07815..00000000
--- a/cheri/sail_latex/sailfnexecuteCReturn.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCReturn]{CReturn}#()) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- #\hyperref[zraisezyctwozyexceptionzynoreg]{raise\_c2\_exception\_noreg}#(CapEx_ReturnTrap)
-}
diff --git a/cheri/sail_latex/sailfnexecuteCSC.tex b/cheri/sail_latex/sailfnexecuteCSC.tex
deleted file mode 100644
index cd89dcdf..00000000
--- a/cheri/sail_latex/sailfnexecuteCSC.tex
+++ /dev/null
@@ -1,48 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCSC]{CSC}#(cs, cb, rt, rd, offset, conditional)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cs_val = #\hyperref[zreadCapReg]{readCapReg}#(cs);
- cb_val = #\hyperref[zreadCapRegDDC]{readCapRegDDC}#(cb);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cs)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cs)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.permit_store) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitStoreViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.permit_store_cap) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitStoreCapViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.permit_store_local_cap) & (cs_val.tag) & #\hyperref[znot]{not}# (cs_val.global) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitStoreLocalCapViolation, cb)
- else
- {
- cursor = #\hyperref[zgetCapCursor]{getCapCursor}#(cb_val);
- vAddr = (cursor + #\hyperref[zunsigned]{unsigned}#(#\hyperref[zrGPR]{rGPR}#(rt)) + 16 * #\hyperref[zsigned]{signed}#(offset)) % #\hyperref[zpowtwo]{pow2}#(64);
- vAddr64= #\hyperref[ztozybits]{to\_bits}#(64, vAddr);
- if ((vAddr + cap_size) > #\hyperref[zgetCapTop]{getCapTop}#(cb_val)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if (vAddr < #\hyperref[zgetCapBase]{getCapBase}#(cb_val)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if ((vAddr % cap_size) != 0) then
- #\hyperref[zSignalExceptionBadAddr]{SignalExceptionBadAddr}#(AdES, vAddr64)
- else
- {
- let (pAddr, noStoreCap) = #\hyperref[zTLBTranslateC]{TLBTranslateC}#(vAddr64, StoreData) in
- if (cs_val.tag & noStoreCap) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TLBNoStoreCap, cs)
- else if (conditional) then
- {
- success = if (CP0LLBit[0]) then
- #\hyperref[zMEMwzytaggedzyconditional]{MEMw\_tagged\_conditional}#(pAddr, cs_val.tag, #\hyperref[zcapStructToMemBits]{capStructToMemBits}#(cs_val))
- else
- false;
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zzzerozyextend]{zero\_extend}#(success);
- }
- else
- #\hyperref[zMEMwzytagged]{MEMw\_tagged}#(pAddr, cs_val.tag, #\hyperref[zcapStructToMemBits]{capStructToMemBits}#(cs_val));
- }
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCSeal.tex b/cheri/sail_latex/sailfnexecuteCSeal.tex
deleted file mode 100644
index bf062276..00000000
--- a/cheri/sail_latex/sailfnexecuteCSeal.tex
+++ /dev/null
@@ -1,37 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCSeal]{CSeal}#(cd, cs, ct)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cs_val = #\hyperref[zreadCapReg]{readCapReg}#(cs);
- ct_val = #\hyperref[zreadCapReg]{readCapReg}#(ct);
- ct_cursor = #\hyperref[zgetCapCursor]{getCapCursor}#(ct_val);
- ct_top = #\hyperref[zgetCapTop]{getCapTop}#(ct_val);
- ct_base = #\hyperref[zgetCapBase]{getCapBase}#(ct_val);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cs)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cs)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(ct)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, ct)
- else if #\hyperref[znot]{not}# (cs_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cs)
- else if #\hyperref[znot]{not}# (ct_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, ct)
- else if (cs_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cs)
- else if (ct_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, ct)
- else if #\hyperref[znot]{not}# (ct_val.permit_seal) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitSealViolation, ct)
- else if (ct_cursor < ct_base) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, ct)
- else if (ct_cursor >= ct_top) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, ct)
- else if (ct_cursor > max_otype) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, ct)
- else
- let (success, newCap) = #\hyperref[zsealCap]{sealCap}#(cs_val, #\hyperref[ztozybits]{to\_bits}#(24, ct_cursor)) in
- if #\hyperref[znot]{not}# (success) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_InexactBounds, cs)
- else
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, newCap)
-}
diff --git a/cheri/sail_latex/sailfnexecuteCSetBounds.tex b/cheri/sail_latex/sailfnexecuteCSetBounds.tex
deleted file mode 100644
index b193425d..00000000
--- a/cheri/sail_latex/sailfnexecuteCSetBounds.tex
+++ /dev/null
@@ -1,25 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCSetBounds]{CSetBounds}#(cd, cb, rt)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- let cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- let rt_val = #\hyperref[zunsigned]{unsigned}#(#\hyperref[zrGPR]{rGPR}#(rt));
- cursor = #\hyperref[zgetCapCursor]{getCapCursor}#(cb_val);
- base = #\hyperref[zgetCapBase]{getCapBase}#(cb_val);
- top = #\hyperref[zgetCapTop]{getCapTop}#(cb_val);
- newTop = cursor + rt_val;
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else if (cursor < base) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if (newTop > top) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else
- let (_, newCap) = #\hyperref[zsetCapBounds]{setCapBounds}#(cb_val, #\hyperref[ztozybits]{to\_bits}#(64, cursor), #\hyperref[ztozybits]{to\_bits}#(65, newTop)) in
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, newCap) /* ignore exact */
-}
diff --git a/cheri/sail_latex/sailfnexecuteCSetBoundsExact.tex b/cheri/sail_latex/sailfnexecuteCSetBoundsExact.tex
deleted file mode 100644
index 29d049b1..00000000
--- a/cheri/sail_latex/sailfnexecuteCSetBoundsExact.tex
+++ /dev/null
@@ -1,28 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCSetBoundsExact]{CSetBoundsExact}#(cd, cb, rt)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- rt_val = #\hyperref[zunsigned]{unsigned}#(#\hyperref[zrGPR]{rGPR}#(rt));
- cursor = #\hyperref[zgetCapCursor]{getCapCursor}#(cb_val);
- base = #\hyperref[zgetCapBase]{getCapBase}#(cb_val);
- top = #\hyperref[zgetCapTop]{getCapTop}#(cb_val);
- newTop = cursor + rt_val;
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else if (cursor < base) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if (newTop > top) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else
- let (exact, newCap) = #\hyperref[zsetCapBounds]{setCapBounds}#(cb_val, #\hyperref[ztozybits]{to\_bits}#(64, cursor), #\hyperref[ztozybits]{to\_bits}#(65, newTop)) in
- if #\hyperref[znot]{not}# (exact) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_InexactBounds, cb)
- else
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, newCap)
-}
diff --git a/cheri/sail_latex/sailfnexecuteCSetBoundsImmediate.tex b/cheri/sail_latex/sailfnexecuteCSetBoundsImmediate.tex
deleted file mode 100644
index 2d3cfb44..00000000
--- a/cheri/sail_latex/sailfnexecuteCSetBoundsImmediate.tex
+++ /dev/null
@@ -1,25 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCSetBoundsImmediate]{CSetBoundsImmediate}#(cd, cb, imm)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- immU = #\hyperref[zunsigned]{unsigned}#(imm);
- cursor = #\hyperref[zgetCapCursor]{getCapCursor}#(cb_val);
- base = #\hyperref[zgetCapBase]{getCapBase}#(cb_val);
- top = #\hyperref[zgetCapTop]{getCapTop}#(cb_val);
- newTop = cursor + immU;
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else if (cursor < base) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if (newTop > top) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else
- let (_, newCap) = #\hyperref[zsetCapBounds]{setCapBounds}#(cb_val, #\hyperref[ztozybits]{to\_bits}#(64, cursor), #\hyperref[ztozybits]{to\_bits}#(65, newTop)) in
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, newCap) /* ignore exact */
-}
diff --git a/cheri/sail_latex/sailfnexecuteCSetCause.tex b/cheri/sail_latex/sailfnexecuteCSetCause.tex
deleted file mode 100644
index b6b9ca15..00000000
--- a/cheri/sail_latex/sailfnexecuteCSetCause.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCSetCause]{CSetCause}#(rt)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if #\hyperref[znot]{not}# (#\hyperref[zpcczyaccesszysystemzyregs]{pcc\_access\_system\_regs}# ()) then
- #\hyperref[zraisezyctwozyexceptionzynoreg]{raise\_c2\_exception\_noreg}#(CapEx_AccessSystemRegsViolation)
- else
- {
- let rt_val = #\hyperref[zrGPR]{rGPR}#(rt);
- CapCause->#\hyperref[zExcCode]{ExcCode}#() = rt_val[15..8];
- CapCause->#\hyperref[zRegNum]{RegNum}#() = rt_val[7..0];
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCSetOffset.tex b/cheri/sail_latex/sailfnexecuteCSetOffset.tex
deleted file mode 100644
index 6973667a..00000000
--- a/cheri/sail_latex/sailfnexecuteCSetOffset.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCSetOffset]{CSetOffset}#(cd, cb, rt)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- let cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- let rt_val = #\hyperref[zrGPR]{rGPR}#(rt);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if ((cb_val.tag) & (cb_val.sealed)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else
- let (success, newCap) = #\hyperref[zsetCapOffset]{setCapOffset}#(cb_val, rt_val) in
- if (success) then
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, newCap)
- else
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, #\hyperref[zintzytozycap]{int\_to\_cap}#(#\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zgetCapBase]{getCapBase}#(cb_val)) + rt_val))
-}
diff --git a/cheri/sail_latex/sailfnexecuteCStore.tex b/cheri/sail_latex/sailfnexecuteCStore.tex
deleted file mode 100644
index 6ab40e18..00000000
--- a/cheri/sail_latex/sailfnexecuteCStore.tex
+++ /dev/null
@@ -1,53 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCStore]{CStore}#(rs, cb, rt, rd, offset, width, conditional)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cb_val = #\hyperref[zreadCapRegDDC]{readCapRegDDC}#(cb);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else if #\hyperref[znot]{not}# (cb_val.permit_store) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitStoreViolation, cb)
- else
- {
- size = #\hyperref[zwordWidthBytes]{wordWidthBytes}#(width);
- cursor = #\hyperref[zgetCapCursor]{getCapCursor}#(cb_val);
- vAddr = (cursor + #\hyperref[zunsigned]{unsigned}#(#\hyperref[zrGPR]{rGPR}#(rt)) + size * #\hyperref[zsigned]{signed}#(offset)) % #\hyperref[zpowtwo]{pow2}#(64);
- vAddr64= #\hyperref[ztozybits]{to\_bits}#(64, vAddr);
- if ((vAddr + size) > #\hyperref[zgetCapTop]{getCapTop}#(cb_val)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if (vAddr < #\hyperref[zgetCapBase]{getCapBase}#(cb_val)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cb)
- else if #\hyperref[znot]{not}# (#\hyperref[zisAddressAligned]{isAddressAligned}#(vAddr64, width)) then
- #\hyperref[zSignalExceptionBadAddr]{SignalExceptionBadAddr}#(AdES, vAddr64)
- else
- {
- pAddr = (#\hyperref[zTLBTranslate]{TLBTranslate}#(vAddr64, StoreData));
- rs_val = #\hyperref[zrGPR]{rGPR}#(rs);
- if (conditional) then
- {
- success : bool = if (CP0LLBit[0]) then
- match width
- {
- B => #\hyperref[zMEMwzyconditionalzywrapper]{MEMw\_conditional\_wrapper}#(pAddr, 1, rs_val[7..0]),
- H => #\hyperref[zMEMwzyconditionalzywrapper]{MEMw\_conditional\_wrapper}#(pAddr, 2, rs_val[15..0]),
- W => #\hyperref[zMEMwzyconditionalzywrapper]{MEMw\_conditional\_wrapper}#(pAddr, 4, rs_val[31..0]),
- D => #\hyperref[zMEMwzyconditionalzywrapper]{MEMw\_conditional\_wrapper}#(pAddr, 8, rs_val)
- }
- else
- false;
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zzzerozyextend]{zero\_extend}#(success);
- }
- else
- match width
- {
- B => #\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 1) = rs_val[7..0],
- H => #\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 2) = rs_val[15..0],
- W => #\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 4) = rs_val[31..0],
- D => #\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 8) = rs_val
- }
- }
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCSub.tex b/cheri/sail_latex/sailfnexecuteCSub.tex
deleted file mode 100644
index 957b645f..00000000
--- a/cheri/sail_latex/sailfnexecuteCSub.tex
+++ /dev/null
@@ -1,14 +0,0 @@
-function clause #\hyperref[zexecute]{execute}#(#\hyperref[zCSub]{CSub}#(rd, cb, ct)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- let ct_val = #\hyperref[zreadCapReg]{readCapReg}#(ct);
- let cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(ct)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, ct)
- else
- {
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zgetCapCursor]{getCapCursor}#(cb_val) - #\hyperref[zgetCapCursor]{getCapCursor}#(ct_val))
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCTestSubset.tex b/cheri/sail_latex/sailfnexecuteCTestSubset.tex
deleted file mode 100644
index a339dff7..00000000
--- a/cheri/sail_latex/sailfnexecuteCTestSubset.tex
+++ /dev/null
@@ -1,29 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCTestSubset]{CTestSubset}#(rd, cb, ct)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cb_val = #\hyperref[zreadCapRegDDC]{readCapRegDDC}#(cb);
- ct_val = #\hyperref[zreadCapReg]{readCapReg}#(ct);
- ct_top = #\hyperref[zgetCapTop]{getCapTop}#(ct_val);
- ct_base = #\hyperref[zgetCapBase]{getCapBase}#(ct_val);
- ct_perms = #\hyperref[zgetCapPerms]{getCapPerms}#(ct_val);
- cb_top = #\hyperref[zgetCapTop]{getCapTop}#(cb_val);
- cb_base = #\hyperref[zgetCapBase]{getCapBase}#(cb_val);
- cb_perms = #\hyperref[zgetCapPerms]{getCapPerms}#(cb_val);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(ct)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, ct)
- else {
- result : #\hyperref[zbits]{bits}#(1) = if (cb_val.tag != ct_val.tag) then
- 0b0
- else if (ct_base < cb_base) then
- 0b0
- else if (ct_top > cb_top) then
- 0b0
- else if ((ct_perms & cb_perms) != ct_perms) then
- 0b0
- else
- 0b1;
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zzzerozyextend]{zero\_extend}#(result);
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCToPtr.tex b/cheri/sail_latex/sailfnexecuteCToPtr.tex
deleted file mode 100644
index f37d7ac3..00000000
--- a/cheri/sail_latex/sailfnexecuteCToPtr.tex
+++ /dev/null
@@ -1,27 +0,0 @@
-function clause #\hyperref[zexecute]{execute}#(#\hyperref[zCToPtr]{CToPtr}#(rd, cb, ct)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- let ct_val = #\hyperref[zreadCapRegDDC]{readCapRegDDC}#(ct);
- let cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(ct)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, ct)
- else if #\hyperref[znot]{not}# (ct_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, ct)
- else if (cb_val.tag) & (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else
- {
- let cbBase = #\hyperref[zgetCapBase]{getCapBase}#(cb_val) in
- let cbTop = #\hyperref[zgetCapTop]{getCapTop}#(cb_val) in
- let ctBase = #\hyperref[zgetCapBase]{getCapBase}#(ct_val) in
- let ctTop = #\hyperref[zgetCapTop]{getCapTop}#(ct_val) in
- #\hyperref[zwGPR]{wGPR}#(rd) = if (#\hyperref[znot]{not}# (cb_val.tag)) |
- (cbBase < ctBase) |
- (cbTop > ctTop) then
- #\hyperref[zzzeros]{zeros}#()
- else
- #\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zgetCapCursor]{getCapCursor}#(cb_val) - ctBase)
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCUnseal.tex b/cheri/sail_latex/sailfnexecuteCUnseal.tex
deleted file mode 100644
index 48b529ef..00000000
--- a/cheri/sail_latex/sailfnexecuteCUnseal.tex
+++ /dev/null
@@ -1,35 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCUnseal]{CUnseal}#(cd, cs, ct)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cs_val = #\hyperref[zreadCapReg]{readCapReg}#(cs);
- ct_val = #\hyperref[zreadCapReg]{readCapReg}#(ct);
- ct_cursor = #\hyperref[zgetCapCursor]{getCapCursor}#(ct_val);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cd)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cd)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cs)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cs)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(ct)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, ct)
- else if #\hyperref[znot]{not}# (cs_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cs)
- else if #\hyperref[znot]{not}# (ct_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, ct)
- else if #\hyperref[znot]{not}# (cs_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cs)
- else if (ct_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, ct)
- else if (ct_cursor != #\hyperref[zunsigned]{unsigned}#(cs_val.otype)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TypeViolation, ct)
- else if #\hyperref[znot]{not}# (ct_val.permit_unseal) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitUnsealViolation, ct)
- else if (ct_cursor < #\hyperref[zgetCapBase]{getCapBase}#(ct_val)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, ct)
- else if (ct_cursor >= #\hyperref[zgetCapTop]{getCapTop}#(ct_val)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, ct)
- else
- #\hyperref[zwriteCapReg]{writeCapReg}#(cd, {cs_val with
- sealed=false,
- otype=#\hyperref[zzzeros]{zeros}#(),
- global=(cs_val.global & ct_val.global)
- })
-}
diff --git a/cheri/sail_latex/sailfnexecuteCWriteHwr.tex b/cheri/sail_latex/sailfnexecuteCWriteHwr.tex
deleted file mode 100644
index 586efb38..00000000
--- a/cheri/sail_latex/sailfnexecuteCWriteHwr.tex
+++ /dev/null
@@ -1,35 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCWriteHwr]{CWriteHwr}#(cb, sel)) =
-{
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- let (needSup, needAccessSys) : (bool, bool) = match #\hyperref[zunsigned]{unsigned}#(sel) {
- 0 => (false, false), /* DDC -- no access control */
- 1 => (false, false), /* CTLSU -- no access control */
- 8 => (false, true), /* CTLSP -- privileged TLS */
- 22 => (true, false), /* KR1C */
- 23 => (true, false), /* KR2C */
- 29 => (true, true), /* KCC */
- 30 => (true, true), /* KDC */
- 31 => (true, true), /* EPCC */
- _ => #\hyperref[zSignalException]{SignalException}#(ResI)
- };
- if #\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if needAccessSys & #\hyperref[znot]{not}#(#\hyperref[zpcczyaccesszysystemzyregs]{pcc\_access\_system\_regs}#()) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, sel)
- else if needSup & #\hyperref[znot]{not}#(#\hyperref[zgrantsAccess]{grantsAccess}#(#\hyperref[zgetAccessLevel]{getAccessLevel}#(), Supervisor)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, sel)
- else {
- capVal = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- match #\hyperref[zunsigned]{unsigned}#(sel) {
- 0 => DDC = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(capVal),
- 1 => CTLSU = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(capVal),
- 8 => CTLSP = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(capVal),
- 22 => KR1C = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(capVal),
- 23 => KR2C = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(capVal),
- 29 => KCC = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(capVal),
- 30 => KDC = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(capVal),
- 31 => EPCC = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(capVal),
- _ => assert(false, "should be unreachable code")
- };
- };
-}
diff --git a/cheri/sail_latex/sailfnexecuteClearRegs.tex b/cheri/sail_latex/sailfnexecuteClearRegs.tex
deleted file mode 100644
index 5283918f..00000000
--- a/cheri/sail_latex/sailfnexecuteClearRegs.tex
+++ /dev/null
@@ -1,21 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zClearRegs]{ClearRegs}#(regset, m)) =
-{
- if ((regset == CLo) | (regset == CHi)) then
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- if (regset == CHi) then
- foreach (i from 0 to 15)
- let r = #\hyperref[ztozybits]{to\_bits}#(5, i+16) in
- if (m[i] & #\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(r)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, r);
- foreach (i from 0 to 15)
- if (m[i]) then
- match regset {
- GPLo => #\hyperref[zwGPR]{wGPR}#(#\hyperref[ztozybits]{to\_bits}#(5, i)) = #\hyperref[zzzeros]{zeros}#(),
- GPHi => #\hyperref[zwGPR]{wGPR}#(#\hyperref[ztozybits]{to\_bits}#(5, i+16)) = #\hyperref[zzzeros]{zeros}#(),
- CLo => if i == 0 then
- DDC = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(null_cap)
- else
- #\hyperref[zwriteCapReg]{writeCapReg}#(#\hyperref[ztozybits]{to\_bits}#(5, i)) = null_cap,
- CHi => #\hyperref[zwriteCapReg]{writeCapReg}#(#\hyperref[ztozybits]{to\_bits}#(5, i+16)) = null_cap
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteCtwoDump.tex b/cheri/sail_latex/sailfnexecuteCtwoDump.tex
deleted file mode 100644
index d4986ec2..00000000
--- a/cheri/sail_latex/sailfnexecuteCtwoDump.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCtwoDump]{C2Dump}# (rt)) =
- () /* Currently a NOP */
diff --git a/cheri/sail_latex/sailfnexecuteDADD.tex b/cheri/sail_latex/sailfnexecuteDADD.tex
deleted file mode 100644
index 8a3c2f76..00000000
--- a/cheri/sail_latex/sailfnexecuteDADD.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDADD]{DADD}# (rs, rt, rd)) =
- {
- let sum65 : #\hyperref[zbits]{bits}#(65) = #\hyperref[zsignzyextend]{sign\_extend}#(#\hyperref[zrGPR]{rGPR}#(rs)) + #\hyperref[zsignzyextend]{sign\_extend}#(#\hyperref[zrGPR]{rGPR}#(rt)) in
- {
- if sum65[64] != sum65[63] then
- (#\hyperref[zSignalException]{SignalException}#(Ov))
- else
- #\hyperref[zwGPR]{wGPR}#(rd) = sum65[63..0]
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteDADDI.tex b/cheri/sail_latex/sailfnexecuteDADDI.tex
deleted file mode 100644
index c03260b8..00000000
--- a/cheri/sail_latex/sailfnexecuteDADDI.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDADDI]{DADDI}# (rs, rt, imm)) =
- {
- let sum65 : #\hyperref[zbits]{bits}#(65) = #\hyperref[zsignzyextend]{sign\_extend}#(#\hyperref[zrGPR]{rGPR}#(rs)) + #\hyperref[zsignzyextend]{sign\_extend}#(imm) in
- {
- if (sum65[64] != sum65[63]) then
- (#\hyperref[zSignalException]{SignalException}#(Ov))
- else
- #\hyperref[zwGPR]{wGPR}#(rt) = sum65[63..0]
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteDADDIU.tex b/cheri/sail_latex/sailfnexecuteDADDIU.tex
deleted file mode 100644
index 028190a0..00000000
--- a/cheri/sail_latex/sailfnexecuteDADDIU.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDADDIU]{DADDIU}# (rs, rt, imm)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rt) = #\hyperref[zrGPR]{rGPR}#(rs) + #\hyperref[zsignzyextend]{sign\_extend}#(imm)
- }
diff --git a/cheri/sail_latex/sailfnexecuteDADDU.tex b/cheri/sail_latex/sailfnexecuteDADDU.tex
deleted file mode 100644
index 610deeef..00000000
--- a/cheri/sail_latex/sailfnexecuteDADDU.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDADDU]{DADDU}# (rs, rt, rd)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zrGPR]{rGPR}#(rs) + #\hyperref[zrGPR]{rGPR}#(rt)
- }
diff --git a/cheri/sail_latex/sailfnexecuteDDIV.tex b/cheri/sail_latex/sailfnexecuteDDIV.tex
deleted file mode 100644
index 9e16d758..00000000
--- a/cheri/sail_latex/sailfnexecuteDDIV.tex
+++ /dev/null
@@ -1,16 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDDIV]{DDIV}#(rs, rt)) =
- {
- rsVal = #\hyperref[zsigned]{signed}#(#\hyperref[zrGPR]{rGPR}#(rs));
- rtVal = #\hyperref[zsigned]{signed}#(#\hyperref[zrGPR]{rGPR}#(rt));
- let (q , r) =
- if (rtVal == 0)
- then (undefined : #\hyperref[zbits]{bits}#(64), undefined : #\hyperref[zbits]{bits}#(64))
- else
- let qi = #\hyperref[zquotzyroundzyzzero]{quot\_round\_zero}#(rsVal, rtVal) in
- let ri = (rsVal - (qi * rtVal)) in
- (#\hyperref[ztozybits]{to\_bits}#(64, qi), #\hyperref[ztozybits]{to\_bits}#(64, ri)) in
- {
- LO = q;
- HI = r;
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteDDIVU.tex b/cheri/sail_latex/sailfnexecuteDDIVU.tex
deleted file mode 100644
index af83d644..00000000
--- a/cheri/sail_latex/sailfnexecuteDDIVU.tex
+++ /dev/null
@@ -1,16 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDDIVU]{DDIVU}#(rs, rt)) =
- {
- rsVal = #\hyperref[zunsigned]{unsigned}#(#\hyperref[zrGPR]{rGPR}#(rs));
- rtVal = #\hyperref[zunsigned]{unsigned}#(#\hyperref[zrGPR]{rGPR}#(rt));
- let (q, r) =
- if (rtVal == 0)
- then (undefined : #\hyperref[zbits]{bits}#(64), undefined : #\hyperref[zbits]{bits}#(64))
- else
- let qi = #\hyperref[zquotzyroundzyzzero]{quot\_round\_zero}#(rsVal, rtVal) in
- let ri = #\hyperref[zremzyroundzyzzero]{rem\_round\_zero}#(rsVal, rtVal) in
- (#\hyperref[ztozybits]{to\_bits}#(64, qi), #\hyperref[ztozybits]{to\_bits}#(64, ri)) in
- {
- LO = q;
- HI = r;
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteDIV.tex b/cheri/sail_latex/sailfnexecuteDIV.tex
deleted file mode 100644
index 8bebe43f..00000000
--- a/cheri/sail_latex/sailfnexecuteDIV.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDIV]{DIV}#(rs, rt)) =
- {
- rsVal = #\hyperref[zrGPR]{rGPR}#(rs);
- rtVal = #\hyperref[zrGPR]{rGPR}#(rt);
- let (q, r) =
- if (#\hyperref[zNotWordVal]{NotWordVal}#(rsVal) | #\hyperref[zNotWordVal]{NotWordVal}#(rtVal) | (rtVal == 0x0000000000000000)) then
- (undefined : #\hyperref[zbits]{bits}#(32), undefined : #\hyperref[zbits]{bits}#(32))
- else
- let si = #\hyperref[zsigned]{signed}#((rsVal[31..0])) in
- let ti = #\hyperref[zsigned]{signed}#((rtVal[31..0])) in
- let qi = #\hyperref[zquotzyroundzyzzero]{quot\_round\_zero}#(si, ti) in
- let ri = si - (ti*qi) in
- (#\hyperref[ztozybits]{to\_bits}#(32, qi), #\hyperref[ztozybits]{to\_bits}#(32, ri))
- in
- {
- HI = #\hyperref[zsignzyextend]{sign\_extend}#(r);
- LO = #\hyperref[zsignzyextend]{sign\_extend}#(q);
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteDIVU.tex b/cheri/sail_latex/sailfnexecuteDIVU.tex
deleted file mode 100644
index a6e54b6a..00000000
--- a/cheri/sail_latex/sailfnexecuteDIVU.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDIVU]{DIVU}#(rs, rt)) =
- {
- rsVal = #\hyperref[zrGPR]{rGPR}#(rs);
- rtVal = #\hyperref[zrGPR]{rGPR}#(rt);
- let (q, r) =
- if (#\hyperref[zNotWordVal]{NotWordVal}#(rsVal) | #\hyperref[zNotWordVal]{NotWordVal}#(rtVal) | rtVal == 0x0000000000000000) then
- (undefined : #\hyperref[zbits]{bits}#(32), undefined : #\hyperref[zbits]{bits}#(32))
- else
- let si = #\hyperref[zunsigned]{unsigned}#(rsVal[31..0]) in
- let ti = #\hyperref[zunsigned]{unsigned}#(rtVal[31..0]) in
- let qi = #\hyperref[zquotzyroundzyzzero]{quot\_round\_zero}#(si, ti) in
- let ri = #\hyperref[zremzyroundzyzzero]{rem\_round\_zero}#(si, ti) in
- (#\hyperref[ztozybits]{to\_bits}#(32, qi), #\hyperref[ztozybits]{to\_bits}#(32, ri))
- in
- {
- HI = #\hyperref[zsignzyextend]{sign\_extend}#(r);
- LO = #\hyperref[zsignzyextend]{sign\_extend}#(q);
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteDMULT.tex b/cheri/sail_latex/sailfnexecuteDMULT.tex
deleted file mode 100644
index 595fdc74..00000000
--- a/cheri/sail_latex/sailfnexecuteDMULT.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDMULT]{DMULT}#(rs, rt)) =
- {
- result = #\hyperref[zrGPR]{rGPR}#(rs) *_s #\hyperref[zrGPR]{rGPR}#(rt);
- HI = (result[127..64]);
- LO = (result[63..0]);
- }
diff --git a/cheri/sail_latex/sailfnexecuteDMULTU.tex b/cheri/sail_latex/sailfnexecuteDMULTU.tex
deleted file mode 100644
index cb23f01f..00000000
--- a/cheri/sail_latex/sailfnexecuteDMULTU.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDMULTU]{DMULTU}#(rs, rt)) =
- {
- result = #\hyperref[zrGPR]{rGPR}#(rs) *_u #\hyperref[zrGPR]{rGPR}#(rt);
- HI = (result[127..64]);
- LO = (result[63..0]);
- }
diff --git a/cheri/sail_latex/sailfnexecuteDSLL.tex b/cheri/sail_latex/sailfnexecuteDSLL.tex
deleted file mode 100644
index d470bb23..00000000
--- a/cheri/sail_latex/sailfnexecuteDSLL.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDSLL]{DSLL}# (rt, rd, sa)) =
- {
-
- #\hyperref[zwGPR]{wGPR}#(rd) = (#\hyperref[zrGPR]{rGPR}#(rt) << sa)
- }
diff --git a/cheri/sail_latex/sailfnexecuteDSLLV.tex b/cheri/sail_latex/sailfnexecuteDSLLV.tex
deleted file mode 100644
index 87270292..00000000
--- a/cheri/sail_latex/sailfnexecuteDSLLV.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDSLLV]{DSLLV}# (rs, rt, rd)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rd) = (#\hyperref[zrGPR]{rGPR}#(rt) << ((#\hyperref[zrGPR]{rGPR}#(rs))[5 .. 0]))
- }
diff --git a/cheri/sail_latex/sailfnexecuteDSLLthreetwo.tex b/cheri/sail_latex/sailfnexecuteDSLLthreetwo.tex
deleted file mode 100644
index 0af771cf..00000000
--- a/cheri/sail_latex/sailfnexecuteDSLLthreetwo.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDSLLthreetwo]{DSLL32}# (rt, rd, sa)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rd) = (#\hyperref[zrGPR]{rGPR}#(rt) << (0b1 @ sa))
- }
diff --git a/cheri/sail_latex/sailfnexecuteDSRA.tex b/cheri/sail_latex/sailfnexecuteDSRA.tex
deleted file mode 100644
index 119d7e4d..00000000
--- a/cheri/sail_latex/sailfnexecuteDSRA.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDSRA]{DSRA}# (rt, rd, sa)) =
- {
- temp = #\hyperref[zrGPR]{rGPR}#(rt);
- #\hyperref[zwGPR]{wGPR}#(rd) = temp >>_s sa
- }
diff --git a/cheri/sail_latex/sailfnexecuteDSRAV.tex b/cheri/sail_latex/sailfnexecuteDSRAV.tex
deleted file mode 100644
index 35f4a18c..00000000
--- a/cheri/sail_latex/sailfnexecuteDSRAV.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDSRAV]{DSRAV}# (rs, rt, rd)) =
- {
- temp = #\hyperref[zrGPR]{rGPR}#(rt);
- sa = #\hyperref[zrGPR]{rGPR}#(rs)[5..0];
- #\hyperref[zwGPR]{wGPR}#(rd) = temp >>_s sa
- }
diff --git a/cheri/sail_latex/sailfnexecuteDSRAthreetwo.tex b/cheri/sail_latex/sailfnexecuteDSRAthreetwo.tex
deleted file mode 100644
index 9a0380a5..00000000
--- a/cheri/sail_latex/sailfnexecuteDSRAthreetwo.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDSRAthreetwo]{DSRA32}# (rt, rd, sa)) =
- {
- temp = #\hyperref[zrGPR]{rGPR}#(rt);
- sa32 = 0b1 @ sa; /* sa+32 */
- #\hyperref[zwGPR]{wGPR}#(rd) = temp >>_s sa32
- }
diff --git a/cheri/sail_latex/sailfnexecuteDSRL.tex b/cheri/sail_latex/sailfnexecuteDSRL.tex
deleted file mode 100644
index bebaebba..00000000
--- a/cheri/sail_latex/sailfnexecuteDSRL.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDSRL]{DSRL}# (rt, rd, sa)) =
- {
- temp = #\hyperref[zrGPR]{rGPR}#(rt);
- #\hyperref[zwGPR]{wGPR}#(rd) = temp >> sa;
- }
diff --git a/cheri/sail_latex/sailfnexecuteDSRLV.tex b/cheri/sail_latex/sailfnexecuteDSRLV.tex
deleted file mode 100644
index d0dc368c..00000000
--- a/cheri/sail_latex/sailfnexecuteDSRLV.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDSRLV]{DSRLV}# (rs, rt, rd)) =
- {
- temp = #\hyperref[zrGPR]{rGPR}#(rt);
- sa = #\hyperref[zrGPR]{rGPR}#(rs)[5..0];
- #\hyperref[zwGPR]{wGPR}#(rd) = temp >> sa;
- }
diff --git a/cheri/sail_latex/sailfnexecuteDSRLthreetwo.tex b/cheri/sail_latex/sailfnexecuteDSRLthreetwo.tex
deleted file mode 100644
index 155fe058..00000000
--- a/cheri/sail_latex/sailfnexecuteDSRLthreetwo.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDSRLthreetwo]{DSRL32}# (rt, rd, sa)) =
- {
- temp = #\hyperref[zrGPR]{rGPR}#(rt);
- sa32 = 0b1 @ sa; /* sa+32 */
- #\hyperref[zwGPR]{wGPR}#(rd) = temp >> sa32;
- }
diff --git a/cheri/sail_latex/sailfnexecuteDSUB.tex b/cheri/sail_latex/sailfnexecuteDSUB.tex
deleted file mode 100644
index b4021172..00000000
--- a/cheri/sail_latex/sailfnexecuteDSUB.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDSUB]{DSUB}# (rs, rt, rd)) =
- {
- let temp65 : #\hyperref[zbits]{bits}#(65) = #\hyperref[zsignzyextend]{sign\_extend}#(#\hyperref[zrGPR]{rGPR}#(rs)) - #\hyperref[zsignzyextend]{sign\_extend}#(#\hyperref[zrGPR]{rGPR}#(rt)) in
- {
- if temp65[64] != temp65[63] then
- (#\hyperref[zSignalException]{SignalException}#(Ov))
- else
- #\hyperref[zwGPR]{wGPR}#(rd) = temp65[63..0]
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteDSUBU.tex b/cheri/sail_latex/sailfnexecuteDSUBU.tex
deleted file mode 100644
index 1f0f28ec..00000000
--- a/cheri/sail_latex/sailfnexecuteDSUBU.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zDSUBU]{DSUBU}# (rs, rt, rd)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zrGPR]{rGPR}#(rs) - #\hyperref[zrGPR]{rGPR}#(rt)
- }
diff --git a/cheri/sail_latex/sailfnexecuteERET.tex b/cheri/sail_latex/sailfnexecuteERET.tex
deleted file mode 100644
index 1517ff7d..00000000
--- a/cheri/sail_latex/sailfnexecuteERET.tex
+++ /dev/null
@@ -1,16 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zERET]{ERET}#()) =
- {
- #\hyperref[zcheckCPzeroAccess]{checkCP0Access}#();
- #\hyperref[zERETHook]{ERETHook}#();
- CP0LLBit = 0b0;
- if (CP0Status.#\hyperref[zERL]{ERL}#() == bitone) then
- {
- nextPC = CP0ErrorEPC;
- CP0Status->#\hyperref[zERL]{ERL}#() = 0b0;
- }
- else
- {
- nextPC = CP0EPC;
- CP0Status->#\hyperref[zEXL]{EXL}#() = 0b0;
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteHCF.tex b/cheri/sail_latex/sailfnexecuteHCF.tex
deleted file mode 100644
index 29eef4b5..00000000
--- a/cheri/sail_latex/sailfnexecuteHCF.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zHCF]{HCF}#()) =
- () /* halt instruction actually executed by interpreter framework */
diff --git a/cheri/sail_latex/sailfnexecuteJ.tex b/cheri/sail_latex/sailfnexecuteJ.tex
deleted file mode 100644
index b671d406..00000000
--- a/cheri/sail_latex/sailfnexecuteJ.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zJ]{J}#(offset)) =
- {
- #\hyperref[zexecutezybranch]{execute\_branch}#((PC + 4)[63..28] @ offset @ 0b00);
- }
diff --git a/cheri/sail_latex/sailfnexecuteJAL.tex b/cheri/sail_latex/sailfnexecuteJAL.tex
deleted file mode 100644
index 3aa4dbf4..00000000
--- a/cheri/sail_latex/sailfnexecuteJAL.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zJAL]{JAL}#(offset)) =
- {
- #\hyperref[zexecutezybranch]{execute\_branch}#((PC + 4)[63..28] @ offset @ 0b00);
- #\hyperref[zwGPR]{wGPR}#(0b11111) = PC + 8;
- }
diff --git a/cheri/sail_latex/sailfnexecuteJALR.tex b/cheri/sail_latex/sailfnexecuteJALR.tex
deleted file mode 100644
index 41415ba8..00000000
--- a/cheri/sail_latex/sailfnexecuteJALR.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zJALR]{JALR}#(rs, rd)) =
- {
- #\hyperref[zexecutezybranch]{execute\_branch}#(#\hyperref[zrGPR]{rGPR}#(rs));
- #\hyperref[zwGPR]{wGPR}#(rd) = PC + 8;
- }
diff --git a/cheri/sail_latex/sailfnexecuteJR.tex b/cheri/sail_latex/sailfnexecuteJR.tex
deleted file mode 100644
index ab19bbfb..00000000
--- a/cheri/sail_latex/sailfnexecuteJR.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zJR]{JR}#(rs)) =
- {
- #\hyperref[zexecutezybranch]{execute\_branch}#(#\hyperref[zrGPR]{rGPR}#(rs));
- }
diff --git a/cheri/sail_latex/sailfnexecuteLDL.tex b/cheri/sail_latex/sailfnexecuteLDL.tex
deleted file mode 100644
index c7df3f65..00000000
--- a/cheri/sail_latex/sailfnexecuteLDL.tex
+++ /dev/null
@@ -1,20 +0,0 @@
-function clause #\hyperref[zexecute]{execute}#(#\hyperref[zLDL]{LDL}#(base, rt, offset)) =
- {
- vAddr = #\hyperref[zaddrWrapperUnaligned]{addrWrapperUnaligned}#(#\hyperref[zsignzyextend]{sign\_extend}#(offset) + #\hyperref[zrGPR]{rGPR}#(base), LoadData, DL);
- let pAddr = #\hyperref[zTLBTranslate]{TLBTranslate}#(vAddr, LoadData) in
- {
- mem_val = #\hyperref[zMEMrzywrapper]{MEMr\_wrapper}#(pAddr[63..3] @ 0b000, 8); /* read double of interest */
- reg_val = #\hyperref[zrGPR]{rGPR}#(rt);
- #\hyperref[zwGPR]{wGPR}#(rt) = match vAddr[2..0]
- {
- 0b000 => mem_val,
- 0b001 => mem_val[55..0] @ reg_val[7..0],
- 0b010 => mem_val[47..0] @ reg_val[15..0],
- 0b011 => mem_val[39..0] @ reg_val[23..0],
- 0b100 => mem_val[31..0] @ reg_val[31..0],
- 0b101 => mem_val[23..0] @ reg_val[39..0],
- 0b110 => mem_val[15..0] @ reg_val[47..0],
- 0b111 => mem_val[07..0] @ reg_val[55..0]
- };
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteLDR.tex b/cheri/sail_latex/sailfnexecuteLDR.tex
deleted file mode 100644
index a66114b2..00000000
--- a/cheri/sail_latex/sailfnexecuteLDR.tex
+++ /dev/null
@@ -1,20 +0,0 @@
-function clause #\hyperref[zexecute]{execute}#(#\hyperref[zLDR]{LDR}#(base, rt, offset)) =
- {
- vAddr = #\hyperref[zaddrWrapperUnaligned]{addrWrapperUnaligned}#(#\hyperref[zsignzyextend]{sign\_extend}#(offset) + #\hyperref[zrGPR]{rGPR}#(base), LoadData, DR);
- let pAddr = #\hyperref[zTLBTranslate]{TLBTranslate}#(vAddr, LoadData) in
- {
- mem_val = #\hyperref[zMEMrzywrapper]{MEMr\_wrapper}#(pAddr[63..3] @ 0b000, 8); /* read double of interest */
- reg_val = #\hyperref[zrGPR]{rGPR}#(rt);
- #\hyperref[zwGPR]{wGPR}#(rt) = match vAddr[2..0]
- {
- 0b000 => reg_val[63..08] @ mem_val[63..56],
- 0b001 => reg_val[63..16] @ mem_val[63..48],
- 0b010 => reg_val[63..24] @ mem_val[63..40],
- 0b011 => reg_val[63..32] @ mem_val[63..32],
- 0b100 => reg_val[63..40] @ mem_val[63..24],
- 0b101 => reg_val[63..48] @ mem_val[63..16],
- 0b110 => reg_val[63..56] @ mem_val[63..08],
- 0b111 => mem_val
- };
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteLUI.tex b/cheri/sail_latex/sailfnexecuteLUI.tex
deleted file mode 100644
index 9c3f8089..00000000
--- a/cheri/sail_latex/sailfnexecuteLUI.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zLUI]{LUI}# (rt, imm)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rt) = #\hyperref[zsignzyextend]{sign\_extend}#(imm @ 0x0000)
- }
diff --git a/cheri/sail_latex/sailfnexecuteLWL.tex b/cheri/sail_latex/sailfnexecuteLWL.tex
deleted file mode 100644
index 46fd760d..00000000
--- a/cheri/sail_latex/sailfnexecuteLWL.tex
+++ /dev/null
@@ -1,17 +0,0 @@
-function clause #\hyperref[zexecute]{execute}#(#\hyperref[zLWL]{LWL}#(base, rt, offset)) =
- {
- vAddr = #\hyperref[zaddrWrapperUnaligned]{addrWrapperUnaligned}#(#\hyperref[zsignzyextend]{sign\_extend}#(offset) + #\hyperref[zrGPR]{rGPR}#(base), LoadData, WL);
- let pAddr = (#\hyperref[zTLBTranslate]{TLBTranslate}#(vAddr, LoadData)) in
- {
- mem_val = #\hyperref[zMEMrzywrapper]{MEMr\_wrapper}# (pAddr[63..2] @ 0b00, 4); /* read word of interest */
- reg_val = #\hyperref[zrGPR]{rGPR}#(rt);
- result : #\hyperref[zbits]{bits}#(32) = match vAddr[1..0]
- {
- 0b00 => mem_val,
- 0b01 => mem_val[23..0] @ reg_val[07..0],
- 0b10 => mem_val[15..0] @ reg_val[15..0],
- 0b11 => mem_val[07..0] @ reg_val[23..0]
- };
- #\hyperref[zwGPR]{wGPR}#(rt) = #\hyperref[zsignzyextend]{sign\_extend}#(result);
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteLWR.tex b/cheri/sail_latex/sailfnexecuteLWR.tex
deleted file mode 100644
index c72d81e0..00000000
--- a/cheri/sail_latex/sailfnexecuteLWR.tex
+++ /dev/null
@@ -1,17 +0,0 @@
-function clause #\hyperref[zexecute]{execute}#(#\hyperref[zLWR]{LWR}#(base, rt, offset)) =
- {
- vAddr = #\hyperref[zaddrWrapperUnaligned]{addrWrapperUnaligned}#(#\hyperref[zsignzyextend]{sign\_extend}#(offset) + #\hyperref[zrGPR]{rGPR}#(base), LoadData, WR);
- let pAddr = (#\hyperref[zTLBTranslate]{TLBTranslate}#(vAddr, LoadData)) in
- {
- mem_val = #\hyperref[zMEMrzywrapper]{MEMr\_wrapper}#(pAddr[63..2] @ 0b00, 4); /* read word of interest */
- reg_val = #\hyperref[zrGPR]{rGPR}#(rt);
- result : #\hyperref[zbits]{bits}#(32) = match vAddr[1..0]
- {
- 0b00 => reg_val[31..8] @ mem_val[31..24],
- 0b01 => reg_val[31..16] @ mem_val[31..16],
- 0b10 => reg_val[31..24] @ mem_val[31..8],
- 0b11 => mem_val
- };
- #\hyperref[zwGPR]{wGPR}#(rt) = #\hyperref[zsignzyextend]{sign\_extend}#(result)
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteLoad.tex b/cheri/sail_latex/sailfnexecuteLoad.tex
deleted file mode 100644
index 2db4a73b..00000000
--- a/cheri/sail_latex/sailfnexecuteLoad.tex
+++ /dev/null
@@ -1,30 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zLoad]{Load}#(width, sign, linked, base, rt, offset)) =
- {
- vAddr : #\hyperref[zbits]{bits}#(64) = #\hyperref[zaddrWrapper]{addrWrapper}#(#\hyperref[zsignzyextend]{sign\_extend}#(offset) + #\hyperref[zrGPR]{rGPR}#(base), LoadData, width);
- if ~ (#\hyperref[zisAddressAligned]{isAddressAligned}#(vAddr, width)) then
- (#\hyperref[zSignalExceptionBadAddr]{SignalExceptionBadAddr}#(AdEL, vAddr)) /* unaligned access */
- else
- let pAddr = (#\hyperref[zTLBTranslate]{TLBTranslate}#(vAddr, LoadData)) in
- {
- memResult : #\hyperref[zbits]{bits}#(64) = if (linked) then
- {
- CP0LLBit = 0b1;
- CP0LLAddr = pAddr;
- match width {
- W => #\hyperref[zextendLoad]{extendLoad}#(#\hyperref[zMEMrzyreservezywrapper]{MEMr\_reserve\_wrapper}#(pAddr, 4), sign),
- D => #\hyperref[zextendLoad]{extendLoad}#(#\hyperref[zMEMrzyreservezywrapper]{MEMr\_reserve\_wrapper}#(pAddr, 8), sign),
- _ => throw(#\hyperref[zErrorzyinternalzyerror]{Error\_internal\_error}#()) /* there is no llbc or llhc */
- }
- }
- else
- {
- match width {
- B => #\hyperref[zextendLoad]{extendLoad}#(#\hyperref[zMEMrzywrapper]{MEMr\_wrapper}#(pAddr, 1), sign),
- H => #\hyperref[zextendLoad]{extendLoad}#(#\hyperref[zMEMrzywrapper]{MEMr\_wrapper}#(pAddr, 2), sign),
- W => #\hyperref[zextendLoad]{extendLoad}#(#\hyperref[zMEMrzywrapper]{MEMr\_wrapper}#(pAddr, 4), sign),
- D => #\hyperref[zextendLoad]{extendLoad}#(#\hyperref[zMEMrzywrapper]{MEMr\_wrapper}#(pAddr, 8), sign)
- }
- };
- #\hyperref[zwGPR]{wGPR}#(rt) = memResult
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteMADD.tex b/cheri/sail_latex/sailfnexecuteMADD.tex
deleted file mode 100644
index 77d54494..00000000
--- a/cheri/sail_latex/sailfnexecuteMADD.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMADD]{MADD}#(rs, rt)) =
- {
- rsVal = #\hyperref[zrGPR]{rGPR}#(rs);
- rtVal = #\hyperref[zrGPR]{rGPR}#(rt);
- mul_result : #\hyperref[zbits]{bits}#(64) = if (#\hyperref[zNotWordVal]{NotWordVal}#(rsVal) | #\hyperref[zNotWordVal]{NotWordVal}#(rtVal)) then
- undefined
- else
- rsVal[31..0] *_s rtVal[31..0];
- result = mul_result + (HI[31..0] @ LO[31..0]);
- HI = #\hyperref[zsignzyextend]{sign\_extend}#(result[63..32]);
- LO = #\hyperref[zsignzyextend]{sign\_extend}#(result[31..0]);
- }
diff --git a/cheri/sail_latex/sailfnexecuteMADDU.tex b/cheri/sail_latex/sailfnexecuteMADDU.tex
deleted file mode 100644
index 67f95457..00000000
--- a/cheri/sail_latex/sailfnexecuteMADDU.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMADDU]{MADDU}#(rs, rt)) =
- {
- rsVal = #\hyperref[zrGPR]{rGPR}#(rs);
- rtVal = #\hyperref[zrGPR]{rGPR}#(rt);
- mul_result : #\hyperref[zbits]{bits}#(64) = if (#\hyperref[zNotWordVal]{NotWordVal}#(rsVal) | #\hyperref[zNotWordVal]{NotWordVal}#(rtVal)) then
- undefined
- else
- rsVal[31..0] *_u rtVal[31..0];
- result = mul_result + (HI[31..0] @ LO[31..0]);
- HI = #\hyperref[zsignzyextend]{sign\_extend}#(result[63..32]);
- LO = #\hyperref[zsignzyextend]{sign\_extend}#(result[31..0]);
- }
diff --git a/cheri/sail_latex/sailfnexecuteMFCzero.tex b/cheri/sail_latex/sailfnexecuteMFCzero.tex
deleted file mode 100644
index c15ef9f8..00000000
--- a/cheri/sail_latex/sailfnexecuteMFCzero.tex
+++ /dev/null
@@ -1,70 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMFCzero]{MFC0}#(rt, rd, sel, double)) = {
- #\hyperref[zcheckCPzeroAccess]{checkCP0Access}#();
- let result : #\hyperref[zbits]{bits}#(64) = match (rd, sel)
- {
- (0b00000,0b000) => let idx : #\hyperref[zbits]{bits}#(31) = #\hyperref[zzzerozyextend]{zero\_extend}#(TLBIndex) in
- (0x00000000 @ TLBProbe @ idx), /* 0, TLB Index */
- (0b00001,0b000) => #\hyperref[zzzerozyextend]{zero\_extend}#(TLBRandom), /* 1, TLB Random */
- (0b00010,0b000) => TLBEntryLo0.#\hyperref[zbits]{bits}#(), /* 2, TLB EntryLo0 */
- (0b00011,0b000) => TLBEntryLo1.#\hyperref[zbits]{bits}#(), /* 3, TLB EntryLo1 */
- (0b00100,0b000) => TLBContext.#\hyperref[zbits]{bits}#(), /* 4, TLB Context */
- (0b00100,0b010) => CP0UserLocal,
- (0b00101,0b000) => #\hyperref[zzzerozyextend]{zero\_extend}#(TLBPageMask @ 0x000), /* 5, TLB PageMask */
- (0b00110,0b000) => #\hyperref[zzzerozyextend]{zero\_extend}#(TLBWired), /* 6, TLB Wired */
- (0b00111,0b000) => #\hyperref[zzzerozyextend]{zero\_extend}#(CP0HWREna), /* 7, HWREna */
- (0b01000,0b000) => CP0BadVAddr, /* 8, BadVAddr reg */
- (0b01000,0b001) => #\hyperref[zzzerozyextend]{zero\_extend}#(0b0), /* 8, BadInstr reg XXX TODO */
- (0b01001,0b000) => #\hyperref[zzzerozyextend]{zero\_extend}#(CP0Count), /* 9, Count reg */
- (0b01010,0b000) => TLBEntryHi.#\hyperref[zbits]{bits}#(),/* 10, TLB EntryHi */
- (0b01011,0b000) => #\hyperref[zzzerozyextend]{zero\_extend}#(CP0Compare), /* 11, Compare reg */
- (0b01100,0b000) => #\hyperref[zzzerozyextend]{zero\_extend}#(CP0Status.#\hyperref[zbits]{bits}#()), /* 12, Status reg */
- (0b01101,0b000) => #\hyperref[zzzerozyextend]{zero\_extend}#(CP0Cause.#\hyperref[zbits]{bits}#()), /* 13, Cause reg */
- (0b01110,0b000) => CP0EPC, /* 14, EPC */
- (0b01111,0b000) => #\hyperref[zzzerozyextend]{zero\_extend}#(0x00000400), /* 15, sel 0: PrID processor ID */
- (0b01111,0b110) => #\hyperref[zzzerozyextend]{zero\_extend}#(0b0), /* 15, sel 6: CHERI core ID */
- (0b01111,0b111) => #\hyperref[zzzerozyextend]{zero\_extend}#(0b0), /* 15, sel 7: CHERI thread ID */
- (0b10000,0b000) => #\hyperref[zzzerozyextend]{zero\_extend}#(0b1 /* M */ /* 16, sel 0: Config0 */
- @ 0b000000000000000 /* Impl */
- @ 0b1 /* BE */
- @ 0b10 /* AT */
- @ 0b000 /* AR */
- @ 0b001 /* MT standard TLB */
- @ 0b0000 /* zero */
- @ CP0ConfigK0),
- (0b10000,0b001) => #\hyperref[zzzerozyextend]{zero\_extend}#( /* 16, sel 1: Config1 */
- 0b1 /* M */
- @ TLBIndexMax /* MMU size-1 */
- @ 0b000 /* IS icache sets */
- @ 0b000 /* IL icache lines */
- @ 0b000 /* IA icache assoc. */
- @ 0b000 /* DS dcache sets */
- @ 0b000 /* DL dcache lines */
- @ 0b000 /* DA dcache assoc. */
- @ #\hyperref[zboolzytozybits]{bool\_to\_bits}#(have_cp2) /* C2 CP2 presence */
- @ 0b0 /* MD MDMX implemented */
- @ 0b0 /* PC performance counters */
- @ 0b0 /* WR watch registers */
- @ 0b0 /* CA 16e code compression */
- @ 0b0 /* EP EJTAG */
- @ 0b0), /* FP FPU present */
- (0b10000,0b010) => #\hyperref[zzzerozyextend]{zero\_extend}#( /* 16, sel 2: Config2 */
- 0b1 /* M */
- @ 0b000 /* TU L3 control */
- @ 0b0000 /* TS L3 sets */
- @ 0b0000 /* TL L3 lines */
- @ 0b0000 /* TA L3 assoc. */
- @ 0b0000 /* SU L2 control */
- @ 0b0000 /* SS L2 sets */
- @ 0b0000 /* SL L2 lines */
- @ 0b0000), /* SA L2 assoc. */
- (0b10000,0b011) => 0x0000000000002000, /* 16, sel 3: Config3 zero except for bit 13 == ulri */
- (0b10000,0b101) => 0x0000000000000000, /* 16, sel 5: Config5 beri specific -- no extended TLB */
- (0b10001,0b000) => CP0LLAddr, /* 17, sel 0: LLAddr */
- (0b10010,0b000) => #\hyperref[zzzerozyextend]{zero\_extend}#(0b0), /* 18, WatchLo */
- (0b10011,0b000) => #\hyperref[zzzerozyextend]{zero\_extend}#(0b0), /* 19, WatchHi */
- (0b10100,0b000) => TLBXContext.#\hyperref[zbits]{bits}#(), /* 20, XContext */
- (0b11110,0b000) => CP0ErrorEPC, /* 30, ErrorEPC */
- _ => (#\hyperref[zSignalException]{SignalException}#(ResI))
- } in
- #\hyperref[zwGPR]{wGPR}#(rt) = if (double) then result else #\hyperref[zsignzyextend]{sign\_extend}#(result[31..0])
-}
diff --git a/cheri/sail_latex/sailfnexecuteMFHI.tex b/cheri/sail_latex/sailfnexecuteMFHI.tex
deleted file mode 100644
index ff0aadba..00000000
--- a/cheri/sail_latex/sailfnexecuteMFHI.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMFHI]{MFHI}#(rd)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rd) = HI
- }
diff --git a/cheri/sail_latex/sailfnexecuteMFLO.tex b/cheri/sail_latex/sailfnexecuteMFLO.tex
deleted file mode 100644
index 69ad3a35..00000000
--- a/cheri/sail_latex/sailfnexecuteMFLO.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMFLO]{MFLO}#(rd)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rd) = LO
- }
diff --git a/cheri/sail_latex/sailfnexecuteMOVN.tex b/cheri/sail_latex/sailfnexecuteMOVN.tex
deleted file mode 100644
index 9802ef3d..00000000
--- a/cheri/sail_latex/sailfnexecuteMOVN.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMOVN]{MOVN}#(rs, rt, rd)) =
- {
- if (#\hyperref[zrGPR]{rGPR}#(rt) != 0x0000000000000000) then
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zrGPR]{rGPR}#(rs)
- }
diff --git a/cheri/sail_latex/sailfnexecuteMOVZ.tex b/cheri/sail_latex/sailfnexecuteMOVZ.tex
deleted file mode 100644
index 0c09e058..00000000
--- a/cheri/sail_latex/sailfnexecuteMOVZ.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMOVZ]{MOVZ}#(rs, rt, rd)) =
- {
- if (#\hyperref[zrGPR]{rGPR}#(rt) == 0x0000000000000000) then
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zrGPR]{rGPR}#(rs)
- }
diff --git a/cheri/sail_latex/sailfnexecuteMSUB.tex b/cheri/sail_latex/sailfnexecuteMSUB.tex
deleted file mode 100644
index 7d796f26..00000000
--- a/cheri/sail_latex/sailfnexecuteMSUB.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMSUB]{MSUB}#(rs, rt)) =
- {
- rsVal = #\hyperref[zrGPR]{rGPR}#(rs);
- rtVal = #\hyperref[zrGPR]{rGPR}#(rt);
- mul_result : #\hyperref[zbits]{bits}#(64) = if (#\hyperref[zNotWordVal]{NotWordVal}#(rsVal) | #\hyperref[zNotWordVal]{NotWordVal}#(rtVal)) then
- undefined
- else
- rsVal[31..0] *_s rtVal[31..0];
- result = (HI[31..0] @ LO[31..0]) - mul_result;
- HI = #\hyperref[zsignzyextend]{sign\_extend}#(result[63..32]);
- LO = #\hyperref[zsignzyextend]{sign\_extend}#(result[31..0]);
- }
diff --git a/cheri/sail_latex/sailfnexecuteMSUBU.tex b/cheri/sail_latex/sailfnexecuteMSUBU.tex
deleted file mode 100644
index f501e5c5..00000000
--- a/cheri/sail_latex/sailfnexecuteMSUBU.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMSUBU]{MSUBU}#(rs, rt)) =
- {
- rsVal = #\hyperref[zrGPR]{rGPR}#(rs);
- rtVal = #\hyperref[zrGPR]{rGPR}#(rt);
- mul_result : #\hyperref[zbits]{bits}#(64) = if (#\hyperref[zNotWordVal]{NotWordVal}#(rsVal) | #\hyperref[zNotWordVal]{NotWordVal}#(rtVal)) then
- undefined
- else
- rsVal[31..0] *_u rtVal[31..0];
- result = (HI[31..0] @ LO[31..0]) - mul_result;
- HI = #\hyperref[zsignzyextend]{sign\_extend}#(result[63..32]);
- LO = #\hyperref[zsignzyextend]{sign\_extend}#(result[31..0]);
- }
diff --git a/cheri/sail_latex/sailfnexecuteMTCzero.tex b/cheri/sail_latex/sailfnexecuteMTCzero.tex
deleted file mode 100644
index 61c6703e..00000000
--- a/cheri/sail_latex/sailfnexecuteMTCzero.tex
+++ /dev/null
@@ -1,52 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMTCzero]{MTC0}#(rt, rd, sel, double)) = {
- #\hyperref[zcheckCPzeroAccess]{checkCP0Access}#();
- let reg_val = #\hyperref[zrGPR]{rGPR}#(rt) in
- match (rd, sel)
- {
- (0b00000,0b000) => TLBIndex = #\hyperref[zmask]{mask}#(reg_val), /* NB no write to TLBProbe */
- (0b00001,0b000) => (), /* TLBRandom is read only */
- (0b00010,0b000) => TLBEntryLo0->#\hyperref[zbits]{bits}#() = reg_val,
- (0b00011,0b000) => TLBEntryLo1->#\hyperref[zbits]{bits}#() = reg_val,
- (0b00100,0b000) => TLBContext->#\hyperref[zPTEBase]{PTEBase}#() = reg_val[63..23],
- (0b00100,0b010) => CP0UserLocal = reg_val,
- (0b00101,0b000) => TLBPageMask = reg_val[28..13],
- (0b00110,0b000) => {
- TLBWired = #\hyperref[zmask]{mask}#(reg_val);
- TLBRandom = TLBIndexMax;
- },
- (0b00111,0b000) => CP0HWREna = (reg_val[31..29] @ 0b0000000000000000000000000 @ reg_val[3..0]),
- (0b01000,0b000) => (), /* BadVAddr read only */
- (0b01001,0b000) => CP0Count = reg_val[31..0],
- (0b01010,0b000) => {
- TLBEntryHi->#\hyperref[zR]{R}#() = reg_val[63..62];
- TLBEntryHi->#\hyperref[zVPNtwo]{VPN2}#() = reg_val[39..13];
- TLBEntryHi->#\hyperref[zASID]{ASID}#() = reg_val[7..0];
- },
- (0b01011,0b000) => { /* 11, sel 0: Compare reg */
- CP0Compare = reg_val[31..0];
- CP0Cause->#\hyperref[zIP]{IP}#() = CP0Cause.#\hyperref[zIP]{IP}#() & 0x7f; /* clear IP7 */
- },
- (0b01100,0b000) => { /* 12 Status */
- CP0Status->#\hyperref[zCU]{CU}#() = reg_val[31..28];
- CP0Status->#\hyperref[zBEV]{BEV}#() = reg_val[22];
- CP0Status->#\hyperref[zIM]{IM}#() = reg_val[15..8];
- CP0Status->#\hyperref[zKX]{KX}#() = reg_val[7];
- CP0Status->#\hyperref[zSX]{SX}#() = reg_val[6];
- CP0Status->#\hyperref[zUX]{UX}#() = reg_val[5];
- CP0Status->#\hyperref[zKSU]{KSU}#() = reg_val[4..3];
- CP0Status->#\hyperref[zERL]{ERL}#() = reg_val[2];
- CP0Status->#\hyperref[zEXL]{EXL}#() = reg_val[1];
- CP0Status->#\hyperref[zIE]{IE}#() = reg_val[0];
- },
- (0b01101,0b000) => { /* 13 Cause */
- CP0Cause->#\hyperref[zIV]{IV}#() = reg_val[23]; /* TODO special interrupt vector not implemeneted */
- let ip = CP0Cause.#\hyperref[zIP]{IP}#() in
- CP0Cause->#\hyperref[zIP]{IP}#() = ((ip[7..2]) @ (reg_val[9..8]));
- },
- (0b01110,0b000) => CP0EPC = reg_val, /* 14, EPC */
- (0b10000,0b000) => CP0ConfigK0 = reg_val[2..0], /* K0 cache config 16: Config0 */
- (0b10100,0b000) => TLBXContext->#\hyperref[zXPTEBase]{XPTEBase}#() = reg_val[63..33],
- (0b11110,0b000) => CP0ErrorEPC = reg_val, /* 30, ErrorEPC */
- _ => (#\hyperref[zSignalException]{SignalException}#(ResI))
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteMTHI.tex b/cheri/sail_latex/sailfnexecuteMTHI.tex
deleted file mode 100644
index e221477e..00000000
--- a/cheri/sail_latex/sailfnexecuteMTHI.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMTHI]{MTHI}#(rs)) =
- {
- HI = #\hyperref[zrGPR]{rGPR}#(rs)
- }
diff --git a/cheri/sail_latex/sailfnexecuteMTLO.tex b/cheri/sail_latex/sailfnexecuteMTLO.tex
deleted file mode 100644
index af9f9aae..00000000
--- a/cheri/sail_latex/sailfnexecuteMTLO.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMTLO]{MTLO}#(rs)) =
- {
- LO = #\hyperref[zrGPR]{rGPR}#(rs)
- }
diff --git a/cheri/sail_latex/sailfnexecuteMUL.tex b/cheri/sail_latex/sailfnexecuteMUL.tex
deleted file mode 100644
index 385f4433..00000000
--- a/cheri/sail_latex/sailfnexecuteMUL.tex
+++ /dev/null
@@ -1,15 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMUL]{MUL}#(rs, rt, rd)) =
- {
- rsVal = #\hyperref[zrGPR]{rGPR}#(rs);
- rtVal = #\hyperref[zrGPR]{rGPR}#(rt);
- result : #\hyperref[zbits]{bits}#(64) = #\hyperref[zsignzyextend]{sign\_extend}#((rsVal[31..0]) *#\hyperref[zzys]{\_s}# (rtVal[31..0]));
- #\hyperref[zwGPR]{wGPR}#(rd) = if (#\hyperref[zNotWordVal]{NotWordVal}#(rsVal) | #\hyperref[zNotWordVal]{NotWordVal}#(rtVal)) then
- undefined
- else
- #\hyperref[zsignzyextend]{sign\_extend}#(result[31..0]);
- /* HI and LO are technically undefined after MUL, but this causes problems with tests and
- (potentially) context switch so just leave them alone
- HI = undefined;
- LO = undefined;
- */
- }
diff --git a/cheri/sail_latex/sailfnexecuteMULT.tex b/cheri/sail_latex/sailfnexecuteMULT.tex
deleted file mode 100644
index b8de983f..00000000
--- a/cheri/sail_latex/sailfnexecuteMULT.tex
+++ /dev/null
@@ -1,11 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMULT]{MULT}#(rs, rt)) =
- {
- rsVal = #\hyperref[zrGPR]{rGPR}#(rs);
- rtVal = #\hyperref[zrGPR]{rGPR}#(rt);
- result : #\hyperref[zbits]{bits}#(64) = if (#\hyperref[zNotWordVal]{NotWordVal}#(rsVal) | #\hyperref[zNotWordVal]{NotWordVal}#(rtVal)) then
- undefined
- else
- (rsVal[31..0]) *#\hyperref[zzys]{\_s}# (rtVal[31..0]);
- HI = #\hyperref[zsignzyextend]{sign\_extend}#(result[63..32]);
- LO = #\hyperref[zsignzyextend]{sign\_extend}#(result[31..0]);
- }
diff --git a/cheri/sail_latex/sailfnexecuteMULTU.tex b/cheri/sail_latex/sailfnexecuteMULTU.tex
deleted file mode 100644
index 0095e387..00000000
--- a/cheri/sail_latex/sailfnexecuteMULTU.tex
+++ /dev/null
@@ -1,11 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zMULTU]{MULTU}#(rs, rt)) =
- {
- rsVal = #\hyperref[zrGPR]{rGPR}#(rs);
- rtVal = #\hyperref[zrGPR]{rGPR}#(rt);
- result : #\hyperref[zbits]{bits}#(64) = if (#\hyperref[zNotWordVal]{NotWordVal}#(rsVal) | #\hyperref[zNotWordVal]{NotWordVal}#(rtVal)) then
- undefined
- else
- (rsVal[31..0]) *#\hyperref[zzyu]{\_u}# (rtVal[31..0]);
- HI = #\hyperref[zsignzyextend]{sign\_extend}#(result[63..32]);
- LO = #\hyperref[zsignzyextend]{sign\_extend}#(result[31..0]);
- }
diff --git a/cheri/sail_latex/sailfnexecuteNOR.tex b/cheri/sail_latex/sailfnexecuteNOR.tex
deleted file mode 100644
index a1cfa14b..00000000
--- a/cheri/sail_latex/sailfnexecuteNOR.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zNOR]{NOR}# (rs, rt, rd)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rd) = ~(#\hyperref[zrGPR]{rGPR}#(rs) | #\hyperref[zrGPR]{rGPR}#(rt))
- }
diff --git a/cheri/sail_latex/sailfnexecuteOR.tex b/cheri/sail_latex/sailfnexecuteOR.tex
deleted file mode 100644
index 01c0fcf6..00000000
--- a/cheri/sail_latex/sailfnexecuteOR.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zOR]{OR}# (rs, rt, rd)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rd) = (#\hyperref[zrGPR]{rGPR}#(rs) | #\hyperref[zrGPR]{rGPR}#(rt))
- }
diff --git a/cheri/sail_latex/sailfnexecuteORI.tex b/cheri/sail_latex/sailfnexecuteORI.tex
deleted file mode 100644
index 0a3f9d15..00000000
--- a/cheri/sail_latex/sailfnexecuteORI.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zORI]{ORI}# (rs, rt, imm)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rt) = (#\hyperref[zrGPR]{rGPR}#(rs) | #\hyperref[zzzerozyextend]{zero\_extend}#(imm))
- }
diff --git a/cheri/sail_latex/sailfnexecuteRDHWR.tex b/cheri/sail_latex/sailfnexecuteRDHWR.tex
deleted file mode 100644
index e64fff25..00000000
--- a/cheri/sail_latex/sailfnexecuteRDHWR.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zRDHWR]{RDHWR}#(rt, rd)) = {
- let accessLevel = #\hyperref[zgetAccessLevel]{getAccessLevel}#() in
- let haveAccessLevel : bool = accessLevel == Kernel in
- let haveCU0 : bool = bitone == (CP0Status.#\hyperref[zCU]{CU}#()[0]) in
- let rdi as atom(_) = #\hyperref[zunsigned]{unsigned}#(rd) in
- let haveHWREna : bool = bitone == (CP0HWREna[rdi]) in
- if ~(haveAccessLevel | haveCU0 | haveHWREna) then
- (#\hyperref[zSignalException]{SignalException}#(ResI));
- let temp : #\hyperref[zbits]{bits}#(64) = match rd {
- 0b00000 => #\hyperref[zzzerozyextend]{zero\_extend}#([bitzero]), /* CPUNum */
- 0b00001 => #\hyperref[zzzerozyextend]{zero\_extend}#([bitzero]), /* SYNCI_step */
- 0b00010 => #\hyperref[zzzerozyextend]{zero\_extend}#(CP0Count), /* Count */
- 0b00011 => #\hyperref[zzzerozyextend]{zero\_extend}#([bitone]), /* Count resolution */
- 0b11101 => CP0UserLocal, /* User local register */
- _ => (#\hyperref[zSignalException]{SignalException}#(ResI))
- } in
- #\hyperref[zwGPR]{wGPR}#(rt) = temp;
-}
diff --git a/cheri/sail_latex/sailfnexecuteRI.tex b/cheri/sail_latex/sailfnexecuteRI.tex
deleted file mode 100644
index 6206c8e3..00000000
--- a/cheri/sail_latex/sailfnexecuteRI.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zRI]{RI}#()) =
- #\hyperref[zSignalException]{SignalException}# (ResI)
diff --git a/cheri/sail_latex/sailfnexecuteSDL.tex b/cheri/sail_latex/sailfnexecuteSDL.tex
deleted file mode 100644
index 0e8e78b4..00000000
--- a/cheri/sail_latex/sailfnexecuteSDL.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-function clause #\hyperref[zexecute]{execute}#(#\hyperref[zSDL]{SDL}#(base, rt, offset)) =
- {
- vAddr = #\hyperref[zaddrWrapperUnaligned]{addrWrapperUnaligned}#(#\hyperref[zsignzyextend]{sign\_extend}#(offset) + #\hyperref[zrGPR]{rGPR}#(base), StoreData, DL);
- let pAddr = #\hyperref[zTLBTranslate]{TLBTranslate}#(vAddr, StoreData) in
- {
- reg_val = #\hyperref[zrGPR]{rGPR}#(rt);
- match vAddr[2..0]
- {
- 0b000 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 8) = reg_val[63..00]),
- 0b001 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 7) = reg_val[63..08]),
- 0b010 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 6) = reg_val[63..16]),
- 0b011 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 5) = reg_val[63..24]),
- 0b100 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 4) = reg_val[63..32]),
- 0b101 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 3) = reg_val[63..40]),
- 0b110 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 2) = reg_val[63..48]),
- 0b111 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 1) = reg_val[63..56])
- }
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteSDR.tex b/cheri/sail_latex/sailfnexecuteSDR.tex
deleted file mode 100644
index 98f7a8a7..00000000
--- a/cheri/sail_latex/sailfnexecuteSDR.tex
+++ /dev/null
@@ -1,20 +0,0 @@
-function clause #\hyperref[zexecute]{execute}#(#\hyperref[zSDR]{SDR}#(base, rt, offset)) =
- {
- vAddr = #\hyperref[zaddrWrapperUnaligned]{addrWrapperUnaligned}#(#\hyperref[zsignzyextend]{sign\_extend}#(offset) + #\hyperref[zrGPR]{rGPR}#(base), StoreData, DR);
- let pAddr = #\hyperref[zTLBTranslate]{TLBTranslate}#(vAddr, StoreData) in
- {
- reg_val = #\hyperref[zrGPR]{rGPR}#(rt);
- wordAddr = pAddr[63..3] @ 0b000;
- match vAddr[2..0]
- {
- 0b000 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(wordAddr, 1) = reg_val[07..0]),
- 0b001 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(wordAddr, 2) = reg_val[15..0]),
- 0b010 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(wordAddr, 3) = reg_val[23..0]),
- 0b011 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(wordAddr, 4) = reg_val[31..0]),
- 0b100 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(wordAddr, 5) = reg_val[39..0]),
- 0b101 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(wordAddr, 6) = reg_val[47..0]),
- 0b110 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(wordAddr, 7) = reg_val[55..0]),
- 0b111 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(wordAddr, 8) = reg_val[63..0])
- }
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteSLL.tex b/cheri/sail_latex/sailfnexecuteSLL.tex
deleted file mode 100644
index 31f5399a..00000000
--- a/cheri/sail_latex/sailfnexecuteSLL.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zSLL]{SLL}#(rt, rd, sa)) =
- {
- rt32 = #\hyperref[zrGPR]{rGPR}#(rt)[31..0];
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zsignzyextend]{sign\_extend}#(rt32 << sa);
- }
diff --git a/cheri/sail_latex/sailfnexecuteSLLV.tex b/cheri/sail_latex/sailfnexecuteSLLV.tex
deleted file mode 100644
index 41598e6d..00000000
--- a/cheri/sail_latex/sailfnexecuteSLLV.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zSLLV]{SLLV}#(rs, rt, rd)) =
- {
- sa = #\hyperref[zrGPR]{rGPR}#(rs)[4..0];
- rt32 = #\hyperref[zrGPR]{rGPR}#(rt)[31..0];
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zsignzyextend]{sign\_extend}#(rt32 << sa)
- }
diff --git a/cheri/sail_latex/sailfnexecuteSLT.tex b/cheri/sail_latex/sailfnexecuteSLT.tex
deleted file mode 100644
index 8e625945..00000000
--- a/cheri/sail_latex/sailfnexecuteSLT.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zSLT]{SLT}#(rs, rt, rd)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zzzerozyextend]{zero\_extend}#(if (#\hyperref[zrGPR]{rGPR}#(rs) <_s #\hyperref[zrGPR]{rGPR}#(rt)) then 0b1 else 0b0)
- }
diff --git a/cheri/sail_latex/sailfnexecuteSLTI.tex b/cheri/sail_latex/sailfnexecuteSLTI.tex
deleted file mode 100644
index 32582b6f..00000000
--- a/cheri/sail_latex/sailfnexecuteSLTI.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zSLTI]{SLTI}#(rs, rt, imm)) =
- {
- let imm_val = #\hyperref[zsigned]{signed}#(imm) in
- let rs_val = #\hyperref[zsigned]{signed}#(#\hyperref[zrGPR]{rGPR}#(rs)) in
- #\hyperref[zwGPR]{wGPR}#(rt) = #\hyperref[zzzerozyextend]{zero\_extend}#(if (rs_val < imm_val) then 0b1 else 0b0)
- }
diff --git a/cheri/sail_latex/sailfnexecuteSLTIU.tex b/cheri/sail_latex/sailfnexecuteSLTIU.tex
deleted file mode 100644
index e232aa07..00000000
--- a/cheri/sail_latex/sailfnexecuteSLTIU.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zSLTIU]{SLTIU}#(rs, rt, imm)) =
- {
- let rs_val = #\hyperref[zrGPR]{rGPR}#(rs) in
- let immext : #\hyperref[zbits]{bits}#(64) = #\hyperref[zsignzyextend]{sign\_extend}#(imm) in /* NB defined to sign extend here even though comparison is unsigned! */
- #\hyperref[zwGPR]{wGPR}#(rt) = #\hyperref[zzzerozyextend]{zero\_extend}#(if (rs_val <_u immext) then 0b1 else 0b0)
- }
diff --git a/cheri/sail_latex/sailfnexecuteSLTU.tex b/cheri/sail_latex/sailfnexecuteSLTU.tex
deleted file mode 100644
index 38b71b30..00000000
--- a/cheri/sail_latex/sailfnexecuteSLTU.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zSLTU]{SLTU}#(rs, rt, rd)) =
- {
- let rs_val = #\hyperref[zrGPR]{rGPR}#(rs) in
- let rt_val = #\hyperref[zrGPR]{rGPR}#(rt) in
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zzzerozyextend]{zero\_extend}#(if (rs_val <_u rt_val) then 0b1 else 0b0)
- }
diff --git a/cheri/sail_latex/sailfnexecuteSRA.tex b/cheri/sail_latex/sailfnexecuteSRA.tex
deleted file mode 100644
index 3d881120..00000000
--- a/cheri/sail_latex/sailfnexecuteSRA.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zSRA]{SRA}#(rt, rd, sa)) =
- {
- temp = #\hyperref[zrGPR]{rGPR}#(rt);
- if (#\hyperref[zNotWordVal]{NotWordVal}#(temp)) then
- #\hyperref[zwGPR]{wGPR}#(rd) = undefined
- else {
- rt32 = temp[31..0];
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zsignzyextend]{sign\_extend}#(rt32 >>_s sa);
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteSRAV.tex b/cheri/sail_latex/sailfnexecuteSRAV.tex
deleted file mode 100644
index 54d3bd1e..00000000
--- a/cheri/sail_latex/sailfnexecuteSRAV.tex
+++ /dev/null
@@ -1,11 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zSRAV]{SRAV}#(rs, rt, rd)) =
- {
- temp = #\hyperref[zrGPR]{rGPR}#(rt);
- sa = #\hyperref[zrGPR]{rGPR}#(rs)[4..0];
- if (#\hyperref[zNotWordVal]{NotWordVal}#(temp)) then
- #\hyperref[zwGPR]{wGPR}#(rd) = undefined
- else {
- rt32 = temp[31..0];
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zsignzyextend]{sign\_extend}#(rt32 >>_s sa)
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteSRL.tex b/cheri/sail_latex/sailfnexecuteSRL.tex
deleted file mode 100644
index 961ea82f..00000000
--- a/cheri/sail_latex/sailfnexecuteSRL.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zSRL]{SRL}#(rt, rd, sa)) =
- {
- temp = #\hyperref[zrGPR]{rGPR}#(rt);
- if (#\hyperref[zNotWordVal]{NotWordVal}#(temp)) then
- #\hyperref[zwGPR]{wGPR}#(rd) = undefined
- else {
- rt32 = temp[31..0];
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zsignzyextend]{sign\_extend}#(rt32 >> sa);
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteSRLV.tex b/cheri/sail_latex/sailfnexecuteSRLV.tex
deleted file mode 100644
index 9b859a85..00000000
--- a/cheri/sail_latex/sailfnexecuteSRLV.tex
+++ /dev/null
@@ -1,11 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zSRLV]{SRLV}#(rs, rt, rd)) =
- {
- temp = #\hyperref[zrGPR]{rGPR}#(rt);
- sa = (#\hyperref[zrGPR]{rGPR}#(rs))[4..0];
- if (#\hyperref[zNotWordVal]{NotWordVal}#(temp)) then
- #\hyperref[zwGPR]{wGPR}#(rd) = undefined
- else {
- rt32 = temp[31..0];
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zsignzyextend]{sign\_extend}#(rt32 >> sa);
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteSUB.tex b/cheri/sail_latex/sailfnexecuteSUB.tex
deleted file mode 100644
index 8a7b9d61..00000000
--- a/cheri/sail_latex/sailfnexecuteSUB.tex
+++ /dev/null
@@ -1,13 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zSUB]{SUB}#(rs, rt, rd)) =
- {
- opA = #\hyperref[zrGPR]{rGPR}#(rs);
- opB = #\hyperref[zrGPR]{rGPR}#(rt);
- if #\hyperref[zNotWordVal]{NotWordVal}#(opA) | #\hyperref[zNotWordVal]{NotWordVal}#(opB) then
- #\hyperref[zwGPR]{wGPR}#(rd) = undefined /* XXX could instead */
- else
- let temp33 : #\hyperref[zbits]{bits}#(33) = #\hyperref[zsignzyextend]{sign\_extend}#(opA[31..0]) - #\hyperref[zsignzyextend]{sign\_extend}#(opB[31..0]) in
- if temp33[32] != temp33[31] then
- (#\hyperref[zSignalException]{SignalException}#(Ov))
- else
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zsignzyextend]{sign\_extend}#(temp33[31..0])
- }
diff --git a/cheri/sail_latex/sailfnexecuteSUBU.tex b/cheri/sail_latex/sailfnexecuteSUBU.tex
deleted file mode 100644
index 65b106e1..00000000
--- a/cheri/sail_latex/sailfnexecuteSUBU.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zSUBU]{SUBU}#(rs, rt, rd)) =
- {
- opA = #\hyperref[zrGPR]{rGPR}#(rs);
- opB = #\hyperref[zrGPR]{rGPR}#(rt);
- if #\hyperref[zNotWordVal]{NotWordVal}#(opA) | #\hyperref[zNotWordVal]{NotWordVal}#(opB) then
- #\hyperref[zwGPR]{wGPR}#(rd) = undefined
- else
- #\hyperref[zwGPR]{wGPR}#(rd) = #\hyperref[zsignzyextend]{sign\_extend}#(opA[31..0] - opB[31..0])
- }
diff --git a/cheri/sail_latex/sailfnexecuteSWL.tex b/cheri/sail_latex/sailfnexecuteSWL.tex
deleted file mode 100644
index 56ed19a6..00000000
--- a/cheri/sail_latex/sailfnexecuteSWL.tex
+++ /dev/null
@@ -1,15 +0,0 @@
-function clause #\hyperref[zexecute]{execute}#(#\hyperref[zSWL]{SWL}#(base, rt, offset)) =
- {
- vAddr = #\hyperref[zaddrWrapperUnaligned]{addrWrapperUnaligned}#(#\hyperref[zsignzyextend]{sign\_extend}#(offset) + #\hyperref[zrGPR]{rGPR}#(base), StoreData, WL);
- let pAddr = #\hyperref[zTLBTranslate]{TLBTranslate}#(vAddr, StoreData) in
- {
- reg_val = #\hyperref[zrGPR]{rGPR}#(rt);
- match vAddr[1..0]
- {
- 0b00 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 4) = reg_val[31..0]),
- 0b01 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 3) = reg_val[31..8]),
- 0b10 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 2) = reg_val[31..16]),
- 0b11 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 1) = reg_val[31..24])
- }
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteSWR.tex b/cheri/sail_latex/sailfnexecuteSWR.tex
deleted file mode 100644
index 9b0815e9..00000000
--- a/cheri/sail_latex/sailfnexecuteSWR.tex
+++ /dev/null
@@ -1,16 +0,0 @@
-function clause #\hyperref[zexecute]{execute}#(#\hyperref[zSWR]{SWR}#(base, rt, offset)) =
- {
- vAddr = #\hyperref[zaddrWrapperUnaligned]{addrWrapperUnaligned}#(#\hyperref[zsignzyextend]{sign\_extend}#(offset) + #\hyperref[zrGPR]{rGPR}#(base), StoreData, WR);
- let pAddr = #\hyperref[zTLBTranslate]{TLBTranslate}#(vAddr, StoreData) in
- {
- wordAddr = pAddr[63..2] @ 0b00;
- reg_val = #\hyperref[zrGPR]{rGPR}#(rt);
- match vAddr[1..0]
- {
- 0b00 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(wordAddr, 1) = reg_val[7..0]),
- 0b01 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(wordAddr, 2) = reg_val[15..0]),
- 0b10 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(wordAddr, 3) = reg_val[23..0]),
- 0b11 => (#\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(wordAddr, 4) = reg_val[31..0])
- }
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteSYNC.tex b/cheri/sail_latex/sailfnexecuteSYNC.tex
deleted file mode 100644
index e5d5a25e..00000000
--- a/cheri/sail_latex/sailfnexecuteSYNC.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zexecute]{execute}#(#\hyperref[zSYNC]{SYNC}#()) =
- #\hyperref[zMEMzysync]{MEM\_sync}#()
diff --git a/cheri/sail_latex/sailfnexecuteSYSCALL.tex b/cheri/sail_latex/sailfnexecuteSYSCALL.tex
deleted file mode 100644
index 35fc0371..00000000
--- a/cheri/sail_latex/sailfnexecuteSYSCALL.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zSYSCALL]{SYSCALL}#()) =
- {
- (#\hyperref[zSignalException]{SignalException}#(Sys))
- }
diff --git a/cheri/sail_latex/sailfnexecuteStore.tex b/cheri/sail_latex/sailfnexecuteStore.tex
deleted file mode 100644
index 1030fdd2..00000000
--- a/cheri/sail_latex/sailfnexecuteStore.tex
+++ /dev/null
@@ -1,29 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zStore]{Store}#(width, conditional, base, rt, offset)) =
- {
- vAddr : #\hyperref[zbits]{bits}#(64) = #\hyperref[zaddrWrapper]{addrWrapper}#(#\hyperref[zsignzyextend]{sign\_extend}#(offset) + #\hyperref[zrGPR]{rGPR}#(base), StoreData, width);
- rt_val = #\hyperref[zrGPR]{rGPR}#(rt);
- if ~ (#\hyperref[zisAddressAligned]{isAddressAligned}#(vAddr, width)) then
- (#\hyperref[zSignalExceptionBadAddr]{SignalExceptionBadAddr}#(AdES, vAddr)) /* unaligned access */
- else
- let pAddr = (#\hyperref[zTLBTranslate]{TLBTranslate}#(vAddr, StoreData)) in
- {
- if (conditional) then
- {
- success : bool = if (CP0LLBit[0]) then match width
- {
- W => #\hyperref[zMEMwzyconditionalzywrapper]{MEMw\_conditional\_wrapper}#(pAddr, 4, rt_val[31..0]),
- D => #\hyperref[zMEMwzyconditionalzywrapper]{MEMw\_conditional\_wrapper}#(pAddr, 8, rt_val),
- _ => throw(#\hyperref[zErrorzyinternalzyerror]{Error\_internal\_error}#()) /* there is no sbc or shc */
- } else false;
- #\hyperref[zwGPR]{wGPR}#(rt) = #\hyperref[zzzerozyextend]{zero\_extend}#(success)
- }
- else
- match width
- {
- B => #\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 1) = rt_val[7..0],
- H => #\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 2) = rt_val[15..0],
- W => #\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 4) = rt_val[31..0],
- D => #\hyperref[zMEMwzywrapper]{MEMw\_wrapper}#(pAddr, 8) = rt_val
- }
- }
- }
diff --git a/cheri/sail_latex/sailfnexecuteTLBP.tex b/cheri/sail_latex/sailfnexecuteTLBP.tex
deleted file mode 100644
index 1c781dda..00000000
--- a/cheri/sail_latex/sailfnexecuteTLBP.tex
+++ /dev/null
@@ -1,14 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zTLBP]{TLBP}#()) = {
- #\hyperref[zcheckCPzeroAccess]{checkCP0Access}#();
- let result = #\hyperref[ztlbSearch]{tlbSearch}#(TLBEntryHi.#\hyperref[zbits]{bits}#()) in
- match result {
- (#\hyperref[zSome]{Some}#(idx)) => {
- TLBProbe = [bitzero];
- TLBIndex = idx;
- },
- #\hyperref[zNone]{None}#() => {
- TLBProbe = [bitone];
- TLBIndex = 0b000000;
- }
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteTLBR.tex b/cheri/sail_latex/sailfnexecuteTLBR.tex
deleted file mode 100644
index fd7aefd2..00000000
--- a/cheri/sail_latex/sailfnexecuteTLBR.tex
+++ /dev/null
@@ -1,24 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zTLBR]{TLBR}#()) = {
- #\hyperref[zcheckCPzeroAccess]{checkCP0Access}#();
- let i as atom(_) = #\hyperref[zunsigned]{unsigned}#(TLBIndex) in
- let entry = #\hyperref[zregzyderef]{reg\_deref}#(TLBEntries[i]) in {
- TLBPageMask = entry.#\hyperref[zpagemask]{pagemask}#();
- TLBEntryHi->#\hyperref[zR]{R}#() = entry.#\hyperref[zr]{r}#();
- TLBEntryHi->#\hyperref[zVPNtwo]{VPN2}#() = entry.#\hyperref[zvpntwo]{vpn2}#();
- TLBEntryHi->#\hyperref[zASID]{ASID}#() = entry.#\hyperref[zasid]{asid}#();
- TLBEntryLo0->#\hyperref[zCapS]{CapS}#()= entry.#\hyperref[zcapszero]{caps0}#();
- TLBEntryLo0->#\hyperref[zCapL]{CapL}#()= entry.#\hyperref[zcaplzero]{capl0}#();
- TLBEntryLo0->#\hyperref[zPFN]{PFN}#() = entry.#\hyperref[zpfnzero]{pfn0}#();
- TLBEntryLo0->#\hyperref[zC]{C}#() = entry.#\hyperref[zczero]{c0}#();
- TLBEntryLo0->#\hyperref[zD]{D}#() = entry.#\hyperref[zdzero]{d0}#();
- TLBEntryLo0->#\hyperref[zV]{V}#() = entry.#\hyperref[zvzero]{v0}#();
- TLBEntryLo0->#\hyperref[zG]{G}#() = entry.#\hyperref[zg]{g}#();
- TLBEntryLo1->#\hyperref[zCapS]{CapS}#()= entry.#\hyperref[zcapsone]{caps1}#();
- TLBEntryLo1->#\hyperref[zCapL]{CapL}#()= entry.#\hyperref[zcaplone]{capl1}#();
- TLBEntryLo1->#\hyperref[zPFN]{PFN}#() = entry.#\hyperref[zpfnone]{pfn1}#();
- TLBEntryLo1->#\hyperref[zC]{C}#() = entry.#\hyperref[zcone]{c1}#();
- TLBEntryLo1->#\hyperref[zD]{D}#() = entry.#\hyperref[zdone]{d1}#();
- TLBEntryLo1->#\hyperref[zV]{V}#() = entry.#\hyperref[zvone]{v1}#();
- TLBEntryLo1->#\hyperref[zG]{G}#() = entry.#\hyperref[zg]{g}#();
- }
-}
diff --git a/cheri/sail_latex/sailfnexecuteTLBWI.tex b/cheri/sail_latex/sailfnexecuteTLBWI.tex
deleted file mode 100644
index 2b32342e..00000000
--- a/cheri/sail_latex/sailfnexecuteTLBWI.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zTLBWI]{TLBWI}#()) = {
- #\hyperref[zcheckCPzeroAccess]{checkCP0Access}#();
- #\hyperref[zTLBWriteEntry]{TLBWriteEntry}#(TLBIndex);
-}
diff --git a/cheri/sail_latex/sailfnexecuteTLBWR.tex b/cheri/sail_latex/sailfnexecuteTLBWR.tex
deleted file mode 100644
index df582e88..00000000
--- a/cheri/sail_latex/sailfnexecuteTLBWR.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zTLBWR]{TLBWR}#()) = {
- #\hyperref[zcheckCPzeroAccess]{checkCP0Access}#();
- #\hyperref[zTLBWriteEntry]{TLBWriteEntry}#(TLBRandom);
-}
diff --git a/cheri/sail_latex/sailfnexecuteTRAPIMM.tex b/cheri/sail_latex/sailfnexecuteTRAPIMM.tex
deleted file mode 100644
index 9fa187e9..00000000
--- a/cheri/sail_latex/sailfnexecuteTRAPIMM.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zTRAPIMM]{TRAPIMM}#(rs, imm, cmp)) =
- {
- rs_val = #\hyperref[zrGPR]{rGPR}#(rs);
- imm_val : #\hyperref[zbits]{bits}#(64) = #\hyperref[zsignzyextend]{sign\_extend}#(imm);
- condition = #\hyperref[zcompare]{compare}#(cmp, rs_val, imm_val);
- if (condition) then
- (#\hyperref[zSignalException]{SignalException}#(Tr))
- }
diff --git a/cheri/sail_latex/sailfnexecuteTRAPREG.tex b/cheri/sail_latex/sailfnexecuteTRAPREG.tex
deleted file mode 100644
index 9d3d759c..00000000
--- a/cheri/sail_latex/sailfnexecuteTRAPREG.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zTRAPREG]{TRAPREG}#(rs, rt, cmp)) =
- {
- rs_val = #\hyperref[zrGPR]{rGPR}#(rs);
- rt_val = #\hyperref[zrGPR]{rGPR}#(rt);
- condition = #\hyperref[zcompare]{compare}#(cmp, rs_val, rt_val);
- if (condition) then
- (#\hyperref[zSignalException]{SignalException}#(Tr))
- }
diff --git a/cheri/sail_latex/sailfnexecuteWAIT.tex b/cheri/sail_latex/sailfnexecuteWAIT.tex
deleted file mode 100644
index 9ef8ce0e..00000000
--- a/cheri/sail_latex/sailfnexecuteWAIT.tex
+++ /dev/null
@@ -1,3 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zWAIT]{WAIT}#()) = {
- nextPC = PC;
-}
diff --git a/cheri/sail_latex/sailfnexecuteXOR.tex b/cheri/sail_latex/sailfnexecuteXOR.tex
deleted file mode 100644
index 79e89bc5..00000000
--- a/cheri/sail_latex/sailfnexecuteXOR.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zXOR]{XOR}# (rs, rt, rd)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rd) = (#\hyperref[zrGPR]{rGPR}#(rs) ^ #\hyperref[zrGPR]{rGPR}#(rt))
- }
diff --git a/cheri/sail_latex/sailfnexecuteXORI.tex b/cheri/sail_latex/sailfnexecuteXORI.tex
deleted file mode 100644
index 1310c125..00000000
--- a/cheri/sail_latex/sailfnexecuteXORI.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zXORI]{XORI}# (rs, rt, imm)) =
- {
- #\hyperref[zwGPR]{wGPR}#(rt) = (#\hyperref[zrGPR]{rGPR}#(rs) ^ #\hyperref[zzzerozyextend]{zero\_extend}#(imm))
- }
diff --git a/cheri/sail_latex/sailfnexecutebranch.tex b/cheri/sail_latex/sailfnexecutebranch.tex
deleted file mode 100644
index 9f2f03fc..00000000
--- a/cheri/sail_latex/sailfnexecutebranch.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function #\hyperref[zexecutezybranch]{execute\_branch}#(pc) = {
- delayedPC = pc;
- branchPending = 0b1;
-}
diff --git a/cheri/sail_latex/sailfnexecutebranchpcc.tex b/cheri/sail_latex/sailfnexecutebranchpcc.tex
deleted file mode 100644
index 8c803ce2..00000000
--- a/cheri/sail_latex/sailfnexecutebranchpcc.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function #\hyperref[zexecutezybranchzypcc]{execute\_branch\_pcc}#(newPCC) = {
- delayedPC = #\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zgetCapOffset]{getCapOffset}#(newPCC));
- delayedPCC = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(newPCC);
- branchPending = 0b1;
-}
diff --git a/cheri/sail_latex/sailfnextendLoad.tex b/cheri/sail_latex/sailfnextendLoad.tex
deleted file mode 100644
index 08d1f9a4..00000000
--- a/cheri/sail_latex/sailfnextendLoad.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function #\hyperref[zextendLoad]{extendLoad}#(memResult, sign) = {
- if (sign) then
- #\hyperref[zsignzyextend]{sign\_extend}#(memResult)
- else
- #\hyperref[zzzerozyextend]{zero\_extend}#(memResult)
-}
diff --git a/cheri/sail_latex/sailfngetAccessLevel.tex b/cheri/sail_latex/sailfngetAccessLevel.tex
deleted file mode 100644
index c37a672e..00000000
--- a/cheri/sail_latex/sailfngetAccessLevel.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function #\hyperref[zgetAccessLevel]{getAccessLevel}#() =
- if ((CP0Status.#\hyperref[zEXL]{EXL}#()) | (CP0Status.#\hyperref[zERL]{ERL}#())) then
- Kernel
- else match CP0Status.#\hyperref[zKSU]{KSU}#()
- {
- 0b00 => Kernel,
- 0b01 => Supervisor,
- 0b10 => User,
- _ => User /* behaviour undefined, assume user */
- }
diff --git a/cheri/sail_latex/sailfngetCapBase.tex b/cheri/sail_latex/sailfngetCapBase.tex
deleted file mode 100644
index 92f7963b..00000000
--- a/cheri/sail_latex/sailfngetCapBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zgetCapBase]{getCapBase}#(c) : CapStruct -> uint64 = #\hyperref[zunsigned]{unsigned}#(c.base)
diff --git a/cheri/sail_latex/sailfngetCapCauseRegExcCode.tex b/cheri/sail_latex/sailfngetCapCauseRegExcCode.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetCapCauseRegExcCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetCapCauseRegRegNum.tex b/cheri/sail_latex/sailfngetCapCauseRegRegNum.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetCapCauseRegRegNum.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetCapCauseRegbits.tex b/cheri/sail_latex/sailfngetCapCauseRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetCapCauseRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetCapCursor.tex b/cheri/sail_latex/sailfngetCapCursor.tex
deleted file mode 100644
index 06750973..00000000
--- a/cheri/sail_latex/sailfngetCapCursor.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zgetCapCursor]{getCapCursor}#(c) : CapStruct -> uint64 = #\hyperref[zunsigned]{unsigned}#(c.address)
diff --git a/cheri/sail_latex/sailfngetCapLength.tex b/cheri/sail_latex/sailfngetCapLength.tex
deleted file mode 100644
index 501ed940..00000000
--- a/cheri/sail_latex/sailfngetCapLength.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zgetCapLength]{getCapLength}#(c) : CapStruct -> CapLen = #\hyperref[zunsigned]{unsigned}#(c.length)
diff --git a/cheri/sail_latex/sailfngetCapOffset.tex b/cheri/sail_latex/sailfngetCapOffset.tex
deleted file mode 100644
index d1dc5f8d..00000000
--- a/cheri/sail_latex/sailfngetCapOffset.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zgetCapOffset]{getCapOffset}#(c) : CapStruct -> uint64 = (#\hyperref[zunsigned]{unsigned}#(c.address) - #\hyperref[zunsigned]{unsigned}#(c.base)) % (#\hyperref[zpowtwo]{pow2}#(64))
diff --git a/cheri/sail_latex/sailfngetCapPerms.tex b/cheri/sail_latex/sailfngetCapPerms.tex
deleted file mode 100644
index 932930ae..00000000
--- a/cheri/sail_latex/sailfngetCapPerms.tex
+++ /dev/null
@@ -1,16 +0,0 @@
-function #\hyperref[zgetCapPerms]{getCapPerms}#(cap) : CapStruct -> #\hyperref[zbits]{bits}#(31) =
- (
- cap.uperms
- @ cap.perm_reserved11_14
- @ cap.access_system_regs
- @ cap.permit_unseal
- @ cap.permit_ccall
- @ cap.permit_seal
- @ cap.permit_store_local_cap
- @ cap.permit_store_cap
- @ cap.permit_load_cap
- @ cap.permit_store
- @ cap.permit_load
- @ cap.permit_execute
- @ cap.global
- )
diff --git a/cheri/sail_latex/sailfngetCapTop.tex b/cheri/sail_latex/sailfngetCapTop.tex
deleted file mode 100644
index 3a3c74d5..00000000
--- a/cheri/sail_latex/sailfngetCapTop.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zgetCapTop]{getCapTop}#(c) : CapStruct -> CapLen = #\hyperref[zunsigned]{unsigned}#(c.base) + #\hyperref[zunsigned]{unsigned}#(c.length) /* XXX bug here? -- should be mod 2^64 */
diff --git a/cheri/sail_latex/sailfngetCauseRegBD.tex b/cheri/sail_latex/sailfngetCauseRegBD.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetCauseRegBD.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetCauseRegCE.tex b/cheri/sail_latex/sailfngetCauseRegCE.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetCauseRegCE.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetCauseRegExcCode.tex b/cheri/sail_latex/sailfngetCauseRegExcCode.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetCauseRegExcCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetCauseRegIP.tex b/cheri/sail_latex/sailfngetCauseRegIP.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetCauseRegIP.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetCauseRegIV.tex b/cheri/sail_latex/sailfngetCauseRegIV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetCauseRegIV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetCauseRegWP.tex b/cheri/sail_latex/sailfngetCauseRegWP.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetCauseRegWP.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetCauseRegbits.tex b/cheri/sail_latex/sailfngetCauseRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetCauseRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetContextRegBadVPNtwo.tex b/cheri/sail_latex/sailfngetContextRegBadVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetContextRegBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetContextRegPTEBase.tex b/cheri/sail_latex/sailfngetContextRegPTEBase.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetContextRegPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetContextRegbits.tex b/cheri/sail_latex/sailfngetContextRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetContextRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetStatusRegBEV.tex b/cheri/sail_latex/sailfngetStatusRegBEV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetStatusRegBEV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetStatusRegCU.tex b/cheri/sail_latex/sailfngetStatusRegCU.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetStatusRegCU.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetStatusRegERL.tex b/cheri/sail_latex/sailfngetStatusRegERL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetStatusRegERL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetStatusRegEXL.tex b/cheri/sail_latex/sailfngetStatusRegEXL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetStatusRegEXL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetStatusRegIE.tex b/cheri/sail_latex/sailfngetStatusRegIE.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetStatusRegIE.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetStatusRegIM.tex b/cheri/sail_latex/sailfngetStatusRegIM.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetStatusRegIM.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetStatusRegKSU.tex b/cheri/sail_latex/sailfngetStatusRegKSU.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetStatusRegKSU.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetStatusRegKX.tex b/cheri/sail_latex/sailfngetStatusRegKX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetStatusRegKX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetStatusRegSX.tex b/cheri/sail_latex/sailfngetStatusRegSX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetStatusRegSX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetStatusRegUX.tex b/cheri/sail_latex/sailfngetStatusRegUX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetStatusRegUX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetStatusRegbits.tex b/cheri/sail_latex/sailfngetStatusRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetStatusRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryHiRegASID.tex b/cheri/sail_latex/sailfngetTLBEntryHiRegASID.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryHiRegASID.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryHiRegR.tex b/cheri/sail_latex/sailfngetTLBEntryHiRegR.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryHiRegR.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryHiRegVPNtwo.tex b/cheri/sail_latex/sailfngetTLBEntryHiRegVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryHiRegVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryHiRegbits.tex b/cheri/sail_latex/sailfngetTLBEntryHiRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryHiRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryLoRegC.tex b/cheri/sail_latex/sailfngetTLBEntryLoRegC.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryLoRegC.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryLoRegCapL.tex b/cheri/sail_latex/sailfngetTLBEntryLoRegCapL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryLoRegCapL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryLoRegCapS.tex b/cheri/sail_latex/sailfngetTLBEntryLoRegCapS.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryLoRegCapS.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryLoRegD.tex b/cheri/sail_latex/sailfngetTLBEntryLoRegD.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryLoRegD.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryLoRegG.tex b/cheri/sail_latex/sailfngetTLBEntryLoRegG.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryLoRegG.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryLoRegPFN.tex b/cheri/sail_latex/sailfngetTLBEntryLoRegPFN.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryLoRegPFN.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryLoRegV.tex b/cheri/sail_latex/sailfngetTLBEntryLoRegV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryLoRegV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryLoRegbits.tex b/cheri/sail_latex/sailfngetTLBEntryLoRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryLoRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryasid.tex b/cheri/sail_latex/sailfngetTLBEntryasid.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryasid.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntrybits.tex b/cheri/sail_latex/sailfngetTLBEntrybits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntrybits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntrycaplone.tex b/cheri/sail_latex/sailfngetTLBEntrycaplone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntrycaplone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntrycaplzero.tex b/cheri/sail_latex/sailfngetTLBEntrycaplzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntrycaplzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntrycapsone.tex b/cheri/sail_latex/sailfngetTLBEntrycapsone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntrycapsone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntrycapszero.tex b/cheri/sail_latex/sailfngetTLBEntrycapszero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntrycapszero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntrycone.tex b/cheri/sail_latex/sailfngetTLBEntrycone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntrycone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryczero.tex b/cheri/sail_latex/sailfngetTLBEntryczero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryczero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntrydone.tex b/cheri/sail_latex/sailfngetTLBEntrydone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntrydone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntrydzero.tex b/cheri/sail_latex/sailfngetTLBEntrydzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntrydzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryg.tex b/cheri/sail_latex/sailfngetTLBEntryg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntrypagemask.tex b/cheri/sail_latex/sailfngetTLBEntrypagemask.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntrypagemask.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntrypfnone.tex b/cheri/sail_latex/sailfngetTLBEntrypfnone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntrypfnone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntrypfnzero.tex b/cheri/sail_latex/sailfngetTLBEntrypfnzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntrypfnzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryr.tex b/cheri/sail_latex/sailfngetTLBEntryr.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryr.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryvalid.tex b/cheri/sail_latex/sailfngetTLBEntryvalid.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryvalid.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryvone.tex b/cheri/sail_latex/sailfngetTLBEntryvone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryvone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryvpntwo.tex b/cheri/sail_latex/sailfngetTLBEntryvpntwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryvpntwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetTLBEntryvzero.tex b/cheri/sail_latex/sailfngetTLBEntryvzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetTLBEntryvzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetXContextRegXBadVPNtwo.tex b/cheri/sail_latex/sailfngetXContextRegXBadVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetXContextRegXBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetXContextRegXPTEBase.tex b/cheri/sail_latex/sailfngetXContextRegXPTEBase.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetXContextRegXPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetXContextRegXR.tex b/cheri/sail_latex/sailfngetXContextRegXR.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetXContextRegXR.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngetXContextRegbits.tex b/cheri/sail_latex/sailfngetXContextRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfngetXContextRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfngrantsAccess.tex b/cheri/sail_latex/sailfngrantsAccess.tex
deleted file mode 100644
index 0840683d..00000000
--- a/cheri/sail_latex/sailfngrantsAccess.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zgrantsAccess]{grantsAccess}# (currentLevel, requiredLevel) =
- #\hyperref[zintzyofzyAccessLevel]{int\_of\_AccessLevel}#(currentLevel) >= #\hyperref[zintzyofzyAccessLevel]{int\_of\_AccessLevel}#(requiredLevel)
diff --git a/cheri/sail_latex/sailfnincCapOffset.tex b/cheri/sail_latex/sailfnincCapOffset.tex
deleted file mode 100644
index 134bc1fd..00000000
--- a/cheri/sail_latex/sailfnincCapOffset.tex
+++ /dev/null
@@ -1,3 +0,0 @@
-function #\hyperref[zincCapOffset]{incCapOffset}#(c, delta) =
- let newAddr : #\hyperref[zbits]{bits}#(64) = c.address + delta in
- (true, {c with address = newAddr})
diff --git a/cheri/sail_latex/sailfnincrementCPzeroCount.tex b/cheri/sail_latex/sailfnincrementCPzeroCount.tex
deleted file mode 100644
index 71ca2e51..00000000
--- a/cheri/sail_latex/sailfnincrementCPzeroCount.tex
+++ /dev/null
@@ -1,17 +0,0 @@
-function #\hyperref[zincrementCPzeroCount]{incrementCP0Count}#() = {
- TLBRandom = (if (TLBRandom == TLBWired)
- then (TLBIndexMax) else (TLBRandom - 1));
-
- CP0Count = (CP0Count + 1);
- if (CP0Count == CP0Compare) then {
- CP0Cause->#\hyperref[zIP]{IP}#() = CP0Cause.#\hyperref[zIP]{IP}#() | 0x80; /* IP7 is timer interrupt */
- };
-
- let ims = CP0Status.#\hyperref[zIM]{IM}#() in
- let ips = CP0Cause.#\hyperref[zIP]{IP}#() in
- let ie = CP0Status.#\hyperref[zIE]{IE}#() in
- let exl = CP0Status.#\hyperref[zEXL]{EXL}#() in
- let erl = CP0Status.#\hyperref[zERL]{ERL}#() in
- if ((~(exl)) & (~(erl)) & ie & ((ips & ims) != 0x00)) then
- #\hyperref[zSignalException]{SignalException}#(Interrupt);
-}
diff --git a/cheri/sail_latex/sailfninitcptwostate.tex b/cheri/sail_latex/sailfninitcptwostate.tex
deleted file mode 100644
index ea9e07b5..00000000
--- a/cheri/sail_latex/sailfninitcptwostate.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-function #\hyperref[zinitzycptwozystate]{init\_cp2\_state}# () = {
- let defaultBits = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(default_cap);
- let nullBits = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(null_cap);
- PCC = defaultBits;
- nextPCC = defaultBits;
- delayedPCC = defaultBits;
- DDC = defaultBits;
- KCC = defaultBits;
- EPCC = defaultBits;
- KDC = nullBits;
- KR1C = nullBits;
- KR2C = nullBits;
- CTLSP = nullBits;
- CTLSU = nullBits;
- foreach(i from 1 to 31) {
- let idx = #\hyperref[ztozybits]{to\_bits}#(5, i) in
- #\hyperref[zwriteCapReg]{writeCapReg}#(idx, null_cap)
- }
-}
diff --git a/cheri/sail_latex/sailfninitcpzerostate.tex b/cheri/sail_latex/sailfninitcpzerostate.tex
deleted file mode 100644
index be4ebee2..00000000
--- a/cheri/sail_latex/sailfninitcpzerostate.tex
+++ /dev/null
@@ -1,3 +0,0 @@
-function #\hyperref[zinitzycpzerozystate]{init\_cp0\_state}# () : unit -> unit = {
- CP0Status->#\hyperref[zBEV]{BEV}#() = bitone;
-}
diff --git a/cheri/sail_latex/sailfnintofAccessLevel.tex b/cheri/sail_latex/sailfnintofAccessLevel.tex
deleted file mode 100644
index 0a5bb3c6..00000000
--- a/cheri/sail_latex/sailfnintofAccessLevel.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function int_of_AccessLevel level =
- match level {
- User => 0,
- Supervisor => 1,
- Kernel => 2
- }
diff --git a/cheri/sail_latex/sailfninttocap.tex b/cheri/sail_latex/sailfninttocap.tex
deleted file mode 100644
index a10d10c1..00000000
--- a/cheri/sail_latex/sailfninttocap.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zintzytozycap]{int\_to\_cap}# (address) : #\hyperref[zbits]{bits}#(64) -> CapStruct =
- {null_cap with address = address}
diff --git a/cheri/sail_latex/sailfnisAddressAligned.tex b/cheri/sail_latex/sailfnisAddressAligned.tex
deleted file mode 100644
index 212605ce..00000000
--- a/cheri/sail_latex/sailfnisAddressAligned.tex
+++ /dev/null
@@ -1,3 +0,0 @@
-function #\hyperref[zisAddressAligned]{isAddressAligned}# (addr, wordType) =
- let a = #\hyperref[zunsigned]{unsigned}#(addr) in
- a / alignment_width == (a + #\hyperref[zwordWidthBytes]{wordWidthBytes}#(wordType) - 1) / alignment_width
diff --git a/cheri/sail_latex/sailfnisnone.tex b/cheri/sail_latex/sailfnisnone.tex
deleted file mode 100644
index 877cc2a0..00000000
--- a/cheri/sail_latex/sailfnisnone.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function is_none opt = match opt {
- #\hyperref[zSome]{Some}#(_) => false,
- #\hyperref[zNone]{None}#() => true
-}
diff --git a/cheri/sail_latex/sailfnissome.tex b/cheri/sail_latex/sailfnissome.tex
deleted file mode 100644
index f1f5f655..00000000
--- a/cheri/sail_latex/sailfnissome.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function is_some opt = match opt {
- #\hyperref[zSome]{Some}#(_) => true,
- #\hyperref[zNone]{None}#() => false
-}
diff --git a/cheri/sail_latex/sailfnmask.tex b/cheri/sail_latex/sailfnmask.tex
deleted file mode 100644
index e62ea529..00000000
--- a/cheri/sail_latex/sailfnmask.tex
+++ /dev/null
@@ -1 +0,0 @@
-function mask bs = bs['n - 1 .. 0]
diff --git a/cheri/sail_latex/sailfnmemBitsToCapBits.tex b/cheri/sail_latex/sailfnmemBitsToCapBits.tex
deleted file mode 100644
index f5dc7a3b..00000000
--- a/cheri/sail_latex/sailfnmemBitsToCapBits.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zmemBitsToCapBits]{memBitsToCapBits}#(tag, b) : (bool, #\hyperref[zbits]{bits}#(256)) -> #\hyperref[zbits]{bits}#(257) =
- tag @ (b ^ null_cap_bits)
diff --git a/cheri/sail_latex/sailfnmipssignextend.tex b/cheri/sail_latex/sailfnmipssignextend.tex
deleted file mode 100644
index 80945b61..00000000
--- a/cheri/sail_latex/sailfnmipssignextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-function mips_sign_extend v = #\hyperref[zsailzysignzyextend]{sail\_sign\_extend}#(v, sizeof('m))
diff --git a/cheri/sail_latex/sailfnmipszzeroextend.tex b/cheri/sail_latex/sailfnmipszzeroextend.tex
deleted file mode 100644
index 6c9914d9..00000000
--- a/cheri/sail_latex/sailfnmipszzeroextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-function mips_zero_extend v = #\hyperref[zsailzyzzerozyextend]{sail\_zero\_extend}#(v, sizeof('m))
diff --git a/cheri/sail_latex/sailfnneqanything.tex b/cheri/sail_latex/sailfnneqanything.tex
deleted file mode 100644
index 1605ed05..00000000
--- a/cheri/sail_latex/sailfnneqanything.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zneqzyanything]{neq\_anything}# (x, y) = #\hyperref[znotzybool]{not\_bool}#(x == y)
diff --git a/cheri/sail_latex/sailfnneqatom.tex b/cheri/sail_latex/sailfnneqatom.tex
deleted file mode 100644
index e9a9f93f..00000000
--- a/cheri/sail_latex/sailfnneqatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zneqzyatom]{neq\_atom}# (x, y) = #\hyperref[znotzybool]{not\_bool}#(#\hyperref[zeqzyatom]{eq\_atom}#(x, y))
diff --git a/cheri/sail_latex/sailfnneqbool.tex b/cheri/sail_latex/sailfnneqbool.tex
deleted file mode 100644
index 65007b8e..00000000
--- a/cheri/sail_latex/sailfnneqbool.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zneqzybool]{neq\_bool}# (x, y) = #\hyperref[znotzybool]{not\_bool}#(#\hyperref[zeqzybool]{eq\_bool}#(x, y))
diff --git a/cheri/sail_latex/sailfnneqint.tex b/cheri/sail_latex/sailfnneqint.tex
deleted file mode 100644
index 952a7735..00000000
--- a/cheri/sail_latex/sailfnneqint.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zneqzyint]{neq\_int}# (x, y) = #\hyperref[znotzybool]{not\_bool}#(#\hyperref[zeqzyint]{eq\_int}#(x, y))
diff --git a/cheri/sail_latex/sailfnneqrange.tex b/cheri/sail_latex/sailfnneqrange.tex
deleted file mode 100644
index 43f49e9e..00000000
--- a/cheri/sail_latex/sailfnneqrange.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zneqzyrange]{neq\_range}# (x, y) = #\hyperref[znotzybool]{not\_bool}#(#\hyperref[zeqzyrange]{eq\_range}#(x, y))
diff --git a/cheri/sail_latex/sailfnneqvec.tex b/cheri/sail_latex/sailfnneqvec.tex
deleted file mode 100644
index c446df08..00000000
--- a/cheri/sail_latex/sailfnneqvec.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zneqzyvec]{neq\_vec}# (x, y) = #\hyperref[znotzybool]{not\_bool}#(#\hyperref[zeqzybits]{eq\_bits}#(x, y))
diff --git a/cheri/sail_latex/sailfnnumofAccessLevel.tex b/cheri/sail_latex/sailfnnumofAccessLevel.tex
deleted file mode 100644
index a5a1d8af..00000000
--- a/cheri/sail_latex/sailfnnumofAccessLevel.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function num_of_AccessLevel arg# = match arg# {
- User => 0,
- Supervisor => 1,
- Kernel => 2
-}
diff --git a/cheri/sail_latex/sailfnnumofCPtrCmpOp.tex b/cheri/sail_latex/sailfnnumofCPtrCmpOp.tex
deleted file mode 100644
index 4d20546b..00000000
--- a/cheri/sail_latex/sailfnnumofCPtrCmpOp.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function num_of_CPtrCmpOp arg# = match arg# {
- CEQ => 0,
- CNE => 1,
- CLT => 2,
- CLE => 3,
- CLTU => 4,
- CLEU => 5,
- CEXEQ => 6,
- CNEXEQ => 7
-}
diff --git a/cheri/sail_latex/sailfnnumofCapEx.tex b/cheri/sail_latex/sailfnnumofCapEx.tex
deleted file mode 100644
index d2ee7b0f..00000000
--- a/cheri/sail_latex/sailfnnumofCapEx.tex
+++ /dev/null
@@ -1,25 +0,0 @@
-function num_of_CapEx arg# = match arg# {
- CapEx_None => 0,
- CapEx_LengthViolation => 1,
- CapEx_TagViolation => 2,
- CapEx_SealViolation => 3,
- CapEx_TypeViolation => 4,
- CapEx_CallTrap => 5,
- CapEx_ReturnTrap => 6,
- CapEx_TSSUnderFlow => 7,
- CapEx_UserDefViolation => 8,
- CapEx_TLBNoStoreCap => 9,
- CapEx_InexactBounds => 10,
- CapEx_GlobalViolation => 11,
- CapEx_PermitExecuteViolation => 12,
- CapEx_PermitLoadViolation => 13,
- CapEx_PermitStoreViolation => 14,
- CapEx_PermitLoadCapViolation => 15,
- CapEx_PermitStoreCapViolation => 16,
- CapEx_PermitStoreLocalCapViolation => 17,
- CapEx_PermitSealViolation => 18,
- CapEx_AccessSystemRegsViolation => 19,
- CapEx_PermitCCallViolation => 20,
- CapEx_AccessCCallIDCViolation => 21,
- CapEx_PermitUnsealViolation => 22
-}
diff --git a/cheri/sail_latex/sailfnnumofClearRegSet.tex b/cheri/sail_latex/sailfnnumofClearRegSet.tex
deleted file mode 100644
index 3dd58b89..00000000
--- a/cheri/sail_latex/sailfnnumofClearRegSet.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function num_of_ClearRegSet arg# = match arg# {
- GPLo => 0,
- GPHi => 1,
- CLo => 2,
- CHi => 3
-}
diff --git a/cheri/sail_latex/sailfnnumofComparison.tex b/cheri/sail_latex/sailfnnumofComparison.tex
deleted file mode 100644
index d98bebc2..00000000
--- a/cheri/sail_latex/sailfnnumofComparison.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function num_of_Comparison arg# = match arg# {
- EQ => 0,
- NE => 1,
- GE => 2,
- GEU => 3,
- GT => 4,
- LE => 5,
- LT => 6,
- LTU => 7
-}
diff --git a/cheri/sail_latex/sailfnnumofException.tex b/cheri/sail_latex/sailfnnumofException.tex
deleted file mode 100644
index 02bad081..00000000
--- a/cheri/sail_latex/sailfnnumofException.tex
+++ /dev/null
@@ -1,21 +0,0 @@
-function num_of_Exception arg# = match arg# {
- Interrupt => 0,
- TLBMod => 1,
- TLBL => 2,
- TLBS => 3,
- AdEL => 4,
- AdES => 5,
- Sys => 6,
- Bp => 7,
- ResI => 8,
- CpU => 9,
- Ov => 10,
- Tr => 11,
- C2E => 12,
- C2Trap => 13,
- XTLBRefillL => 14,
- XTLBRefillS => 15,
- XTLBInvL => 16,
- XTLBInvS => 17,
- MCheck => 18
-}
diff --git a/cheri/sail_latex/sailfnnumofMemAccessType.tex b/cheri/sail_latex/sailfnnumofMemAccessType.tex
deleted file mode 100644
index 47b1af66..00000000
--- a/cheri/sail_latex/sailfnnumofMemAccessType.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function num_of_MemAccessType arg# = match arg# {
- Instruction => 0,
- LoadData => 1,
- StoreData => 2
-}
diff --git a/cheri/sail_latex/sailfnnumofWordType.tex b/cheri/sail_latex/sailfnnumofWordType.tex
deleted file mode 100644
index 0ed09f63..00000000
--- a/cheri/sail_latex/sailfnnumofWordType.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function num_of_WordType arg# = match arg# {
- B => 0,
- H => 1,
- W => 2,
- D => 3
-}
diff --git a/cheri/sail_latex/sailfnnumofWordTypeUnaligned.tex b/cheri/sail_latex/sailfnnumofWordTypeUnaligned.tex
deleted file mode 100644
index f6b61ce7..00000000
--- a/cheri/sail_latex/sailfnnumofWordTypeUnaligned.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function num_of_WordTypeUnaligned arg# = match arg# {
- WL => 0,
- WR => 1,
- DL => 2,
- DR => 3
-}
diff --git a/cheri/sail_latex/sailfnnumofdecodefailure.tex b/cheri/sail_latex/sailfnnumofdecodefailure.tex
deleted file mode 100644
index 3b5fadb3..00000000
--- a/cheri/sail_latex/sailfnnumofdecodefailure.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function num_of_decode_failure arg# = match arg# {
- no_matching_pattern => 0,
- unsupported_instruction => 1,
- illegal_instruction => 2,
- internal_error => 3
-}
diff --git a/cheri/sail_latex/sailfnones.tex b/cheri/sail_latex/sailfnones.tex
deleted file mode 100644
index e58040d7..00000000
--- a/cheri/sail_latex/sailfnones.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zones]{ones}#() = #\hyperref[zreplicatezybits]{replicate\_bits}# (0b1,'n)
diff --git a/cheri/sail_latex/sailfnpccaccesssystemregs.tex b/cheri/sail_latex/sailfnpccaccesssystemregs.tex
deleted file mode 100644
index 3e54b060..00000000
--- a/cheri/sail_latex/sailfnpccaccesssystemregs.tex
+++ /dev/null
@@ -1,3 +0,0 @@
-function #\hyperref[zpcczyaccesszysystemzyregs]{pcc\_access\_system\_regs}# () =
- let pcc = #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(PCC) in
- (pcc.access_system_regs)
diff --git a/cheri/sail_latex/sailfnrGPR.tex b/cheri/sail_latex/sailfnrGPR.tex
deleted file mode 100644
index 751d67a3..00000000
--- a/cheri/sail_latex/sailfnrGPR.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function rGPR idx = {
- let i as atom(_) = #\hyperref[zunsigned]{unsigned}#(idx) in
- if i == 0 then 0x0000000000000000 else GPR[i]
-}
diff --git a/cheri/sail_latex/sailfnraisectwoexception.tex b/cheri/sail_latex/sailfnraisectwoexception.tex
deleted file mode 100644
index e3d6bcbb..00000000
--- a/cheri/sail_latex/sailfnraisectwoexception.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(capEx, regnum) =
- let reg8 = 0b000 @ regnum in
- if ((capEx == CapEx_AccessSystemRegsViolation) & (regnum == IDCNO)) then
- #\hyperref[zraisezyctwozyexceptioneight]{raise\_c2\_exception8}#(CapEx_AccessCCallIDCViolation, reg8)
- else
- #\hyperref[zraisezyctwozyexceptioneight]{raise\_c2\_exception8}#(capEx, reg8)
diff --git a/cheri/sail_latex/sailfnraisectwoexceptioneight.tex b/cheri/sail_latex/sailfnraisectwoexceptioneight.tex
deleted file mode 100644
index b6490aa0..00000000
--- a/cheri/sail_latex/sailfnraisectwoexceptioneight.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-function #\hyperref[zraisezyctwozyexceptioneight]{raise\_c2\_exception8}#(capEx, regnum) =
- {
- CapCause->#\hyperref[zExcCode]{ExcCode}#() = #\hyperref[zCapExCode]{CapExCode}#(capEx);
- CapCause->#\hyperref[zRegNum]{RegNum}#() = regnum;
- let mipsEx =
- if ((capEx == CapEx_CallTrap) | (capEx == CapEx_ReturnTrap))
- then C2Trap else C2E in
- #\hyperref[zSignalException]{SignalException}#(mipsEx);
- }
diff --git a/cheri/sail_latex/sailfnraisectwoexceptionnoreg.tex b/cheri/sail_latex/sailfnraisectwoexceptionnoreg.tex
deleted file mode 100644
index db246d80..00000000
--- a/cheri/sail_latex/sailfnraisectwoexceptionnoreg.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zraisezyctwozyexceptionzynoreg]{raise\_c2\_exception\_noreg}#(capEx) =
- #\hyperref[zraisezyctwozyexceptioneight]{raise\_c2\_exception8}#(capEx, 0xff)
diff --git a/cheri/sail_latex/sailfnreadCapReg.tex b/cheri/sail_latex/sailfnreadCapReg.tex
deleted file mode 100644
index 357027c3..00000000
--- a/cheri/sail_latex/sailfnreadCapReg.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function #\hyperref[zreadCapReg]{readCapReg}#(n) =
- if (n == 0b00000) then
- null_cap
- else
- let i = #\hyperref[zunsigned]{unsigned}#(n) in
- #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(#\hyperref[zregzyderef]{reg\_deref}#(CapRegs[i]))
diff --git a/cheri/sail_latex/sailfnreadCapRegDDC.tex b/cheri/sail_latex/sailfnreadCapRegDDC.tex
deleted file mode 100644
index f2fea30c..00000000
--- a/cheri/sail_latex/sailfnreadCapRegDDC.tex
+++ /dev/null
@@ -1,3 +0,0 @@
-function #\hyperref[zreadCapRegDDC]{readCapRegDDC}#(n) =
- let i = #\hyperref[zunsigned]{unsigned}#(n) in
- #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(#\hyperref[zregzyderef]{reg\_deref}#(CapRegs[i])) /* NB CapRegs[0] is points to DDC */
diff --git a/cheri/sail_latex/sailfnregisterinaccessible.tex b/cheri/sail_latex/sailfnregisterinaccessible.tex
deleted file mode 100644
index 368d01a4..00000000
--- a/cheri/sail_latex/sailfnregisterinaccessible.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-function #\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(r) =
- ((r == IDCNO) & inCCallDelay) |
- ((r == KR1CNO |
- r == KR2CNO |
- r == KDCNO |
- r == KCCNO |
- r == EPCCNO) & #\hyperref[znot]{not}# (#\hyperref[zpcczyaccesszysystemzyregs]{pcc\_access\_system\_regs}# ()))
diff --git a/cheri/sail_latex/sailfnsailmask.tex b/cheri/sail_latex/sailfnsailmask.tex
deleted file mode 100644
index 37ede658..00000000
--- a/cheri/sail_latex/sailfnsailmask.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zsailzymask]{sail\_mask}#(len, v) = if len <= #\hyperref[zlength]{length}#(v) then #\hyperref[ztruncate]{truncate}#(v, len) else #\hyperref[zsailzyzzerozyextend]{sail\_zero\_extend}#(v, len)
diff --git a/cheri/sail_latex/sailfnsealCap.tex b/cheri/sail_latex/sailfnsealCap.tex
deleted file mode 100644
index beb1435b..00000000
--- a/cheri/sail_latex/sailfnsealCap.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zsealCap]{sealCap}#(cap, otype) : (CapStruct, #\hyperref[zbits]{bits}#(24)) -> (bool, CapStruct) =
- (true, {cap with sealed=true, otype=otype})
diff --git a/cheri/sail_latex/sailfnsetCapBounds.tex b/cheri/sail_latex/sailfnsetCapBounds.tex
deleted file mode 100644
index cb689dd8..00000000
--- a/cheri/sail_latex/sailfnsetCapBounds.tex
+++ /dev/null
@@ -1,3 +0,0 @@
-function #\hyperref[zsetCapBounds]{setCapBounds}#(cap, base, top) =
- let length : #\hyperref[zbits]{bits}#(65) = top - (0b0 @ base) in
- (true, {cap with base = base, length = length[63..0], address = base})
diff --git a/cheri/sail_latex/sailfnsetCapCauseRegExcCode.tex b/cheri/sail_latex/sailfnsetCapCauseRegExcCode.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetCapCauseRegExcCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetCapCauseRegRegNum.tex b/cheri/sail_latex/sailfnsetCapCauseRegRegNum.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetCapCauseRegRegNum.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetCapCauseRegbits.tex b/cheri/sail_latex/sailfnsetCapCauseRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetCapCauseRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetCapOffset.tex b/cheri/sail_latex/sailfnsetCapOffset.tex
deleted file mode 100644
index 404630e3..00000000
--- a/cheri/sail_latex/sailfnsetCapOffset.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zsetCapOffset]{setCapOffset}#(c, offset) =
- (true, {c with address=c.base + offset})
diff --git a/cheri/sail_latex/sailfnsetCapPerms.tex b/cheri/sail_latex/sailfnsetCapPerms.tex
deleted file mode 100644
index 1a1f67bd..00000000
--- a/cheri/sail_latex/sailfnsetCapPerms.tex
+++ /dev/null
@@ -1,16 +0,0 @@
-function #\hyperref[zsetCapPerms]{setCapPerms}#(cap, perms) : (CapStruct, #\hyperref[zbits]{bits}#(31)) -> CapStruct =
- { cap with
- uperms = perms[30..15],
- /* perm_reserved11_14 = perms[14..11], XXX should allow to set? only affects cbuildcap. */
- access_system_regs = perms[10],
- permit_unseal = perms[9],
- permit_ccall = perms[8],
- permit_seal = perms[7],
- permit_store_local_cap = perms[6],
- permit_store_cap = perms[5],
- permit_load_cap = perms[4],
- permit_store = perms[3],
- permit_load = perms[2],
- permit_execute = perms[1],
- global = perms[0]
- }
diff --git a/cheri/sail_latex/sailfnsetCauseRegBD.tex b/cheri/sail_latex/sailfnsetCauseRegBD.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetCauseRegBD.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetCauseRegCE.tex b/cheri/sail_latex/sailfnsetCauseRegCE.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetCauseRegCE.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetCauseRegExcCode.tex b/cheri/sail_latex/sailfnsetCauseRegExcCode.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetCauseRegExcCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetCauseRegIP.tex b/cheri/sail_latex/sailfnsetCauseRegIP.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetCauseRegIP.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetCauseRegIV.tex b/cheri/sail_latex/sailfnsetCauseRegIV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetCauseRegIV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetCauseRegWP.tex b/cheri/sail_latex/sailfnsetCauseRegWP.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetCauseRegWP.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetCauseRegbits.tex b/cheri/sail_latex/sailfnsetCauseRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetCauseRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetContextRegBadVPNtwo.tex b/cheri/sail_latex/sailfnsetContextRegBadVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetContextRegBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetContextRegPTEBase.tex b/cheri/sail_latex/sailfnsetContextRegPTEBase.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetContextRegPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetContextRegbits.tex b/cheri/sail_latex/sailfnsetContextRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetContextRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetStatusRegBEV.tex b/cheri/sail_latex/sailfnsetStatusRegBEV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetStatusRegBEV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetStatusRegCU.tex b/cheri/sail_latex/sailfnsetStatusRegCU.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetStatusRegCU.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetStatusRegERL.tex b/cheri/sail_latex/sailfnsetStatusRegERL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetStatusRegERL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetStatusRegEXL.tex b/cheri/sail_latex/sailfnsetStatusRegEXL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetStatusRegEXL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetStatusRegIE.tex b/cheri/sail_latex/sailfnsetStatusRegIE.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetStatusRegIE.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetStatusRegIM.tex b/cheri/sail_latex/sailfnsetStatusRegIM.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetStatusRegIM.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetStatusRegKSU.tex b/cheri/sail_latex/sailfnsetStatusRegKSU.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetStatusRegKSU.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetStatusRegKX.tex b/cheri/sail_latex/sailfnsetStatusRegKX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetStatusRegKX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetStatusRegSX.tex b/cheri/sail_latex/sailfnsetStatusRegSX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetStatusRegSX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetStatusRegUX.tex b/cheri/sail_latex/sailfnsetStatusRegUX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetStatusRegUX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetStatusRegbits.tex b/cheri/sail_latex/sailfnsetStatusRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetStatusRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryHiRegASID.tex b/cheri/sail_latex/sailfnsetTLBEntryHiRegASID.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryHiRegASID.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryHiRegR.tex b/cheri/sail_latex/sailfnsetTLBEntryHiRegR.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryHiRegR.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryHiRegVPNtwo.tex b/cheri/sail_latex/sailfnsetTLBEntryHiRegVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryHiRegVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryHiRegbits.tex b/cheri/sail_latex/sailfnsetTLBEntryHiRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryHiRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryLoRegC.tex b/cheri/sail_latex/sailfnsetTLBEntryLoRegC.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryLoRegC.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryLoRegCapL.tex b/cheri/sail_latex/sailfnsetTLBEntryLoRegCapL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryLoRegCapL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryLoRegCapS.tex b/cheri/sail_latex/sailfnsetTLBEntryLoRegCapS.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryLoRegCapS.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryLoRegD.tex b/cheri/sail_latex/sailfnsetTLBEntryLoRegD.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryLoRegD.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryLoRegG.tex b/cheri/sail_latex/sailfnsetTLBEntryLoRegG.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryLoRegG.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryLoRegPFN.tex b/cheri/sail_latex/sailfnsetTLBEntryLoRegPFN.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryLoRegPFN.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryLoRegV.tex b/cheri/sail_latex/sailfnsetTLBEntryLoRegV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryLoRegV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryLoRegbits.tex b/cheri/sail_latex/sailfnsetTLBEntryLoRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryLoRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryasid.tex b/cheri/sail_latex/sailfnsetTLBEntryasid.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryasid.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntrybits.tex b/cheri/sail_latex/sailfnsetTLBEntrybits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntrybits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntrycaplone.tex b/cheri/sail_latex/sailfnsetTLBEntrycaplone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntrycaplone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntrycaplzero.tex b/cheri/sail_latex/sailfnsetTLBEntrycaplzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntrycaplzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntrycapsone.tex b/cheri/sail_latex/sailfnsetTLBEntrycapsone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntrycapsone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntrycapszero.tex b/cheri/sail_latex/sailfnsetTLBEntrycapszero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntrycapszero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntrycone.tex b/cheri/sail_latex/sailfnsetTLBEntrycone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntrycone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryczero.tex b/cheri/sail_latex/sailfnsetTLBEntryczero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryczero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntrydone.tex b/cheri/sail_latex/sailfnsetTLBEntrydone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntrydone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntrydzero.tex b/cheri/sail_latex/sailfnsetTLBEntrydzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntrydzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryg.tex b/cheri/sail_latex/sailfnsetTLBEntryg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntrypagemask.tex b/cheri/sail_latex/sailfnsetTLBEntrypagemask.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntrypagemask.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntrypfnone.tex b/cheri/sail_latex/sailfnsetTLBEntrypfnone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntrypfnone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntrypfnzero.tex b/cheri/sail_latex/sailfnsetTLBEntrypfnzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntrypfnzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryr.tex b/cheri/sail_latex/sailfnsetTLBEntryr.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryr.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryvalid.tex b/cheri/sail_latex/sailfnsetTLBEntryvalid.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryvalid.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryvone.tex b/cheri/sail_latex/sailfnsetTLBEntryvone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryvone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryvpntwo.tex b/cheri/sail_latex/sailfnsetTLBEntryvpntwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryvpntwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetTLBEntryvzero.tex b/cheri/sail_latex/sailfnsetTLBEntryvzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetTLBEntryvzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetXContextRegXBadVPNtwo.tex b/cheri/sail_latex/sailfnsetXContextRegXBadVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetXContextRegXBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetXContextRegXPTEBase.tex b/cheri/sail_latex/sailfnsetXContextRegXPTEBase.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetXContextRegXPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetXContextRegXR.tex b/cheri/sail_latex/sailfnsetXContextRegXR.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetXContextRegXR.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsetXContextRegbits.tex b/cheri/sail_latex/sailfnsetXContextRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnsetXContextRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnsupportedinstructions.tex b/cheri/sail_latex/sailfnsupportedinstructions.tex
deleted file mode 100644
index b3ffdfa4..00000000
--- a/cheri/sail_latex/sailfnsupportedinstructions.tex
+++ /dev/null
@@ -1 +0,0 @@
-function supported_instructions instr = #\hyperref[zSome]{Some}#(instr)
diff --git a/cheri/sail_latex/sailfntlbEntryMatch.tex b/cheri/sail_latex/sailfntlbEntryMatch.tex
deleted file mode 100644
index f952062f..00000000
--- a/cheri/sail_latex/sailfntlbEntryMatch.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-function #\hyperref[ztlbEntryMatch]{tlbEntryMatch}#(r, vpn2, asid, entry) =
- let entryValid = entry.#\hyperref[zvalid]{valid}#() in
- let entryR = entry.#\hyperref[zr]{r}#() in
- let entryMask = entry.#\hyperref[zpagemask]{pagemask}#() in
- let entryVPN = entry.#\hyperref[zvpntwo]{vpn2}#() in
- let entryASID = entry.#\hyperref[zasid]{asid}#() in
- let entryG = entry.#\hyperref[zg]{g}#() in
- let vpnMask : #\hyperref[zbits]{bits}#(27) = ~(#\hyperref[zzzerozyextend]{zero\_extend}#(entryMask)) in
- (entryValid &
- (r == entryR) &
- ((vpn2 & vpnMask) == ((entryVPN) & vpnMask)) &
- ((asid == (entryASID)) | (entryG)))
diff --git a/cheri/sail_latex/sailfntlbSearch.tex b/cheri/sail_latex/sailfntlbSearch.tex
deleted file mode 100644
index 8bce6f3b..00000000
--- a/cheri/sail_latex/sailfntlbSearch.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function #\hyperref[ztlbSearch]{tlbSearch}#(VAddr) =
- let r = (VAddr[63..62]) in
- let vpn2 = (VAddr[39..13]) in
- let asid = TLBEntryHi.#\hyperref[zASID]{ASID}#() in {
- foreach (idx from 0 to 63) {
- if(#\hyperref[ztlbEntryMatch]{tlbEntryMatch}#(r, vpn2, asid, #\hyperref[zregzyderef]{reg\_deref}#(TLBEntries[idx]))) then
- return #\hyperref[zSome]{Some}#(#\hyperref[ztozybits]{to\_bits}#(6, idx))
- };
- #\hyperref[zNone]{None}#()
- }
diff --git a/cheri/sail_latex/sailfntobits.tex b/cheri/sail_latex/sailfntobits.tex
deleted file mode 100644
index d1df5e83..00000000
--- a/cheri/sail_latex/sailfntobits.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[ztozybits]{to\_bits}# (l, n) = #\hyperref[zgetzyslicezyint]{get\_slice\_int}#(l, n, 0)
diff --git a/cheri/sail_latex/sailfnupdateCapCauseRegExcCode.tex b/cheri/sail_latex/sailfnupdateCapCauseRegExcCode.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateCapCauseRegExcCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateCapCauseRegRegNum.tex b/cheri/sail_latex/sailfnupdateCapCauseRegRegNum.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateCapCauseRegRegNum.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateCapCauseRegbits.tex b/cheri/sail_latex/sailfnupdateCapCauseRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateCapCauseRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateCauseRegBD.tex b/cheri/sail_latex/sailfnupdateCauseRegBD.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateCauseRegBD.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateCauseRegCE.tex b/cheri/sail_latex/sailfnupdateCauseRegCE.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateCauseRegCE.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateCauseRegExcCode.tex b/cheri/sail_latex/sailfnupdateCauseRegExcCode.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateCauseRegExcCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateCauseRegIP.tex b/cheri/sail_latex/sailfnupdateCauseRegIP.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateCauseRegIP.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateCauseRegIV.tex b/cheri/sail_latex/sailfnupdateCauseRegIV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateCauseRegIV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateCauseRegWP.tex b/cheri/sail_latex/sailfnupdateCauseRegWP.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateCauseRegWP.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateCauseRegbits.tex b/cheri/sail_latex/sailfnupdateCauseRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateCauseRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateContextRegBadVPNtwo.tex b/cheri/sail_latex/sailfnupdateContextRegBadVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateContextRegBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateContextRegPTEBase.tex b/cheri/sail_latex/sailfnupdateContextRegPTEBase.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateContextRegPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateContextRegbits.tex b/cheri/sail_latex/sailfnupdateContextRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateContextRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateStatusRegBEV.tex b/cheri/sail_latex/sailfnupdateStatusRegBEV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateStatusRegBEV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateStatusRegCU.tex b/cheri/sail_latex/sailfnupdateStatusRegCU.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateStatusRegCU.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateStatusRegERL.tex b/cheri/sail_latex/sailfnupdateStatusRegERL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateStatusRegERL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateStatusRegEXL.tex b/cheri/sail_latex/sailfnupdateStatusRegEXL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateStatusRegEXL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateStatusRegIE.tex b/cheri/sail_latex/sailfnupdateStatusRegIE.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateStatusRegIE.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateStatusRegIM.tex b/cheri/sail_latex/sailfnupdateStatusRegIM.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateStatusRegIM.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateStatusRegKSU.tex b/cheri/sail_latex/sailfnupdateStatusRegKSU.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateStatusRegKSU.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateStatusRegKX.tex b/cheri/sail_latex/sailfnupdateStatusRegKX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateStatusRegKX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateStatusRegSX.tex b/cheri/sail_latex/sailfnupdateStatusRegSX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateStatusRegSX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateStatusRegUX.tex b/cheri/sail_latex/sailfnupdateStatusRegUX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateStatusRegUX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateStatusRegbits.tex b/cheri/sail_latex/sailfnupdateStatusRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateStatusRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryHiRegASID.tex b/cheri/sail_latex/sailfnupdateTLBEntryHiRegASID.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryHiRegASID.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryHiRegR.tex b/cheri/sail_latex/sailfnupdateTLBEntryHiRegR.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryHiRegR.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryHiRegVPNtwo.tex b/cheri/sail_latex/sailfnupdateTLBEntryHiRegVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryHiRegVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryHiRegbits.tex b/cheri/sail_latex/sailfnupdateTLBEntryHiRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryHiRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryLoRegC.tex b/cheri/sail_latex/sailfnupdateTLBEntryLoRegC.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryLoRegC.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryLoRegCapL.tex b/cheri/sail_latex/sailfnupdateTLBEntryLoRegCapL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryLoRegCapL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryLoRegCapS.tex b/cheri/sail_latex/sailfnupdateTLBEntryLoRegCapS.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryLoRegCapS.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryLoRegD.tex b/cheri/sail_latex/sailfnupdateTLBEntryLoRegD.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryLoRegD.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryLoRegG.tex b/cheri/sail_latex/sailfnupdateTLBEntryLoRegG.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryLoRegG.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryLoRegPFN.tex b/cheri/sail_latex/sailfnupdateTLBEntryLoRegPFN.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryLoRegPFN.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryLoRegV.tex b/cheri/sail_latex/sailfnupdateTLBEntryLoRegV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryLoRegV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryLoRegbits.tex b/cheri/sail_latex/sailfnupdateTLBEntryLoRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryLoRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryasid.tex b/cheri/sail_latex/sailfnupdateTLBEntryasid.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryasid.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntrybits.tex b/cheri/sail_latex/sailfnupdateTLBEntrybits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntrybits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntrycaplone.tex b/cheri/sail_latex/sailfnupdateTLBEntrycaplone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntrycaplone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntrycaplzero.tex b/cheri/sail_latex/sailfnupdateTLBEntrycaplzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntrycaplzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntrycapsone.tex b/cheri/sail_latex/sailfnupdateTLBEntrycapsone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntrycapsone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntrycapszero.tex b/cheri/sail_latex/sailfnupdateTLBEntrycapszero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntrycapszero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntrycone.tex b/cheri/sail_latex/sailfnupdateTLBEntrycone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntrycone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryczero.tex b/cheri/sail_latex/sailfnupdateTLBEntryczero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryczero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntrydone.tex b/cheri/sail_latex/sailfnupdateTLBEntrydone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntrydone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntrydzero.tex b/cheri/sail_latex/sailfnupdateTLBEntrydzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntrydzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryg.tex b/cheri/sail_latex/sailfnupdateTLBEntryg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntrypagemask.tex b/cheri/sail_latex/sailfnupdateTLBEntrypagemask.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntrypagemask.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntrypfnone.tex b/cheri/sail_latex/sailfnupdateTLBEntrypfnone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntrypfnone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntrypfnzero.tex b/cheri/sail_latex/sailfnupdateTLBEntrypfnzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntrypfnzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryr.tex b/cheri/sail_latex/sailfnupdateTLBEntryr.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryr.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryvalid.tex b/cheri/sail_latex/sailfnupdateTLBEntryvalid.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryvalid.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryvone.tex b/cheri/sail_latex/sailfnupdateTLBEntryvone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryvone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryvpntwo.tex b/cheri/sail_latex/sailfnupdateTLBEntryvpntwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryvpntwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateTLBEntryvzero.tex b/cheri/sail_latex/sailfnupdateTLBEntryvzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateTLBEntryvzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateXContextRegXBadVPNtwo.tex b/cheri/sail_latex/sailfnupdateXContextRegXBadVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateXContextRegXBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateXContextRegXPTEBase.tex b/cheri/sail_latex/sailfnupdateXContextRegXPTEBase.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateXContextRegXPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateXContextRegXR.tex b/cheri/sail_latex/sailfnupdateXContextRegXR.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateXContextRegXR.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnupdateXContextRegbits.tex b/cheri/sail_latex/sailfnupdateXContextRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailfnupdateXContextRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailfnwGPR.tex b/cheri/sail_latex/sailfnwGPR.tex
deleted file mode 100644
index 338d4b5c..00000000
--- a/cheri/sail_latex/sailfnwGPR.tex
+++ /dev/null
@@ -1,8 +0,0 @@
-function #\hyperref[zwGPR]{wGPR}# (idx, v) = {
- let i as atom(_) = #\hyperref[zunsigned]{unsigned}#(idx) in
- if i != 0 then {
- /*#\hyperref[zprerrzystring]{prerr\_string}#(#\hyperref[zstringzyofzyint]{string\_of\_int}#(i));
- #\hyperref[zprerrzybits]{prerr\_bits}#(" <- ", v);*/
- GPR[i] = v;
- };
-}
diff --git a/cheri/sail_latex/sailfnwordWidthBytes.tex b/cheri/sail_latex/sailfnwordWidthBytes.tex
deleted file mode 100644
index a5760d98..00000000
--- a/cheri/sail_latex/sailfnwordWidthBytes.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-function #\hyperref[zwordWidthBytes]{wordWidthBytes}#(w) =
- match w {
- B => 1,
- H => 2,
- W => 4,
- D => 8
- }
diff --git a/cheri/sail_latex/sailfnwriteCapReg.tex b/cheri/sail_latex/sailfnwriteCapReg.tex
deleted file mode 100644
index d8de79fd..00000000
--- a/cheri/sail_latex/sailfnwriteCapReg.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function #\hyperref[zwriteCapReg]{writeCapReg}#(n, cap) : (regno, CapStruct) -> unit =
- if (n == 0b00000) then
- ()
- else
- let i = #\hyperref[zunsigned]{unsigned}#(n) in
- (*CapRegs[i]) = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(cap)
diff --git a/cheri/sail_latex/sailfnzeightoperatorzzerozIsznine.tex b/cheri/sail_latex/sailfnzeightoperatorzzerozIsznine.tex
deleted file mode 100644
index 62e5a2e4..00000000
--- a/cheri/sail_latex/sailfnzeightoperatorzzerozIsznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-function operator <#\hyperref[zzys]{\_s}# (x, y) = #\hyperref[zsigned]{signed}#(x) < #\hyperref[zsigned]{signed}#(y)
diff --git a/cheri/sail_latex/sailfnzeightoperatorzzerozIuznine.tex b/cheri/sail_latex/sailfnzeightoperatorzzerozIuznine.tex
deleted file mode 100644
index 3f946820..00000000
--- a/cheri/sail_latex/sailfnzeightoperatorzzerozIuznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-function operator <#\hyperref[zzyu]{\_u}# (x, y) = #\hyperref[zunsigned]{unsigned}#(x) < #\hyperref[zunsigned]{unsigned}#(y)
diff --git a/cheri/sail_latex/sailfnzeightoperatorzzerozKzJsznine.tex b/cheri/sail_latex/sailfnzeightoperatorzzerozKzJsznine.tex
deleted file mode 100644
index 57ecf181..00000000
--- a/cheri/sail_latex/sailfnzeightoperatorzzerozKzJsznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-function operator >=#\hyperref[zzys]{\_s}# (x, y) = #\hyperref[zsigned]{signed}#(x) >= #\hyperref[zsigned]{signed}#(y)
diff --git a/cheri/sail_latex/sailfnzeightoperatorzzerozKzJuznine.tex b/cheri/sail_latex/sailfnzeightoperatorzzerozKzJuznine.tex
deleted file mode 100644
index 6df36c6f..00000000
--- a/cheri/sail_latex/sailfnzeightoperatorzzerozKzJuznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-function operator >=#\hyperref[zzyu]{\_u}# (x, y) = #\hyperref[zunsigned]{unsigned}#(x) >= #\hyperref[zunsigned]{unsigned}#(y)
diff --git a/cheri/sail_latex/sailfnzeightoperatorzzerozQzQznine.tex b/cheri/sail_latex/sailfnzeightoperatorzzerozQzQznine.tex
deleted file mode 100644
index 2c372e1b..00000000
--- a/cheri/sail_latex/sailfnzeightoperatorzzerozQzQznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-function operator ^^ (bs, n) = #\hyperref[zreplicatezybits]{replicate\_bits}# (bs, n)
diff --git a/cheri/sail_latex/sailfnzzeros.tex b/cheri/sail_latex/sailfnzzeros.tex
deleted file mode 100644
index 38d463fb..00000000
--- a/cheri/sail_latex/sailfnzzeros.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zzzeros]{zeros}#() = #\hyperref[zreplicatezybits]{replicate\_bits}# (0b0,'n)
diff --git a/cheri/sail_latex/sailgetAccessLevel.tex b/cheri/sail_latex/sailgetAccessLevel.tex
deleted file mode 100644
index 4412096c..00000000
--- a/cheri/sail_latex/sailgetAccessLevel.tex
+++ /dev/null
@@ -1 +0,0 @@
-val getAccessLevel : unit -> AccessLevel effect {rreg}
diff --git a/cheri/sail_latex/sailgetCapBase.tex b/cheri/sail_latex/sailgetCapBase.tex
deleted file mode 100644
index c7044d1d..00000000
--- a/cheri/sail_latex/sailgetCapBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-val getCapBase : CapStruct -> uint64
diff --git a/cheri/sail_latex/sailgetCapCauseRegExcCode.tex b/cheri/sail_latex/sailgetCapCauseRegExcCode.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetCapCauseRegExcCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetCapCauseRegRegNum.tex b/cheri/sail_latex/sailgetCapCauseRegRegNum.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetCapCauseRegRegNum.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetCapCauseRegbits.tex b/cheri/sail_latex/sailgetCapCauseRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetCapCauseRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetCapCursor.tex b/cheri/sail_latex/sailgetCapCursor.tex
deleted file mode 100644
index fd5d72d8..00000000
--- a/cheri/sail_latex/sailgetCapCursor.tex
+++ /dev/null
@@ -1 +0,0 @@
-val getCapCursor : CapStruct -> uint64
diff --git a/cheri/sail_latex/sailgetCapLength.tex b/cheri/sail_latex/sailgetCapLength.tex
deleted file mode 100644
index aaa822c8..00000000
--- a/cheri/sail_latex/sailgetCapLength.tex
+++ /dev/null
@@ -1 +0,0 @@
-val getCapLength : CapStruct -> CapLen
diff --git a/cheri/sail_latex/sailgetCapOffset.tex b/cheri/sail_latex/sailgetCapOffset.tex
deleted file mode 100644
index 668c3df1..00000000
--- a/cheri/sail_latex/sailgetCapOffset.tex
+++ /dev/null
@@ -1 +0,0 @@
-val getCapOffset : CapStruct -> uint64
diff --git a/cheri/sail_latex/sailgetCapPerms.tex b/cheri/sail_latex/sailgetCapPerms.tex
deleted file mode 100644
index b2dabf89..00000000
--- a/cheri/sail_latex/sailgetCapPerms.tex
+++ /dev/null
@@ -1 +0,0 @@
-val getCapPerms : CapStruct -> bits(31)
diff --git a/cheri/sail_latex/sailgetCapTop.tex b/cheri/sail_latex/sailgetCapTop.tex
deleted file mode 100644
index ff0e5f95..00000000
--- a/cheri/sail_latex/sailgetCapTop.tex
+++ /dev/null
@@ -1 +0,0 @@
-val getCapTop : CapStruct -> CapLen
diff --git a/cheri/sail_latex/sailgetCauseRegBD.tex b/cheri/sail_latex/sailgetCauseRegBD.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetCauseRegBD.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetCauseRegCE.tex b/cheri/sail_latex/sailgetCauseRegCE.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetCauseRegCE.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetCauseRegExcCode.tex b/cheri/sail_latex/sailgetCauseRegExcCode.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetCauseRegExcCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetCauseRegIP.tex b/cheri/sail_latex/sailgetCauseRegIP.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetCauseRegIP.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetCauseRegIV.tex b/cheri/sail_latex/sailgetCauseRegIV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetCauseRegIV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetCauseRegWP.tex b/cheri/sail_latex/sailgetCauseRegWP.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetCauseRegWP.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetCauseRegbits.tex b/cheri/sail_latex/sailgetCauseRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetCauseRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetContextRegBadVPNtwo.tex b/cheri/sail_latex/sailgetContextRegBadVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetContextRegBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetContextRegPTEBase.tex b/cheri/sail_latex/sailgetContextRegPTEBase.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetContextRegPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetContextRegbits.tex b/cheri/sail_latex/sailgetContextRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetContextRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetStatusRegBEV.tex b/cheri/sail_latex/sailgetStatusRegBEV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetStatusRegBEV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetStatusRegCU.tex b/cheri/sail_latex/sailgetStatusRegCU.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetStatusRegCU.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetStatusRegERL.tex b/cheri/sail_latex/sailgetStatusRegERL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetStatusRegERL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetStatusRegEXL.tex b/cheri/sail_latex/sailgetStatusRegEXL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetStatusRegEXL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetStatusRegIE.tex b/cheri/sail_latex/sailgetStatusRegIE.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetStatusRegIE.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetStatusRegIM.tex b/cheri/sail_latex/sailgetStatusRegIM.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetStatusRegIM.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetStatusRegKSU.tex b/cheri/sail_latex/sailgetStatusRegKSU.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetStatusRegKSU.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetStatusRegKX.tex b/cheri/sail_latex/sailgetStatusRegKX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetStatusRegKX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetStatusRegSX.tex b/cheri/sail_latex/sailgetStatusRegSX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetStatusRegSX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetStatusRegUX.tex b/cheri/sail_latex/sailgetStatusRegUX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetStatusRegUX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetStatusRegbits.tex b/cheri/sail_latex/sailgetStatusRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetStatusRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryHiRegASID.tex b/cheri/sail_latex/sailgetTLBEntryHiRegASID.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryHiRegASID.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryHiRegR.tex b/cheri/sail_latex/sailgetTLBEntryHiRegR.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryHiRegR.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryHiRegVPNtwo.tex b/cheri/sail_latex/sailgetTLBEntryHiRegVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryHiRegVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryHiRegbits.tex b/cheri/sail_latex/sailgetTLBEntryHiRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryHiRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryLoRegC.tex b/cheri/sail_latex/sailgetTLBEntryLoRegC.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryLoRegC.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryLoRegCapL.tex b/cheri/sail_latex/sailgetTLBEntryLoRegCapL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryLoRegCapL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryLoRegCapS.tex b/cheri/sail_latex/sailgetTLBEntryLoRegCapS.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryLoRegCapS.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryLoRegD.tex b/cheri/sail_latex/sailgetTLBEntryLoRegD.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryLoRegD.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryLoRegG.tex b/cheri/sail_latex/sailgetTLBEntryLoRegG.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryLoRegG.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryLoRegPFN.tex b/cheri/sail_latex/sailgetTLBEntryLoRegPFN.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryLoRegPFN.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryLoRegV.tex b/cheri/sail_latex/sailgetTLBEntryLoRegV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryLoRegV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryLoRegbits.tex b/cheri/sail_latex/sailgetTLBEntryLoRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryLoRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryasid.tex b/cheri/sail_latex/sailgetTLBEntryasid.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryasid.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntrybits.tex b/cheri/sail_latex/sailgetTLBEntrybits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntrybits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntrycaplone.tex b/cheri/sail_latex/sailgetTLBEntrycaplone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntrycaplone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntrycaplzero.tex b/cheri/sail_latex/sailgetTLBEntrycaplzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntrycaplzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntrycapsone.tex b/cheri/sail_latex/sailgetTLBEntrycapsone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntrycapsone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntrycapszero.tex b/cheri/sail_latex/sailgetTLBEntrycapszero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntrycapszero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntrycone.tex b/cheri/sail_latex/sailgetTLBEntrycone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntrycone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryczero.tex b/cheri/sail_latex/sailgetTLBEntryczero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryczero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntrydone.tex b/cheri/sail_latex/sailgetTLBEntrydone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntrydone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntrydzero.tex b/cheri/sail_latex/sailgetTLBEntrydzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntrydzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryg.tex b/cheri/sail_latex/sailgetTLBEntryg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntrypagemask.tex b/cheri/sail_latex/sailgetTLBEntrypagemask.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntrypagemask.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntrypfnone.tex b/cheri/sail_latex/sailgetTLBEntrypfnone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntrypfnone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntrypfnzero.tex b/cheri/sail_latex/sailgetTLBEntrypfnzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntrypfnzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryr.tex b/cheri/sail_latex/sailgetTLBEntryr.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryr.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryvalid.tex b/cheri/sail_latex/sailgetTLBEntryvalid.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryvalid.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryvone.tex b/cheri/sail_latex/sailgetTLBEntryvone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryvone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryvpntwo.tex b/cheri/sail_latex/sailgetTLBEntryvpntwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryvpntwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetTLBEntryvzero.tex b/cheri/sail_latex/sailgetTLBEntryvzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetTLBEntryvzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetXContextRegXBadVPNtwo.tex b/cheri/sail_latex/sailgetXContextRegXBadVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetXContextRegXBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetXContextRegXPTEBase.tex b/cheri/sail_latex/sailgetXContextRegXPTEBase.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetXContextRegXPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetXContextRegXR.tex b/cheri/sail_latex/sailgetXContextRegXR.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetXContextRegXR.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetXContextRegbits.tex b/cheri/sail_latex/sailgetXContextRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailgetXContextRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailgetsliceint.tex b/cheri/sail_latex/sailgetsliceint.tex
deleted file mode 100644
index 2b30d096..00000000
--- a/cheri/sail_latex/sailgetsliceint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val get_slice_int = "get_slice_int" : forall 'w. (atom('w), int, int) -> #\hyperref[zbits]{bits}#('w)
diff --git a/cheri/sail_latex/sailgettimens.tex b/cheri/sail_latex/sailgettimens.tex
deleted file mode 100644
index 74cfd526..00000000
--- a/cheri/sail_latex/sailgettimens.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "get_time_ns" : unit -> int
diff --git a/cheri/sail_latex/sailgrantsAccess.tex b/cheri/sail_latex/sailgrantsAccess.tex
deleted file mode 100644
index ab28ac58..00000000
--- a/cheri/sail_latex/sailgrantsAccess.tex
+++ /dev/null
@@ -1 +0,0 @@
-val grantsAccess : (AccessLevel, AccessLevel) -> bool
diff --git a/cheri/sail_latex/sailgtatom.tex b/cheri/sail_latex/sailgtatom.tex
deleted file mode 100644
index b2147a8f..00000000
--- a/cheri/sail_latex/sailgtatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gt_atom = {coq: "Z.gtb", _: "gt"} : forall 'n 'm. (atom('n), atom('m)) -> bool
diff --git a/cheri/sail_latex/sailgtatomrange.tex b/cheri/sail_latex/sailgtatomrange.tex
deleted file mode 100644
index 3c520181..00000000
--- a/cheri/sail_latex/sailgtatomrange.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gt_atom_range = {coq: "gtb_range_r", _: "gt"} : forall 'n 'm 'o. (atom('n), range('m, 'o)) -> bool
diff --git a/cheri/sail_latex/sailgteqatom.tex b/cheri/sail_latex/sailgteqatom.tex
deleted file mode 100644
index fb3b66b2..00000000
--- a/cheri/sail_latex/sailgteqatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gteq_atom = {coq: "Z.geb", _: "gteq"} : forall 'n 'm. (atom('n), atom('m)) -> bool
diff --git a/cheri/sail_latex/sailgteqatomrange.tex b/cheri/sail_latex/sailgteqatomrange.tex
deleted file mode 100644
index 7aaf633f..00000000
--- a/cheri/sail_latex/sailgteqatomrange.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gteq_atom_range = {coq: "geb_range_r", _: "gteq"} : forall 'n 'm 'o. (atom('n), range('m, 'o)) -> bool
diff --git a/cheri/sail_latex/sailgteqint.tex b/cheri/sail_latex/sailgteqint.tex
deleted file mode 100644
index 77271d1f..00000000
--- a/cheri/sail_latex/sailgteqint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gteq_int = {coq: "Z.geb", _:"gteq"} : (int, int) -> bool
diff --git a/cheri/sail_latex/sailgteqrangeatom.tex b/cheri/sail_latex/sailgteqrangeatom.tex
deleted file mode 100644
index fda25265..00000000
--- a/cheri/sail_latex/sailgteqrangeatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gteq_range_atom = {coq: "geb_range_l", _: "gteq"} : forall 'n 'm 'o. (range('n, 'm), atom('o)) -> bool
diff --git a/cheri/sail_latex/sailgtint.tex b/cheri/sail_latex/sailgtint.tex
deleted file mode 100644
index 2d953eec..00000000
--- a/cheri/sail_latex/sailgtint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gt_int = {coq: "Z.gtb", _:"gt"} : (int, int) -> bool
diff --git a/cheri/sail_latex/sailgtrangeatom.tex b/cheri/sail_latex/sailgtrangeatom.tex
deleted file mode 100644
index b8635909..00000000
--- a/cheri/sail_latex/sailgtrangeatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gt_range_atom = {coq: "gtb_range_l", _: "gt"} : forall 'n 'm 'o. (range('n, 'm), atom('o)) -> bool
diff --git a/cheri/sail_latex/sailimmonesix.tex b/cheri/sail_latex/sailimmonesix.tex
deleted file mode 100644
index bec28c6c..00000000
--- a/cheri/sail_latex/sailimmonesix.tex
+++ /dev/null
@@ -1 +0,0 @@
-type imm16 = #\hyperref[zbits]{bits}#(16) /* 16-bit immediate */
diff --git a/cheri/sail_latex/sailincCapOffset.tex b/cheri/sail_latex/sailincCapOffset.tex
deleted file mode 100644
index 8e182ff3..00000000
--- a/cheri/sail_latex/sailincCapOffset.tex
+++ /dev/null
@@ -1 +0,0 @@
-val incCapOffset : (CapStruct, #\hyperref[zbits]{bits}#(64)) -> (bool, CapStruct)
diff --git a/cheri/sail_latex/sailincrementCPzeroCount.tex b/cheri/sail_latex/sailincrementCPzeroCount.tex
deleted file mode 100644
index ca1384eb..00000000
--- a/cheri/sail_latex/sailincrementCPzeroCount.tex
+++ /dev/null
@@ -1 +0,0 @@
-val incrementCP0Count : unit -> unit effect {rreg,wreg,escape}
diff --git a/cheri/sail_latex/sailinitcptwostate.tex b/cheri/sail_latex/sailinitcptwostate.tex
deleted file mode 100644
index 98ced710..00000000
--- a/cheri/sail_latex/sailinitcptwostate.tex
+++ /dev/null
@@ -1 +0,0 @@
-val init_cp2_state : unit -> unit effect {wreg}
diff --git a/cheri/sail_latex/sailinitcpzerostate.tex b/cheri/sail_latex/sailinitcpzerostate.tex
deleted file mode 100644
index 743cc402..00000000
--- a/cheri/sail_latex/sailinitcpzerostate.tex
+++ /dev/null
@@ -1 +0,0 @@
-val init_cp0_state : unit -> unit effect {wreg}
diff --git a/cheri/sail_latex/sailintofAccessLevel.tex b/cheri/sail_latex/sailintofAccessLevel.tex
deleted file mode 100644
index 257f321f..00000000
--- a/cheri/sail_latex/sailintofAccessLevel.tex
+++ /dev/null
@@ -1 +0,0 @@
-val int_of_AccessLevel : AccessLevel -> {|0, 1, 2|} effect pure
diff --git a/cheri/sail_latex/sailintpower.tex b/cheri/sail_latex/sailintpower.tex
deleted file mode 100644
index 0aa13188..00000000
--- a/cheri/sail_latex/sailintpower.tex
+++ /dev/null
@@ -1 +0,0 @@
-val int_power = {ocaml: "int_power", lem: "pow", coq: "Z.pow"} : (int, int) -> int
diff --git a/cheri/sail_latex/sailinttocap.tex b/cheri/sail_latex/sailinttocap.tex
deleted file mode 100644
index 0f4cd328..00000000
--- a/cheri/sail_latex/sailinttocap.tex
+++ /dev/null
@@ -1 +0,0 @@
-val int_to_cap : bits(64) -> CapStruct
diff --git a/cheri/sail_latex/sailisAddressAligned.tex b/cheri/sail_latex/sailisAddressAligned.tex
deleted file mode 100644
index e1f8c318..00000000
--- a/cheri/sail_latex/sailisAddressAligned.tex
+++ /dev/null
@@ -1 +0,0 @@
-val isAddressAligned : (#\hyperref[zbits]{bits}#(64), WordType) -> bool
diff --git a/cheri/sail_latex/sailisnone.tex b/cheri/sail_latex/sailisnone.tex
deleted file mode 100644
index 76688d37..00000000
--- a/cheri/sail_latex/sailisnone.tex
+++ /dev/null
@@ -1 +0,0 @@
-val is_none : forall ('a : Type). #\hyperref[zoption]{option}#('a) -> bool
diff --git a/cheri/sail_latex/sailissome.tex b/cheri/sail_latex/sailissome.tex
deleted file mode 100644
index 071ac6b6..00000000
--- a/cheri/sail_latex/sailissome.tex
+++ /dev/null
@@ -1 +0,0 @@
-val is_some : forall ('a : Type). #\hyperref[zoption]{option}#('a) -> bool
diff --git a/cheri/sail_latex/saillength.tex b/cheri/sail_latex/saillength.tex
deleted file mode 100644
index 248c8507..00000000
--- a/cheri/sail_latex/saillength.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload length = {bitvector_length, vector_length} \ No newline at end of file
diff --git a/cheri/sail_latex/sailltatom.tex b/cheri/sail_latex/sailltatom.tex
deleted file mode 100644
index 5cca54df..00000000
--- a/cheri/sail_latex/sailltatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lt_atom = {coq: "Z.ltb", _: "lt"} : forall 'n 'm. (atom('n), atom('m)) -> bool
diff --git a/cheri/sail_latex/sailltatomrange.tex b/cheri/sail_latex/sailltatomrange.tex
deleted file mode 100644
index 19d3375d..00000000
--- a/cheri/sail_latex/sailltatomrange.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lt_atom_range = {coq: "ltb_range_r", _: "lt"} : forall 'n 'm 'o. (atom('n), range('m, 'o)) -> bool
diff --git a/cheri/sail_latex/saillteqatom.tex b/cheri/sail_latex/saillteqatom.tex
deleted file mode 100644
index 26e27e2d..00000000
--- a/cheri/sail_latex/saillteqatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lteq_atom = {coq: "Z.leb", _: "lteq"} : forall 'n 'm. (atom('n), atom('m)) -> bool
diff --git a/cheri/sail_latex/saillteqatomrange.tex b/cheri/sail_latex/saillteqatomrange.tex
deleted file mode 100644
index 6e951cf7..00000000
--- a/cheri/sail_latex/saillteqatomrange.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lteq_atom_range = {coq: "leb_range_r", _: "lteq"} : forall 'n 'm 'o. (atom('n), range('m, 'o)) -> bool
diff --git a/cheri/sail_latex/saillteqint.tex b/cheri/sail_latex/saillteqint.tex
deleted file mode 100644
index 555176be..00000000
--- a/cheri/sail_latex/saillteqint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lteq_int = {coq: "Z.leb", _:"lteq"} : (int, int) -> bool
diff --git a/cheri/sail_latex/saillteqrangeatom.tex b/cheri/sail_latex/saillteqrangeatom.tex
deleted file mode 100644
index f8fcd32d..00000000
--- a/cheri/sail_latex/saillteqrangeatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lteq_range_atom = {coq: "leb_range_l", _: "lteq"} : forall 'n 'm 'o. (range('n, 'm), atom('o)) -> bool
diff --git a/cheri/sail_latex/sailltint.tex b/cheri/sail_latex/sailltint.tex
deleted file mode 100644
index 40bd4e85..00000000
--- a/cheri/sail_latex/sailltint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lt_int = {coq: "Z.ltb", _:"lt"} : (int, int) -> bool
diff --git a/cheri/sail_latex/sailltrangeatom.tex b/cheri/sail_latex/sailltrangeatom.tex
deleted file mode 100644
index d8495496..00000000
--- a/cheri/sail_latex/sailltrangeatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lt_range_atom = {coq: "ltb_range_l", _: "lt"} : forall 'n 'm 'o. (range('n, 'm), atom('o)) -> bool
diff --git a/cheri/sail_latex/sailmask.tex b/cheri/sail_latex/sailmask.tex
deleted file mode 100644
index 35d052db..00000000
--- a/cheri/sail_latex/sailmask.tex
+++ /dev/null
@@ -1 +0,0 @@
-val mask : forall 'm 'n , 'm >= 'n > 0 . #\hyperref[zbits]{bits}#('m) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailmaxatom.tex b/cheri/sail_latex/sailmaxatom.tex
deleted file mode 100644
index 6cbdfa7f..00000000
--- a/cheri/sail_latex/sailmaxatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val max_atom = {ocaml: "max_int", lem: "max", coq: "max_atom", c:"max_int"} : forall 'a 'b . (atom('a), atom('b)) -> {'c, ('c = 'a | 'c = 'b) & 'c >= 'a & 'c >= 'b . atom('c)}
diff --git a/cheri/sail_latex/sailmaxint.tex b/cheri/sail_latex/sailmaxint.tex
deleted file mode 100644
index c537babb..00000000
--- a/cheri/sail_latex/sailmaxint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val max_int = {lem: "max", coq: "Z.max", _: "max_int"} : (int, int) -> int
diff --git a/cheri/sail_latex/sailmaxnat.tex b/cheri/sail_latex/sailmaxnat.tex
deleted file mode 100644
index 1b62334a..00000000
--- a/cheri/sail_latex/sailmaxnat.tex
+++ /dev/null
@@ -1 +0,0 @@
-val max_nat = {lem: "max", coq: "Z.max", _: "max_int"} : (nat, nat) -> nat
diff --git a/cheri/sail_latex/sailmemBitsToCapBits.tex b/cheri/sail_latex/sailmemBitsToCapBits.tex
deleted file mode 100644
index 99aaa592..00000000
--- a/cheri/sail_latex/sailmemBitsToCapBits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val memBitsToCapBits : (bool, bits(256)) -> bits(257)
diff --git a/cheri/sail_latex/sailmin.tex b/cheri/sail_latex/sailmin.tex
deleted file mode 100644
index 94097198..00000000
--- a/cheri/sail_latex/sailmin.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload min = {min_atom, min_nat, min_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailminatom.tex b/cheri/sail_latex/sailminatom.tex
deleted file mode 100644
index acfea384..00000000
--- a/cheri/sail_latex/sailminatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val min_atom = {ocaml: "min_int", lem: "min", coq: "min_atom", c:"min_int"} : forall 'a 'b . (atom('a), atom('b)) -> {'c, ('c = 'a | 'c = 'b) & 'c <= 'a & 'c <= 'b . atom('c)}
diff --git a/cheri/sail_latex/sailminint.tex b/cheri/sail_latex/sailminint.tex
deleted file mode 100644
index 3d633d08..00000000
--- a/cheri/sail_latex/sailminint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val min_int = {lem: "min", coq: "Z.min", _: "min_int"} : (int, int) -> int
diff --git a/cheri/sail_latex/sailminnat.tex b/cheri/sail_latex/sailminnat.tex
deleted file mode 100644
index 85409bd8..00000000
--- a/cheri/sail_latex/sailminnat.tex
+++ /dev/null
@@ -1 +0,0 @@
-val min_nat = {lem: "min", coq: "Z.min", _: "min_int"} : (nat, nat) -> nat
diff --git a/cheri/sail_latex/sailmipssignextend.tex b/cheri/sail_latex/sailmipssignextend.tex
deleted file mode 100644
index e613567d..00000000
--- a/cheri/sail_latex/sailmipssignextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-val mips_sign_extend : forall 'n 'm , 'm >= 'n . #\hyperref[zbits]{bits}#('n) -> #\hyperref[zbits]{bits}#('m)
diff --git a/cheri/sail_latex/sailmipszzeroextend.tex b/cheri/sail_latex/sailmipszzeroextend.tex
deleted file mode 100644
index adbb4188..00000000
--- a/cheri/sail_latex/sailmipszzeroextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-val mips_zero_extend : forall 'n 'm , 'm >= 'n . #\hyperref[zbits]{bits}#('n) -> #\hyperref[zbits]{bits}#('m)
diff --git a/cheri/sail_latex/sailmod.tex b/cheri/sail_latex/sailmod.tex
deleted file mode 100644
index ab70dd7a..00000000
--- a/cheri/sail_latex/sailmod.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-val mod = {
- smt: "mod",
- ocaml: "modulus",
- lem: "integerMod",
- c: "tmod_int",
- coq: "mod_with_eq"
-} : forall 'n 'm. (atom('n), atom('m)) -> {'o, 'o = #\hyperref[zmod]{mod}#('n, 'm). atom('o)}
diff --git a/cheri/sail_latex/sailmodBD.tex b/cheri/sail_latex/sailmodBD.tex
deleted file mode 100644
index f3e58d9b..00000000
--- a/cheri/sail_latex/sailmodBD.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_BD = {_get_CauseReg_BD, _set_CauseReg_BD} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodBEV.tex b/cheri/sail_latex/sailmodBEV.tex
deleted file mode 100644
index beee53c1..00000000
--- a/cheri/sail_latex/sailmodBEV.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_BEV = {_get_StatusReg_BEV, _set_StatusReg_BEV} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodBadVPNtwo.tex b/cheri/sail_latex/sailmodBadVPNtwo.tex
deleted file mode 100644
index c2578121..00000000
--- a/cheri/sail_latex/sailmodBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_BadVPN2 = {_get_ContextReg_BadVPN2, _set_ContextReg_BadVPN2} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodC.tex b/cheri/sail_latex/sailmodC.tex
deleted file mode 100644
index 01df09e2..00000000
--- a/cheri/sail_latex/sailmodC.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_C = {_get_TLBEntryLoReg_C, _set_TLBEntryLoReg_C} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodCE.tex b/cheri/sail_latex/sailmodCE.tex
deleted file mode 100644
index 9136541c..00000000
--- a/cheri/sail_latex/sailmodCE.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_CE = {_get_CauseReg_CE, _set_CauseReg_CE} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodCU.tex b/cheri/sail_latex/sailmodCU.tex
deleted file mode 100644
index 2a2b7db3..00000000
--- a/cheri/sail_latex/sailmodCU.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_CU = {_get_StatusReg_CU, _set_StatusReg_CU} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodCapL.tex b/cheri/sail_latex/sailmodCapL.tex
deleted file mode 100644
index 1e92b0d4..00000000
--- a/cheri/sail_latex/sailmodCapL.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_CapL = {_get_TLBEntryLoReg_CapL, _set_TLBEntryLoReg_CapL} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodCapS.tex b/cheri/sail_latex/sailmodCapS.tex
deleted file mode 100644
index bdacef07..00000000
--- a/cheri/sail_latex/sailmodCapS.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_CapS = {_get_TLBEntryLoReg_CapS, _set_TLBEntryLoReg_CapS} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodD.tex b/cheri/sail_latex/sailmodD.tex
deleted file mode 100644
index af4cad2e..00000000
--- a/cheri/sail_latex/sailmodD.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_D = {_get_TLBEntryLoReg_D, _set_TLBEntryLoReg_D} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodERL.tex b/cheri/sail_latex/sailmodERL.tex
deleted file mode 100644
index b334b7dc..00000000
--- a/cheri/sail_latex/sailmodERL.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_ERL = {_get_StatusReg_ERL, _set_StatusReg_ERL} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodEXL.tex b/cheri/sail_latex/sailmodEXL.tex
deleted file mode 100644
index 16b2bc8c..00000000
--- a/cheri/sail_latex/sailmodEXL.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_EXL = {_get_StatusReg_EXL, _set_StatusReg_EXL} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodExcCode.tex b/cheri/sail_latex/sailmodExcCode.tex
deleted file mode 100644
index baa16ec2..00000000
--- a/cheri/sail_latex/sailmodExcCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_ExcCode = {_get_CapCauseReg_ExcCode, _set_CapCauseReg_ExcCode} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodIE.tex b/cheri/sail_latex/sailmodIE.tex
deleted file mode 100644
index 940ad6f3..00000000
--- a/cheri/sail_latex/sailmodIE.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_IE = {_get_StatusReg_IE, _set_StatusReg_IE} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodIM.tex b/cheri/sail_latex/sailmodIM.tex
deleted file mode 100644
index d3a58dd0..00000000
--- a/cheri/sail_latex/sailmodIM.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_IM = {_get_StatusReg_IM, _set_StatusReg_IM} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodIP.tex b/cheri/sail_latex/sailmodIP.tex
deleted file mode 100644
index 361230bf..00000000
--- a/cheri/sail_latex/sailmodIP.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_IP = {_get_CauseReg_IP, _set_CauseReg_IP} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodIV.tex b/cheri/sail_latex/sailmodIV.tex
deleted file mode 100644
index 1222520b..00000000
--- a/cheri/sail_latex/sailmodIV.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_IV = {_get_CauseReg_IV, _set_CauseReg_IV} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodKSU.tex b/cheri/sail_latex/sailmodKSU.tex
deleted file mode 100644
index 7cff9a26..00000000
--- a/cheri/sail_latex/sailmodKSU.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_KSU = {_get_StatusReg_KSU, _set_StatusReg_KSU} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodKX.tex b/cheri/sail_latex/sailmodKX.tex
deleted file mode 100644
index a90ad274..00000000
--- a/cheri/sail_latex/sailmodKX.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_KX = {_get_StatusReg_KX, _set_StatusReg_KX} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodPFN.tex b/cheri/sail_latex/sailmodPFN.tex
deleted file mode 100644
index bba40f6d..00000000
--- a/cheri/sail_latex/sailmodPFN.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_PFN = {_get_TLBEntryLoReg_PFN, _set_TLBEntryLoReg_PFN} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodPTEBase.tex b/cheri/sail_latex/sailmodPTEBase.tex
deleted file mode 100644
index 890eb57c..00000000
--- a/cheri/sail_latex/sailmodPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_PTEBase = {_get_ContextReg_PTEBase, _set_ContextReg_PTEBase} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodRegNum.tex b/cheri/sail_latex/sailmodRegNum.tex
deleted file mode 100644
index 6cc28de3..00000000
--- a/cheri/sail_latex/sailmodRegNum.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_RegNum = {_get_CapCauseReg_RegNum, _set_CapCauseReg_RegNum} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodSX.tex b/cheri/sail_latex/sailmodSX.tex
deleted file mode 100644
index 4ea62484..00000000
--- a/cheri/sail_latex/sailmodSX.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_SX = {_get_StatusReg_SX, _set_StatusReg_SX} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodUX.tex b/cheri/sail_latex/sailmodUX.tex
deleted file mode 100644
index aa31242d..00000000
--- a/cheri/sail_latex/sailmodUX.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_UX = {_get_StatusReg_UX, _set_StatusReg_UX} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodV.tex b/cheri/sail_latex/sailmodV.tex
deleted file mode 100644
index 964f5eab..00000000
--- a/cheri/sail_latex/sailmodV.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_V = {_get_TLBEntryLoReg_V, _set_TLBEntryLoReg_V} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodWP.tex b/cheri/sail_latex/sailmodWP.tex
deleted file mode 100644
index 1ab7fbf7..00000000
--- a/cheri/sail_latex/sailmodWP.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_WP = {_get_CauseReg_WP, _set_CauseReg_WP} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodXBadVPNtwo.tex b/cheri/sail_latex/sailmodXBadVPNtwo.tex
deleted file mode 100644
index 9122b39d..00000000
--- a/cheri/sail_latex/sailmodXBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_XBadVPN2 = {_get_XContextReg_XBadVPN2, _set_XContextReg_XBadVPN2} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodXPTEBase.tex b/cheri/sail_latex/sailmodXPTEBase.tex
deleted file mode 100644
index 67e094bf..00000000
--- a/cheri/sail_latex/sailmodXPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_XPTEBase = {_get_XContextReg_XPTEBase, _set_XContextReg_XPTEBase} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodXR.tex b/cheri/sail_latex/sailmodXR.tex
deleted file mode 100644
index a3c5ab29..00000000
--- a/cheri/sail_latex/sailmodXR.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_XR = {_get_XContextReg_XR, _set_XContextReg_XR} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodasid.tex b/cheri/sail_latex/sailmodasid.tex
deleted file mode 100644
index b80fbc05..00000000
--- a/cheri/sail_latex/sailmodasid.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_asid = {_get_TLBEntry_asid, _set_TLBEntry_asid} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodbits.tex b/cheri/sail_latex/sailmodbits.tex
deleted file mode 100644
index b14554ac..00000000
--- a/cheri/sail_latex/sailmodbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_bits = {_get_CapCauseReg_bits, _set_CapCauseReg_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodcaplone.tex b/cheri/sail_latex/sailmodcaplone.tex
deleted file mode 100644
index cc216500..00000000
--- a/cheri/sail_latex/sailmodcaplone.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_capl1 = {_get_TLBEntry_capl1, _set_TLBEntry_capl1} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodcaplzero.tex b/cheri/sail_latex/sailmodcaplzero.tex
deleted file mode 100644
index 91969233..00000000
--- a/cheri/sail_latex/sailmodcaplzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_capl0 = {_get_TLBEntry_capl0, _set_TLBEntry_capl0} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodcapsone.tex b/cheri/sail_latex/sailmodcapsone.tex
deleted file mode 100644
index c2aa1743..00000000
--- a/cheri/sail_latex/sailmodcapsone.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_caps1 = {_get_TLBEntry_caps1, _set_TLBEntry_caps1} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodcapszero.tex b/cheri/sail_latex/sailmodcapszero.tex
deleted file mode 100644
index 36fbc5bb..00000000
--- a/cheri/sail_latex/sailmodcapszero.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_caps0 = {_get_TLBEntry_caps0, _set_TLBEntry_caps0} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodcone.tex b/cheri/sail_latex/sailmodcone.tex
deleted file mode 100644
index 70d2a78c..00000000
--- a/cheri/sail_latex/sailmodcone.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_c1 = {_get_TLBEntry_c1, _set_TLBEntry_c1} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodczero.tex b/cheri/sail_latex/sailmodczero.tex
deleted file mode 100644
index 56a19643..00000000
--- a/cheri/sail_latex/sailmodczero.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_c0 = {_get_TLBEntry_c0, _set_TLBEntry_c0} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmoddone.tex b/cheri/sail_latex/sailmoddone.tex
deleted file mode 100644
index d970eb5b..00000000
--- a/cheri/sail_latex/sailmoddone.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_d1 = {_get_TLBEntry_d1, _set_TLBEntry_d1} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmoddzero.tex b/cheri/sail_latex/sailmoddzero.tex
deleted file mode 100644
index 0e860884..00000000
--- a/cheri/sail_latex/sailmoddzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_d0 = {_get_TLBEntry_d0, _set_TLBEntry_d0} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodg.tex b/cheri/sail_latex/sailmodg.tex
deleted file mode 100644
index 6c46a49a..00000000
--- a/cheri/sail_latex/sailmodg.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_g = {_get_TLBEntry_g, _set_TLBEntry_g} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodint.tex b/cheri/sail_latex/sailmodint.tex
deleted file mode 100644
index bd5677aa..00000000
--- a/cheri/sail_latex/sailmodint.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-val mod_int = {
- smt: "mod",
- ocaml: "modulus",
- lem: "integerMod",
- c: "tmod_int",
- coq: "Z.rem"
-} : (int, int) -> int
diff --git a/cheri/sail_latex/sailmodpagemask.tex b/cheri/sail_latex/sailmodpagemask.tex
deleted file mode 100644
index 130ccab2..00000000
--- a/cheri/sail_latex/sailmodpagemask.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_pagemask = {_get_TLBEntry_pagemask, _set_TLBEntry_pagemask} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodpfnone.tex b/cheri/sail_latex/sailmodpfnone.tex
deleted file mode 100644
index 3e703530..00000000
--- a/cheri/sail_latex/sailmodpfnone.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_pfn1 = {_get_TLBEntry_pfn1, _set_TLBEntry_pfn1} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodpfnzero.tex b/cheri/sail_latex/sailmodpfnzero.tex
deleted file mode 100644
index e3e2bfb2..00000000
--- a/cheri/sail_latex/sailmodpfnzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_pfn0 = {_get_TLBEntry_pfn0, _set_TLBEntry_pfn0} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodr.tex b/cheri/sail_latex/sailmodr.tex
deleted file mode 100644
index ca85fe92..00000000
--- a/cheri/sail_latex/sailmodr.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_r = {_get_TLBEntry_r, _set_TLBEntry_r} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodulus.tex b/cheri/sail_latex/sailmodulus.tex
deleted file mode 100644
index ca23a339..00000000
--- a/cheri/sail_latex/sailmodulus.tex
+++ /dev/null
@@ -1 +0,0 @@
-val modulus = {ocaml: "modulus", lem: "hardware_mod", coq: "euclid_modulo", _ : "tmod_int"} : forall 'n, 'n > 0 . (int, atom('n)) -> range(0, 'n - 1)
diff --git a/cheri/sail_latex/sailmodvalid.tex b/cheri/sail_latex/sailmodvalid.tex
deleted file mode 100644
index 21baa26c..00000000
--- a/cheri/sail_latex/sailmodvalid.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_valid = {_get_TLBEntry_valid, _set_TLBEntry_valid} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodvone.tex b/cheri/sail_latex/sailmodvone.tex
deleted file mode 100644
index 30619a05..00000000
--- a/cheri/sail_latex/sailmodvone.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_v1 = {_get_TLBEntry_v1, _set_TLBEntry_v1} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodvpntwo.tex b/cheri/sail_latex/sailmodvpntwo.tex
deleted file mode 100644
index 08cd1947..00000000
--- a/cheri/sail_latex/sailmodvpntwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_vpn2 = {_get_TLBEntry_vpn2, _set_TLBEntry_vpn2} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmodvzero.tex b/cheri/sail_latex/sailmodvzero.tex
deleted file mode 100644
index 3e05b3f3..00000000
--- a/cheri/sail_latex/sailmodvzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_v0 = {_get_TLBEntry_v0, _set_TLBEntry_v0} \ No newline at end of file
diff --git a/cheri/sail_latex/sailmultatom.tex b/cheri/sail_latex/sailmultatom.tex
deleted file mode 100644
index bbac3e2f..00000000
--- a/cheri/sail_latex/sailmultatom.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val mult_atom = {ocaml: "mult", lem: "integerMult", c: "mult_int", coq: "Z.mul"} : forall 'n 'm.
- (atom('n), atom('m)) -> atom('n * 'm)
diff --git a/cheri/sail_latex/sailmultint.tex b/cheri/sail_latex/sailmultint.tex
deleted file mode 100644
index 08698e6f..00000000
--- a/cheri/sail_latex/sailmultint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val mult_int = {ocaml: "mult", lem: "integerMult", c: "mult_int", coq: "Z.mul"} : (int, int) -> int
diff --git a/cheri/sail_latex/sailnegate.tex b/cheri/sail_latex/sailnegate.tex
deleted file mode 100644
index ce000062..00000000
--- a/cheri/sail_latex/sailnegate.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload negate = {negate_range, negate_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailnegateatom.tex b/cheri/sail_latex/sailnegateatom.tex
deleted file mode 100644
index d1361e63..00000000
--- a/cheri/sail_latex/sailnegateatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val negate_atom = {ocaml: "negate", lem: "integerNegate", c: "neg_int", coq: "Z.opp"} : forall 'n. atom('n) -> atom(- 'n)
diff --git a/cheri/sail_latex/sailnegateint.tex b/cheri/sail_latex/sailnegateint.tex
deleted file mode 100644
index 52375787..00000000
--- a/cheri/sail_latex/sailnegateint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val negate_int = {ocaml: "negate", lem: "integerNegate", c: "neg_int", coq: "Z.opp"} : int -> int
diff --git a/cheri/sail_latex/sailnegaterange.tex b/cheri/sail_latex/sailnegaterange.tex
deleted file mode 100644
index 7a4ad386..00000000
--- a/cheri/sail_latex/sailnegaterange.tex
+++ /dev/null
@@ -1 +0,0 @@
-val negate_range = {ocaml: "minus_big_int", lem: "integerNegate", coq: "negate_range"} : forall 'n 'm. range('n, 'm) -> range(- 'm, - 'n)
diff --git a/cheri/sail_latex/sailneqanything.tex b/cheri/sail_latex/sailneqanything.tex
deleted file mode 100644
index a898649e..00000000
--- a/cheri/sail_latex/sailneqanything.tex
+++ /dev/null
@@ -1 +0,0 @@
-val neq_anything = {lem: "neq", coq: "generic_neq"} : forall ('a : Type). ('a, 'a) -> bool
diff --git a/cheri/sail_latex/sailneqatom.tex b/cheri/sail_latex/sailneqatom.tex
deleted file mode 100644
index be777013..00000000
--- a/cheri/sail_latex/sailneqatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val neq_atom = {lem: "neq", coq: "neq_atom"} : forall 'n 'm. (atom('n), atom('m)) -> bool
diff --git a/cheri/sail_latex/sailneqbool.tex b/cheri/sail_latex/sailneqbool.tex
deleted file mode 100644
index 0d80dc17..00000000
--- a/cheri/sail_latex/sailneqbool.tex
+++ /dev/null
@@ -1 +0,0 @@
-val neq_bool : (bool, bool) -> bool
diff --git a/cheri/sail_latex/sailneqint.tex b/cheri/sail_latex/sailneqint.tex
deleted file mode 100644
index b233ca6b..00000000
--- a/cheri/sail_latex/sailneqint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val neq_int = {lem: "neq"} : (int, int) -> bool
diff --git a/cheri/sail_latex/sailneqrange.tex b/cheri/sail_latex/sailneqrange.tex
deleted file mode 100644
index d2d8fb0c..00000000
--- a/cheri/sail_latex/sailneqrange.tex
+++ /dev/null
@@ -1 +0,0 @@
-val neq_range = {lem: "neq"} : forall 'n 'm 'o 'p. (range('n, 'm), range('o, 'p)) -> bool
diff --git a/cheri/sail_latex/sailneqvec.tex b/cheri/sail_latex/sailneqvec.tex
deleted file mode 100644
index f655b3d8..00000000
--- a/cheri/sail_latex/sailneqvec.tex
+++ /dev/null
@@ -1 +0,0 @@
-val neq_vec = {lem: "neq"} : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> bool
diff --git a/cheri/sail_latex/sailnot.tex b/cheri/sail_latex/sailnot.tex
deleted file mode 100644
index 515b3ef9..00000000
--- a/cheri/sail_latex/sailnot.tex
+++ /dev/null
@@ -1 +0,0 @@
-val not = {coq:"negb", _:"not"} : bool -> bool
diff --git a/cheri/sail_latex/sailnotbool.tex b/cheri/sail_latex/sailnotbool.tex
deleted file mode 100644
index 7630f6c2..00000000
--- a/cheri/sail_latex/sailnotbool.tex
+++ /dev/null
@@ -1 +0,0 @@
-val not_bool = {coq: "negb", _: "not"} : bool -> bool
diff --git a/cheri/sail_latex/sailnotvec.tex b/cheri/sail_latex/sailnotvec.tex
deleted file mode 100644
index a560a544..00000000
--- a/cheri/sail_latex/sailnotvec.tex
+++ /dev/null
@@ -1 +0,0 @@
-val not_vec = {c:"not_bits", _:"not_vec"} : forall 'n. #\hyperref[zbits]{bits}#('n) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailnumofAccessLevel.tex b/cheri/sail_latex/sailnumofAccessLevel.tex
deleted file mode 100644
index 0c618cc8..00000000
--- a/cheri/sail_latex/sailnumofAccessLevel.tex
+++ /dev/null
@@ -1 +0,0 @@
-val num_of_AccessLevel : AccessLevel -> {'e, 0 <= 'e & 'e <= 2. atom('e)}
diff --git a/cheri/sail_latex/sailnumofCPtrCmpOp.tex b/cheri/sail_latex/sailnumofCPtrCmpOp.tex
deleted file mode 100644
index 40f1bfa9..00000000
--- a/cheri/sail_latex/sailnumofCPtrCmpOp.tex
+++ /dev/null
@@ -1 +0,0 @@
-val num_of_CPtrCmpOp : CPtrCmpOp -> {'e, 0 <= 'e & 'e <= 7. atom('e)}
diff --git a/cheri/sail_latex/sailnumofCapEx.tex b/cheri/sail_latex/sailnumofCapEx.tex
deleted file mode 100644
index 3bec74dc..00000000
--- a/cheri/sail_latex/sailnumofCapEx.tex
+++ /dev/null
@@ -1 +0,0 @@
-val num_of_CapEx : CapEx -> {'e, 0 <= 'e & 'e <= 22. atom('e)}
diff --git a/cheri/sail_latex/sailnumofClearRegSet.tex b/cheri/sail_latex/sailnumofClearRegSet.tex
deleted file mode 100644
index 14ea7bea..00000000
--- a/cheri/sail_latex/sailnumofClearRegSet.tex
+++ /dev/null
@@ -1 +0,0 @@
-val num_of_ClearRegSet : ClearRegSet -> {'e, 0 <= 'e & 'e <= 3. atom('e)}
diff --git a/cheri/sail_latex/sailnumofComparison.tex b/cheri/sail_latex/sailnumofComparison.tex
deleted file mode 100644
index bac8031f..00000000
--- a/cheri/sail_latex/sailnumofComparison.tex
+++ /dev/null
@@ -1 +0,0 @@
-val num_of_Comparison : Comparison -> {'e, 0 <= 'e & 'e <= 7. atom('e)}
diff --git a/cheri/sail_latex/sailnumofException.tex b/cheri/sail_latex/sailnumofException.tex
deleted file mode 100644
index 2f823724..00000000
--- a/cheri/sail_latex/sailnumofException.tex
+++ /dev/null
@@ -1 +0,0 @@
-val num_of_Exception : Exception -> {'e, 0 <= 'e & 'e <= 18. atom('e)}
diff --git a/cheri/sail_latex/sailnumofMemAccessType.tex b/cheri/sail_latex/sailnumofMemAccessType.tex
deleted file mode 100644
index dc81a81c..00000000
--- a/cheri/sail_latex/sailnumofMemAccessType.tex
+++ /dev/null
@@ -1 +0,0 @@
-val num_of_MemAccessType : MemAccessType -> {'e, 0 <= 'e & 'e <= 2. atom('e)}
diff --git a/cheri/sail_latex/sailnumofWordType.tex b/cheri/sail_latex/sailnumofWordType.tex
deleted file mode 100644
index 2be61446..00000000
--- a/cheri/sail_latex/sailnumofWordType.tex
+++ /dev/null
@@ -1 +0,0 @@
-val num_of_WordType : WordType -> {'e, 0 <= 'e & 'e <= 3. atom('e)}
diff --git a/cheri/sail_latex/sailnumofWordTypeUnaligned.tex b/cheri/sail_latex/sailnumofWordTypeUnaligned.tex
deleted file mode 100644
index 40c9a426..00000000
--- a/cheri/sail_latex/sailnumofWordTypeUnaligned.tex
+++ /dev/null
@@ -1 +0,0 @@
-val num_of_WordTypeUnaligned : WordTypeUnaligned -> {'e, 0 <= 'e & 'e <= 3. atom('e)}
diff --git a/cheri/sail_latex/sailnumofdecodefailure.tex b/cheri/sail_latex/sailnumofdecodefailure.tex
deleted file mode 100644
index 197b4ae9..00000000
--- a/cheri/sail_latex/sailnumofdecodefailure.tex
+++ /dev/null
@@ -1 +0,0 @@
-val num_of_decode_failure : decode_failure -> {'e, 0 <= 'e & 'e <= 3. atom('e)}
diff --git a/cheri/sail_latex/sailones.tex b/cheri/sail_latex/sailones.tex
deleted file mode 100644
index 94fd805f..00000000
--- a/cheri/sail_latex/sailones.tex
+++ /dev/null
@@ -1 +0,0 @@
-val ones : forall 'n, 'n >= 0 . unit -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailorbits.tex b/cheri/sail_latex/sailorbits.tex
deleted file mode 100644
index 55db5ffa..00000000
--- a/cheri/sail_latex/sailorbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val or_bits = {c: "or_bits", _: "or_vec"} : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailorbool.tex b/cheri/sail_latex/sailorbool.tex
deleted file mode 100644
index 4b6bfa15..00000000
--- a/cheri/sail_latex/sailorbool.tex
+++ /dev/null
@@ -1 +0,0 @@
-val or_bool = {coq: "orb", _: "or_bool"} : (bool, bool) -> bool
diff --git a/cheri/sail_latex/sailpccaccesssystemregs.tex b/cheri/sail_latex/sailpccaccesssystemregs.tex
deleted file mode 100644
index 399ab221..00000000
--- a/cheri/sail_latex/sailpccaccesssystemregs.tex
+++ /dev/null
@@ -1 +0,0 @@
-val pcc_access_system_regs : unit -> bool effect {rreg}
diff --git a/cheri/sail_latex/sailplainvectoraccess.tex b/cheri/sail_latex/sailplainvectoraccess.tex
deleted file mode 100644
index 94824f77..00000000
--- a/cheri/sail_latex/sailplainvectoraccess.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val plain_vector_access = {
- ocaml: "access",
- lem: "access_list_dec",
- coq: "vec_access_dec",
- c: "vector_access"
-} : forall ('n : Int) ('m : Int) ('a : Type), 0 <= 'm < 'n. (vector('n, dec, 'a), atom('m)) -> 'a
diff --git a/cheri/sail_latex/sailplainvectorupdate.tex b/cheri/sail_latex/sailplainvectorupdate.tex
deleted file mode 100644
index 6880d9bd..00000000
--- a/cheri/sail_latex/sailplainvectorupdate.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val plain_vector_update = {
- ocaml: "update",
- lem: "update_list_dec",
- coq: "vec_update_dec",
- c: "vector_update"
-} : forall '#\hyperref[zn]{n}# ('a : Type). (vector('n, dec, 'a), int, 'a) -> vector('n, dec, 'a)
diff --git a/cheri/sail_latex/sailpowtwo.tex b/cheri/sail_latex/sailpowtwo.tex
deleted file mode 100644
index 41da946e..00000000
--- a/cheri/sail_latex/sailpowtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-val pow2 = "pow2" : forall 'n. atom('n) -> atom(2 ^ 'n)
diff --git a/cheri/sail_latex/sailprerrbits.tex b/cheri/sail_latex/sailprerrbits.tex
deleted file mode 100644
index 7d926384..00000000
--- a/cheri/sail_latex/sailprerrbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "prerr_bits" : forall 'n. (string, #\hyperref[zbits]{bits}#('n)) -> unit
diff --git a/cheri/sail_latex/sailprerrendline.tex b/cheri/sail_latex/sailprerrendline.tex
deleted file mode 100644
index ad4a94a0..00000000
--- a/cheri/sail_latex/sailprerrendline.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "prerr_endline" : string -> unit
diff --git a/cheri/sail_latex/sailprerrint.tex b/cheri/sail_latex/sailprerrint.tex
deleted file mode 100644
index ce7a7d61..00000000
--- a/cheri/sail_latex/sailprerrint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "prerr_int" : (string, int) -> unit
diff --git a/cheri/sail_latex/sailprerrstring.tex b/cheri/sail_latex/sailprerrstring.tex
deleted file mode 100644
index 7b849da2..00000000
--- a/cheri/sail_latex/sailprerrstring.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "prerr_string" : string -> unit
diff --git a/cheri/sail_latex/sailprint.tex b/cheri/sail_latex/sailprint.tex
deleted file mode 100644
index 50a64219..00000000
--- a/cheri/sail_latex/sailprint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val print = "print_endline" : string -> unit
diff --git a/cheri/sail_latex/sailprintbits.tex b/cheri/sail_latex/sailprintbits.tex
deleted file mode 100644
index 8783a59a..00000000
--- a/cheri/sail_latex/sailprintbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "print_bits" : forall 'n. (string, #\hyperref[zbits]{bits}#('n)) -> unit
diff --git a/cheri/sail_latex/sailprintint.tex b/cheri/sail_latex/sailprintint.tex
deleted file mode 100644
index ddf33afc..00000000
--- a/cheri/sail_latex/sailprintint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "print_int" : (string, int) -> unit
diff --git a/cheri/sail_latex/sailputchar.tex b/cheri/sail_latex/sailputchar.tex
deleted file mode 100644
index a123c709..00000000
--- a/cheri/sail_latex/sailputchar.tex
+++ /dev/null
@@ -1 +0,0 @@
-val putchar = {c:"sail_putchar", _:"putchar"} : int -> unit
diff --git a/cheri/sail_latex/sailquotient.tex b/cheri/sail_latex/sailquotient.tex
deleted file mode 100644
index 7dba5359..00000000
--- a/cheri/sail_latex/sailquotient.tex
+++ /dev/null
@@ -1 +0,0 @@
-val quotient = {ocaml: "quotient", lem: "integerDiv", coq: "Z.mod"} : (int, int) -> int
diff --git a/cheri/sail_latex/sailquotientnat.tex b/cheri/sail_latex/sailquotientnat.tex
deleted file mode 100644
index 14db4ae0..00000000
--- a/cheri/sail_latex/sailquotientnat.tex
+++ /dev/null
@@ -1 +0,0 @@
-val quotient_nat = {ocaml: "quotient", lem: "integerDiv", coq: "Z.div"} : (nat, nat) -> nat
diff --git a/cheri/sail_latex/sailquotroundzzero.tex b/cheri/sail_latex/sailquotroundzzero.tex
deleted file mode 100644
index 9523cfcc..00000000
--- a/cheri/sail_latex/sailquotroundzzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-val quot_round_zero = {ocaml: "quot_round_zero", lem: "hardware_quot", coq: "Z.quot", _ : "tdiv_int"} : (int, int) -> int
diff --git a/cheri/sail_latex/sailrGPR.tex b/cheri/sail_latex/sailrGPR.tex
deleted file mode 100644
index 19721488..00000000
--- a/cheri/sail_latex/sailrGPR.tex
+++ /dev/null
@@ -1 +0,0 @@
-val rGPR : #\hyperref[zbits]{bits}#(5) -> #\hyperref[zbits]{bits}#(64) effect {rreg}
diff --git a/cheri/sail_latex/sailraisectwoexception.tex b/cheri/sail_latex/sailraisectwoexception.tex
deleted file mode 100644
index f8a562ec..00000000
--- a/cheri/sail_latex/sailraisectwoexception.tex
+++ /dev/null
@@ -1 +0,0 @@
-val raise_c2_exception : forall ('o : Type) . (CapEx, regno) -> 'o effect {escape, rreg, wreg}
diff --git a/cheri/sail_latex/sailraisectwoexceptioneight.tex b/cheri/sail_latex/sailraisectwoexceptioneight.tex
deleted file mode 100644
index 21b0bcf9..00000000
--- a/cheri/sail_latex/sailraisectwoexceptioneight.tex
+++ /dev/null
@@ -1 +0,0 @@
-val raise_c2_exception8 : forall ('o : Type) . (CapEx, #\hyperref[zbits]{bits}#(8)) -> 'o effect {escape, rreg, wreg}
diff --git a/cheri/sail_latex/sailraisectwoexceptionnoreg.tex b/cheri/sail_latex/sailraisectwoexceptionnoreg.tex
deleted file mode 100644
index be594e4e..00000000
--- a/cheri/sail_latex/sailraisectwoexceptionnoreg.tex
+++ /dev/null
@@ -1 +0,0 @@
-val raise_c2_exception_noreg : forall ('o : Type) . (CapEx) -> 'o effect {escape, rreg, wreg}
diff --git a/cheri/sail_latex/sailreadCapReg.tex b/cheri/sail_latex/sailreadCapReg.tex
deleted file mode 100644
index f4d77264..00000000
--- a/cheri/sail_latex/sailreadCapReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-val readCapReg : regno -> CapStruct effect {rreg}
diff --git a/cheri/sail_latex/sailreadCapRegDDC.tex b/cheri/sail_latex/sailreadCapRegDDC.tex
deleted file mode 100644
index 2ec2e75d..00000000
--- a/cheri/sail_latex/sailreadCapRegDDC.tex
+++ /dev/null
@@ -1 +0,0 @@
-val readCapRegDDC : regno -> CapStruct effect {rreg}
diff --git a/cheri/sail_latex/sailregderef.tex b/cheri/sail_latex/sailregderef.tex
deleted file mode 100644
index 7f1dc7e8..00000000
--- a/cheri/sail_latex/sailregderef.tex
+++ /dev/null
@@ -1 +0,0 @@
-val _reg_deref = "reg_deref" : forall ('a : Type). #\hyperref[zregister]{register}#('a) -> 'a
diff --git a/cheri/sail_latex/sailregisterinaccessible.tex b/cheri/sail_latex/sailregisterinaccessible.tex
deleted file mode 100644
index d732248a..00000000
--- a/cheri/sail_latex/sailregisterinaccessible.tex
+++ /dev/null
@@ -1 +0,0 @@
-val register_inaccessible : regno -> bool effect {rreg}
diff --git a/cheri/sail_latex/sailregno.tex b/cheri/sail_latex/sailregno.tex
deleted file mode 100644
index 5246f847..00000000
--- a/cheri/sail_latex/sailregno.tex
+++ /dev/null
@@ -1 +0,0 @@
-type regno = #\hyperref[zbits]{bits}#(5) /* a register number */
diff --git a/cheri/sail_latex/sailregregimmonesix.tex b/cheri/sail_latex/sailregregimmonesix.tex
deleted file mode 100644
index 0be3ccec..00000000
--- a/cheri/sail_latex/sailregregimmonesix.tex
+++ /dev/null
@@ -1 +0,0 @@
-type regregimm16 = (regno, regno, imm16)
diff --git a/cheri/sail_latex/sailregregreg.tex b/cheri/sail_latex/sailregregreg.tex
deleted file mode 100644
index e3409dff..00000000
--- a/cheri/sail_latex/sailregregreg.tex
+++ /dev/null
@@ -1 +0,0 @@
-type regregreg = (regno, regno, regno)
diff --git a/cheri/sail_latex/sailremroundzzero.tex b/cheri/sail_latex/sailremroundzzero.tex
deleted file mode 100644
index 9d8113ba..00000000
--- a/cheri/sail_latex/sailremroundzzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-val rem_round_zero = {ocaml: "rem_round_zero", lem: "hardware_mod", coq: "Z.rem", _ : "tmod_int"} : (int, int) -> int
diff --git a/cheri/sail_latex/sailreplicatebits.tex b/cheri/sail_latex/sailreplicatebits.tex
deleted file mode 100644
index cd7a97d7..00000000
--- a/cheri/sail_latex/sailreplicatebits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val replicate_bits = "replicate_bits" : forall 'n 'm. (#\hyperref[zbits]{bits}#('n), atom('m)) -> #\hyperref[zbits]{bits}#('n * 'm)
diff --git a/cheri/sail_latex/sailreverseendianness.tex b/cheri/sail_latex/sailreverseendianness.tex
deleted file mode 100644
index 9105738f..00000000
--- a/cheri/sail_latex/sailreverseendianness.tex
+++ /dev/null
@@ -1 +0,0 @@
-val reverse_endianness = "reverse_endianness" : forall 'W, 'W >= 1. #\hyperref[zbits]{bits}#(8 * 'W) -> #\hyperref[zbits]{bits}#(8 * 'W) effect pure
diff --git a/cheri/sail_latex/sailsailfndecodeSomeBCMPZv.tex b/cheri/sail_latex/sailsailfndecodeSomeBCMPZv.tex
deleted file mode 100644
index 5106d2ec..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeBCMPZv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000001 @ rs : regno @ 0b10000 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBCMPZ]{BCMPZ}#(rs, imm, LT, true, false)) /* BLTZAL */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeBEQv.tex b/cheri/sail_latex/sailsailfndecodeSomeBEQv.tex
deleted file mode 100644
index aa31ba6b..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeBEQv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010100 @ rs : regno @ rt : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBEQ]{BEQ}#(rs, rt, imm, false, true)) /* BEQL */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCAndPermv.tex b/cheri/sail_latex/sailsailfndecodeSomeCAndPermv.tex
deleted file mode 100644
index 893a1c6d..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCAndPermv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ rt : regno @ 0b001101) = #\hyperref[zSome]{Some}#(#\hyperref[zCAndPerm]{CAndPerm}#(cd, cs, rt))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCBXv.tex b/cheri/sail_latex/sailsailfndecodeSomeCBXv.tex
deleted file mode 100644
index 32d3c875..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCBXv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01010 @ cd : regno @ imm : #\hyperref[zbits]{bits}#(16)) = #\hyperref[zSome]{Some}#(#\hyperref[zCBX]{CBX}#(cd, imm, false)) /* CBTS */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCBZv.tex b/cheri/sail_latex/sailsailfndecodeSomeCBZv.tex
deleted file mode 100644
index 32781f76..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCBZv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10010 @ cd : regno @ imm : #\hyperref[zbits]{bits}#(16)) = #\hyperref[zSome]{Some}#(#\hyperref[zCBZ]{CBZ}#(cd, imm, true)) /* CBNZ */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCCheckPermv.tex b/cheri/sail_latex/sailsailfndecodeSomeCCheckPermv.tex
deleted file mode 100644
index ee2c8bde..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCCheckPermv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cs : regno @ rt : regno @ 0b01000 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCCheckPerm]{CCheckPerm}#(cs, rt))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCCheckTypev.tex b/cheri/sail_latex/sailsailfndecodeSomeCCheckTypev.tex
deleted file mode 100644
index 661760cc..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCCheckTypev.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cs : regno @ cb : regno @ 0b01001 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCCheckType]{CCheckType}#(cs, cb))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCClearTagv.tex b/cheri/sail_latex/sailsailfndecodeSomeCClearTagv.tex
deleted file mode 100644
index 766ce399..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCClearTagv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cb : regno @ 0b01011 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCClearTag]{CClearTag}#(cd, cb))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCFromPtrv.tex b/cheri/sail_latex/sailsailfndecodeSomeCFromPtrv.tex
deleted file mode 100644
index e977fcd2..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCFromPtrv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cb : regno @ rs : regno @ 0b010011) = #\hyperref[zSome]{Some}#(#\hyperref[zCFromPtr]{CFromPtr}#(cd, cb, rs))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCGetBasev.tex b/cheri/sail_latex/sailsailfndecodeSomeCGetBasev.tex
deleted file mode 100644
index 05fa9835..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCGetBasev.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00010 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetBase]{CGetBase}#(rd, cb))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCGetCauserdv.tex b/cheri/sail_latex/sailsailfndecodeSomeCGetCauserdv.tex
deleted file mode 100644
index c44fd7ff..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCGetCauserdv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ 0b00001 @ 0b11111 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetCause]{CGetCause}#(rd))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCGetLenv.tex b/cheri/sail_latex/sailsailfndecodeSomeCGetLenv.tex
deleted file mode 100644
index 3a4a434b..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCGetLenv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00011 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetLen]{CGetLen}#(rd, cb))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCGetOffsetv.tex b/cheri/sail_latex/sailsailfndecodeSomeCGetOffsetv.tex
deleted file mode 100644
index a5a22beb..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCGetOffsetv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00110 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetOffset]{CGetOffset}#(rd, cb))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCGetPermv.tex b/cheri/sail_latex/sailsailfndecodeSomeCGetPermv.tex
deleted file mode 100644
index 5dbabd98..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCGetPermv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00000 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetPerm]{CGetPerm}#(rd, cb))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCGetSealedv.tex b/cheri/sail_latex/sailsailfndecodeSomeCGetSealedv.tex
deleted file mode 100644
index 00d254ad..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCGetSealedv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00101 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetSealed]{CGetSealed}#(rd, cb))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCGetTagv.tex b/cheri/sail_latex/sailsailfndecodeSomeCGetTagv.tex
deleted file mode 100644
index e46392b5..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCGetTagv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00100 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetTag]{CGetTag}#(rd, cb))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCGetTypev.tex b/cheri/sail_latex/sailsailfndecodeSomeCGetTypev.tex
deleted file mode 100644
index 20baf29c..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCGetTypev.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ 0b00001 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCGetType]{CGetType}#(rd, cb))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCIncOffsetv.tex b/cheri/sail_latex/sailsailfndecodeSomeCIncOffsetv.tex
deleted file mode 100644
index 5d2501bb..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCIncOffsetv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cb : regno @ rt : regno @ 0b010001) = #\hyperref[zSome]{Some}#(#\hyperref[zCIncOffset]{CIncOffset}#(cd, cb, rt))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCJALRv.tex b/cheri/sail_latex/sailsailfndecodeSomeCJALRv.tex
deleted file mode 100644
index 3f5f8411..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCJALRv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01000 @ 0b00000 @ cb : regno @ 0b00000 @ 0b000000) = #\hyperref[zSome]{Some}#(#\hyperref[zCJALR]{CJALR}#(0b00000, cb, false)) /* CJR */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCLCv.tex b/cheri/sail_latex/sailsailfndecodeSomeCLCv.tex
deleted file mode 100644
index fa732648..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCLCv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10000 @ cd : regno @ cb : regno@ 0b0000000 @ 0b1111) = #\hyperref[zSome]{Some}#(#\hyperref[zCLC]{CLC}#(cd, cb, 0b00000, 0x0000, true)) /* CLLC */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCLoadv.tex b/cheri/sail_latex/sailsailfndecodeSomeCLoadv.tex
deleted file mode 100644
index 9fbd4a7b..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCLoadv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b110010 @ rd : regno @ cb : regno@ rt : regno @ offset : #\hyperref[zbits]{bits}#(8) @ 0b1 @ 0b00) = #\hyperref[zSome]{Some}#(#\hyperref[zCLoad]{CLoad}#(rd, cb, rt, offset, true, B, false)) /* CLB */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCMOVXv.tex b/cheri/sail_latex/sailsailfndecodeSomeCMOVXv.tex
deleted file mode 100644
index 09fb371f..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCMOVXv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ rs : regno @ 0b011011) = #\hyperref[zSome]{Some}#(#\hyperref[zCMOVX]{CMOVX}#(cd, cs, rs, false)) /* CMOVZ */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCPtrCmpv.tex b/cheri/sail_latex/sailsailfndecodeSomeCPtrCmpv.tex
deleted file mode 100644
index af60dcc8..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCPtrCmpv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b001) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, ct, CNE))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCReturnv.tex b/cheri/sail_latex/sailsailfndecodeSomeCReturnv.tex
deleted file mode 100644
index da0a09d2..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCReturnv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00101 @ 0b00000 @ 0b00000 @ 0b11111111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCReturn]{CReturn}#())
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCSCv.tex b/cheri/sail_latex/sailsailfndecodeSomeCSCv.tex
deleted file mode 100644
index 14b9e73a..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCSCv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10000 @ cs : regno @ cb : regno@ rd : regno @ 0b00 @ 0b0111) = #\hyperref[zSome]{Some}#(#\hyperref[zCSC]{CSC}#(cs, cb, 0b00000, rd, 0b00000000000, true)) /* CSCC */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCSealv.tex b/cheri/sail_latex/sailsailfndecodeSomeCSealv.tex
deleted file mode 100644
index 4000c397..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCSealv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ ct : regno @ 0b001011) = #\hyperref[zSome]{Some}#(#\hyperref[zCSeal]{CSeal}#(cd, cs, ct))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCSetBoundsv.tex b/cheri/sail_latex/sailsailfndecodeSomeCSetBoundsv.tex
deleted file mode 100644
index 1d6a4e52..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCSetBoundsv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ rt : regno @ 0b001000) = #\hyperref[zSome]{Some}#(#\hyperref[zCSetBounds]{CSetBounds}#(cd, cs, rt))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCSetOffsetv.tex b/cheri/sail_latex/sailsailfndecodeSomeCSetOffsetv.tex
deleted file mode 100644
index 478a8f93..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCSetOffsetv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ rt : regno @ 0b001111) = #\hyperref[zSome]{Some}#(#\hyperref[zCSetOffset]{CSetOffset}#(cd, cs, rt))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCStorev.tex b/cheri/sail_latex/sailsailfndecodeSomeCStorev.tex
deleted file mode 100644
index e5e4dd1d..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCStorev.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b111010 @ rs : regno @ cb : regno@ rt : regno @ offset : #\hyperref[zbits]{bits}#(8) @ 0b0 @ 0b01) = #\hyperref[zSome]{Some}#(#\hyperref[zCStore]{CStore}#(rs, cb, rt, 0b00000, offset, H, false)) /* CSH */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCToPtrv.tex b/cheri/sail_latex/sailsailfndecodeSomeCToPtrv.tex
deleted file mode 100644
index d9b325f9..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCToPtrv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ ct : regno @ 0b010010) = #\hyperref[zSome]{Some}#(#\hyperref[zCToPtr]{CToPtr}#(rd, cb, ct))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeCUnsealv.tex b/cheri/sail_latex/sailsailfndecodeSomeCUnsealv.tex
deleted file mode 100644
index acb3c721..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeCUnsealv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ ct : regno @ 0b001100) = #\hyperref[zSome]{Some}#(#\hyperref[zCUnseal]{CUnseal}#(cd, cs, ct))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeClearRegsv.tex b/cheri/sail_latex/sailsailfndecodeSomeClearRegsv.tex
deleted file mode 100644
index 791485cd..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeClearRegsv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01111 @ 0b00001 @ imm : #\hyperref[zbits]{bits}#(16)) = #\hyperref[zSome]{Some}#(#\hyperref[zClearRegs]{ClearRegs}#(GPHi, imm))
diff --git a/cheri/sail_latex/sailsailfndecodeSomeHCFv.tex b/cheri/sail_latex/sailsailfndecodeSomeHCFv.tex
deleted file mode 100644
index dbecd8da..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeHCFv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010000 @ 0b00100 @ rt : regno @ 0b11010 @ 0b00000000000) =
- #\hyperref[zSome]{Some}#(#\hyperref[zHCF]{HCF}#())
diff --git a/cheri/sail_latex/sailsailfndecodeSomeLoadv.tex b/cheri/sail_latex/sailsailfndecodeSomeLoadv.tex
deleted file mode 100644
index 211a2f4a..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeLoadv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b100100 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zLoad]{Load}#(B, false, false, base, rt, offset)) /* LBU */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeMFCzerov.tex b/cheri/sail_latex/sailsailfndecodeSomeMFCzerov.tex
deleted file mode 100644
index f54ffdfd..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeMFCzerov.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010000 @ 0b00001 @ rt : regno @ rd : regno @ 0b00000000 @ sel : #\hyperref[zbits]{bits}#(3)) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMFCzero]{MFC0}#(rt, rd, sel, true)) /* DMFC0 */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeMTCzerov.tex b/cheri/sail_latex/sailsailfndecodeSomeMTCzerov.tex
deleted file mode 100644
index ae848c1e..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeMTCzerov.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010000 @ 0b00101 @ rt : regno @ rd : regno @ 0b00000000 @ sel : #\hyperref[zbits]{bits}#(3)) =
- #\hyperref[zSome]{Some}#(#\hyperref[zMTCzero]{MTC0}#(rt, rd, sel, true)) /* DMTC0 */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeStorev.tex b/cheri/sail_latex/sailsailfndecodeSomeStorev.tex
deleted file mode 100644
index 6ddb5562..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeStorev.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b101001 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zStore]{Store}#(H, false, base, rt, offset)) /* SH */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeTRAPIMMv.tex b/cheri/sail_latex/sailsailfndecodeSomeTRAPIMMv.tex
deleted file mode 100644
index f899f0e7..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeTRAPIMMv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000001 @ rs : regno @ 0b01110 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zTRAPIMM]{TRAPIMM}#(rs, imm, NE)) /* TNEI */
diff --git a/cheri/sail_latex/sailsailfndecodeSomeTRAPREGv.tex b/cheri/sail_latex/sailsailfndecodeSomeTRAPREGv.tex
deleted file mode 100644
index 9909d5da..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomeTRAPREGv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ code : #\hyperref[zbits]{bits}#(10) @ 0b110001) =
- #\hyperref[zSome]{Some}#(#\hyperref[zTRAPREG]{TRAPREG}#(rs, rt, GEU)) /* TGEU */
diff --git a/cheri/sail_latex/sailsailfndecodeSomev.tex b/cheri/sail_latex/sailsailfndecodeSomev.tex
deleted file mode 100644
index bf842c52..00000000
--- a/cheri/sail_latex/sailsailfndecodeSomev.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010000 @ 0b10000000000000000000 @ 0b000110) = #\hyperref[zSome]{Some}#(#\hyperref[zTLBWR]{TLBWR}#() : ast)
diff --git a/cheri/sail_latex/sailsailfnexecuteCCallv.tex b/cheri/sail_latex/sailsailfnexecuteCCallv.tex
deleted file mode 100644
index 6a11ddac..00000000
--- a/cheri/sail_latex/sailsailfnexecuteCCallv.tex
+++ /dev/null
@@ -1,46 +0,0 @@
-function clause #\hyperref[zexecute]{execute}# (#\hyperref[zCCall]{CCall}#(cs, cb, 0b00000000001)) = /* selector=1 */
-{
- /* Jump-like implementation of CCall that unseals arguments */
- #\hyperref[zcheckCPtwousable]{checkCP2usable}#();
- cs_val = #\hyperref[zreadCapReg]{readCapReg}#(cs);
- cb_val = #\hyperref[zreadCapReg]{readCapReg}#(cb);
- cs_cursor = #\hyperref[zgetCapCursor]{getCapCursor}#(cs_val);
- if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cs)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cs)
- else if (#\hyperref[zregisterzyinaccessible]{register\_inaccessible}#(cb)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_AccessSystemRegsViolation, cb)
- else if #\hyperref[znot]{not}# (cs_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cs)
- else if #\hyperref[znot]{not}# (cb_val.tag) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TagViolation, cb)
- else if #\hyperref[znot]{not}# (cs_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cs)
- else if #\hyperref[znot]{not}# (cb_val.sealed) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_SealViolation, cb)
- else if ((cs_val.otype) != (cb_val.otype)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_TypeViolation, cs)
- else if #\hyperref[znot]{not}# (cs_val.permit_ccall) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitCCallViolation, cs)
- else if #\hyperref[znot]{not}# (cb_val.permit_ccall) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitCCallViolation, cb)
- else if #\hyperref[znot]{not}# (cs_val.permit_execute) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitExecuteViolation, cs)
- else if (cb_val.permit_execute) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_PermitExecuteViolation, cb)
- else if (cs_cursor < #\hyperref[zgetCapBase]{getCapBase}#(cs_val)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cs)
- else if (cs_cursor >= #\hyperref[zgetCapTop]{getCapTop}#(cs_val)) then
- #\hyperref[zraisezyctwozyexception]{raise\_c2\_exception}#(CapEx_LengthViolation, cs)
- else
- {
- #\hyperref[zexecutezybranchzypcc]{execute\_branch\_pcc}#({cs_val with
- sealed=false,
- otype=#\hyperref[zzzeros]{zeros}#()
- });
- inCCallDelay = 0b1;
- C26 = #\hyperref[zcapStructToCapReg]{capStructToCapReg}#({cb_val with
- sealed=false,
- otype=#\hyperref[zzzeros]{zeros}#()
- });
- }
-}
diff --git a/cheri/sail_latex/sailsailmask.tex b/cheri/sail_latex/sailsailmask.tex
deleted file mode 100644
index 45862747..00000000
--- a/cheri/sail_latex/sailsailmask.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sail_mask : forall 'len 'v, 'len >= 0 & 'v >= 0. (atom('len), vector('v, dec, bit)) -> vector('len, dec, bit)
diff --git a/cheri/sail_latex/sailsailmaxv.tex b/cheri/sail_latex/sailsailmaxv.tex
deleted file mode 100644
index 1ceed42c..00000000
--- a/cheri/sail_latex/sailsailmaxv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload max = {max_atom, max_nat, max_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailmodASIDv.tex b/cheri/sail_latex/sailsailmodASIDv.tex
deleted file mode 100644
index 4e4c154c..00000000
--- a/cheri/sail_latex/sailsailmodASIDv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_ASID = {_get_TLBEntryHiReg_ASID, _set_TLBEntryHiReg_ASID} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailmodExcCodev.tex b/cheri/sail_latex/sailsailmodExcCodev.tex
deleted file mode 100644
index 95bd4a1b..00000000
--- a/cheri/sail_latex/sailsailmodExcCodev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_ExcCode = {_get_CauseReg_ExcCode, _set_CauseReg_ExcCode} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailmodGv.tex b/cheri/sail_latex/sailsailmodGv.tex
deleted file mode 100644
index ddb88eaa..00000000
--- a/cheri/sail_latex/sailsailmodGv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_G = {_get_TLBEntryLoReg_G, _set_TLBEntryLoReg_G} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailmodRv.tex b/cheri/sail_latex/sailsailmodRv.tex
deleted file mode 100644
index 85ef85fa..00000000
--- a/cheri/sail_latex/sailsailmodRv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_R = {_get_TLBEntryHiReg_R, _set_TLBEntryHiReg_R} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailmodVPNtwov.tex b/cheri/sail_latex/sailsailmodVPNtwov.tex
deleted file mode 100644
index 7de971a8..00000000
--- a/cheri/sail_latex/sailsailmodVPNtwov.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_VPN2 = {_get_TLBEntryHiReg_VPN2, _set_TLBEntryHiReg_VPN2} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailmodbitsv.tex b/cheri/sail_latex/sailsailmodbitsv.tex
deleted file mode 100644
index f27daebb..00000000
--- a/cheri/sail_latex/sailsailmodbitsv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_bits = {_get_StatusReg_bits, _set_StatusReg_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailnegatev.tex b/cheri/sail_latex/sailsailnegatev.tex
deleted file mode 100644
index 4f7aea58..00000000
--- a/cheri/sail_latex/sailsailnegatev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload negate = {negate_atom, negate_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailregderefv.tex b/cheri/sail_latex/sailsailregderefv.tex
deleted file mode 100644
index f5de92ca..00000000
--- a/cheri/sail_latex/sailsailregderefv.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "reg_deref" : forall ('a : Type). #\hyperref[zregister]{register}#('a) -> 'a effect {rreg}
diff --git a/cheri/sail_latex/sailsailsailfndecodeSomeBCMPZvv.tex b/cheri/sail_latex/sailsailsailfndecodeSomeBCMPZvv.tex
deleted file mode 100644
index 05919c54..00000000
--- a/cheri/sail_latex/sailsailsailfndecodeSomeBCMPZvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000001 @ rs : regno @ 0b00010 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBCMPZ]{BCMPZ}#(rs, imm, LT, false, true)) /* BLTZL */
diff --git a/cheri/sail_latex/sailsailsailfndecodeSomeBEQvv.tex b/cheri/sail_latex/sailsailsailfndecodeSomeBEQvv.tex
deleted file mode 100644
index 4ee94638..00000000
--- a/cheri/sail_latex/sailsailsailfndecodeSomeBEQvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000101 @ rs : regno @ rt : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBEQ]{BEQ}#(rs, rt, imm, true , false)) /* BNE */
diff --git a/cheri/sail_latex/sailsailsailfndecodeSomeCJALRvv.tex b/cheri/sail_latex/sailsailsailfndecodeSomeCJALRvv.tex
deleted file mode 100644
index a14bda16..00000000
--- a/cheri/sail_latex/sailsailsailfndecodeSomeCJALRvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cb : regno @ 0b00011 @ 0b11111 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCJALR]{CJALR}#(0b00000, cb, false)) /* CJR */
diff --git a/cheri/sail_latex/sailsailsailfndecodeSomeCLCvv.tex b/cheri/sail_latex/sailsailsailfndecodeSomeCLCvv.tex
deleted file mode 100644
index ec1bbddb..00000000
--- a/cheri/sail_latex/sailsailsailfndecodeSomeCLCvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b011101 @ cd : regno @ cb : regno @ offset : #\hyperref[zbits]{bits}#(16)) = #\hyperref[zSome]{Some}#(#\hyperref[zCLC]{CLC}#(cd, cb, 0b00000, offset, false)) /* CLCBI */
diff --git a/cheri/sail_latex/sailsailsailfndecodeSomeCLoadvv.tex b/cheri/sail_latex/sailsailsailfndecodeSomeCLoadvv.tex
deleted file mode 100644
index 59928bdf..00000000
--- a/cheri/sail_latex/sailsailsailfndecodeSomeCLoadvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b110010 @ rd : regno @ cb : regno@ rt : regno @ offset : #\hyperref[zbits]{bits}#(8) @ 0b0 @ 0b01) = #\hyperref[zSome]{Some}#(#\hyperref[zCLoad]{CLoad}#(rd, cb, rt, offset, false, H, false)) /* CLHU */
diff --git a/cheri/sail_latex/sailsailsailfndecodeSomeCMOVXvv.tex b/cheri/sail_latex/sailsailsailfndecodeSomeCMOVXvv.tex
deleted file mode 100644
index 17ed8e64..00000000
--- a/cheri/sail_latex/sailsailsailfndecodeSomeCMOVXvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cs : regno @ rs : regno @ 0b011100) = #\hyperref[zSome]{Some}#(#\hyperref[zCMOVX]{CMOVX}#(cd, cs, rs, true)) /* CMOVN */
diff --git a/cheri/sail_latex/sailsailsailfndecodeSomeCPtrCmpvv.tex b/cheri/sail_latex/sailsailsailfndecodeSomeCPtrCmpvv.tex
deleted file mode 100644
index e89b161e..00000000
--- a/cheri/sail_latex/sailsailsailfndecodeSomeCPtrCmpvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b010) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, ct, CLT))
diff --git a/cheri/sail_latex/sailsailsailfndecodeSomeCStorevv.tex b/cheri/sail_latex/sailsailsailfndecodeSomeCStorevv.tex
deleted file mode 100644
index 16a0ca69..00000000
--- a/cheri/sail_latex/sailsailsailfndecodeSomeCStorevv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b111010 @ rs : regno @ cb : regno@ rt : regno @ offset : #\hyperref[zbits]{bits}#(8) @ 0b0 @ 0b10) = #\hyperref[zSome]{Some}#(#\hyperref[zCStore]{CStore}#(rs, cb, rt, 0b00000, offset, W, false)) /* CSW */
diff --git a/cheri/sail_latex/sailsailsailfndecodeSomeClearRegsvv.tex b/cheri/sail_latex/sailsailsailfndecodeSomeClearRegsvv.tex
deleted file mode 100644
index 1f6face1..00000000
--- a/cheri/sail_latex/sailsailsailfndecodeSomeClearRegsvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01111 @ 0b00010 @ imm : #\hyperref[zbits]{bits}#(16)) = #\hyperref[zSome]{Some}#(#\hyperref[zClearRegs]{ClearRegs}#(CLo, imm))
diff --git a/cheri/sail_latex/sailsailsailfndecodeSomeLoadvv.tex b/cheri/sail_latex/sailsailsailfndecodeSomeLoadvv.tex
deleted file mode 100644
index 9158cc9a..00000000
--- a/cheri/sail_latex/sailsailsailfndecodeSomeLoadvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b100001 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zLoad]{Load}#(H, true, false, base, rt, offset)) /* LH */
diff --git a/cheri/sail_latex/sailsailsailfndecodeSomeStorevv.tex b/cheri/sail_latex/sailsailsailfndecodeSomeStorevv.tex
deleted file mode 100644
index f71ec6a1..00000000
--- a/cheri/sail_latex/sailsailsailfndecodeSomeStorevv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b101011 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zStore]{Store}#(W, false, base, rt, offset)) /* SW */
diff --git a/cheri/sail_latex/sailsailsailfndecodeSomeTRAPIMMvv.tex b/cheri/sail_latex/sailsailsailfndecodeSomeTRAPIMMvv.tex
deleted file mode 100644
index 39d26d09..00000000
--- a/cheri/sail_latex/sailsailsailfndecodeSomeTRAPIMMvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000001 @ rs : regno @ 0b01000 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zTRAPIMM]{TRAPIMM}#(rs, imm, GE)) /* TGEI */
diff --git a/cheri/sail_latex/sailsailsailfndecodeSomeTRAPREGvv.tex b/cheri/sail_latex/sailsailsailfndecodeSomeTRAPREGvv.tex
deleted file mode 100644
index 69135618..00000000
--- a/cheri/sail_latex/sailsailsailfndecodeSomeTRAPREGvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ code : #\hyperref[zbits]{bits}#(10) @ 0b110010) =
- #\hyperref[zSome]{Some}#(#\hyperref[zTRAPREG]{TRAPREG}#(rs, rt, LT)) /* TLT */
diff --git a/cheri/sail_latex/sailsailsailfndecodeSomevv.tex b/cheri/sail_latex/sailsailsailfndecodeSomevv.tex
deleted file mode 100644
index 30e900f1..00000000
--- a/cheri/sail_latex/sailsailsailfndecodeSomevv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010000 @ 0b10000000000000000000 @ 0b000001) = #\hyperref[zSome]{Some}#(#\hyperref[zTLBR]{TLBR}#() : ast)
diff --git a/cheri/sail_latex/sailsailsailmodbitsvv.tex b/cheri/sail_latex/sailsailsailmodbitsvv.tex
deleted file mode 100644
index 7f154d12..00000000
--- a/cheri/sail_latex/sailsailsailmodbitsvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_bits = {_get_TLBEntry_bits, _set_TLBEntry_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailsailfndecodeSomeBCMPZvvv.tex b/cheri/sail_latex/sailsailsailsailfndecodeSomeBCMPZvvv.tex
deleted file mode 100644
index b58ee95f..00000000
--- a/cheri/sail_latex/sailsailsailsailfndecodeSomeBCMPZvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000001 @ rs : regno @ 0b10010 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBCMPZ]{BCMPZ}#(rs, imm, LT, true, true)) /* BLTZALL */
diff --git a/cheri/sail_latex/sailsailsailsailfndecodeSomeBEQvvv.tex b/cheri/sail_latex/sailsailsailsailfndecodeSomeBEQvvv.tex
deleted file mode 100644
index c8be8d7f..00000000
--- a/cheri/sail_latex/sailsailsailsailfndecodeSomeBEQvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010101 @ rs : regno @ rt : regno @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBEQ]{BEQ}#(rs, rt, imm, true , true)) /* BNEL */
diff --git a/cheri/sail_latex/sailsailsailsailfndecodeSomeCJALRvvv.tex b/cheri/sail_latex/sailsailsailsailfndecodeSomeCJALRvvv.tex
deleted file mode 100644
index bc34143b..00000000
--- a/cheri/sail_latex/sailsailsailsailfndecodeSomeCJALRvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ cd : regno @ cb : regno @ 0b01100 @ 0b111111) = #\hyperref[zSome]{Some}#(#\hyperref[zCJALR]{CJALR}#(cd, cb, true)) /* CJALR */
diff --git a/cheri/sail_latex/sailsailsailsailfndecodeSomeCLoadvvv.tex b/cheri/sail_latex/sailsailsailsailfndecodeSomeCLoadvvv.tex
deleted file mode 100644
index a510352e..00000000
--- a/cheri/sail_latex/sailsailsailsailfndecodeSomeCLoadvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b110010 @ rd : regno @ cb : regno@ rt : regno @ offset : #\hyperref[zbits]{bits}#(8) @ 0b1 @ 0b01) = #\hyperref[zSome]{Some}#(#\hyperref[zCLoad]{CLoad}#(rd, cb, rt, offset, true, H, false)) /* CLH */
diff --git a/cheri/sail_latex/sailsailsailsailfndecodeSomeCPtrCmpvvv.tex b/cheri/sail_latex/sailsailsailsailfndecodeSomeCPtrCmpvvv.tex
deleted file mode 100644
index 1cbb97ff..00000000
--- a/cheri/sail_latex/sailsailsailsailfndecodeSomeCPtrCmpvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b011) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, ct, CLE))
diff --git a/cheri/sail_latex/sailsailsailsailfndecodeSomeCStorevvv.tex b/cheri/sail_latex/sailsailsailsailfndecodeSomeCStorevvv.tex
deleted file mode 100644
index 1ff7d0b3..00000000
--- a/cheri/sail_latex/sailsailsailsailfndecodeSomeCStorevvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b111010 @ rs : regno @ cb : regno@ rt : regno @ offset : #\hyperref[zbits]{bits}#(8) @ 0b0 @ 0b11) = #\hyperref[zSome]{Some}#(#\hyperref[zCStore]{CStore}#(rs, cb, rt, 0b00000, offset, D, false)) /* CSD */
diff --git a/cheri/sail_latex/sailsailsailsailfndecodeSomeClearRegsvvv.tex b/cheri/sail_latex/sailsailsailsailfndecodeSomeClearRegsvvv.tex
deleted file mode 100644
index 21776cce..00000000
--- a/cheri/sail_latex/sailsailsailsailfndecodeSomeClearRegsvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01111 @ 0b00011 @ imm : #\hyperref[zbits]{bits}#(16)) = #\hyperref[zSome]{Some}#(#\hyperref[zClearRegs]{ClearRegs}#(CHi, imm))
diff --git a/cheri/sail_latex/sailsailsailsailfndecodeSomeLoadvvv.tex b/cheri/sail_latex/sailsailsailsailfndecodeSomeLoadvvv.tex
deleted file mode 100644
index e0f61740..00000000
--- a/cheri/sail_latex/sailsailsailsailfndecodeSomeLoadvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b100101 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zLoad]{Load}#(H, false, false, base, rt, offset)) /* LHU */
diff --git a/cheri/sail_latex/sailsailsailsailfndecodeSomeStorevvv.tex b/cheri/sail_latex/sailsailsailsailfndecodeSomeStorevvv.tex
deleted file mode 100644
index 83e6bdf2..00000000
--- a/cheri/sail_latex/sailsailsailsailfndecodeSomeStorevvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b111111 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zStore]{Store}#(D, false, base, rt, offset)) /* SD */
diff --git a/cheri/sail_latex/sailsailsailsailfndecodeSomeTRAPIMMvvv.tex b/cheri/sail_latex/sailsailsailsailfndecodeSomeTRAPIMMvvv.tex
deleted file mode 100644
index 225ae50d..00000000
--- a/cheri/sail_latex/sailsailsailsailfndecodeSomeTRAPIMMvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000001 @ rs : regno @ 0b01001 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zTRAPIMM]{TRAPIMM}#(rs, imm, GEU)) /* TGEIU */
diff --git a/cheri/sail_latex/sailsailsailsailfndecodeSomeTRAPREGvvv.tex b/cheri/sail_latex/sailsailsailsailfndecodeSomeTRAPREGvvv.tex
deleted file mode 100644
index 4cd33da5..00000000
--- a/cheri/sail_latex/sailsailsailsailfndecodeSomeTRAPREGvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ code : #\hyperref[zbits]{bits}#(10) @ 0b110011) =
- #\hyperref[zSome]{Some}#(#\hyperref[zTRAPREG]{TRAPREG}#(rs, rt, LTU)) /* TLTU */
diff --git a/cheri/sail_latex/sailsailsailsailfndecodeSomevvv.tex b/cheri/sail_latex/sailsailsailsailfndecodeSomevvv.tex
deleted file mode 100644
index 2ef5d08d..00000000
--- a/cheri/sail_latex/sailsailsailsailfndecodeSomevvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010000 @ 0b10000000000000000000 @ 0b001000) = #\hyperref[zSome]{Some}#(#\hyperref[zTLBP]{TLBP}#() : ast)
diff --git a/cheri/sail_latex/sailsailsailsailmodbitsvvv.tex b/cheri/sail_latex/sailsailsailsailmodbitsvvv.tex
deleted file mode 100644
index bde40ee8..00000000
--- a/cheri/sail_latex/sailsailsailsailmodbitsvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_bits = {_get_XContextReg_bits, _set_XContextReg_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeBCMPZvvvv.tex b/cheri/sail_latex/sailsailsailsailsailfndecodeSomeBCMPZvvvv.tex
deleted file mode 100644
index cf942540..00000000
--- a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeBCMPZvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000001 @ rs : regno @ 0b00001 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBCMPZ]{BCMPZ}#(rs, imm, GE, false, false)) /* BGEZ */
diff --git a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeCLoadvvvv.tex b/cheri/sail_latex/sailsailsailsailsailfndecodeSomeCLoadvvvv.tex
deleted file mode 100644
index db208247..00000000
--- a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeCLoadvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b110010 @ rd : regno @ cb : regno@ rt : regno @ offset : #\hyperref[zbits]{bits}#(8) @ 0b0 @ 0b10) = #\hyperref[zSome]{Some}#(#\hyperref[zCLoad]{CLoad}#(rd, cb, rt, offset, false, W, false)) /* CLWU */
diff --git a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeCPtrCmpvvvv.tex b/cheri/sail_latex/sailsailsailsailsailfndecodeSomeCPtrCmpvvvv.tex
deleted file mode 100644
index c49c5823..00000000
--- a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeCPtrCmpvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b100) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, ct, CLTU))
diff --git a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeCStorevvvv.tex b/cheri/sail_latex/sailsailsailsailsailfndecodeSomeCStorevvvv.tex
deleted file mode 100644
index 50b5be16..00000000
--- a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeCStorevvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10000 @ rs : regno @ cb : regno @ rd : regno @ 0b0000 @ 0b00) = #\hyperref[zSome]{Some}#(#\hyperref[zCStore]{CStore}#(rs, cb, 0b00000, rd, 0b00000000, B, true)) /* CSCB */
diff --git a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeLoadvvvv.tex b/cheri/sail_latex/sailsailsailsailsailfndecodeSomeLoadvvvv.tex
deleted file mode 100644
index 4983e9f0..00000000
--- a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeLoadvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b100011 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zLoad]{Load}#(W, true, false, base, rt, offset)) /* LW */
diff --git a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeStorevvvv.tex b/cheri/sail_latex/sailsailsailsailsailfndecodeSomeStorevvvv.tex
deleted file mode 100644
index 64711c35..00000000
--- a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeStorevvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b111000 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zStore]{Store}#(W, true, base, rt, offset)) /* SC */
diff --git a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeTRAPIMMvvvv.tex b/cheri/sail_latex/sailsailsailsailsailfndecodeSomeTRAPIMMvvvv.tex
deleted file mode 100644
index 369341e7..00000000
--- a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeTRAPIMMvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000001 @ rs : regno @ 0b01010 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zTRAPIMM]{TRAPIMM}#(rs, imm, LT)) /* TLTI */
diff --git a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeTRAPREGvvvv.tex b/cheri/sail_latex/sailsailsailsailsailfndecodeSomeTRAPREGvvvv.tex
deleted file mode 100644
index ac4b2bdb..00000000
--- a/cheri/sail_latex/sailsailsailsailsailfndecodeSomeTRAPREGvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ code : #\hyperref[zbits]{bits}#(10) @ 0b110100) =
- #\hyperref[zSome]{Some}#(#\hyperref[zTRAPREG]{TRAPREG}#(rs, rt, EQ)) /* TEQ */
diff --git a/cheri/sail_latex/sailsailsailsailsailmodbitsvvvv.tex b/cheri/sail_latex/sailsailsailsailsailmodbitsvvvv.tex
deleted file mode 100644
index 8b2aac3e..00000000
--- a/cheri/sail_latex/sailsailsailsailsailmodbitsvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_bits = {_get_ContextReg_bits, _set_ContextReg_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeBCMPZvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeBCMPZvvvvv.tex
deleted file mode 100644
index 548182a5..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeBCMPZvvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000001 @ rs : regno @ 0b10001 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBCMPZ]{BCMPZ}#(rs, imm, GE, true, false)) /* BGEZAL */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeCLoadvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeCLoadvvvvv.tex
deleted file mode 100644
index 5f29eb1c..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeCLoadvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b110010 @ rd : regno @ cb : regno@ rt : regno @ offset : #\hyperref[zbits]{bits}#(8) @ 0b1 @ 0b10) = #\hyperref[zSome]{Some}#(#\hyperref[zCLoad]{CLoad}#(rd, cb, rt, offset, true, W, false)) /* CLW */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvv.tex
deleted file mode 100644
index 27f6c71c..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b101) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, ct, CLEU))
diff --git a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeCStorevvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeCStorevvvvv.tex
deleted file mode 100644
index 3b0a96ff..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeCStorevvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10000 @ rs : regno @ cb : regno @ rd : regno @ 0b0000 @ 0b01) = #\hyperref[zSome]{Some}#(#\hyperref[zCStore]{CStore}#(rs, cb, 0b00000, rd, 0b00000000, H, true)) /* CSCH */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeLoadvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeLoadvvvvv.tex
deleted file mode 100644
index 6bc11576..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeLoadvvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b100111 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zLoad]{Load}#(W, false, false, base, rt, offset)) /* LWU */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeStorevvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeStorevvvvv.tex
deleted file mode 100644
index e7f1c376..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeStorevvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b111100 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zStore]{Store}#(D, true, base, rt, offset)) /* SCD */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeTRAPIMMvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeTRAPIMMvvvvv.tex
deleted file mode 100644
index ee21bf92..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeTRAPIMMvvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000001 @ rs : regno @ 0b01011 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zTRAPIMM]{TRAPIMM}#(rs, imm, LTU)) /* TLTIU */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeTRAPREGvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeTRAPREGvvvvv.tex
deleted file mode 100644
index 15cb09f9..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailfndecodeSomeTRAPREGvvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000000 @ rs : regno @ rt : regno @ code : #\hyperref[zbits]{bits}#(10) @ 0b110110) =
- #\hyperref[zSome]{Some}#(#\hyperref[zTRAPREG]{TRAPREG}#(rs, rt, NE)) /* TNE */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailmodbitsvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailmodbitsvvvvv.tex
deleted file mode 100644
index d52fa2ec..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailmodbitsvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_bits = {_get_TLBEntryHiReg_bits, _set_TLBEntryHiReg_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvv.tex
deleted file mode 100644
index 1cadc33c..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000001 @ rs : regno @ 0b00011 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBCMPZ]{BCMPZ}#(rs, imm, GE, false, true)) /* BGEZL */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvv.tex
deleted file mode 100644
index 187c70a2..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b110010 @ rd : regno @ cb : regno@ rt : regno @ offset : #\hyperref[zbits]{bits}#(8) @ 0b0 @ 0b11) = #\hyperref[zSome]{Some}#(#\hyperref[zCLoad]{CLoad}#(rd, cb, rt, offset, false, D, false)) /* CLD */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvv.tex
deleted file mode 100644
index 26c46207..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b110) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, ct, CEXEQ))
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeCStorevvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeCStorevvvvvv.tex
deleted file mode 100644
index 1b2921e2..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeCStorevvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10000 @ rs : regno @ cb : regno @ rd : regno @ 0b0000 @ 0b10) = #\hyperref[zSome]{Some}#(#\hyperref[zCStore]{CStore}#(rs, cb, 0b00000, rd, 0b00000000, W, true)) /* CSCW */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeLoadvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeLoadvvvvvv.tex
deleted file mode 100644
index 1172d6d4..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailfndecodeSomeLoadvvvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b110111 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zLoad]{Load}#(D, false, false, base, rt, offset)) /* LD */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailmodbitsvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailmodbitsvvvvvv.tex
deleted file mode 100644
index 7ba9e37c..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailmodbitsvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_bits = {_get_TLBEntryLoReg_bits, _set_TLBEntryLoReg_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvv.tex
deleted file mode 100644
index 36b5eb5c..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000001 @ rs : regno @ 0b10011 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBCMPZ]{BCMPZ}#(rs, imm, GE, true, true)) /* BGEZALL */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvv.tex
deleted file mode 100644
index 91fb7205..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10000 @ rd : regno @ cb : regno @ 0b00000001 @ 0b0 @ 0b00) = #\hyperref[zSome]{Some}#(#\hyperref[zCLoad]{CLoad}#(rd, cb, 0b00000, 0b00000000, false, B, true)) /* CLLBU */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvv.tex
deleted file mode 100644
index 644864c8..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b01110 @ rd : regno @ cb : regno @ ct : regno @ 0b000 @ 0b111) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, ct, CNEXEQ))
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCStorevvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCStorevvvvvvv.tex
deleted file mode 100644
index cd3cbe68..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeCStorevvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10000 @ rs : regno @ cb : regno @ rd : regno @ 0b0000 @ 0b11) = #\hyperref[zSome]{Some}#(#\hyperref[zCStore]{CStore}#(rs, cb, 0b00000, rd, 0b00000000, D, true)) /* CSCD */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeLoadvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeLoadvvvvvvv.tex
deleted file mode 100644
index 61af3203..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailfndecodeSomeLoadvvvvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b110000 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zLoad]{Load}#(W, true, true, base, rt, offset)) /* LL */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailmodbitsvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailmodbitsvvvvvvv.tex
deleted file mode 100644
index b9059538..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailmodbitsvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload _mod_bits = {_get_CauseReg_bits, _set_CauseReg_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvv.tex
deleted file mode 100644
index 71d4e6a5..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000111 @ rs : regno @ 0b00000 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBCMPZ]{BCMPZ}#(rs, imm, GT, false, false)) /* BGTZ */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvv.tex
deleted file mode 100644
index 4b5608e4..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10000 @ rd : regno @ cb : regno @ 0b00000001 @ 0b1 @ 0b00) = #\hyperref[zSome]{Some}#(#\hyperref[zCLoad]{CLoad}#(rd, cb, 0b00000, 0b00000000, true, B, true)) /* CLLB */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvv.tex
deleted file mode 100644
index 5649673e..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b010100) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, cs, CEQ))
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeLoadvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeLoadvvvvvvvv.tex
deleted file mode 100644
index 99da4355..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailfndecodeSomeLoadvvvvvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b110100 @ base : regno @ rt : regno @ offset : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zLoad]{Load}#(D, false, true, base, rt, offset)) /* LLD */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvv.tex
deleted file mode 100644
index 53bc8683..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010111 @ rs : regno @ 0b00000 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBCMPZ]{BCMPZ}#(rs, imm, GT, false, true)) /* BGTZL */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvv.tex
deleted file mode 100644
index fde00667..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10000 @ rd : regno @ cb : regno @ 0b00000001 @ 0b0 @ 0b01) = #\hyperref[zSome]{Some}#(#\hyperref[zCLoad]{CLoad}#(rd, cb, 0b00000, 0b00000000, false, H, true)) /* CLLHU */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvv.tex
deleted file mode 100644
index a6a71fee..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b010101) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, cs, CNE))
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvvv.tex
deleted file mode 100644
index 1718e9a8..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b000110 @ rs : regno @ 0b00000 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBCMPZ]{BCMPZ}#(rs, imm, LE, false, false)) /* BLEZ */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvv.tex
deleted file mode 100644
index 72c5c950..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10000 @ rd : regno @ cb : regno @ 0b00000001 @ 0b1 @ 0b01) = #\hyperref[zSome]{Some}#(#\hyperref[zCLoad]{CLoad}#(rd, cb, 0b00000, 0b00000000, true, H, true)) /* CLLH */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvv.tex
deleted file mode 100644
index 0346ca8c..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b010110) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, cs, CLT))
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvvvv.tex
deleted file mode 100644
index f0772815..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeBCMPZvvvvvvvvvvv.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010110 @ rs : regno @ 0b00000 @ imm : imm16) =
- #\hyperref[zSome]{Some}#(#\hyperref[zBCMPZ]{BCMPZ}#(rs, imm, LE, false, true)) /* BLEZL */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvv.tex
deleted file mode 100644
index 3378b72a..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10000 @ rd : regno @ cb : regno @ 0b00000001 @ 0b0 @ 0b10) = #\hyperref[zSome]{Some}#(#\hyperref[zCLoad]{CLoad}#(rd, cb, 0b00000, 0b00000000, false, W, true)) /* CLLWU */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvv.tex
deleted file mode 100644
index 133bc7e4..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b010111) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, cs, CLE))
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvvv.tex
deleted file mode 100644
index c9a4c20e..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10000 @ rd : regno @ cb : regno @ 0b00000001 @ 0b1 @ 0b10) = #\hyperref[zSome]{Some}#(#\hyperref[zCLoad]{CLoad}#(rd, cb, 0b00000, 0b00000000, true, W, true)) /* CLLW */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvv.tex
deleted file mode 100644
index 0b8afa50..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b011000) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, cs, CLTU))
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvvvv.tex
deleted file mode 100644
index 791243c3..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCLoadvvvvvvvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b10000 @ rd : regno @ cb : regno @ 0b00000001 @ 0b0 @ 0b11) = #\hyperref[zSome]{Some}#(#\hyperref[zCLoad]{CLoad}#(rd, cb, 0b00000, 0b00000000, false, D, true)) /* CLLD */
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvv.tex
deleted file mode 100644
index f37b5e5a..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b011001) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, cs, CLEU))
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvvv.tex
deleted file mode 100644
index 709a6f6d..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b011010) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, cs, CEXEQ))
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvvvv.tex
deleted file mode 100644
index ae2792ce..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailsailsailsailsailsailsailsailsailfndecodeSomeCPtrCmpvvvvvvvvvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-function clause #\hyperref[zdecode]{decode}# (0b010010 @ 0b00000 @ rd : regno @ cb : regno @ cs : regno @ 0b100001) = #\hyperref[zSome]{Some}#(#\hyperref[zCPtrCmp]{CPtrCmp}#(rd, cb, cs, CNEXEQ))
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailsailupdatebitsvvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailsailupdatebitsvvvvvvv.tex
deleted file mode 100644
index 1be74427..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailsailupdatebitsvvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_bits = {_update_CauseReg_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailsailsailsailsailupdatebitsvvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailsailupdatebitsvvvvvv.tex
deleted file mode 100644
index 60c5e7a6..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailsailupdatebitsvvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_bits = {_update_TLBEntryLoReg_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailsailsailsailupdatebitsvvvvv.tex b/cheri/sail_latex/sailsailsailsailsailsailupdatebitsvvvvv.tex
deleted file mode 100644
index efc2c5b0..00000000
--- a/cheri/sail_latex/sailsailsailsailsailsailupdatebitsvvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_bits = {_update_TLBEntryHiReg_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailsailsailupdatebitsvvvv.tex b/cheri/sail_latex/sailsailsailsailsailupdatebitsvvvv.tex
deleted file mode 100644
index c4d81402..00000000
--- a/cheri/sail_latex/sailsailsailsailsailupdatebitsvvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_bits = {_update_ContextReg_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailsailupdatebitsvvv.tex b/cheri/sail_latex/sailsailsailsailupdatebitsvvv.tex
deleted file mode 100644
index 28ee31f9..00000000
--- a/cheri/sail_latex/sailsailsailsailupdatebitsvvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_bits = {_update_XContextReg_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailsailzeightoperatorzzerozJzJzninevvv.tex b/cheri/sail_latex/sailsailsailsailzeightoperatorzzerozJzJzninevvv.tex
deleted file mode 100644
index 0f72fdc9..00000000
--- a/cheri/sail_latex/sailsailsailsailzeightoperatorzzerozJzJzninevvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator ==) = {eq_bit2} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailupdatebitsvv.tex b/cheri/sail_latex/sailsailsailupdatebitsvv.tex
deleted file mode 100644
index 64d81afd..00000000
--- a/cheri/sail_latex/sailsailsailupdatebitsvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_bits = {_update_TLBEntry_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailzeightoperatorzzerozBzninevv.tex b/cheri/sail_latex/sailsailsailzeightoperatorzzerozBzninevv.tex
deleted file mode 100644
index eacd556c..00000000
--- a/cheri/sail_latex/sailsailsailzeightoperatorzzerozBzninevv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator +) = {add_atom, add_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailzeightoperatorzzerozFzninevv.tex b/cheri/sail_latex/sailsailsailzeightoperatorzzerozFzninevv.tex
deleted file mode 100644
index 73c40722..00000000
--- a/cheri/sail_latex/sailsailsailzeightoperatorzzerozFzninevv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator /) = {div} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailzeightoperatorzzerozJzJzninevv.tex b/cheri/sail_latex/sailsailsailzeightoperatorzzerozJzJzninevv.tex
deleted file mode 100644
index 47b1d0f6..00000000
--- a/cheri/sail_latex/sailsailsailzeightoperatorzzerozJzJzninevv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator ==) = {eq_atom, eq_range, eq_int, eq_bool} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsailzeightoperatorzzerozfivezninevv.tex b/cheri/sail_latex/sailsailsailzeightoperatorzzerozfivezninevv.tex
deleted file mode 100644
index 552e0c24..00000000
--- a/cheri/sail_latex/sailsailsailzeightoperatorzzerozfivezninevv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator %) = {mod} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailsignextend.tex b/cheri/sail_latex/sailsailsignextend.tex
deleted file mode 100644
index dfaa5c86..00000000
--- a/cheri/sail_latex/sailsailsignextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sail_sign_extend = "sign_extend" : forall 'n 'm, 'm >= 'n. (#\hyperref[zbits]{bits}#('n), atom('m)) -> #\hyperref[zbits]{bits}#('m)
diff --git a/cheri/sail_latex/sailsailupdateASIDv.tex b/cheri/sail_latex/sailsailupdateASIDv.tex
deleted file mode 100644
index f415980a..00000000
--- a/cheri/sail_latex/sailsailupdateASIDv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_ASID = {_update_TLBEntryHiReg_ASID} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailupdateExcCodev.tex b/cheri/sail_latex/sailsailupdateExcCodev.tex
deleted file mode 100644
index 041de51c..00000000
--- a/cheri/sail_latex/sailsailupdateExcCodev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_ExcCode = {_update_CauseReg_ExcCode} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailupdateGv.tex b/cheri/sail_latex/sailsailupdateGv.tex
deleted file mode 100644
index 23f7bf3c..00000000
--- a/cheri/sail_latex/sailsailupdateGv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_G = {_update_TLBEntryLoReg_G} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailupdateRv.tex b/cheri/sail_latex/sailsailupdateRv.tex
deleted file mode 100644
index 03a3a143..00000000
--- a/cheri/sail_latex/sailsailupdateRv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_R = {_update_TLBEntryHiReg_R} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailupdateVPNtwov.tex b/cheri/sail_latex/sailsailupdateVPNtwov.tex
deleted file mode 100644
index e2b42a9a..00000000
--- a/cheri/sail_latex/sailsailupdateVPNtwov.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_VPN2 = {_update_TLBEntryHiReg_VPN2} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailupdatebitsv.tex b/cheri/sail_latex/sailsailupdatebitsv.tex
deleted file mode 100644
index cc90c98a..00000000
--- a/cheri/sail_latex/sailsailupdatebitsv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_bits = {_update_StatusReg_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailzeightoperatorzzerozAzninev.tex b/cheri/sail_latex/sailsailzeightoperatorzzerozAzninev.tex
deleted file mode 100644
index afe7a721..00000000
--- a/cheri/sail_latex/sailsailzeightoperatorzzerozAzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator *) = {mult_atom, mult_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailzeightoperatorzzerozBzninev.tex b/cheri/sail_latex/sailsailzeightoperatorzzerozBzninev.tex
deleted file mode 100644
index ddc56bfd..00000000
--- a/cheri/sail_latex/sailsailzeightoperatorzzerozBzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator +) = {add_bits, add_bits_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailzeightoperatorzzerozDzninev.tex b/cheri/sail_latex/sailsailzeightoperatorzzerozDzninev.tex
deleted file mode 100644
index 5d12fdf1..00000000
--- a/cheri/sail_latex/sailsailzeightoperatorzzerozDzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator -) = {sub_atom, sub_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailzeightoperatorzzerozFzninev.tex b/cheri/sail_latex/sailsailzeightoperatorzzerozFzninev.tex
deleted file mode 100644
index 38e9124b..00000000
--- a/cheri/sail_latex/sailsailzeightoperatorzzerozFzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator /) = {div_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailzeightoperatorzzerozJzJzninev.tex b/cheri/sail_latex/sailsailzeightoperatorzzerozJzJzninev.tex
deleted file mode 100644
index 1314a962..00000000
--- a/cheri/sail_latex/sailsailzeightoperatorzzerozJzJzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator ==) = {eq_bit, eq_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailzeightoperatorzzerozQzninev.tex b/cheri/sail_latex/sailsailzeightoperatorzzerozQzninev.tex
deleted file mode 100644
index 05769645..00000000
--- a/cheri/sail_latex/sailsailzeightoperatorzzerozQzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator ^) = {sail_mask} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailzeightoperatorzzerozUzninev.tex b/cheri/sail_latex/sailsailzeightoperatorzzerozUzninev.tex
deleted file mode 100644
index 1ebacbc4..00000000
--- a/cheri/sail_latex/sailsailzeightoperatorzzerozUzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator |) = {or_bool} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailzeightoperatorzzerozfivezninev.tex b/cheri/sail_latex/sailsailzeightoperatorzzerozfivezninev.tex
deleted file mode 100644
index 14fa73b8..00000000
--- a/cheri/sail_latex/sailsailzeightoperatorzzerozfivezninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator %) = {mod_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailzeightoperatorzzerozonezJzninev.tex b/cheri/sail_latex/sailsailzeightoperatorzzerozonezJzninev.tex
deleted file mode 100644
index 527cf596..00000000
--- a/cheri/sail_latex/sailsailzeightoperatorzzerozonezJzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator !=) = {neq_atom, neq_range, neq_int, neq_bool} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailzeightoperatorzzerozsixzninev.tex b/cheri/sail_latex/sailsailzeightoperatorzzerozsixzninev.tex
deleted file mode 100644
index be6f29ef..00000000
--- a/cheri/sail_latex/sailsailzeightoperatorzzerozsixzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator &) = {and_bool} \ No newline at end of file
diff --git a/cheri/sail_latex/sailsailzzeroextend.tex b/cheri/sail_latex/sailsailzzeroextend.tex
deleted file mode 100644
index 53f6fff9..00000000
--- a/cheri/sail_latex/sailsailzzeroextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sail_zero_extend = "zero_extend" : forall 'n 'm, 'm >= 'n. (#\hyperref[zbits]{bits}#('n), atom('m)) -> #\hyperref[zbits]{bits}#('m)
diff --git a/cheri/sail_latex/sailsailzzeros.tex b/cheri/sail_latex/sailsailzzeros.tex
deleted file mode 100644
index 9c60aa12..00000000
--- a/cheri/sail_latex/sailsailzzeros.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sail_zeros = "zeros" : forall 'n. atom('n) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailsealCap.tex b/cheri/sail_latex/sailsealCap.tex
deleted file mode 100644
index 891ae279..00000000
--- a/cheri/sail_latex/sailsealCap.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sealCap : (CapStruct, bits(24)) -> (bool, CapStruct)
diff --git a/cheri/sail_latex/sailsetCapBounds.tex b/cheri/sail_latex/sailsetCapBounds.tex
deleted file mode 100644
index 6984ccf1..00000000
--- a/cheri/sail_latex/sailsetCapBounds.tex
+++ /dev/null
@@ -1 +0,0 @@
-val setCapBounds : (CapStruct, #\hyperref[zbits]{bits}#(64), #\hyperref[zbits]{bits}#(65)) -> (bool, CapStruct)
diff --git a/cheri/sail_latex/sailsetCapCauseRegExcCode.tex b/cheri/sail_latex/sailsetCapCauseRegExcCode.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetCapCauseRegExcCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetCapCauseRegRegNum.tex b/cheri/sail_latex/sailsetCapCauseRegRegNum.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetCapCauseRegRegNum.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetCapCauseRegbits.tex b/cheri/sail_latex/sailsetCapCauseRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetCapCauseRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetCapOffset.tex b/cheri/sail_latex/sailsetCapOffset.tex
deleted file mode 100644
index d2fca67a..00000000
--- a/cheri/sail_latex/sailsetCapOffset.tex
+++ /dev/null
@@ -1 +0,0 @@
-val setCapOffset : (CapStruct, #\hyperref[zbits]{bits}#(64)) -> (bool, CapStruct)
diff --git a/cheri/sail_latex/sailsetCapPerms.tex b/cheri/sail_latex/sailsetCapPerms.tex
deleted file mode 100644
index 617f19fb..00000000
--- a/cheri/sail_latex/sailsetCapPerms.tex
+++ /dev/null
@@ -1 +0,0 @@
-val setCapPerms : (CapStruct, bits(31)) -> CapStruct
diff --git a/cheri/sail_latex/sailsetCauseRegBD.tex b/cheri/sail_latex/sailsetCauseRegBD.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetCauseRegBD.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetCauseRegCE.tex b/cheri/sail_latex/sailsetCauseRegCE.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetCauseRegCE.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetCauseRegExcCode.tex b/cheri/sail_latex/sailsetCauseRegExcCode.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetCauseRegExcCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetCauseRegIP.tex b/cheri/sail_latex/sailsetCauseRegIP.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetCauseRegIP.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetCauseRegIV.tex b/cheri/sail_latex/sailsetCauseRegIV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetCauseRegIV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetCauseRegWP.tex b/cheri/sail_latex/sailsetCauseRegWP.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetCauseRegWP.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetCauseRegbits.tex b/cheri/sail_latex/sailsetCauseRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetCauseRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetContextRegBadVPNtwo.tex b/cheri/sail_latex/sailsetContextRegBadVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetContextRegBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetContextRegPTEBase.tex b/cheri/sail_latex/sailsetContextRegPTEBase.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetContextRegPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetContextRegbits.tex b/cheri/sail_latex/sailsetContextRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetContextRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetStatusRegBEV.tex b/cheri/sail_latex/sailsetStatusRegBEV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetStatusRegBEV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetStatusRegCU.tex b/cheri/sail_latex/sailsetStatusRegCU.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetStatusRegCU.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetStatusRegERL.tex b/cheri/sail_latex/sailsetStatusRegERL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetStatusRegERL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetStatusRegEXL.tex b/cheri/sail_latex/sailsetStatusRegEXL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetStatusRegEXL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetStatusRegIE.tex b/cheri/sail_latex/sailsetStatusRegIE.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetStatusRegIE.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetStatusRegIM.tex b/cheri/sail_latex/sailsetStatusRegIM.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetStatusRegIM.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetStatusRegKSU.tex b/cheri/sail_latex/sailsetStatusRegKSU.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetStatusRegKSU.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetStatusRegKX.tex b/cheri/sail_latex/sailsetStatusRegKX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetStatusRegKX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetStatusRegSX.tex b/cheri/sail_latex/sailsetStatusRegSX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetStatusRegSX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetStatusRegUX.tex b/cheri/sail_latex/sailsetStatusRegUX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetStatusRegUX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetStatusRegbits.tex b/cheri/sail_latex/sailsetStatusRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetStatusRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryHiRegASID.tex b/cheri/sail_latex/sailsetTLBEntryHiRegASID.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryHiRegASID.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryHiRegR.tex b/cheri/sail_latex/sailsetTLBEntryHiRegR.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryHiRegR.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryHiRegVPNtwo.tex b/cheri/sail_latex/sailsetTLBEntryHiRegVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryHiRegVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryHiRegbits.tex b/cheri/sail_latex/sailsetTLBEntryHiRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryHiRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryLoRegC.tex b/cheri/sail_latex/sailsetTLBEntryLoRegC.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryLoRegC.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryLoRegCapL.tex b/cheri/sail_latex/sailsetTLBEntryLoRegCapL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryLoRegCapL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryLoRegCapS.tex b/cheri/sail_latex/sailsetTLBEntryLoRegCapS.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryLoRegCapS.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryLoRegD.tex b/cheri/sail_latex/sailsetTLBEntryLoRegD.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryLoRegD.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryLoRegG.tex b/cheri/sail_latex/sailsetTLBEntryLoRegG.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryLoRegG.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryLoRegPFN.tex b/cheri/sail_latex/sailsetTLBEntryLoRegPFN.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryLoRegPFN.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryLoRegV.tex b/cheri/sail_latex/sailsetTLBEntryLoRegV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryLoRegV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryLoRegbits.tex b/cheri/sail_latex/sailsetTLBEntryLoRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryLoRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryasid.tex b/cheri/sail_latex/sailsetTLBEntryasid.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryasid.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntrybits.tex b/cheri/sail_latex/sailsetTLBEntrybits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntrybits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntrycaplone.tex b/cheri/sail_latex/sailsetTLBEntrycaplone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntrycaplone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntrycaplzero.tex b/cheri/sail_latex/sailsetTLBEntrycaplzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntrycaplzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntrycapsone.tex b/cheri/sail_latex/sailsetTLBEntrycapsone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntrycapsone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntrycapszero.tex b/cheri/sail_latex/sailsetTLBEntrycapszero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntrycapszero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntrycone.tex b/cheri/sail_latex/sailsetTLBEntrycone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntrycone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryczero.tex b/cheri/sail_latex/sailsetTLBEntryczero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryczero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntrydone.tex b/cheri/sail_latex/sailsetTLBEntrydone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntrydone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntrydzero.tex b/cheri/sail_latex/sailsetTLBEntrydzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntrydzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryg.tex b/cheri/sail_latex/sailsetTLBEntryg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntrypagemask.tex b/cheri/sail_latex/sailsetTLBEntrypagemask.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntrypagemask.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntrypfnone.tex b/cheri/sail_latex/sailsetTLBEntrypfnone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntrypfnone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntrypfnzero.tex b/cheri/sail_latex/sailsetTLBEntrypfnzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntrypfnzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryr.tex b/cheri/sail_latex/sailsetTLBEntryr.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryr.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryvalid.tex b/cheri/sail_latex/sailsetTLBEntryvalid.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryvalid.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryvone.tex b/cheri/sail_latex/sailsetTLBEntryvone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryvone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryvpntwo.tex b/cheri/sail_latex/sailsetTLBEntryvpntwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryvpntwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetTLBEntryvzero.tex b/cheri/sail_latex/sailsetTLBEntryvzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetTLBEntryvzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetXContextRegXBadVPNtwo.tex b/cheri/sail_latex/sailsetXContextRegXBadVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetXContextRegXBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetXContextRegXPTEBase.tex b/cheri/sail_latex/sailsetXContextRegXPTEBase.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetXContextRegXPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetXContextRegXR.tex b/cheri/sail_latex/sailsetXContextRegXR.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetXContextRegXR.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetXContextRegbits.tex b/cheri/sail_latex/sailsetXContextRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailsetXContextRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailsetslicebits.tex b/cheri/sail_latex/sailsetslicebits.tex
deleted file mode 100644
index 8a81bff5..00000000
--- a/cheri/sail_latex/sailsetslicebits.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val set_slice_bits = "set_slice" : forall 'n 'm.
- (atom('n), atom('m), #\hyperref[zbits]{bits}#('n), int, #\hyperref[zbits]{bits}#('m)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailsetsliceint.tex b/cheri/sail_latex/sailsetsliceint.tex
deleted file mode 100644
index 413bf721..00000000
--- a/cheri/sail_latex/sailsetsliceint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val set_slice_int = "set_slice_int" : forall 'w. (atom('w), int, int, #\hyperref[zbits]{bits}#('w)) -> int
diff --git a/cheri/sail_latex/sailshiftbitsleft.tex b/cheri/sail_latex/sailshiftbitsleft.tex
deleted file mode 100644
index cdb2eb6a..00000000
--- a/cheri/sail_latex/sailshiftbitsleft.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "shift_bits_left" : forall 'n 'm. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('m)) -> #\hyperref[zbits]{bits}#('n) effect {undef}
diff --git a/cheri/sail_latex/sailshiftbitsright.tex b/cheri/sail_latex/sailshiftbitsright.tex
deleted file mode 100644
index dbc72b11..00000000
--- a/cheri/sail_latex/sailshiftbitsright.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "shift_bits_right" : forall 'n 'm. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('m)) -> #\hyperref[zbits]{bits}#('n) effect {undef}
diff --git a/cheri/sail_latex/sailshiftl.tex b/cheri/sail_latex/sailshiftl.tex
deleted file mode 100644
index b2c54c27..00000000
--- a/cheri/sail_latex/sailshiftl.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "shiftl" : forall 'm 'n, 'n >= 0. (#\hyperref[zbits]{bits}#('m), atom('n)) -> #\hyperref[zbits]{bits}#('m)
diff --git a/cheri/sail_latex/sailshiftr.tex b/cheri/sail_latex/sailshiftr.tex
deleted file mode 100644
index f282dcbe..00000000
--- a/cheri/sail_latex/sailshiftr.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "shiftr" : forall 'm 'n, 'n >= 0. (#\hyperref[zbits]{bits}#('m), atom('n)) -> #\hyperref[zbits]{bits}#('m)
diff --git a/cheri/sail_latex/sailshlint.tex b/cheri/sail_latex/sailshlint.tex
deleted file mode 100644
index 8ffbcf6c..00000000
--- a/cheri/sail_latex/sailshlint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val shl_int = "shl_int" : (int, int) -> int
diff --git a/cheri/sail_latex/sailshrint.tex b/cheri/sail_latex/sailshrint.tex
deleted file mode 100644
index 087c17bb..00000000
--- a/cheri/sail_latex/sailshrint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val shr_int = "shr_int" : (int, int) -> int
diff --git a/cheri/sail_latex/sailsigned.tex b/cheri/sail_latex/sailsigned.tex
deleted file mode 100644
index dcdc3049..00000000
--- a/cheri/sail_latex/sailsigned.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-val signed = {
- c: "sail_signed",
- _: "sint"
-} : forall 'n, 'n > 0. #\hyperref[zbits]{bits}#('n) -> range(- (2 ^ ('n - 1)), 2 ^ ('n - 1) - 1)
diff --git a/cheri/sail_latex/sailsignextend.tex b/cheri/sail_latex/sailsignextend.tex
deleted file mode 100644
index 03f56369..00000000
--- a/cheri/sail_latex/sailsignextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload sign_extend = {mips_sign_extend} \ No newline at end of file
diff --git a/cheri/sail_latex/sailskipbarr.tex b/cheri/sail_latex/sailskipbarr.tex
deleted file mode 100644
index 52a6bedd..00000000
--- a/cheri/sail_latex/sailskipbarr.tex
+++ /dev/null
@@ -1 +0,0 @@
-val skip_barr = "skip" : unit -> unit effect {barr}
diff --git a/cheri/sail_latex/sailskipeamem.tex b/cheri/sail_latex/sailskipeamem.tex
deleted file mode 100644
index b6199f85..00000000
--- a/cheri/sail_latex/sailskipeamem.tex
+++ /dev/null
@@ -1 +0,0 @@
-val skip_eamem = "skip" : unit -> unit effect {eamem}
diff --git a/cheri/sail_latex/sailskipescape.tex b/cheri/sail_latex/sailskipescape.tex
deleted file mode 100644
index 413b5c1f..00000000
--- a/cheri/sail_latex/sailskipescape.tex
+++ /dev/null
@@ -1 +0,0 @@
-val skip_escape = "skip" : unit -> unit effect {escape}
diff --git a/cheri/sail_latex/sailskiprmemt.tex b/cheri/sail_latex/sailskiprmemt.tex
deleted file mode 100644
index 97c88af4..00000000
--- a/cheri/sail_latex/sailskiprmemt.tex
+++ /dev/null
@@ -1 +0,0 @@
-val skip_rmemt = "skip" : unit -> unit effect {rmemt}
diff --git a/cheri/sail_latex/sailskiprreg.tex b/cheri/sail_latex/sailskiprreg.tex
deleted file mode 100644
index 08804f54..00000000
--- a/cheri/sail_latex/sailskiprreg.tex
+++ /dev/null
@@ -1 +0,0 @@
-val skip_rreg = "skip" : unit -> unit effect {rreg}
diff --git a/cheri/sail_latex/sailskipwmvt.tex b/cheri/sail_latex/sailskipwmvt.tex
deleted file mode 100644
index 8f991c20..00000000
--- a/cheri/sail_latex/sailskipwmvt.tex
+++ /dev/null
@@ -1 +0,0 @@
-val skip_wmvt = "skip" : unit -> unit effect {wmvt}
diff --git a/cheri/sail_latex/sailskipwreg.tex b/cheri/sail_latex/sailskipwreg.tex
deleted file mode 100644
index e79f7c10..00000000
--- a/cheri/sail_latex/sailskipwreg.tex
+++ /dev/null
@@ -1 +0,0 @@
-val skip_wreg = "skip" : unit -> unit effect {wreg}
diff --git a/cheri/sail_latex/sailslice.tex b/cheri/sail_latex/sailslice.tex
deleted file mode 100644
index b9bb5a70..00000000
--- a/cheri/sail_latex/sailslice.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val slice = "slice" : forall 'n 'm 'o, 0 <= 'o < 'm & 'o + 'n <= 'm & 0 <= 'n.
- (#\hyperref[zbits]{bits}#('m), atom('o), atom('n)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailstringofint.tex b/cheri/sail_latex/sailstringofint.tex
deleted file mode 100644
index 05edaa20..00000000
--- a/cheri/sail_latex/sailstringofint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val string_of_int = "string_of_int" : int -> string
diff --git a/cheri/sail_latex/sailsubatom.tex b/cheri/sail_latex/sailsubatom.tex
deleted file mode 100644
index 437e2d4c..00000000
--- a/cheri/sail_latex/sailsubatom.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val sub_atom = {ocaml: "sub_int", lem: "integerMinus", c: "sub_int", coq: "Z.sub"} : forall 'n 'm.
- (atom('n), atom('m)) -> atom('n - 'm)
diff --git a/cheri/sail_latex/sailsubint.tex b/cheri/sail_latex/sailsubint.tex
deleted file mode 100644
index 11fdf922..00000000
--- a/cheri/sail_latex/sailsubint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sub_int = {ocaml: "sub_int", lem: "integerMinus", c: "sub_int", coq: "Z.sub"} : (int, int) -> int
diff --git a/cheri/sail_latex/sailsubrange.tex b/cheri/sail_latex/sailsubrange.tex
deleted file mode 100644
index 2aad56b6..00000000
--- a/cheri/sail_latex/sailsubrange.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val sub_range = {ocaml: "sub_int", lem: "integerMinus", coq: "sub_range"} : forall 'n 'm 'o 'p.
- (range('n, 'm), range('o, 'p)) -> range('n - 'p, 'm - 'o)
diff --git a/cheri/sail_latex/sailsubvec.tex b/cheri/sail_latex/sailsubvec.tex
deleted file mode 100644
index b92f07a4..00000000
--- a/cheri/sail_latex/sailsubvec.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sub_vec = {c : "sub_bits", _:"sub_vec"} : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailsubvecint.tex b/cheri/sail_latex/sailsubvecint.tex
deleted file mode 100644
index 70bf667e..00000000
--- a/cheri/sail_latex/sailsubvecint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sub_vec_int = {c:"sub_bits_int", _: "sub_vec_int"} : forall 'n. (#\hyperref[zbits]{bits}#('n), int) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailsupportedinstructions.tex b/cheri/sail_latex/sailsupportedinstructions.tex
deleted file mode 100644
index 489c178d..00000000
--- a/cheri/sail_latex/sailsupportedinstructions.tex
+++ /dev/null
@@ -1 +0,0 @@
-val supported_instructions : ast -> #\hyperref[zoption]{option}#(ast)
diff --git a/cheri/sail_latex/sailtlbEntryMatch.tex b/cheri/sail_latex/sailtlbEntryMatch.tex
deleted file mode 100644
index c8461b89..00000000
--- a/cheri/sail_latex/sailtlbEntryMatch.tex
+++ /dev/null
@@ -1 +0,0 @@
-val tlbEntryMatch : (#\hyperref[zbits]{bits}#(2), #\hyperref[zbits]{bits}#(27), #\hyperref[zbits]{bits}#(8), TLBEntry) -> bool effect pure
diff --git a/cheri/sail_latex/sailtlbSearch.tex b/cheri/sail_latex/sailtlbSearch.tex
deleted file mode 100644
index 4e391617..00000000
--- a/cheri/sail_latex/sailtlbSearch.tex
+++ /dev/null
@@ -1 +0,0 @@
-val tlbSearch : #\hyperref[zbits]{bits}#(64) -> #\hyperref[zoption]{option}#(TLBIndexT) effect {rreg}
diff --git a/cheri/sail_latex/sailtobits.tex b/cheri/sail_latex/sailtobits.tex
deleted file mode 100644
index 9dd3c655..00000000
--- a/cheri/sail_latex/sailtobits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val to_bits : forall 'l, 'l >= 0 .(atom('l), int) -> #\hyperref[zbits]{bits}#('l)
diff --git a/cheri/sail_latex/sailtruncate.tex b/cheri/sail_latex/sailtruncate.tex
deleted file mode 100644
index 5f7760f3..00000000
--- a/cheri/sail_latex/sailtruncate.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val truncate = {
- ocaml: "vector_truncate",
- lem: "vector_truncate",
- coq: "vector_truncate",
- c: "sail_truncate"
-} : forall 'm 'n, 'm >= 0 & 'm <= 'n. (vector('n, dec, bit), atom('m)) -> vector('m, dec, bit)
diff --git a/cheri/sail_latex/sailuintsixfour.tex b/cheri/sail_latex/sailuintsixfour.tex
deleted file mode 100644
index a0d52c8f..00000000
--- a/cheri/sail_latex/sailuintsixfour.tex
+++ /dev/null
@@ -1 +0,0 @@
-type uint64 = range(0, (2 ^ 64) - 1)
diff --git a/cheri/sail_latex/sailunsigned.tex b/cheri/sail_latex/sailunsigned.tex
deleted file mode 100644
index 47867039..00000000
--- a/cheri/sail_latex/sailunsigned.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-val unsigned = {
- ocaml: "uint",
- lem: "uint",
- interpreter: "uint",
- c: "sail_unsigned",
- coq: "uint"
-} : forall 'n. #\hyperref[zbits]{bits}#('n) -> range(0, 2 ^ 'n - 1)
diff --git a/cheri/sail_latex/sailupdateBD.tex b/cheri/sail_latex/sailupdateBD.tex
deleted file mode 100644
index db94f260..00000000
--- a/cheri/sail_latex/sailupdateBD.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_BD = {_update_CauseReg_BD} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateBEV.tex b/cheri/sail_latex/sailupdateBEV.tex
deleted file mode 100644
index e45f5c7d..00000000
--- a/cheri/sail_latex/sailupdateBEV.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_BEV = {_update_StatusReg_BEV} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateBadVPNtwo.tex b/cheri/sail_latex/sailupdateBadVPNtwo.tex
deleted file mode 100644
index 7b9f2827..00000000
--- a/cheri/sail_latex/sailupdateBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_BadVPN2 = {_update_ContextReg_BadVPN2} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateC.tex b/cheri/sail_latex/sailupdateC.tex
deleted file mode 100644
index 4e4756e3..00000000
--- a/cheri/sail_latex/sailupdateC.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_C = {_update_TLBEntryLoReg_C} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateCE.tex b/cheri/sail_latex/sailupdateCE.tex
deleted file mode 100644
index 12be67a2..00000000
--- a/cheri/sail_latex/sailupdateCE.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_CE = {_update_CauseReg_CE} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateCU.tex b/cheri/sail_latex/sailupdateCU.tex
deleted file mode 100644
index fcc82986..00000000
--- a/cheri/sail_latex/sailupdateCU.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_CU = {_update_StatusReg_CU} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateCapCauseRegExcCode.tex b/cheri/sail_latex/sailupdateCapCauseRegExcCode.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateCapCauseRegExcCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateCapCauseRegRegNum.tex b/cheri/sail_latex/sailupdateCapCauseRegRegNum.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateCapCauseRegRegNum.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateCapCauseRegbits.tex b/cheri/sail_latex/sailupdateCapCauseRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateCapCauseRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateCapL.tex b/cheri/sail_latex/sailupdateCapL.tex
deleted file mode 100644
index 7b0d8471..00000000
--- a/cheri/sail_latex/sailupdateCapL.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_CapL = {_update_TLBEntryLoReg_CapL} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateCapS.tex b/cheri/sail_latex/sailupdateCapS.tex
deleted file mode 100644
index dfe685ee..00000000
--- a/cheri/sail_latex/sailupdateCapS.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_CapS = {_update_TLBEntryLoReg_CapS} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateCauseRegBD.tex b/cheri/sail_latex/sailupdateCauseRegBD.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateCauseRegBD.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateCauseRegCE.tex b/cheri/sail_latex/sailupdateCauseRegCE.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateCauseRegCE.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateCauseRegExcCode.tex b/cheri/sail_latex/sailupdateCauseRegExcCode.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateCauseRegExcCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateCauseRegIP.tex b/cheri/sail_latex/sailupdateCauseRegIP.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateCauseRegIP.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateCauseRegIV.tex b/cheri/sail_latex/sailupdateCauseRegIV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateCauseRegIV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateCauseRegWP.tex b/cheri/sail_latex/sailupdateCauseRegWP.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateCauseRegWP.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateCauseRegbits.tex b/cheri/sail_latex/sailupdateCauseRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateCauseRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateContextRegBadVPNtwo.tex b/cheri/sail_latex/sailupdateContextRegBadVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateContextRegBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateContextRegPTEBase.tex b/cheri/sail_latex/sailupdateContextRegPTEBase.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateContextRegPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateContextRegbits.tex b/cheri/sail_latex/sailupdateContextRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateContextRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateD.tex b/cheri/sail_latex/sailupdateD.tex
deleted file mode 100644
index 2f367d1e..00000000
--- a/cheri/sail_latex/sailupdateD.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_D = {_update_TLBEntryLoReg_D} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateERL.tex b/cheri/sail_latex/sailupdateERL.tex
deleted file mode 100644
index d1f9da12..00000000
--- a/cheri/sail_latex/sailupdateERL.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_ERL = {_update_StatusReg_ERL} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateEXL.tex b/cheri/sail_latex/sailupdateEXL.tex
deleted file mode 100644
index 9d82b64d..00000000
--- a/cheri/sail_latex/sailupdateEXL.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_EXL = {_update_StatusReg_EXL} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateExcCode.tex b/cheri/sail_latex/sailupdateExcCode.tex
deleted file mode 100644
index 38736fe7..00000000
--- a/cheri/sail_latex/sailupdateExcCode.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_ExcCode = {_update_CapCauseReg_ExcCode} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateIE.tex b/cheri/sail_latex/sailupdateIE.tex
deleted file mode 100644
index 421e8744..00000000
--- a/cheri/sail_latex/sailupdateIE.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_IE = {_update_StatusReg_IE} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateIM.tex b/cheri/sail_latex/sailupdateIM.tex
deleted file mode 100644
index 6128559a..00000000
--- a/cheri/sail_latex/sailupdateIM.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_IM = {_update_StatusReg_IM} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateIP.tex b/cheri/sail_latex/sailupdateIP.tex
deleted file mode 100644
index 1b855a0b..00000000
--- a/cheri/sail_latex/sailupdateIP.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_IP = {_update_CauseReg_IP} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateIV.tex b/cheri/sail_latex/sailupdateIV.tex
deleted file mode 100644
index 7cfa3a60..00000000
--- a/cheri/sail_latex/sailupdateIV.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_IV = {_update_CauseReg_IV} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateKSU.tex b/cheri/sail_latex/sailupdateKSU.tex
deleted file mode 100644
index b5688537..00000000
--- a/cheri/sail_latex/sailupdateKSU.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_KSU = {_update_StatusReg_KSU} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateKX.tex b/cheri/sail_latex/sailupdateKX.tex
deleted file mode 100644
index ff23da68..00000000
--- a/cheri/sail_latex/sailupdateKX.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_KX = {_update_StatusReg_KX} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatePFN.tex b/cheri/sail_latex/sailupdatePFN.tex
deleted file mode 100644
index fa32c59b..00000000
--- a/cheri/sail_latex/sailupdatePFN.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_PFN = {_update_TLBEntryLoReg_PFN} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatePTEBase.tex b/cheri/sail_latex/sailupdatePTEBase.tex
deleted file mode 100644
index 8826eee7..00000000
--- a/cheri/sail_latex/sailupdatePTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_PTEBase = {_update_ContextReg_PTEBase} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateRegNum.tex b/cheri/sail_latex/sailupdateRegNum.tex
deleted file mode 100644
index 61c4abe6..00000000
--- a/cheri/sail_latex/sailupdateRegNum.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_RegNum = {_update_CapCauseReg_RegNum} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateSX.tex b/cheri/sail_latex/sailupdateSX.tex
deleted file mode 100644
index 4e416154..00000000
--- a/cheri/sail_latex/sailupdateSX.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_SX = {_update_StatusReg_SX} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateStatusRegBEV.tex b/cheri/sail_latex/sailupdateStatusRegBEV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateStatusRegBEV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateStatusRegCU.tex b/cheri/sail_latex/sailupdateStatusRegCU.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateStatusRegCU.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateStatusRegERL.tex b/cheri/sail_latex/sailupdateStatusRegERL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateStatusRegERL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateStatusRegEXL.tex b/cheri/sail_latex/sailupdateStatusRegEXL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateStatusRegEXL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateStatusRegIE.tex b/cheri/sail_latex/sailupdateStatusRegIE.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateStatusRegIE.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateStatusRegIM.tex b/cheri/sail_latex/sailupdateStatusRegIM.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateStatusRegIM.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateStatusRegKSU.tex b/cheri/sail_latex/sailupdateStatusRegKSU.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateStatusRegKSU.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateStatusRegKX.tex b/cheri/sail_latex/sailupdateStatusRegKX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateStatusRegKX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateStatusRegSX.tex b/cheri/sail_latex/sailupdateStatusRegSX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateStatusRegSX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateStatusRegUX.tex b/cheri/sail_latex/sailupdateStatusRegUX.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateStatusRegUX.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateStatusRegbits.tex b/cheri/sail_latex/sailupdateStatusRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateStatusRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryHiRegASID.tex b/cheri/sail_latex/sailupdateTLBEntryHiRegASID.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryHiRegASID.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryHiRegR.tex b/cheri/sail_latex/sailupdateTLBEntryHiRegR.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryHiRegR.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryHiRegVPNtwo.tex b/cheri/sail_latex/sailupdateTLBEntryHiRegVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryHiRegVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryHiRegbits.tex b/cheri/sail_latex/sailupdateTLBEntryHiRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryHiRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryLoRegC.tex b/cheri/sail_latex/sailupdateTLBEntryLoRegC.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryLoRegC.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryLoRegCapL.tex b/cheri/sail_latex/sailupdateTLBEntryLoRegCapL.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryLoRegCapL.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryLoRegCapS.tex b/cheri/sail_latex/sailupdateTLBEntryLoRegCapS.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryLoRegCapS.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryLoRegD.tex b/cheri/sail_latex/sailupdateTLBEntryLoRegD.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryLoRegD.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryLoRegG.tex b/cheri/sail_latex/sailupdateTLBEntryLoRegG.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryLoRegG.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryLoRegPFN.tex b/cheri/sail_latex/sailupdateTLBEntryLoRegPFN.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryLoRegPFN.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryLoRegV.tex b/cheri/sail_latex/sailupdateTLBEntryLoRegV.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryLoRegV.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryLoRegbits.tex b/cheri/sail_latex/sailupdateTLBEntryLoRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryLoRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryasid.tex b/cheri/sail_latex/sailupdateTLBEntryasid.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryasid.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntrybits.tex b/cheri/sail_latex/sailupdateTLBEntrybits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntrybits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntrycaplone.tex b/cheri/sail_latex/sailupdateTLBEntrycaplone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntrycaplone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntrycaplzero.tex b/cheri/sail_latex/sailupdateTLBEntrycaplzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntrycaplzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntrycapsone.tex b/cheri/sail_latex/sailupdateTLBEntrycapsone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntrycapsone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntrycapszero.tex b/cheri/sail_latex/sailupdateTLBEntrycapszero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntrycapszero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntrycone.tex b/cheri/sail_latex/sailupdateTLBEntrycone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntrycone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryczero.tex b/cheri/sail_latex/sailupdateTLBEntryczero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryczero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntrydone.tex b/cheri/sail_latex/sailupdateTLBEntrydone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntrydone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntrydzero.tex b/cheri/sail_latex/sailupdateTLBEntrydzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntrydzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryg.tex b/cheri/sail_latex/sailupdateTLBEntryg.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryg.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntrypagemask.tex b/cheri/sail_latex/sailupdateTLBEntrypagemask.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntrypagemask.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntrypfnone.tex b/cheri/sail_latex/sailupdateTLBEntrypfnone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntrypfnone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntrypfnzero.tex b/cheri/sail_latex/sailupdateTLBEntrypfnzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntrypfnzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryr.tex b/cheri/sail_latex/sailupdateTLBEntryr.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryr.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryvalid.tex b/cheri/sail_latex/sailupdateTLBEntryvalid.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryvalid.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryvone.tex b/cheri/sail_latex/sailupdateTLBEntryvone.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryvone.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryvpntwo.tex b/cheri/sail_latex/sailupdateTLBEntryvpntwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryvpntwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateTLBEntryvzero.tex b/cheri/sail_latex/sailupdateTLBEntryvzero.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateTLBEntryvzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateUX.tex b/cheri/sail_latex/sailupdateUX.tex
deleted file mode 100644
index d0d2a663..00000000
--- a/cheri/sail_latex/sailupdateUX.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_UX = {_update_StatusReg_UX} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateV.tex b/cheri/sail_latex/sailupdateV.tex
deleted file mode 100644
index 336f76d5..00000000
--- a/cheri/sail_latex/sailupdateV.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_V = {_update_TLBEntryLoReg_V} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateWP.tex b/cheri/sail_latex/sailupdateWP.tex
deleted file mode 100644
index d4528672..00000000
--- a/cheri/sail_latex/sailupdateWP.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_WP = {_update_CauseReg_WP} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateXBadVPNtwo.tex b/cheri/sail_latex/sailupdateXBadVPNtwo.tex
deleted file mode 100644
index 9bb69796..00000000
--- a/cheri/sail_latex/sailupdateXBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_XBadVPN2 = {_update_XContextReg_XBadVPN2} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateXContextRegXBadVPNtwo.tex b/cheri/sail_latex/sailupdateXContextRegXBadVPNtwo.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateXContextRegXBadVPNtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateXContextRegXPTEBase.tex b/cheri/sail_latex/sailupdateXContextRegXPTEBase.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateXContextRegXPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateXContextRegXR.tex b/cheri/sail_latex/sailupdateXContextRegXR.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateXContextRegXR.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateXContextRegbits.tex b/cheri/sail_latex/sailupdateXContextRegbits.tex
deleted file mode 100644
index 8b137891..00000000
--- a/cheri/sail_latex/sailupdateXContextRegbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/cheri/sail_latex/sailupdateXPTEBase.tex b/cheri/sail_latex/sailupdateXPTEBase.tex
deleted file mode 100644
index 8a203d30..00000000
--- a/cheri/sail_latex/sailupdateXPTEBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_XPTEBase = {_update_XContextReg_XPTEBase} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateXR.tex b/cheri/sail_latex/sailupdateXR.tex
deleted file mode 100644
index 1854ca65..00000000
--- a/cheri/sail_latex/sailupdateXR.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_XR = {_update_XContextReg_XR} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateasid.tex b/cheri/sail_latex/sailupdateasid.tex
deleted file mode 100644
index 8fa9f60a..00000000
--- a/cheri/sail_latex/sailupdateasid.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_asid = {_update_TLBEntry_asid} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatebits.tex b/cheri/sail_latex/sailupdatebits.tex
deleted file mode 100644
index 84c93c53..00000000
--- a/cheri/sail_latex/sailupdatebits.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_bits = {_update_CapCauseReg_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatecaplone.tex b/cheri/sail_latex/sailupdatecaplone.tex
deleted file mode 100644
index a0ce007c..00000000
--- a/cheri/sail_latex/sailupdatecaplone.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_capl1 = {_update_TLBEntry_capl1} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatecaplzero.tex b/cheri/sail_latex/sailupdatecaplzero.tex
deleted file mode 100644
index 11747581..00000000
--- a/cheri/sail_latex/sailupdatecaplzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_capl0 = {_update_TLBEntry_capl0} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatecapsone.tex b/cheri/sail_latex/sailupdatecapsone.tex
deleted file mode 100644
index 6449364e..00000000
--- a/cheri/sail_latex/sailupdatecapsone.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_caps1 = {_update_TLBEntry_caps1} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatecapszero.tex b/cheri/sail_latex/sailupdatecapszero.tex
deleted file mode 100644
index 1791d720..00000000
--- a/cheri/sail_latex/sailupdatecapszero.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_caps0 = {_update_TLBEntry_caps0} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatecone.tex b/cheri/sail_latex/sailupdatecone.tex
deleted file mode 100644
index f8e39aea..00000000
--- a/cheri/sail_latex/sailupdatecone.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_c1 = {_update_TLBEntry_c1} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateczero.tex b/cheri/sail_latex/sailupdateczero.tex
deleted file mode 100644
index ccb2da58..00000000
--- a/cheri/sail_latex/sailupdateczero.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_c0 = {_update_TLBEntry_c0} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatedone.tex b/cheri/sail_latex/sailupdatedone.tex
deleted file mode 100644
index ee303126..00000000
--- a/cheri/sail_latex/sailupdatedone.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_d1 = {_update_TLBEntry_d1} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatedzero.tex b/cheri/sail_latex/sailupdatedzero.tex
deleted file mode 100644
index 799b9f2f..00000000
--- a/cheri/sail_latex/sailupdatedzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_d0 = {_update_TLBEntry_d0} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdateg.tex b/cheri/sail_latex/sailupdateg.tex
deleted file mode 100644
index 988d87b6..00000000
--- a/cheri/sail_latex/sailupdateg.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_g = {_update_TLBEntry_g} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatepagemask.tex b/cheri/sail_latex/sailupdatepagemask.tex
deleted file mode 100644
index e57ea1df..00000000
--- a/cheri/sail_latex/sailupdatepagemask.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_pagemask = {_update_TLBEntry_pagemask} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatepfnone.tex b/cheri/sail_latex/sailupdatepfnone.tex
deleted file mode 100644
index a6e7a80d..00000000
--- a/cheri/sail_latex/sailupdatepfnone.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_pfn1 = {_update_TLBEntry_pfn1} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatepfnzero.tex b/cheri/sail_latex/sailupdatepfnzero.tex
deleted file mode 100644
index 54244083..00000000
--- a/cheri/sail_latex/sailupdatepfnzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_pfn0 = {_update_TLBEntry_pfn0} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdater.tex b/cheri/sail_latex/sailupdater.tex
deleted file mode 100644
index 485fdf99..00000000
--- a/cheri/sail_latex/sailupdater.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_r = {_update_TLBEntry_r} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatevalid.tex b/cheri/sail_latex/sailupdatevalid.tex
deleted file mode 100644
index 9c19b5b5..00000000
--- a/cheri/sail_latex/sailupdatevalid.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_valid = {_update_TLBEntry_valid} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatevone.tex b/cheri/sail_latex/sailupdatevone.tex
deleted file mode 100644
index 5da0a4e9..00000000
--- a/cheri/sail_latex/sailupdatevone.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_v1 = {_update_TLBEntry_v1} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatevpntwo.tex b/cheri/sail_latex/sailupdatevpntwo.tex
deleted file mode 100644
index b4743a0c..00000000
--- a/cheri/sail_latex/sailupdatevpntwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_vpn2 = {_update_TLBEntry_vpn2} \ No newline at end of file
diff --git a/cheri/sail_latex/sailupdatevzero.tex b/cheri/sail_latex/sailupdatevzero.tex
deleted file mode 100644
index 0405f0c0..00000000
--- a/cheri/sail_latex/sailupdatevzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload update_v0 = {_update_TLBEntry_v0} \ No newline at end of file
diff --git a/cheri/sail_latex/sailvectoraccess.tex b/cheri/sail_latex/sailvectoraccess.tex
deleted file mode 100644
index a8e8074f..00000000
--- a/cheri/sail_latex/sailvectoraccess.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload vector_access = {bitvector_access, plain_vector_access} \ No newline at end of file
diff --git a/cheri/sail_latex/sailvectorlength.tex b/cheri/sail_latex/sailvectorlength.tex
deleted file mode 100644
index f41d5bfa..00000000
--- a/cheri/sail_latex/sailvectorlength.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val vector_length = {
- ocaml: "length",
- lem: "length_list",
- c: "length",
- coq: "vec_length"
-} : forall '#\hyperref[zn]{n}# ('a : Type). vector('n, dec, 'a) -> atom('n)
diff --git a/cheri/sail_latex/sailvectorsubrange.tex b/cheri/sail_latex/sailvectorsubrange.tex
deleted file mode 100644
index c069c7b6..00000000
--- a/cheri/sail_latex/sailvectorsubrange.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-val vector_subrange = {
- ocaml: "subrange",
- lem: "subrange_vec_dec",
- c: "vector_subrange",
- coq: "subrange_vec_dec"
-} : forall ('n : Int) ('m : Int) ('o : Int), 0 <= 'o <= 'm < 'n.
- (#\hyperref[zbits]{bits}#('n), atom('m), atom('o)) -> #\hyperref[zbits]{bits}#('m - 'o + 1)
diff --git a/cheri/sail_latex/sailvectorupdate.tex b/cheri/sail_latex/sailvectorupdate.tex
deleted file mode 100644
index 1ec4aaef..00000000
--- a/cheri/sail_latex/sailvectorupdate.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload vector_update = {bitvector_update, plain_vector_update} \ No newline at end of file
diff --git a/cheri/sail_latex/sailvectorupdatesubrange.tex b/cheri/sail_latex/sailvectorupdatesubrange.tex
deleted file mode 100644
index 6ff4f9f6..00000000
--- a/cheri/sail_latex/sailvectorupdatesubrange.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val vector_update_subrange = {
- ocaml: "update_subrange",
- lem: "update_subrange_vec_dec",
- c: "vector_update_subrange",
- coq: "update_subrange_vec_dec"
-} : forall 'n 'm 'o. (#\hyperref[zbits]{bits}#('n), atom('m), atom('o), #\hyperref[zbits]{bits}#('m - ('o - 1))) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailwGPR.tex b/cheri/sail_latex/sailwGPR.tex
deleted file mode 100644
index bf78e005..00000000
--- a/cheri/sail_latex/sailwGPR.tex
+++ /dev/null
@@ -1 +0,0 @@
-val wGPR : (#\hyperref[zbits]{bits}#(5), #\hyperref[zbits]{bits}#(64)) -> unit effect {wreg}
diff --git a/cheri/sail_latex/sailwordWidthBytes.tex b/cheri/sail_latex/sailwordWidthBytes.tex
deleted file mode 100644
index aa5bbe5f..00000000
--- a/cheri/sail_latex/sailwordWidthBytes.tex
+++ /dev/null
@@ -1 +0,0 @@
-val wordWidthBytes : WordType -> range(1, 8)
diff --git a/cheri/sail_latex/sailwriteCapReg.tex b/cheri/sail_latex/sailwriteCapReg.tex
deleted file mode 100644
index 44b9d466..00000000
--- a/cheri/sail_latex/sailwriteCapReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-val writeCapReg : (regno, CapStruct) -> unit effect {wreg}
diff --git a/cheri/sail_latex/sailxorvec.tex b/cheri/sail_latex/sailxorvec.tex
deleted file mode 100644
index b3aa7372..00000000
--- a/cheri/sail_latex/sailxorvec.tex
+++ /dev/null
@@ -1 +0,0 @@
-val xor_vec = {c: "xor_bits" , _: "xor_vec"} : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latex/sailzW.tex b/cheri/sail_latex/sailzW.tex
deleted file mode 100644
index a29ec93f..00000000
--- a/cheri/sail_latex/sailzW.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload ~ = {not_bool, not_vec} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozAsznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozAsznine.tex
deleted file mode 100644
index 0b0a46e2..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozAsznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator *_s = "mults_vec" : forall 'n . (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#(2 * 'n)
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozAuznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozAuznine.tex
deleted file mode 100644
index 5b762ba7..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozAuznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator *_u = "mult_vec" : forall 'n . (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#(2 * 'n)
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozAznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozAznine.tex
deleted file mode 100644
index 2d188f63..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozAznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator *) = {mult_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozBznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozBznine.tex
deleted file mode 100644
index 432e85e5..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozBznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator +) = {add_range, add_int, add_vec, add_vec_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozDznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozDznine.tex
deleted file mode 100644
index d671e6b0..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozDznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator -) = {sub_range, sub_int, sub_vec, sub_vec_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozFznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozFznine.tex
deleted file mode 100644
index 3c2e441c..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozFznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator /) = {quotient_nat, quotient} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozIsznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozIsznine.tex
deleted file mode 100644
index 9b4ebe19..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozIsznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator <_s : forall 'n, 'n > 0. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> bool
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozIuznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozIuznine.tex
deleted file mode 100644
index 5b54235e..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozIuznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator <_u : forall 'n, 'n >= 0. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> bool
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozIzIznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozIzIznine.tex
deleted file mode 100644
index 51ff2b6c..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozIzIznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator <<) = {shift_bits_left, shiftl} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozIzJznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozIzJznine.tex
deleted file mode 100644
index d23f28dd..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozIzJznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator <=) = {lteq_atom, lteq_range_atom, lteq_atom_range, lteq_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozIznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozIznine.tex
deleted file mode 100644
index 8e5e3fe9..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozIznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator <) = {lt_atom, lt_range_atom, lt_atom_range, lt_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozJzJznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozJzJznine.tex
deleted file mode 100644
index 57ea823c..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozJzJznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator ==) = {eq_anything} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozKzJsznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozKzJsznine.tex
deleted file mode 100644
index 032e8600..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozKzJsznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator >=_s : forall 'n, 'n > 0. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> bool
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozKzJuznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozKzJuznine.tex
deleted file mode 100644
index eaa72e60..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozKzJuznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator >=_u : forall 'n, 'n >= 0. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> bool
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozKzJznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozKzJznine.tex
deleted file mode 100644
index 5733b740..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozKzJznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator >=) = {gteq_atom, gteq_range_atom, gteq_atom_range, gteq_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozKzKsznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozKzKsznine.tex
deleted file mode 100644
index 0f0793a6..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozKzKsznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator >>_s = "shift_bits_right_arith" : forall 'n 'm. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('m)) -> #\hyperref[zbits]{bits}#('n) effect {undef}
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozKzKznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozKzKznine.tex
deleted file mode 100644
index b129e9d2..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozKzKznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator >>) = {shift_bits_right, shiftr} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozKznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozKznine.tex
deleted file mode 100644
index a8da7e48..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozKznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator >) = {gt_atom, gt_range_atom, gt_atom_range, gt_int} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozQzQznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozQzQznine.tex
deleted file mode 100644
index 185f501e..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozQzQznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator ^^ = {lem: "replicate_bits"} : forall 'n 'm, 'm >= 0 . (#\hyperref[zbits]{bits}#('n), atom('m)) -> #\hyperref[zbits]{bits}#('n * 'm)
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozQznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozQznine.tex
deleted file mode 100644
index 106b6064..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozQznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator ^) = {xor_vec, int_power} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozUznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozUznine.tex
deleted file mode 100644
index 4de737e0..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozUznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator |) = {or_bool, or_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozfiveznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozfiveznine.tex
deleted file mode 100644
index 8d6b54c3..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozfiveznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator %) = {modulus} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozonezJznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozonezJznine.tex
deleted file mode 100644
index 22052668..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozonezJznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator !=) = {neq_atom, neq_int, neq_vec, neq_anything} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzeightoperatorzzerozsixznine.tex b/cheri/sail_latex/sailzeightoperatorzzerozsixznine.tex
deleted file mode 100644
index 248fb15e..00000000
--- a/cheri/sail_latex/sailzeightoperatorzzerozsixznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator &) = {and_bool, and_bits} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzzeroextend.tex b/cheri/sail_latex/sailzzeroextend.tex
deleted file mode 100644
index 0f754d44..00000000
--- a/cheri/sail_latex/sailzzeroextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload zero_extend = {mips_zero_extend} \ No newline at end of file
diff --git a/cheri/sail_latex/sailzzeros.tex b/cheri/sail_latex/sailzzeros.tex
deleted file mode 100644
index 1c251eda..00000000
--- a/cheri/sail_latex/sailzzeros.tex
+++ /dev/null
@@ -1 +0,0 @@
-val zeros : forall 'n, 'n >= 0 . unit -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/commands.tex b/cheri/sail_latexcc/commands.tex
deleted file mode 100644
index 8b9678a1..00000000
--- a/cheri/sail_latexcc/commands.tex
+++ /dev/null
@@ -1,544 +0,0 @@
-\newcommand{\sailccsailccregderefv}{\label{zregzyderef} \lstinputlisting[language=sail]{sail_latexcc/sailccsailccregderefv.tex}}
-
-\newcommand{\sailccregderef}{\label{zzyregzyderef} \lstinputlisting[language=sail]{sail_latexcc/sailccregderef.tex}}
-
-\newcommand{\sailcceqbittwo}{\label{zeqzybittwo} \lstinputlisting[language=sail]{sail_latexcc/sailcceqbittwo.tex}}
-
-\newcommand{\sailccsailccsailccsailcczeightoperatorzzerozJzJzninevvv}{\label{zzeightoperatorzzerozJzJznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailccsailccsailcczeightoperatorzzerozJzJzninevvv.tex}}
-
-\newcommand{\sailccdiv}{\label{zdiv} \lstinputlisting[language=sail]{sail_latexcc/sailccdiv.tex}}
-
-\newcommand{\sailccsailccsailcczeightoperatorzzerozFzninevv}{\label{zzeightoperatorzzerozFznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailccsailcczeightoperatorzzerozFzninevv.tex}}
-
-\newcommand{\sailccmod}{\label{zmod} \lstinputlisting[language=sail]{sail_latexcc/sailccmod.tex}}
-
-\newcommand{\sailccsailccsailcczeightoperatorzzerozfivezninevv}{\label{zzeightoperatorzzerozfiveznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailccsailcczeightoperatorzzerozfivezninevv.tex}}
-
-\newcommand{\sailccabsatom}{\label{zabszyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccabsatom.tex}}
-
-\newcommand{\sailccnotbool}{\label{znotzybool} \lstinputlisting[language=sail]{sail_latexcc/sailccnotbool.tex}}
-
-\newcommand{\sailccandbool}{\label{zandzybool} \lstinputlisting[language=sail]{sail_latexcc/sailccandbool.tex}}
-
-\newcommand{\sailccorbool}{\label{zorzybool} \lstinputlisting[language=sail]{sail_latexcc/sailccorbool.tex}}
-
-\newcommand{\sailcceqatom}{\label{zeqzyatom} \lstinputlisting[language=sail]{sail_latexcc/sailcceqatom.tex}}
-
-\newcommand{\sailccneqatom}{\label{zneqzyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccneqatom.tex}}
-
-\newcommand{\sailccfnneqatom}{\label{zneqzyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccfnneqatom.tex}}
-
-\newcommand{\sailcclteqatom}{\label{zlteqzyatom} \lstinputlisting[language=sail]{sail_latexcc/sailcclteqatom.tex}}
-
-\newcommand{\sailccgteqatom}{\label{zgteqzyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccgteqatom.tex}}
-
-\newcommand{\sailccltatom}{\label{zltzyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccltatom.tex}}
-
-\newcommand{\sailccgtatom}{\label{zgtzyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccgtatom.tex}}
-
-\newcommand{\sailccltrangeatom}{\label{zltzyrangezyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccltrangeatom.tex}}
-
-\newcommand{\sailcclteqrangeatom}{\label{zlteqzyrangezyatom} \lstinputlisting[language=sail]{sail_latexcc/sailcclteqrangeatom.tex}}
-
-\newcommand{\sailccgtrangeatom}{\label{zgtzyrangezyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccgtrangeatom.tex}}
-
-\newcommand{\sailccgteqrangeatom}{\label{zgteqzyrangezyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccgteqrangeatom.tex}}
-
-\newcommand{\sailccltatomrange}{\label{zltzyatomzyrange} \lstinputlisting[language=sail]{sail_latexcc/sailccltatomrange.tex}}
-
-\newcommand{\sailcclteqatomrange}{\label{zlteqzyatomzyrange} \lstinputlisting[language=sail]{sail_latexcc/sailcclteqatomrange.tex}}
-
-\newcommand{\sailccgtatomrange}{\label{zgtzyatomzyrange} \lstinputlisting[language=sail]{sail_latexcc/sailccgtatomrange.tex}}
-
-\newcommand{\sailccgteqatomrange}{\label{zgteqzyatomzyrange} \lstinputlisting[language=sail]{sail_latexcc/sailccgteqatomrange.tex}}
-
-\newcommand{\sailcceqrange}{\label{zeqzyrange} \lstinputlisting[language=sail]{sail_latexcc/sailcceqrange.tex}}
-
-\newcommand{\sailcceqint}{\label{zeqzyint} \lstinputlisting[language=sail]{sail_latexcc/sailcceqint.tex}}
-
-\newcommand{\sailcceqbool}{\label{zeqzybool} \lstinputlisting[language=sail]{sail_latexcc/sailcceqbool.tex}}
-
-\newcommand{\sailccneqrange}{\label{zneqzyrange} \lstinputlisting[language=sail]{sail_latexcc/sailccneqrange.tex}}
-
-\newcommand{\sailccfnneqrange}{\label{zneqzyrange} \lstinputlisting[language=sail]{sail_latexcc/sailccfnneqrange.tex}}
-
-\newcommand{\sailccneqint}{\label{zneqzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccneqint.tex}}
-
-\newcommand{\sailccfnneqint}{\label{zneqzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccfnneqint.tex}}
-
-\newcommand{\sailccneqbool}{\label{zneqzybool} \lstinputlisting[language=sail]{sail_latexcc/sailccneqbool.tex}}
-
-\newcommand{\sailccfnneqbool}{\label{zneqzybool} \lstinputlisting[language=sail]{sail_latexcc/sailccfnneqbool.tex}}
-
-\newcommand{\sailcclteqint}{\label{zlteqzyint} \lstinputlisting[language=sail]{sail_latexcc/sailcclteqint.tex}}
-
-\newcommand{\sailccgteqint}{\label{zgteqzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccgteqint.tex}}
-
-\newcommand{\sailccltint}{\label{zltzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccltint.tex}}
-
-\newcommand{\sailccgtint}{\label{zgtzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccgtint.tex}}
-
-\newcommand{\sailccsailccsailcczeightoperatorzzerozJzJzninevv}{\label{zzeightoperatorzzerozJzJznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailccsailcczeightoperatorzzerozJzJzninevv.tex}}
-
-\newcommand{\sailccsailcczeightoperatorzzerozonezJzninev}{\label{zzeightoperatorzzerozonezJznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailcczeightoperatorzzerozonezJzninev.tex}}
-
-\newcommand{\sailccsailcczeightoperatorzzerozUzninev}{\label{zzeightoperatorzzerozUznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailcczeightoperatorzzerozUzninev.tex}}
-
-\newcommand{\sailccsailcczeightoperatorzzerozsixzninev}{\label{zzeightoperatorzzerozsixznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailcczeightoperatorzzerozsixzninev.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozIzJznine}{\label{zzeightoperatorzzerozIzJznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozIzJznine.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozIznine}{\label{zzeightoperatorzzerozIznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozIznine.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozKzJznine}{\label{zzeightoperatorzzerozKzJznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozKzJznine.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozKznine}{\label{zzeightoperatorzzerozKznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozKznine.tex}}
-
-\newcommand{\sailccaddatom}{\label{zaddzyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccaddatom.tex}}
-
-\newcommand{\sailccaddint}{\label{zaddzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccaddint.tex}}
-
-\newcommand{\sailccsailccsailcczeightoperatorzzerozBzninevv}{\label{zzeightoperatorzzerozBznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailccsailcczeightoperatorzzerozBzninevv.tex}}
-
-\newcommand{\sailccsubatom}{\label{zsubzyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccsubatom.tex}}
-
-\newcommand{\sailccsubint}{\label{zsubzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccsubint.tex}}
-
-\newcommand{\sailccsailcczeightoperatorzzerozDzninev}{\label{zzeightoperatorzzerozDznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailcczeightoperatorzzerozDzninev.tex}}
-
-\newcommand{\sailccnegateatom}{\label{znegatezyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccnegateatom.tex}}
-
-\newcommand{\sailccnegateint}{\label{znegatezyint} \lstinputlisting[language=sail]{sail_latexcc/sailccnegateint.tex}}
-
-\newcommand{\sailccsailccnegatev}{\label{znegate} \lstinputlisting[language=sail]{sail_latexcc/sailccsailccnegatev.tex}}
-
-\newcommand{\sailccmultatom}{\label{zmultzyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccmultatom.tex}}
-
-\newcommand{\sailccmultint}{\label{zmultzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccmultint.tex}}
-
-\newcommand{\sailccsailcczeightoperatorzzerozAzninev}{\label{zzeightoperatorzzerozAznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailcczeightoperatorzzerozAzninev.tex}}
-
-\newcommand{\sailccprintint}{\label{zprintzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccprintint.tex}}
-
-\newcommand{\sailccprerrint}{\label{zprerrzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccprerrint.tex}}
-
-\newcommand{\sailccshlint}{\label{zshlzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccshlint.tex}}
-
-\newcommand{\sailccshrint}{\label{zshrzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccshrint.tex}}
-
-\newcommand{\sailccdivint}{\label{zdivzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccdivint.tex}}
-
-\newcommand{\sailccsailcczeightoperatorzzerozFzninev}{\label{zzeightoperatorzzerozFznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailcczeightoperatorzzerozFzninev.tex}}
-
-\newcommand{\sailccmodint}{\label{zmodzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccmodint.tex}}
-
-\newcommand{\sailccsailcczeightoperatorzzerozfivezninev}{\label{zzeightoperatorzzerozfiveznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailcczeightoperatorzzerozfivezninev.tex}}
-
-\newcommand{\sailccabsint}{\label{zabszyint} \lstinputlisting[language=sail]{sail_latexcc/sailccabsint.tex}}
-
-\newcommand{\sailccisnone}{\label{ziszynone} \lstinputlisting[language=sail]{sail_latexcc/sailccisnone.tex}}
-
-\newcommand{\sailccfnisnone}{\label{ziszynone} \lstinputlisting[language=sail]{sail_latexcc/sailccfnisnone.tex}}
-
-\newcommand{\sailccissome}{\label{ziszysome} \lstinputlisting[language=sail]{sail_latexcc/sailccissome.tex}}
-
-\newcommand{\sailccfnissome}{\label{ziszysome} \lstinputlisting[language=sail]{sail_latexcc/sailccfnissome.tex}}
-
-\newcommand{\sailccbits}{\label{zbits} \lstinputlisting[language=sail]{sail_latexcc/sailccbits.tex}}
-
-\newcommand{\sailcceqbit}{\label{zeqzybit} \lstinputlisting[language=sail]{sail_latexcc/sailcceqbit.tex}}
-
-\newcommand{\sailcceqbits}{\label{zeqzybits} \lstinputlisting[language=sail]{sail_latexcc/sailcceqbits.tex}}
-
-\newcommand{\sailccsailcczeightoperatorzzerozJzJzninev}{\label{zzeightoperatorzzerozJzJznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailcczeightoperatorzzerozJzJzninev.tex}}
-
-\newcommand{\sailccbitvectorlength}{\label{zbitvectorzylength} \lstinputlisting[language=sail]{sail_latexcc/sailccbitvectorlength.tex}}
-
-\newcommand{\sailccvectorlength}{\label{zvectorzylength} \lstinputlisting[language=sail]{sail_latexcc/sailccvectorlength.tex}}
-
-\newcommand{\sailcclength}{\label{zlength} \lstinputlisting[language=sail]{sail_latexcc/sailcclength.tex}}
-
-\newcommand{\sailccsailzzeros}{\label{zsailzyzzeros} \lstinputlisting[language=sail]{sail_latexcc/sailccsailzzeros.tex}}
-
-\newcommand{\sailccprintbits}{\label{zprintzybits} \lstinputlisting[language=sail]{sail_latexcc/sailccprintbits.tex}}
-
-\newcommand{\sailccprerrbits}{\label{zprerrzybits} \lstinputlisting[language=sail]{sail_latexcc/sailccprerrbits.tex}}
-
-\newcommand{\sailccsailsignextend}{\label{zsailzysignzyextend} \lstinputlisting[language=sail]{sail_latexcc/sailccsailsignextend.tex}}
-
-\newcommand{\sailccsailzzeroextend}{\label{zsailzyzzerozyextend} \lstinputlisting[language=sail]{sail_latexcc/sailccsailzzeroextend.tex}}
-
-\newcommand{\sailcctruncate}{\label{ztruncate} \lstinputlisting[language=sail]{sail_latexcc/sailcctruncate.tex}}
-
-\newcommand{\sailccsailmask}{\label{zsailzymask} \lstinputlisting[language=sail]{sail_latexcc/sailccsailmask.tex}}
-
-\newcommand{\sailccfnsailmask}{\label{zsailzymask} \lstinputlisting[language=sail]{sail_latexcc/sailccfnsailmask.tex}}
-
-\newcommand{\sailccsailcczeightoperatorzzerozQzninev}{\label{zzeightoperatorzzerozQznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailcczeightoperatorzzerozQzninev.tex}}
-
-\newcommand{\sailccbitvectorconcat}{\label{zbitvectorzyconcat} \lstinputlisting[language=sail]{sail_latexcc/sailccbitvectorconcat.tex}}
-
-\newcommand{\sailccappend}{\label{zappend} \lstinputlisting[language=sail]{sail_latexcc/sailccappend.tex}}
-
-\newcommand{\sailccappendsixfour}{\label{zappendzysixfour} \lstinputlisting[language=sail]{sail_latexcc/sailccappendsixfour.tex}}
-
-\newcommand{\sailccbitvectoraccess}{\label{zbitvectorzyaccess} \lstinputlisting[language=sail]{sail_latexcc/sailccbitvectoraccess.tex}}
-
-\newcommand{\sailccplainvectoraccess}{\label{zplainzyvectorzyaccess} \lstinputlisting[language=sail]{sail_latexcc/sailccplainvectoraccess.tex}}
-
-\newcommand{\sailccvectoraccess}{\label{zvectorzyaccess} \lstinputlisting[language=sail]{sail_latexcc/sailccvectoraccess.tex}}
-
-\newcommand{\sailccbitvectorupdate}{\label{zbitvectorzyupdate} \lstinputlisting[language=sail]{sail_latexcc/sailccbitvectorupdate.tex}}
-
-\newcommand{\sailccplainvectorupdate}{\label{zplainzyvectorzyupdate} \lstinputlisting[language=sail]{sail_latexcc/sailccplainvectorupdate.tex}}
-
-\newcommand{\sailccvectorupdate}{\label{zvectorzyupdate} \lstinputlisting[language=sail]{sail_latexcc/sailccvectorupdate.tex}}
-
-\newcommand{\sailccaddbits}{\label{zaddzybits} \lstinputlisting[language=sail]{sail_latexcc/sailccaddbits.tex}}
-
-\newcommand{\sailccaddbitsint}{\label{zaddzybitszyint} \lstinputlisting[language=sail]{sail_latexcc/sailccaddbitsint.tex}}
-
-\newcommand{\sailccsailcczeightoperatorzzerozBzninev}{\label{zzeightoperatorzzerozBznine} \lstinputlisting[language=sail]{sail_latexcc/sailccsailcczeightoperatorzzerozBzninev.tex}}
-
-\newcommand{\sailccvectorsubrange}{\label{zvectorzysubrange} \lstinputlisting[language=sail]{sail_latexcc/sailccvectorsubrange.tex}}
-
-\newcommand{\sailccvectorupdatesubrange}{\label{zvectorzyupdatezysubrange} \lstinputlisting[language=sail]{sail_latexcc/sailccvectorupdatesubrange.tex}}
-
-\newcommand{\sailccgetsliceint}{\label{zgetzyslicezyint} \lstinputlisting[language=sail]{sail_latexcc/sailccgetsliceint.tex}}
-
-\newcommand{\sailccsetsliceint}{\label{zsetzyslicezyint} \lstinputlisting[language=sail]{sail_latexcc/sailccsetsliceint.tex}}
-
-\newcommand{\sailccsetslicebits}{\label{zsetzyslicezybits} \lstinputlisting[language=sail]{sail_latexcc/sailccsetslicebits.tex}}
-
-\newcommand{\sailccslice}{\label{zslice} \lstinputlisting[language=sail]{sail_latexcc/sailccslice.tex}}
-
-\newcommand{\sailccreplicatebits}{\label{zreplicatezybits} \lstinputlisting[language=sail]{sail_latexcc/sailccreplicatebits.tex}}
-
-\newcommand{\sailccunsigned}{\label{zunsigned} \lstinputlisting[language=sail]{sail_latexcc/sailccunsigned.tex}}
-
-\newcommand{\sailccsigned}{\label{zsigned} \lstinputlisting[language=sail]{sail_latexcc/sailccsigned.tex}}
-
-\newcommand{\sailcceqanything}{\label{zeqzyanything} \lstinputlisting[language=sail]{sail_latexcc/sailcceqanything.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozJzJznine}{\label{zzeightoperatorzzerozJzJznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozJzJznine.tex}}
-
-\newcommand{\sailccnotvec}{\label{znotzyvec} \lstinputlisting[language=sail]{sail_latexcc/sailccnotvec.tex}}
-
-\newcommand{\sailcczW}{\label{zzW} \lstinputlisting[language=sail]{sail_latexcc/sailcczW.tex}}
-
-\newcommand{\sailccnot}{\label{znot} \lstinputlisting[language=sail]{sail_latexcc/sailccnot.tex}}
-
-\newcommand{\sailccneqvec}{\label{zneqzyvec} \lstinputlisting[language=sail]{sail_latexcc/sailccneqvec.tex}}
-
-\newcommand{\sailccfnneqvec}{\label{zneqzyvec} \lstinputlisting[language=sail]{sail_latexcc/sailccfnneqvec.tex}}
-
-\newcommand{\sailccneqanything}{\label{zneqzyanything} \lstinputlisting[language=sail]{sail_latexcc/sailccneqanything.tex}}
-
-\newcommand{\sailccfnneqanything}{\label{zneqzyanything} \lstinputlisting[language=sail]{sail_latexcc/sailccfnneqanything.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozonezJznine}{\label{zzeightoperatorzzerozonezJznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozonezJznine.tex}}
-
-\newcommand{\sailccandbits}{\label{zandzybits} \lstinputlisting[language=sail]{sail_latexcc/sailccandbits.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozsixznine}{\label{zzeightoperatorzzerozsixznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozsixznine.tex}}
-
-\newcommand{\sailccorbits}{\label{zorzybits} \lstinputlisting[language=sail]{sail_latexcc/sailccorbits.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozUznine}{\label{zzeightoperatorzzerozUznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozUznine.tex}}
-
-\newcommand{\sailcccastunitvec}{\label{zcastzyunitzyvec} \lstinputlisting[language=sail]{sail_latexcc/sailcccastunitvec.tex}}
-
-\newcommand{\sailccfncastunitvec}{\label{zcastzyunitzyvec} \lstinputlisting[language=sail]{sail_latexcc/sailccfncastunitvec.tex}}
-
-\newcommand{\sailccprint}{\label{zprint} \lstinputlisting[language=sail]{sail_latexcc/sailccprint.tex}}
-
-\newcommand{\sailccprerrendline}{\label{zprerrzyendline} \lstinputlisting[language=sail]{sail_latexcc/sailccprerrendline.tex}}
-
-\newcommand{\sailccprerrstring}{\label{zprerrzystring} \lstinputlisting[language=sail]{sail_latexcc/sailccprerrstring.tex}}
-
-\newcommand{\sailccputchar}{\label{zputchar} \lstinputlisting[language=sail]{sail_latexcc/sailccputchar.tex}}
-
-\newcommand{\sailccconcatstr}{\label{zconcatzystr} \lstinputlisting[language=sail]{sail_latexcc/sailccconcatstr.tex}}
-
-\newcommand{\sailccstringofint}{\label{zstringzyofzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccstringofint.tex}}
-
-\newcommand{\sailccBitStr}{\label{zBitStr} \lstinputlisting[language=sail]{sail_latexcc/sailccBitStr.tex}}
-
-\newcommand{\sailccxorvec}{\label{zxorzyvec} \lstinputlisting[language=sail]{sail_latexcc/sailccxorvec.tex}}
-
-\newcommand{\sailccintpower}{\label{zintzypower} \lstinputlisting[language=sail]{sail_latexcc/sailccintpower.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozQznine}{\label{zzeightoperatorzzerozQznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozQznine.tex}}
-
-\newcommand{\sailccaddrange}{\label{zaddzyrange} \lstinputlisting[language=sail]{sail_latexcc/sailccaddrange.tex}}
-
-\newcommand{\sailccaddvec}{\label{zaddzyvec} \lstinputlisting[language=sail]{sail_latexcc/sailccaddvec.tex}}
-
-\newcommand{\sailccaddvecint}{\label{zaddzyveczyint} \lstinputlisting[language=sail]{sail_latexcc/sailccaddvecint.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozBznine}{\label{zzeightoperatorzzerozBznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozBznine.tex}}
-
-\newcommand{\sailccsubrange}{\label{zsubzyrange} \lstinputlisting[language=sail]{sail_latexcc/sailccsubrange.tex}}
-
-\newcommand{\sailccsubvec}{\label{zsubzyvec} \lstinputlisting[language=sail]{sail_latexcc/sailccsubvec.tex}}
-
-\newcommand{\sailccsubvecint}{\label{zsubzyveczyint} \lstinputlisting[language=sail]{sail_latexcc/sailccsubvecint.tex}}
-
-\newcommand{\sailccnegaterange}{\label{znegatezyrange} \lstinputlisting[language=sail]{sail_latexcc/sailccnegaterange.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozDznine}{\label{zzeightoperatorzzerozDznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozDznine.tex}}
-
-\newcommand{\sailccnegate}{\label{znegate} \lstinputlisting[language=sail]{sail_latexcc/sailccnegate.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozAznine}{\label{zzeightoperatorzzerozAznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozAznine.tex}}
-
-\newcommand{\sailccquotientnat}{\label{zquotientzynat} \lstinputlisting[language=sail]{sail_latexcc/sailccquotientnat.tex}}
-
-\newcommand{\sailccquotient}{\label{zquotient} \lstinputlisting[language=sail]{sail_latexcc/sailccquotient.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozFznine}{\label{zzeightoperatorzzerozFznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozFznine.tex}}
-
-\newcommand{\sailccquotroundzzero}{\label{zquotzyroundzyzzero} \lstinputlisting[language=sail]{sail_latexcc/sailccquotroundzzero.tex}}
-
-\newcommand{\sailccremroundzzero}{\label{zremzyroundzyzzero} \lstinputlisting[language=sail]{sail_latexcc/sailccremroundzzero.tex}}
-
-\newcommand{\sailccmodulus}{\label{zmodulus} \lstinputlisting[language=sail]{sail_latexcc/sailccmodulus.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozfiveznine}{\label{zzeightoperatorzzerozfiveznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozfiveznine.tex}}
-
-\newcommand{\sailccminnat}{\label{zminzynat} \lstinputlisting[language=sail]{sail_latexcc/sailccminnat.tex}}
-
-\newcommand{\sailccminint}{\label{zminzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccminint.tex}}
-
-\newcommand{\sailccmaxnat}{\label{zmaxzynat} \lstinputlisting[language=sail]{sail_latexcc/sailccmaxnat.tex}}
-
-\newcommand{\sailccmaxint}{\label{zmaxzyint} \lstinputlisting[language=sail]{sail_latexcc/sailccmaxint.tex}}
-
-\newcommand{\sailccminatom}{\label{zminzyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccminatom.tex}}
-
-\newcommand{\sailccmaxatom}{\label{zmaxzyatom} \lstinputlisting[language=sail]{sail_latexcc/sailccmaxatom.tex}}
-
-\newcommand{\sailccmin}{\label{zmin} \lstinputlisting[language=sail]{sail_latexcc/sailccmin.tex}}
-
-\newcommand{\sailccmax}{\label{zmax} \lstinputlisting[language=sail]{sail_latexcc/sailccmax.tex}}
-
-\newcommand{\sailccWriteRAM}{\label{zzyzyWriteRAM} \lstinputlisting[language=sail]{sail_latexcc/sailccWriteRAM.tex}}
-
-\newcommand{\sailccMIPSwrite}{\label{zzyzyMIPSzywrite} \lstinputlisting[language=sail]{sail_latexcc/sailccMIPSwrite.tex}}
-
-\newcommand{\sailccfnMIPSwrite}{\label{zzyzyMIPSzywrite} \lstinputlisting[language=sail]{sail_latexcc/sailccfnMIPSwrite.tex}}
-
-\newcommand{\sailccReadRAM}{\label{zzyzyReadRAM} \lstinputlisting[language=sail]{sail_latexcc/sailccReadRAM.tex}}
-
-\newcommand{\sailccMIPSread}{\label{zzyzyMIPSzyread} \lstinputlisting[language=sail]{sail_latexcc/sailccMIPSread.tex}}
-
-\newcommand{\sailccfnMIPSread}{\label{zzyzyMIPSzyread} \lstinputlisting[language=sail]{sail_latexcc/sailccfnMIPSread.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozQzQznine}{\label{zzeightoperatorzzerozQzQznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozQzQznine.tex}}
-
-\newcommand{\sailccfnzeightoperatorzzerozQzQznine}{\label{zzeightoperatorzzerozQzQznine} \lstinputlisting[language=sail]{sail_latexcc/sailccfnzeightoperatorzzerozQzQznine.tex}}
-
-\newcommand{\sailccpowtwo}{\label{zpowtwo} \lstinputlisting[language=sail]{sail_latexcc/sailccpowtwo.tex}}
-
-\newcommand{\sailccmipssignextend}{\label{zmipszysignzyextend} \lstinputlisting[language=sail]{sail_latexcc/sailccmipssignextend.tex}}
-
-\newcommand{\sailccmipszzeroextend}{\label{zmipszyzzerozyextend} \lstinputlisting[language=sail]{sail_latexcc/sailccmipszzeroextend.tex}}
-
-\newcommand{\sailccfnmipssignextend}{\label{zmipszysignzyextend} \lstinputlisting[language=sail]{sail_latexcc/sailccfnmipssignextend.tex}}
-
-\newcommand{\sailccfnmipszzeroextend}{\label{zmipszyzzerozyextend} \lstinputlisting[language=sail]{sail_latexcc/sailccfnmipszzeroextend.tex}}
-
-\newcommand{\sailccsignextend}{\label{zsignzyextend} \lstinputlisting[language=sail]{sail_latexcc/sailccsignextend.tex}}
-
-\newcommand{\sailcczzeroextend}{\label{zzzerozyextend} \lstinputlisting[language=sail]{sail_latexcc/sailcczzeroextend.tex}}
-
-\newcommand{\sailcczzeros}{\label{zzzeros} \lstinputlisting[language=sail]{sail_latexcc/sailcczzeros.tex}}
-
-\newcommand{\sailccfnzzeros}{\label{zzzeros} \lstinputlisting[language=sail]{sail_latexcc/sailccfnzzeros.tex}}
-
-\newcommand{\sailccones}{\label{zones} \lstinputlisting[language=sail]{sail_latexcc/sailccones.tex}}
-
-\newcommand{\sailccfnones}{\label{zones} \lstinputlisting[language=sail]{sail_latexcc/sailccfnones.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozIsznine}{\label{zzeightoperatorzzerozIzysznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozIsznine.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozKzJsznine}{\label{zzeightoperatorzzerozKzJzysznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozKzJsznine.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozIuznine}{\label{zzeightoperatorzzerozIzyuznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozIuznine.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozKzJuznine}{\label{zzeightoperatorzzerozKzJzyuznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozKzJuznine.tex}}
-
-\newcommand{\sailccfnzeightoperatorzzerozIsznine}{\label{zzeightoperatorzzerozIzysznine} \lstinputlisting[language=sail]{sail_latexcc/sailccfnzeightoperatorzzerozIsznine.tex}}
-
-\newcommand{\sailccfnzeightoperatorzzerozKzJsznine}{\label{zzeightoperatorzzerozKzJzysznine} \lstinputlisting[language=sail]{sail_latexcc/sailccfnzeightoperatorzzerozKzJsznine.tex}}
-
-\newcommand{\sailccfnzeightoperatorzzerozIuznine}{\label{zzeightoperatorzzerozIzyuznine} \lstinputlisting[language=sail]{sail_latexcc/sailccfnzeightoperatorzzerozIuznine.tex}}
-
-\newcommand{\sailccfnzeightoperatorzzerozKzJuznine}{\label{zzeightoperatorzzerozKzJzyuznine} \lstinputlisting[language=sail]{sail_latexcc/sailccfnzeightoperatorzzerozKzJuznine.tex}}
-
-\newcommand{\sailccbooltobits}{\label{zboolzytozybits} \lstinputlisting[language=sail]{sail_latexcc/sailccbooltobits.tex}}
-
-\newcommand{\sailccfnbooltobits}{\label{zboolzytozybits} \lstinputlisting[language=sail]{sail_latexcc/sailccfnbooltobits.tex}}
-
-\newcommand{\sailccbittobool}{\label{zbitzytozybool} \lstinputlisting[language=sail]{sail_latexcc/sailccbittobool.tex}}
-
-\newcommand{\sailccfnbittobool}{\label{zbitzytozybool} \lstinputlisting[language=sail]{sail_latexcc/sailccfnbittobool.tex}}
-
-\newcommand{\sailccbitstobool}{\label{zbitszytozybool} \lstinputlisting[language=sail]{sail_latexcc/sailccbitstobool.tex}}
-
-\newcommand{\sailccfnbitstobool}{\label{zbitszytozybool} \lstinputlisting[language=sail]{sail_latexcc/sailccfnbitstobool.tex}}
-
-\newcommand{\sailccshiftbitsright}{\label{zshiftzybitszyright} \lstinputlisting[language=sail]{sail_latexcc/sailccshiftbitsright.tex}}
-
-\newcommand{\sailccshiftbitsleft}{\label{zshiftzybitszyleft} \lstinputlisting[language=sail]{sail_latexcc/sailccshiftbitsleft.tex}}
-
-\newcommand{\sailccshiftl}{\label{zshiftl} \lstinputlisting[language=sail]{sail_latexcc/sailccshiftl.tex}}
-
-\newcommand{\sailccshiftr}{\label{zshiftr} \lstinputlisting[language=sail]{sail_latexcc/sailccshiftr.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozKzKznine}{\label{zzeightoperatorzzerozKzKznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozKzKznine.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozIzIznine}{\label{zzeightoperatorzzerozIzIznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozIzIznine.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozKzKsznine}{\label{zzeightoperatorzzerozKzKzysznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozKzKsznine.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozAsznine}{\label{zzeightoperatorzzerozAzysznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozAsznine.tex}}
-
-\newcommand{\sailcczeightoperatorzzerozAuznine}{\label{zzeightoperatorzzerozAzyuznine} \lstinputlisting[language=sail]{sail_latexcc/sailcczeightoperatorzzerozAuznine.tex}}
-
-\newcommand{\sailcctobits}{\label{ztozybits}
-\function{to\_bits} converts an integer to a bit vector of given length. If the integer is negative a twos-complement representation is used. If the integer is too large (or too negative) to fit in the requested length then it is truncated to the least significant bits.
-\lstinputlisting[language=sail]{sail_latexcc/sailcctobits.tex}}
-
-\newcommand{\sailccfntobits}{\label{ztozybits} \lstinputlisting[language=sail]{sail_latexcc/sailccfntobits.tex}}
-
-\newcommand{\sailccmask}{\label{zmask} \lstinputlisting[language=sail]{sail_latexcc/sailccmask.tex}}
-
-\newcommand{\sailccfnmask}{\label{zmask} \lstinputlisting[language=sail]{sail_latexcc/sailccfnmask.tex}}
-
-\newcommand{\sailccgettimens}{\label{zgetzytimezyns} \lstinputlisting[language=sail]{sail_latexcc/sailccgettimens.tex}}
-
-\newcommand{\sailccCapLen}{\label{zCapLen} \lstinputlisting[language=sail]{sail_latexcc/sailccCapLen.tex}}
-
-\newcommand{\sailccuintsixfour}{\label{zuintsixfour} \lstinputlisting[language=sail]{sail_latexcc/sailccuintsixfour.tex}}
-
-\newcommand{\sailccCPtrCmpOp}{\label{zCPtrCmpOp} \lstinputlisting[language=sail]{sail_latexcc/sailccCPtrCmpOp.tex}}
-
-\newcommand{\sailccCPtrCmpOpofnum}{\label{zCPtrCmpOpzyofzynum} \lstinputlisting[language=sail]{sail_latexcc/sailccCPtrCmpOpofnum.tex}}
-
-\newcommand{\sailccfnCPtrCmpOpofnum}{\label{zCPtrCmpOpzyofzynum} \lstinputlisting[language=sail]{sail_latexcc/sailccfnCPtrCmpOpofnum.tex}}
-
-\newcommand{\sailccnumofCPtrCmpOp}{\label{znumzyofzyCPtrCmpOp} \lstinputlisting[language=sail]{sail_latexcc/sailccnumofCPtrCmpOp.tex}}
-
-\newcommand{\sailccfnnumofCPtrCmpOp}{\label{znumzyofzyCPtrCmpOp} \lstinputlisting[language=sail]{sail_latexcc/sailccfnnumofCPtrCmpOp.tex}}
-
-\newcommand{\sailccClearRegSet}{\label{zClearRegSet} \lstinputlisting[language=sail]{sail_latexcc/sailccClearRegSet.tex}}
-
-\newcommand{\sailccClearRegSetofnum}{\label{zClearRegSetzyofzynum} \lstinputlisting[language=sail]{sail_latexcc/sailccClearRegSetofnum.tex}}
-
-\newcommand{\sailccfnClearRegSetofnum}{\label{zClearRegSetzyofzynum} \lstinputlisting[language=sail]{sail_latexcc/sailccfnClearRegSetofnum.tex}}
-
-\newcommand{\sailccnumofClearRegSet}{\label{znumzyofzyClearRegSet} \lstinputlisting[language=sail]{sail_latexcc/sailccnumofClearRegSet.tex}}
-
-\newcommand{\sailccfnnumofClearRegSet}{\label{znumzyofzyClearRegSet} \lstinputlisting[language=sail]{sail_latexcc/sailccfnnumofClearRegSet.tex}}
-
-\newcommand{\sailccCapReg}{\label{zCapReg} \lstinputlisting[language=sail]{sail_latexcc/sailccCapReg.tex}}
-
-\newcommand{\sailccCapStruct}{\label{zCapStruct} \lstinputlisting[language=sail]{sail_latexcc/sailccCapStruct.tex}}
-
-\newcommand{\sailcccapRegToCapStruct}{\label{zcapRegToCapStruct} \lstinputlisting[language=sail]{sail_latexcc/sailcccapRegToCapStruct.tex}}
-
-\newcommand{\sailccfncapRegToCapStruct}{\label{zcapRegToCapStruct} \lstinputlisting[language=sail]{sail_latexcc/sailccfncapRegToCapStruct.tex}}
-
-\newcommand{\sailccgetCapHardPerms}{\label{zgetCapHardPerms} \lstinputlisting[language=sail]{sail_latexcc/sailccgetCapHardPerms.tex}}
-
-\newcommand{\sailccfngetCapHardPerms}{\label{zgetCapHardPerms} \lstinputlisting[language=sail]{sail_latexcc/sailccfngetCapHardPerms.tex}}
-
-\newcommand{\sailcccapStructToMemBitsonetwoeight}{\label{zcapStructToMemBitsonetwoeight} \lstinputlisting[language=sail]{sail_latexcc/sailcccapStructToMemBitsonetwoeight.tex}}
-
-\newcommand{\sailccfncapStructToMemBitsonetwoeight}{\label{zcapStructToMemBitsonetwoeight} \lstinputlisting[language=sail]{sail_latexcc/sailccfncapStructToMemBitsonetwoeight.tex}}
-
-\newcommand{\sailcccapStructToCapReg}{\label{zcapStructToCapReg} \lstinputlisting[language=sail]{sail_latexcc/sailcccapStructToCapReg.tex}}
-
-\newcommand{\sailccfncapStructToCapReg}{\label{zcapStructToCapReg} \lstinputlisting[language=sail]{sail_latexcc/sailccfncapStructToCapReg.tex}}
-
-\newcommand{\sailccmemBitsToCapBitsonetwoeight}{\label{zmemBitsToCapBitsonetwoeight} \lstinputlisting[language=sail]{sail_latexcc/sailccmemBitsToCapBitsonetwoeight.tex}}
-
-\newcommand{\sailccfnmemBitsToCapBitsonetwoeight}{\label{zmemBitsToCapBitsonetwoeight} \lstinputlisting[language=sail]{sail_latexcc/sailccfnmemBitsToCapBitsonetwoeight.tex}}
-
-\newcommand{\sailcccapStructToMemBits}{\label{zcapStructToMemBits} \lstinputlisting[language=sail]{sail_latexcc/sailcccapStructToMemBits.tex}}
-
-\newcommand{\sailccfncapStructToMemBits}{\label{zcapStructToMemBits} \lstinputlisting[language=sail]{sail_latexcc/sailccfncapStructToMemBits.tex}}
-
-\newcommand{\sailccmemBitsToCapBits}{\label{zmemBitsToCapBits} \lstinputlisting[language=sail]{sail_latexcc/sailccmemBitsToCapBits.tex}}
-
-\newcommand{\sailccfnmemBitsToCapBits}{\label{zmemBitsToCapBits} \lstinputlisting[language=sail]{sail_latexcc/sailccfnmemBitsToCapBits.tex}}
-
-\newcommand{\sailccgetCapPerms}{\label{zgetCapPerms} \lstinputlisting[language=sail]{sail_latexcc/sailccgetCapPerms.tex}}
-
-\newcommand{\sailccfngetCapPerms}{\label{zgetCapPerms} \lstinputlisting[language=sail]{sail_latexcc/sailccfngetCapPerms.tex}}
-
-\newcommand{\sailccsetCapPerms}{\label{zsetCapPerms} \lstinputlisting[language=sail]{sail_latexcc/sailccsetCapPerms.tex}}
-
-\newcommand{\sailccfnsetCapPerms}{\label{zsetCapPerms} \lstinputlisting[language=sail]{sail_latexcc/sailccfnsetCapPerms.tex}}
-
-\newcommand{\sailccsealCap}{\label{zsealCap} \lstinputlisting[language=sail]{sail_latexcc/sailccsealCap.tex}}
-
-\newcommand{\sailccfnsealCap}{\label{zsealCap} \lstinputlisting[language=sail]{sail_latexcc/sailccfnsealCap.tex}}
-
-\newcommand{\sailccatopcorrection}{\label{zazytopzycorrection} \lstinputlisting[language=sail]{sail_latexcc/sailccatopcorrection.tex}}
-
-\newcommand{\sailccfnatopcorrection}{\label{zazytopzycorrection} \lstinputlisting[language=sail]{sail_latexcc/sailccfnatopcorrection.tex}}
-
-\newcommand{\sailccgetCapBase}{\label{zgetCapBase} \lstinputlisting[language=sail]{sail_latexcc/sailccgetCapBase.tex}}
-
-\newcommand{\sailccfngetCapBase}{\label{zgetCapBase} \lstinputlisting[language=sail]{sail_latexcc/sailccfngetCapBase.tex}}
-
-\newcommand{\sailccgetCapTop}{\label{zgetCapTop} \lstinputlisting[language=sail]{sail_latexcc/sailccgetCapTop.tex}}
-
-\newcommand{\sailccfngetCapTop}{\label{zgetCapTop} \lstinputlisting[language=sail]{sail_latexcc/sailccfngetCapTop.tex}}
-
-\newcommand{\sailccgetCapOffset}{\label{zgetCapOffset} \lstinputlisting[language=sail]{sail_latexcc/sailccgetCapOffset.tex}}
-
-\newcommand{\sailccfngetCapOffset}{\label{zgetCapOffset} \lstinputlisting[language=sail]{sail_latexcc/sailccfngetCapOffset.tex}}
-
-\newcommand{\sailccgetCapLength}{\label{zgetCapLength} \lstinputlisting[language=sail]{sail_latexcc/sailccgetCapLength.tex}}
-
-\newcommand{\sailccfngetCapLength}{\label{zgetCapLength} \lstinputlisting[language=sail]{sail_latexcc/sailccfngetCapLength.tex}}
-
-\newcommand{\sailccgetCapCursor}{\label{zgetCapCursor} \lstinputlisting[language=sail]{sail_latexcc/sailccgetCapCursor.tex}}
-
-\newcommand{\sailccfngetCapCursor}{\label{zgetCapCursor} \lstinputlisting[language=sail]{sail_latexcc/sailccfngetCapCursor.tex}}
-
-\newcommand{\sailccfastRepCheck}{\label{zfastRepCheck} \lstinputlisting[language=sail]{sail_latexcc/sailccfastRepCheck.tex}}
-
-\newcommand{\sailccfnfastRepCheck}{\label{zfastRepCheck} \lstinputlisting[language=sail]{sail_latexcc/sailccfnfastRepCheck.tex}}
-
-\newcommand{\sailccsetCapOffset}{\label{zsetCapOffset} \lstinputlisting[language=sail]{sail_latexcc/sailccsetCapOffset.tex}}
-
-\newcommand{\sailccfnsetCapOffset}{\label{zsetCapOffset} \lstinputlisting[language=sail]{sail_latexcc/sailccfnsetCapOffset.tex}}
-
-\newcommand{\sailccincCapOffset}{\label{zincCapOffset} \lstinputlisting[language=sail]{sail_latexcc/sailccincCapOffset.tex}}
-
-\newcommand{\sailccfnincCapOffset}{\label{zincCapOffset} \lstinputlisting[language=sail]{sail_latexcc/sailccfnincCapOffset.tex}}
-
-\newcommand{\sailccHighestSetBit}{\label{zHighestSetBit} \lstinputlisting[language=sail]{sail_latexcc/sailccHighestSetBit.tex}}
-
-\newcommand{\sailccfnHighestSetBit}{\label{zHighestSetBit} \lstinputlisting[language=sail]{sail_latexcc/sailccfnHighestSetBit.tex}}
-
-\newcommand{\sailccroundUp}{\label{zroundUp} \lstinputlisting[language=sail]{sail_latexcc/sailccroundUp.tex}}
-
-\newcommand{\sailccfnroundUp}{\label{zroundUp} \lstinputlisting[language=sail]{sail_latexcc/sailccfnroundUp.tex}}
-
-\newcommand{\sailcccomputeE}{\label{zcomputeE} \lstinputlisting[language=sail]{sail_latexcc/sailcccomputeE.tex}}
-
-\newcommand{\sailccfncomputeE}{\label{zcomputeE} \lstinputlisting[language=sail]{sail_latexcc/sailccfncomputeE.tex}}
-
-\newcommand{\sailccsetCapBounds}{\label{zsetCapBounds} \lstinputlisting[language=sail]{sail_latexcc/sailccsetCapBounds.tex}}
-
-\newcommand{\sailccfnsetCapBounds}{\label{zsetCapBounds} \lstinputlisting[language=sail]{sail_latexcc/sailccfnsetCapBounds.tex}}
-
-\newcommand{\sailccinttocap}{\label{zintzytozycap} \lstinputlisting[language=sail]{sail_latexcc/sailccinttocap.tex}}
-
-\newcommand{\sailccfninttocap}{\label{zintzytozycap} \lstinputlisting[language=sail]{sail_latexcc/sailccfninttocap.tex}}
-
diff --git a/cheri/sail_latexcc/sailccBitStr.tex b/cheri/sail_latexcc/sailccBitStr.tex
deleted file mode 100644
index a0d408ab..00000000
--- a/cheri/sail_latexcc/sailccBitStr.tex
+++ /dev/null
@@ -1 +0,0 @@
-val BitStr = "string_of_bits" : forall 'n. #\hyperref[zbits]{bits}#('n) -> string
diff --git a/cheri/sail_latexcc/sailccCPtrCmpOp.tex b/cheri/sail_latexcc/sailccCPtrCmpOp.tex
deleted file mode 100644
index cb0a73ae..00000000
--- a/cheri/sail_latexcc/sailccCPtrCmpOp.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-enum CPtrCmpOp = {
- CEQ,
- CNE,
- CLT,
- CLE,
- CLTU,
- CLEU,
- CEXEQ,
- CNEXEQ
-}
diff --git a/cheri/sail_latexcc/sailccCPtrCmpOpofnum.tex b/cheri/sail_latexcc/sailccCPtrCmpOpofnum.tex
deleted file mode 100644
index bd6ca31c..00000000
--- a/cheri/sail_latexcc/sailccCPtrCmpOpofnum.tex
+++ /dev/null
@@ -1 +0,0 @@
-val CPtrCmpOp_of_num : forall ('e : Int), 0 <= 'e & 'e <= 7. atom('e) -> CPtrCmpOp
diff --git a/cheri/sail_latexcc/sailccCapLen.tex b/cheri/sail_latexcc/sailccCapLen.tex
deleted file mode 100644
index 812f45ff..00000000
--- a/cheri/sail_latexcc/sailccCapLen.tex
+++ /dev/null
@@ -1 +0,0 @@
-type CapLen = range(0, 2 ^ 65)
diff --git a/cheri/sail_latexcc/sailccCapReg.tex b/cheri/sail_latexcc/sailccCapReg.tex
deleted file mode 100644
index 702141d9..00000000
--- a/cheri/sail_latexcc/sailccCapReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-type CapReg = #\hyperref[zbits]{bits}#(129)
diff --git a/cheri/sail_latexcc/sailccCapStruct.tex b/cheri/sail_latexcc/sailccCapStruct.tex
deleted file mode 100644
index b1df7ec5..00000000
--- a/cheri/sail_latexcc/sailccCapStruct.tex
+++ /dev/null
@@ -1,22 +0,0 @@
-struct CapStruct = {
- tag : bool ,
- uperms : #\hyperref[zbits]{bits}#(4) ,
- access_system_regs : bool ,
- permit_unseal : bool ,
- permit_ccall : bool ,
- permit_seal : bool ,
- permit_store_local_cap : bool ,
- permit_store_cap : bool ,
- permit_load_cap : bool ,
- permit_store : bool ,
- permit_load : bool ,
- permit_execute : bool ,
- global : bool ,
- reserved : #\hyperref[zbits]{bits}#(2) ,
- E : #\hyperref[zbits]{bits}#(6) ,
- sealed : bool ,
- B : #\hyperref[zbits]{bits}#(20),
- T : #\hyperref[zbits]{bits}#(20),
- otype : #\hyperref[zbits]{bits}#(24),
- address : #\hyperref[zbits]{bits}#(64)
-}
diff --git a/cheri/sail_latexcc/sailccClearRegSet.tex b/cheri/sail_latexcc/sailccClearRegSet.tex
deleted file mode 100644
index c04ea7d4..00000000
--- a/cheri/sail_latexcc/sailccClearRegSet.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-enum ClearRegSet = {
-GPLo,
-GPHi,
-CLo,
-CHi
-}
diff --git a/cheri/sail_latexcc/sailccClearRegSetofnum.tex b/cheri/sail_latexcc/sailccClearRegSetofnum.tex
deleted file mode 100644
index c73d36d9..00000000
--- a/cheri/sail_latexcc/sailccClearRegSetofnum.tex
+++ /dev/null
@@ -1 +0,0 @@
-val ClearRegSet_of_num : forall ('e : Int), 0 <= 'e & 'e <= 3. atom('e) -> ClearRegSet
diff --git a/cheri/sail_latexcc/sailccHighestSetBit.tex b/cheri/sail_latexcc/sailccHighestSetBit.tex
deleted file mode 100644
index eb8a5e36..00000000
--- a/cheri/sail_latexcc/sailccHighestSetBit.tex
+++ /dev/null
@@ -1 +0,0 @@
-val HighestSetBit : forall 'N , 'N >= 2. #\hyperref[zbits]{bits}#('N) -> {'n, 0 <= 'n < 'N . (bool, atom('n))}
diff --git a/cheri/sail_latexcc/sailccMIPSread.tex b/cheri/sail_latexcc/sailccMIPSread.tex
deleted file mode 100644
index 92ca59cc..00000000
--- a/cheri/sail_latexcc/sailccMIPSread.tex
+++ /dev/null
@@ -1 +0,0 @@
-val __MIPS_read : forall 'n, 'n >= 0. (#\hyperref[zbits]{bits}#(64), atom('n)) -> #\hyperref[zbits]{bits}#(8 * 'n) effect {rmem}
diff --git a/cheri/sail_latexcc/sailccMIPSwrite.tex b/cheri/sail_latexcc/sailccMIPSwrite.tex
deleted file mode 100644
index cc67fa20..00000000
--- a/cheri/sail_latexcc/sailccMIPSwrite.tex
+++ /dev/null
@@ -1 +0,0 @@
-val __MIPS_write : forall 'n. (#\hyperref[zbits]{bits}#(64), atom('n), #\hyperref[zbits]{bits}#(8 * 'n)) -> unit effect {wmv}
diff --git a/cheri/sail_latexcc/sailccReadRAM.tex b/cheri/sail_latexcc/sailccReadRAM.tex
deleted file mode 100644
index 68d629a6..00000000
--- a/cheri/sail_latexcc/sailccReadRAM.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val __ReadRAM = "read_ram" : forall 'n 'm, 'n >= 0.
- (atom('m), atom('n), #\hyperref[zbits]{bits}#('m), #\hyperref[zbits]{bits}#('m)) -> #\hyperref[zbits]{bits}#(8 * 'n) effect {rmem}
diff --git a/cheri/sail_latexcc/sailccWriteRAM.tex b/cheri/sail_latexcc/sailccWriteRAM.tex
deleted file mode 100644
index 2ed4aca2..00000000
--- a/cheri/sail_latexcc/sailccWriteRAM.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val __WriteRAM = "write_ram" : forall 'n 'm.
- (atom('m), atom('n), #\hyperref[zbits]{bits}#('m), #\hyperref[zbits]{bits}#('m), #\hyperref[zbits]{bits}#(8 * 'n)) -> bool effect {wmv}
diff --git a/cheri/sail_latexcc/sailccabsatom.tex b/cheri/sail_latexcc/sailccabsatom.tex
deleted file mode 100644
index 5164ef32..00000000
--- a/cheri/sail_latexcc/sailccabsatom.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-val abs_atom = {
- smt : "abs",
- ocaml: "abs_int",
- lem: "abs_int",
- c: "abs_int",
- coq: "abs_with_eq"
-} : forall 'n. atom('n) -> {'o, 'o = #\hyperref[zabszyatom]{abs\_atom}#('n). atom('o)}
diff --git a/cheri/sail_latexcc/sailccabsint.tex b/cheri/sail_latexcc/sailccabsint.tex
deleted file mode 100644
index d3b67cfb..00000000
--- a/cheri/sail_latexcc/sailccabsint.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val abs_int = {
- smt : "abs",
- ocaml: "abs_int",
- lem: "abs_int",
- coq: "Z.abs"
-} : (int, int) -> int
diff --git a/cheri/sail_latexcc/sailccaddatom.tex b/cheri/sail_latexcc/sailccaddatom.tex
deleted file mode 100644
index 8b6ac810..00000000
--- a/cheri/sail_latexcc/sailccaddatom.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val add_atom = {ocaml: "add_int", lem: "integerAdd", c: "add_int", coq: "Z.add"} : forall 'n 'm.
- (atom('n), atom('m)) -> atom('n + 'm)
diff --git a/cheri/sail_latexcc/sailccaddbits.tex b/cheri/sail_latexcc/sailccaddbits.tex
deleted file mode 100644
index 95f653d1..00000000
--- a/cheri/sail_latexcc/sailccaddbits.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val add_bits = {
- ocaml: "add_vec",
- lem: "add_vec",
- c: "add_bits",
- coq: "add_vec"
-} : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccaddbitsint.tex b/cheri/sail_latexcc/sailccaddbitsint.tex
deleted file mode 100644
index ee9a8aa2..00000000
--- a/cheri/sail_latexcc/sailccaddbitsint.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val add_bits_int = {
- ocaml: "add_vec_int",
- lem: "add_vec_int",
- c: "add_bits_int",
- coq: "add_vec_int"
-} : forall 'n. (#\hyperref[zbits]{bits}#('n), int) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccaddint.tex b/cheri/sail_latexcc/sailccaddint.tex
deleted file mode 100644
index 9fe5b078..00000000
--- a/cheri/sail_latexcc/sailccaddint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val add_int = {ocaml: "add_int", lem: "integerAdd", c: "add_int", coq: "Z.add"} : (int, int) -> int
diff --git a/cheri/sail_latexcc/sailccaddrange.tex b/cheri/sail_latexcc/sailccaddrange.tex
deleted file mode 100644
index fbf498b1..00000000
--- a/cheri/sail_latexcc/sailccaddrange.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val add_range = {ocaml: "add_int", lem: "integerAdd", coq: "add_range", c: "add_int"} : forall 'n 'm 'o 'p.
- (range('n, 'm), range('o, 'p)) -> range('n + 'o, 'm + 'p)
diff --git a/cheri/sail_latexcc/sailccaddvec.tex b/cheri/sail_latexcc/sailccaddvec.tex
deleted file mode 100644
index bb625afe..00000000
--- a/cheri/sail_latexcc/sailccaddvec.tex
+++ /dev/null
@@ -1 +0,0 @@
-val add_vec = "add_vec" : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccaddvecint.tex b/cheri/sail_latexcc/sailccaddvecint.tex
deleted file mode 100644
index 189ad4aa..00000000
--- a/cheri/sail_latexcc/sailccaddvecint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val add_vec_int = "add_vec_int" : forall 'n. (#\hyperref[zbits]{bits}#('n), int) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccandbits.tex b/cheri/sail_latexcc/sailccandbits.tex
deleted file mode 100644
index 8e35bd5b..00000000
--- a/cheri/sail_latexcc/sailccandbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val and_bits = {c:"and_bits", _: "and_vec"} : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccandbool.tex b/cheri/sail_latexcc/sailccandbool.tex
deleted file mode 100644
index 926dce9f..00000000
--- a/cheri/sail_latexcc/sailccandbool.tex
+++ /dev/null
@@ -1 +0,0 @@
-val and_bool = {coq: "andb", _: "and_bool"} : (bool, bool) -> bool
diff --git a/cheri/sail_latexcc/sailccappend.tex b/cheri/sail_latexcc/sailccappend.tex
deleted file mode 100644
index 56c12116..00000000
--- a/cheri/sail_latexcc/sailccappend.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload append = {bitvector_concat} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccappendsixfour.tex b/cheri/sail_latexcc/sailccappendsixfour.tex
deleted file mode 100644
index 633593b3..00000000
--- a/cheri/sail_latexcc/sailccappendsixfour.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "append_64" : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#(64)) -> #\hyperref[zbits]{bits}#('n + 64)
diff --git a/cheri/sail_latexcc/sailccatopcorrection.tex b/cheri/sail_latexcc/sailccatopcorrection.tex
deleted file mode 100644
index 13bbaf7b..00000000
--- a/cheri/sail_latexcc/sailccatopcorrection.tex
+++ /dev/null
@@ -1 +0,0 @@
-val a_top_correction : (bits(20), bits(20), bits(20)) -> bits(65)
diff --git a/cheri/sail_latexcc/sailccbits.tex b/cheri/sail_latexcc/sailccbits.tex
deleted file mode 100644
index 88255b5a..00000000
--- a/cheri/sail_latexcc/sailccbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-type #\hyperref[zbits]{bits}# ('n : Int) = vector('n, dec, bit)
diff --git a/cheri/sail_latexcc/sailccbitstobool.tex b/cheri/sail_latexcc/sailccbitstobool.tex
deleted file mode 100644
index 17cb3483..00000000
--- a/cheri/sail_latexcc/sailccbitstobool.tex
+++ /dev/null
@@ -1 +0,0 @@
-val cast bits_to_bool : #\hyperref[zbits]{bits}#(1) -> bool
diff --git a/cheri/sail_latexcc/sailccbittobool.tex b/cheri/sail_latexcc/sailccbittobool.tex
deleted file mode 100644
index 13a2dfb8..00000000
--- a/cheri/sail_latexcc/sailccbittobool.tex
+++ /dev/null
@@ -1 +0,0 @@
-val cast bit_to_bool : bit -> bool
diff --git a/cheri/sail_latexcc/sailccbitvectoraccess.tex b/cheri/sail_latexcc/sailccbitvectoraccess.tex
deleted file mode 100644
index 4bb98eb8..00000000
--- a/cheri/sail_latexcc/sailccbitvectoraccess.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val bitvector_access = {
- ocaml: "access",
- lem: "access_vec_dec",
- coq: "access_vec_dec",
- c: "vector_access"
-} : forall ('n : Int), 'n >= 0. (#\hyperref[zbits]{bits}#('n), int) -> bit
diff --git a/cheri/sail_latexcc/sailccbitvectorconcat.tex b/cheri/sail_latexcc/sailccbitvectorconcat.tex
deleted file mode 100644
index afc03901..00000000
--- a/cheri/sail_latexcc/sailccbitvectorconcat.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val bitvector_concat = {ocaml: "append", lem: "concat_vec", c: "append", coq: "concat_vec"} : forall ('n : Int) ('m : Int).
- (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('m)) -> #\hyperref[zbits]{bits}#('n + 'm)
diff --git a/cheri/sail_latexcc/sailccbitvectorlength.tex b/cheri/sail_latexcc/sailccbitvectorlength.tex
deleted file mode 100644
index ac601acd..00000000
--- a/cheri/sail_latexcc/sailccbitvectorlength.tex
+++ /dev/null
@@ -1 +0,0 @@
-val bitvector_length = {coq: "length_mword", _:"length"} : forall 'n. #\hyperref[zbits]{bits}#('n) -> atom('n)
diff --git a/cheri/sail_latexcc/sailccbitvectorupdate.tex b/cheri/sail_latexcc/sailccbitvectorupdate.tex
deleted file mode 100644
index 6524146e..00000000
--- a/cheri/sail_latexcc/sailccbitvectorupdate.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val bitvector_update = {
- ocaml: "update",
- lem: "update_vec_dec",
- coq: "update_vec_dec",
- c: "vector_update"
-} : forall 'n, 'n >= 0. (#\hyperref[zbits]{bits}#('n), int, bit) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccbooltobits.tex b/cheri/sail_latexcc/sailccbooltobits.tex
deleted file mode 100644
index 711ab763..00000000
--- a/cheri/sail_latexcc/sailccbooltobits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val cast bool_to_bits : bool -> #\hyperref[zbits]{bits}#(1)
diff --git a/cheri/sail_latexcc/sailcccapRegToCapStruct.tex b/cheri/sail_latexcc/sailcccapRegToCapStruct.tex
deleted file mode 100644
index bd64d554..00000000
--- a/cheri/sail_latexcc/sailcccapRegToCapStruct.tex
+++ /dev/null
@@ -1 +0,0 @@
-val capRegToCapStruct : CapReg -> CapStruct
diff --git a/cheri/sail_latexcc/sailcccapStructToCapReg.tex b/cheri/sail_latexcc/sailcccapStructToCapReg.tex
deleted file mode 100644
index b5409845..00000000
--- a/cheri/sail_latexcc/sailcccapStructToCapReg.tex
+++ /dev/null
@@ -1 +0,0 @@
-val capStructToCapReg : CapStruct -> CapReg
diff --git a/cheri/sail_latexcc/sailcccapStructToMemBits.tex b/cheri/sail_latexcc/sailcccapStructToMemBits.tex
deleted file mode 100644
index 4a49e9c0..00000000
--- a/cheri/sail_latexcc/sailcccapStructToMemBits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val capStructToMemBits : CapStruct -> bits(128)
diff --git a/cheri/sail_latexcc/sailcccapStructToMemBitsonetwoeight.tex b/cheri/sail_latexcc/sailcccapStructToMemBitsonetwoeight.tex
deleted file mode 100644
index 8f3a8d0f..00000000
--- a/cheri/sail_latexcc/sailcccapStructToMemBitsonetwoeight.tex
+++ /dev/null
@@ -1 +0,0 @@
-val capStructToMemBits128 : CapStruct -> bits(128)
diff --git a/cheri/sail_latexcc/sailcccastunitvec.tex b/cheri/sail_latexcc/sailcccastunitvec.tex
deleted file mode 100644
index e0391ded..00000000
--- a/cheri/sail_latexcc/sailcccastunitvec.tex
+++ /dev/null
@@ -1 +0,0 @@
-val cast cast_unit_vec : bit -> #\hyperref[zbits]{bits}#(1)
diff --git a/cheri/sail_latexcc/sailcccomputeE.tex b/cheri/sail_latexcc/sailcccomputeE.tex
deleted file mode 100644
index 893cea49..00000000
--- a/cheri/sail_latexcc/sailcccomputeE.tex
+++ /dev/null
@@ -1 +0,0 @@
-val computeE : bits(65) -> range(0, 48) effect {escape}
diff --git a/cheri/sail_latexcc/sailccconcatstr.tex b/cheri/sail_latexcc/sailccconcatstr.tex
deleted file mode 100644
index 07556728..00000000
--- a/cheri/sail_latexcc/sailccconcatstr.tex
+++ /dev/null
@@ -1 +0,0 @@
-val concat_str = {lem: "stringAppend", coq: "String.append", _: "concat_str"} : (string, string) -> string
diff --git a/cheri/sail_latexcc/sailccdiv.tex b/cheri/sail_latexcc/sailccdiv.tex
deleted file mode 100644
index 58318fe9..00000000
--- a/cheri/sail_latexcc/sailccdiv.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-val div = {
- smt: "div",
- ocaml: "quotient",
- lem: "integerDiv",
- c: "tdiv_int",
- coq: "div_with_eq"
-} : forall 'n 'm. (atom('n), atom('m)) -> {'o, 'o = #\hyperref[zdiv]{div}#('n, 'm). atom('o)}
diff --git a/cheri/sail_latexcc/sailccdivint.tex b/cheri/sail_latexcc/sailccdivint.tex
deleted file mode 100644
index 34ae6121..00000000
--- a/cheri/sail_latexcc/sailccdivint.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-val div_int = {
- smt: "div",
- ocaml: "quotient",
- lem: "integerDiv",
- c: "tdiv_int",
- coq: "Z.quot"
-} : (int, int) -> int
diff --git a/cheri/sail_latexcc/sailcceqanything.tex b/cheri/sail_latexcc/sailcceqanything.tex
deleted file mode 100644
index 9b5d3c92..00000000
--- a/cheri/sail_latexcc/sailcceqanything.tex
+++ /dev/null
@@ -1 +0,0 @@
-val eq_anything = {ocaml: "(#\hyperref[zfun]{fun}# (x, y) -> x = y)", lem: "eq", coq: "generic_eq", _:"eq_anything"} : forall ('a : Type). ('a, 'a) -> bool
diff --git a/cheri/sail_latexcc/sailcceqatom.tex b/cheri/sail_latexcc/sailcceqatom.tex
deleted file mode 100644
index 0325ab15..00000000
--- a/cheri/sail_latexcc/sailcceqatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val eq_atom = {ocaml: "eq_int", lem: "eq", c: "eq_int", coq: "Z.eqb"} : forall 'n 'm. (atom('n), atom('m)) -> bool
diff --git a/cheri/sail_latexcc/sailcceqbit.tex b/cheri/sail_latexcc/sailcceqbit.tex
deleted file mode 100644
index 205d3436..00000000
--- a/cheri/sail_latexcc/sailcceqbit.tex
+++ /dev/null
@@ -1 +0,0 @@
-val eq_bit = { lem : "eq", _ : "eq_bit" } : (bit, bit) -> bool
diff --git a/cheri/sail_latexcc/sailcceqbits.tex b/cheri/sail_latexcc/sailcceqbits.tex
deleted file mode 100644
index e78ed19a..00000000
--- a/cheri/sail_latexcc/sailcceqbits.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val eq_bits = {
- ocaml: "eq_list",
- lem: "eq_vec",
- c: "eq_bits",
- coq: "eq_vec"
-} : forall 'n. (vector('n, dec, bit), vector('n, dec, bit)) -> bool
diff --git a/cheri/sail_latexcc/sailcceqbittwo.tex b/cheri/sail_latexcc/sailcceqbittwo.tex
deleted file mode 100644
index 59353940..00000000
--- a/cheri/sail_latexcc/sailcceqbittwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-val eq_bit2 = "eq_bit" : (bit, bit) -> bool
diff --git a/cheri/sail_latexcc/sailcceqbool.tex b/cheri/sail_latexcc/sailcceqbool.tex
deleted file mode 100644
index 4d2c346b..00000000
--- a/cheri/sail_latexcc/sailcceqbool.tex
+++ /dev/null
@@ -1 +0,0 @@
-val eq_bool = {ocaml: "eq_bool", lem: "eq", c: "eq_bool", coq: "Bool.eqb"} : (bool, bool) -> bool
diff --git a/cheri/sail_latexcc/sailcceqint.tex b/cheri/sail_latexcc/sailcceqint.tex
deleted file mode 100644
index 4c0462c1..00000000
--- a/cheri/sail_latexcc/sailcceqint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val eq_int = {ocaml: "eq_int", lem: "eq", c: "eq_int", coq: "Z.eqb"} : (int, int) -> bool
diff --git a/cheri/sail_latexcc/sailcceqrange.tex b/cheri/sail_latexcc/sailcceqrange.tex
deleted file mode 100644
index 7f1cd5f2..00000000
--- a/cheri/sail_latexcc/sailcceqrange.tex
+++ /dev/null
@@ -1 +0,0 @@
-val eq_range = {ocaml: "eq_int", lem: "eq", c: "eq_int", coq: "eq_range"} : forall 'n 'm 'o 'p. (range('n, 'm), range('o, 'p)) -> bool
diff --git a/cheri/sail_latexcc/sailccfastRepCheck.tex b/cheri/sail_latexcc/sailccfastRepCheck.tex
deleted file mode 100644
index 2dd665fb..00000000
--- a/cheri/sail_latexcc/sailccfastRepCheck.tex
+++ /dev/null
@@ -1 +0,0 @@
-val fastRepCheck : (CapStruct, bits(64)) -> bool
diff --git a/cheri/sail_latexcc/sailccfnCPtrCmpOpofnum.tex b/cheri/sail_latexcc/sailccfnCPtrCmpOpofnum.tex
deleted file mode 100644
index 6ab563f3..00000000
--- a/cheri/sail_latexcc/sailccfnCPtrCmpOpofnum.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function CPtrCmpOp_of_num arg# = match arg# {
- 0 => CEQ,
- 1 => CNE,
- 2 => CLT,
- 3 => CLE,
- 4 => CLTU,
- 5 => CLEU,
- 6 => CEXEQ,
- _ => CNEXEQ
-}
diff --git a/cheri/sail_latexcc/sailccfnClearRegSetofnum.tex b/cheri/sail_latexcc/sailccfnClearRegSetofnum.tex
deleted file mode 100644
index edfe64e3..00000000
--- a/cheri/sail_latexcc/sailccfnClearRegSetofnum.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function ClearRegSet_of_num arg# = match arg# {
- 0 => GPLo,
- 1 => GPHi,
- 2 => CLo,
- _ => CHi
-}
diff --git a/cheri/sail_latexcc/sailccfnHighestSetBit.tex b/cheri/sail_latexcc/sailccfnHighestSetBit.tex
deleted file mode 100644
index dbbc5b49..00000000
--- a/cheri/sail_latexcc/sailccfnHighestSetBit.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function HighestSetBit x = {
- foreach (i #\hyperref[zfrom]{from}# ('N - 1) to 0 by 1 in dec)
- if [x[i]] == 0b1 then return (true, i);
- return (false, 0)
-}
diff --git a/cheri/sail_latexcc/sailccfnMIPSread.tex b/cheri/sail_latexcc/sailccfnMIPSread.tex
deleted file mode 100644
index ee937856..00000000
--- a/cheri/sail_latexcc/sailccfnMIPSread.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zzyzyMIPSzyread]{\_\_MIPS\_read}# (addr, width) = #\hyperref[zzyzyReadRAM]{\_\_ReadRAM}#(64, width, 0x0000_0000_0000_0000, addr)
diff --git a/cheri/sail_latexcc/sailccfnMIPSwrite.tex b/cheri/sail_latexcc/sailccfnMIPSwrite.tex
deleted file mode 100644
index 5e81f335..00000000
--- a/cheri/sail_latexcc/sailccfnMIPSwrite.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zzyzyMIPSzywrite]{\_\_MIPS\_write}# (addr, width, data) = let _ = #\hyperref[zzyzyWriteRAM]{\_\_WriteRAM}#(64, width, 0x0000_0000_0000_0000, addr, data) in ()
diff --git a/cheri/sail_latexcc/sailccfnatopcorrection.tex b/cheri/sail_latexcc/sailccfnatopcorrection.tex
deleted file mode 100644
index 3a6be173..00000000
--- a/cheri/sail_latexcc/sailccfnatopcorrection.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-function #\hyperref[zazytopzycorrection]{a\_top\_correction}#(a_mid, R, bound) : (#\hyperref[zbits]{bits}#(20), #\hyperref[zbits]{bits}#(20), #\hyperref[zbits]{bits}#(20)) -> #\hyperref[zbits]{bits}#(65) =
- match (a_mid <_u R, bound <_u R) {
- (false, false) => #\hyperref[zzzeros]{zeros}#(),
- (false, true) => #\hyperref[zzzerozyextend]{zero\_extend}#(0b1),
- (true, false) => #\hyperref[zones]{ones}#(),
- (true, true) => #\hyperref[zzzeros]{zeros}#()
- }
diff --git a/cheri/sail_latexcc/sailccfnbitstobool.tex b/cheri/sail_latexcc/sailccfnbitstobool.tex
deleted file mode 100644
index 1cb33076..00000000
--- a/cheri/sail_latexcc/sailccfnbitstobool.tex
+++ /dev/null
@@ -1 +0,0 @@
-function bits_to_bool x = #\hyperref[zbitzytozybool]{bit\_to\_bool}#(x[0])
diff --git a/cheri/sail_latexcc/sailccfnbittobool.tex b/cheri/sail_latexcc/sailccfnbittobool.tex
deleted file mode 100644
index a5eea578..00000000
--- a/cheri/sail_latexcc/sailccfnbittobool.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function bit_to_bool b = match b {
- bitone => true,
- _ => false
-}
diff --git a/cheri/sail_latexcc/sailccfnbooltobits.tex b/cheri/sail_latexcc/sailccfnbooltobits.tex
deleted file mode 100644
index 99075369..00000000
--- a/cheri/sail_latexcc/sailccfnbooltobits.tex
+++ /dev/null
@@ -1 +0,0 @@
-function bool_to_bits x = if x then 0b1 else 0b0
diff --git a/cheri/sail_latexcc/sailccfncapRegToCapStruct.tex b/cheri/sail_latexcc/sailccfncapRegToCapStruct.tex
deleted file mode 100644
index 4af338b9..00000000
--- a/cheri/sail_latexcc/sailccfncapRegToCapStruct.tex
+++ /dev/null
@@ -1,27 +0,0 @@
-function #\hyperref[zcapRegToCapStruct]{capRegToCapStruct}#(c) : CapReg -> CapStruct =
- let s : bool = c[104] in
- let Bc : #\hyperref[zbits]{bits}#(20) = if s then c[103..96] @ 0x000 else c[103..84] in
- let Tc : #\hyperref[zbits]{bits}#(20) = if s then c[83..76] @ 0x000 else c[83..64] in
- let otype : #\hyperref[zbits]{bits}#(24) = if s then c[95..84] @ c[75..64] else #\hyperref[zzzeros]{zeros}#() in
- struct {
- tag = c[128],
- uperms = c[127..124],
- access_system_regs = c[123],
- permit_unseal = c[122],
- permit_ccall = c[121],
- permit_seal = c[120],
- permit_store_local_cap = c[119],
- permit_store_cap = c[118],
- permit_load_cap = c[117],
- permit_store = c[116],
- permit_load = c[115],
- permit_execute = c[114],
- global = c[113],
- reserved = c[112..111],
- E = c[110..105],
- sealed = s,
- B = Bc,
- T = Tc,
- otype = otype,
- address = c[63..0]
- }
diff --git a/cheri/sail_latexcc/sailccfncapStructToCapReg.tex b/cheri/sail_latexcc/sailccfncapStructToCapReg.tex
deleted file mode 100644
index f6b02365..00000000
--- a/cheri/sail_latexcc/sailccfncapStructToCapReg.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zcapStructToCapReg]{capStructToCapReg}#(cap) : CapStruct -> CapReg =
- (cap.tag @ #\hyperref[zcapStructToMemBitsonetwoeight]{capStructToMemBits128}#(cap))
diff --git a/cheri/sail_latexcc/sailccfncapStructToMemBits.tex b/cheri/sail_latexcc/sailccfncapStructToMemBits.tex
deleted file mode 100644
index ea19467f..00000000
--- a/cheri/sail_latexcc/sailccfncapStructToMemBits.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zcapStructToMemBits]{capStructToMemBits}#(cap) : CapStruct -> #\hyperref[zbits]{bits}#(128) =
- #\hyperref[zcapStructToMemBitsonetwoeight]{capStructToMemBits128}#(cap) ^ null_cap_bits
diff --git a/cheri/sail_latexcc/sailccfncapStructToMemBitsonetwoeight.tex b/cheri/sail_latexcc/sailccfncapStructToMemBitsonetwoeight.tex
deleted file mode 100644
index 08da637f..00000000
--- a/cheri/sail_latexcc/sailccfncapStructToMemBitsonetwoeight.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-function #\hyperref[zcapStructToMemBitsonetwoeight]{capStructToMemBits128}#(cap) : CapStruct -> #\hyperref[zbits]{bits}#(128) =
- let b : #\hyperref[zbits]{bits}#(20) = if cap.sealed then (cap.B)[19..12] @ (cap.otype)[23..12] else cap.B in
- let t : #\hyperref[zbits]{bits}#(20) = if cap.sealed then (cap.T)[19..12] @ (cap.otype)[11..0] else cap.T in
- ( cap.uperms
- @ #\hyperref[zgetCapHardPerms]{getCapHardPerms}#(cap)
- @ cap.reserved
- @ cap.E
- @ cap.sealed
- @ b
- @ t
- @ cap.address
- )
diff --git a/cheri/sail_latexcc/sailccfncastunitvec.tex b/cheri/sail_latexcc/sailccfncastunitvec.tex
deleted file mode 100644
index 1bb7a9e0..00000000
--- a/cheri/sail_latexcc/sailccfncastunitvec.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function cast_unit_vec b = match b {
- bitzero => 0b0,
- _ => 0b1
-}
diff --git a/cheri/sail_latexcc/sailccfncomputeE.tex b/cheri/sail_latexcc/sailccfncomputeE.tex
deleted file mode 100644
index ef4cb71b..00000000
--- a/cheri/sail_latexcc/sailccfncomputeE.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-function #\hyperref[zcomputeE]{computeE}# (rlength) : #\hyperref[zbits]{bits}#(65) -> range(0, 48) =
- let (nonzero, 'msb) = #\hyperref[zHighestSetBit]{HighestSetBit}#((rlength + (rlength >> 6)) >> 19) in
- if nonzero then
- /* above will always return <= 45 because 19 bits of zero are shifted in from right */
- {assert(0 <= msb & msb <= 45); #\hyperref[zroundUp]{roundUp}# (#\hyperref[zmin]{min}#(msb,45)) }
- else
- 0
diff --git a/cheri/sail_latexcc/sailccfnfastRepCheck.tex b/cheri/sail_latexcc/sailccfnfastRepCheck.tex
deleted file mode 100644
index 3e4d2111..00000000
--- a/cheri/sail_latexcc/sailccfnfastRepCheck.tex
+++ /dev/null
@@ -1,23 +0,0 @@
-function #\hyperref[zfastRepCheck]{fastRepCheck}#(c, i) : (CapStruct, #\hyperref[zbits]{bits}#(64)) -> bool=
- let 'E = #\hyperref[zunsigned]{unsigned}#(c.E) in
- if (E >= 44) then
- true /* in this case representable region is whole address space */
- else
- let E' = #\hyperref[zmin]{min}#(E, 43) in
- let i_top = #\hyperref[zsigned]{signed}#(i[63..E+20]) in
- let i_mid : #\hyperref[zbits]{bits}#(20) = i[E+19..E] in
- let a_mid : #\hyperref[zbits]{bits}#(20) = (c.address)[E+19..E] in
- let R : #\hyperref[zbits]{bits}#(20) = (c.B) - 0x01000 in
- let diff : #\hyperref[zbits]{bits}#(20) = R - a_mid in
- let diff1 : #\hyperref[zbits]{bits}#(20) = diff - 1 in
- /* i_top determines 1. whether the increment is inRange
- i.e. less than the size of the representable region
- (2**(E+20)) and 2. whether it is positive or negative. To
- satisfy 1. all top bits must be the same so we are
- interested in the cases i_top is 0 or -1 */
- if (i_top == 0) then
- i_mid <_u diff1
- else if (i_top == -1) then
- (i_mid >=_u diff) & (R != a_mid)
- else
- false
diff --git a/cheri/sail_latexcc/sailccfngetCapBase.tex b/cheri/sail_latexcc/sailccfngetCapBase.tex
deleted file mode 100644
index 51677965..00000000
--- a/cheri/sail_latexcc/sailccfngetCapBase.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function #\hyperref[zgetCapBase]{getCapBase}#(c) : CapStruct -> uint64 =
- let E = #\hyperref[zmin]{min}#(#\hyperref[zunsigned]{unsigned}#(c.E), 48) in
- let Bc : #\hyperref[zbits]{bits}#(20) = c.B in
- let a : #\hyperref[zbits]{bits}#(65) = #\hyperref[zzzerozyextend]{zero\_extend}#(c.address) in
- let R : #\hyperref[zbits]{bits}#(20) = Bc - 0x01000 in /* wraps */
- let a_mid : #\hyperref[zbits]{bits}#(20) = #\hyperref[zmask]{mask}#(a >> E) in
- let correction = #\hyperref[zazytopzycorrection]{a\_top\_correction}#(a_mid, R, Bc) in
- let a_top = a >> E+20 in
- let base : #\hyperref[zbits]{bits}#(64) = #\hyperref[zmask]{mask}#(((a_top + correction) @ Bc) << E) in
- #\hyperref[zunsigned]{unsigned}#(base)
diff --git a/cheri/sail_latexcc/sailccfngetCapCursor.tex b/cheri/sail_latexcc/sailccfngetCapCursor.tex
deleted file mode 100644
index 9f5d5757..00000000
--- a/cheri/sail_latexcc/sailccfngetCapCursor.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zgetCapCursor]{getCapCursor}#(cap) : CapStruct -> uint64 = #\hyperref[zunsigned]{unsigned}#(cap.address)
diff --git a/cheri/sail_latexcc/sailccfngetCapHardPerms.tex b/cheri/sail_latexcc/sailccfngetCapHardPerms.tex
deleted file mode 100644
index 0b86b980..00000000
--- a/cheri/sail_latexcc/sailccfngetCapHardPerms.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-function #\hyperref[zgetCapHardPerms]{getCapHardPerms}#(cap) : CapStruct -> #\hyperref[zbits]{bits}#(11) =
- (cap.access_system_regs
- @ cap.permit_unseal
- @ cap.permit_ccall
- @ cap.permit_seal
- @ cap.permit_store_local_cap
- @ cap.permit_store_cap
- @ cap.permit_load_cap
- @ cap.permit_store
- @ cap.permit_load
- @ cap.permit_execute
- @ cap.global)
diff --git a/cheri/sail_latexcc/sailccfngetCapLength.tex b/cheri/sail_latexcc/sailccfngetCapLength.tex
deleted file mode 100644
index e9ce6566..00000000
--- a/cheri/sail_latexcc/sailccfngetCapLength.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function #\hyperref[zgetCapLength]{getCapLength}#(c) : CapStruct -> CapLen =
- let 'top = #\hyperref[zgetCapTop]{getCapTop}#(c) in
- let 'base = #\hyperref[zgetCapBase]{getCapBase}#(c) in {
- assert (top >= base);
- top - base
- }
diff --git a/cheri/sail_latexcc/sailccfngetCapOffset.tex b/cheri/sail_latexcc/sailccfngetCapOffset.tex
deleted file mode 100644
index 8bf83916..00000000
--- a/cheri/sail_latexcc/sailccfngetCapOffset.tex
+++ /dev/null
@@ -1,3 +0,0 @@
-function #\hyperref[zgetCapOffset]{getCapOffset}#(c) : CapStruct -> uint64 =
- let base = #\hyperref[zgetCapBase]{getCapBase}#(c) in
- (#\hyperref[zunsigned]{unsigned}#(c.address) - base) % #\hyperref[zpowtwo]{pow2}#(64)
diff --git a/cheri/sail_latexcc/sailccfngetCapPerms.tex b/cheri/sail_latexcc/sailccfngetCapPerms.tex
deleted file mode 100644
index 9701e163..00000000
--- a/cheri/sail_latexcc/sailccfngetCapPerms.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function #\hyperref[zgetCapPerms]{getCapPerms}#(cap) : CapStruct -> #\hyperref[zbits]{bits}#(31) =
- let perms : #\hyperref[zbits]{bits}#(15) = #\hyperref[zzzerozyextend]{zero\_extend}#(#\hyperref[zgetCapHardPerms]{getCapHardPerms}#(cap)) in
- (0x000 /* uperms 30-19 */
- @ cap.uperms
- @ perms)
diff --git a/cheri/sail_latexcc/sailccfngetCapTop.tex b/cheri/sail_latexcc/sailccfngetCapTop.tex
deleted file mode 100644
index 1be5af24..00000000
--- a/cheri/sail_latexcc/sailccfngetCapTop.tex
+++ /dev/null
@@ -1,11 +0,0 @@
-function #\hyperref[zgetCapTop]{getCapTop}# (c) : CapStruct -> CapLen =
- let E = #\hyperref[zmin]{min}#(#\hyperref[zunsigned]{unsigned}#(c.E), 48) in
- let Bc : #\hyperref[zbits]{bits}#(20) = c.B in
- let T : #\hyperref[zbits]{bits}#(20) = c.T in
- let a : #\hyperref[zbits]{bits}#(65) = #\hyperref[zzzerozyextend]{zero\_extend}#(c.address) in
- let R : #\hyperref[zbits]{bits}#(20) = Bc - 0x01000 in /* wraps */
- let a_mid : #\hyperref[zbits]{bits}#(20) = #\hyperref[zmask]{mask}#(a >> E) in
- let correction = #\hyperref[zazytopzycorrection]{a\_top\_correction}#(a_mid, R, T) in
- let a_top = a >> E+20 in
- let top1 : #\hyperref[zbits]{bits}#(65) = #\hyperref[zmask]{mask}#((a_top + correction) @ T) in
- #\hyperref[zunsigned]{unsigned}#(top1 << E)
diff --git a/cheri/sail_latexcc/sailccfnincCapOffset.tex b/cheri/sail_latexcc/sailccfnincCapOffset.tex
deleted file mode 100644
index 59d3237e..00000000
--- a/cheri/sail_latexcc/sailccfnincCapOffset.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function #\hyperref[zincCapOffset]{incCapOffset}#(c, delta) : (CapStruct, #\hyperref[zbits]{bits}#(64)) -> (bool, CapStruct) =
- let newAddress : #\hyperref[zbits]{bits}#(64) = c.address + delta in
- let newCap = { c with address = newAddress } in
- let representable = #\hyperref[zfastRepCheck]{fastRepCheck}#(c, delta) in
- (representable, newCap)
diff --git a/cheri/sail_latexcc/sailccfninttocap.tex b/cheri/sail_latexcc/sailccfninttocap.tex
deleted file mode 100644
index 31bb2bec..00000000
--- a/cheri/sail_latexcc/sailccfninttocap.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zintzytozycap]{int\_to\_cap}# (offset) : #\hyperref[zbits]{bits}#(64) -> CapStruct =
- {null_cap with address = offset}
diff --git a/cheri/sail_latexcc/sailccfnisnone.tex b/cheri/sail_latexcc/sailccfnisnone.tex
deleted file mode 100644
index 877cc2a0..00000000
--- a/cheri/sail_latexcc/sailccfnisnone.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function is_none opt = match opt {
- #\hyperref[zSome]{Some}#(_) => false,
- #\hyperref[zNone]{None}#() => true
-}
diff --git a/cheri/sail_latexcc/sailccfnissome.tex b/cheri/sail_latexcc/sailccfnissome.tex
deleted file mode 100644
index f1f5f655..00000000
--- a/cheri/sail_latexcc/sailccfnissome.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-function is_some opt = match opt {
- #\hyperref[zSome]{Some}#(_) => true,
- #\hyperref[zNone]{None}#() => false
-}
diff --git a/cheri/sail_latexcc/sailccfnmask.tex b/cheri/sail_latexcc/sailccfnmask.tex
deleted file mode 100644
index e62ea529..00000000
--- a/cheri/sail_latexcc/sailccfnmask.tex
+++ /dev/null
@@ -1 +0,0 @@
-function mask bs = bs['n - 1 .. 0]
diff --git a/cheri/sail_latexcc/sailccfnmemBitsToCapBits.tex b/cheri/sail_latexcc/sailccfnmemBitsToCapBits.tex
deleted file mode 100644
index 198cf984..00000000
--- a/cheri/sail_latexcc/sailccfnmemBitsToCapBits.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zmemBitsToCapBits]{memBitsToCapBits}#(tag, b) : (bool, #\hyperref[zbits]{bits}#(128)) -> #\hyperref[zbits]{bits}#(129) =
- #\hyperref[zmemBitsToCapBitsonetwoeight]{memBitsToCapBits128}#(tag, b ^ null_cap_bits)
diff --git a/cheri/sail_latexcc/sailccfnmemBitsToCapBitsonetwoeight.tex b/cheri/sail_latexcc/sailccfnmemBitsToCapBitsonetwoeight.tex
deleted file mode 100644
index 723571e9..00000000
--- a/cheri/sail_latexcc/sailccfnmemBitsToCapBitsonetwoeight.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-function #\hyperref[zmemBitsToCapBitsonetwoeight]{memBitsToCapBits128}#(tag, b) : (bool, #\hyperref[zbits]{bits}#(128)) -> CapReg=
- (tag @ b)
diff --git a/cheri/sail_latexcc/sailccfnmipssignextend.tex b/cheri/sail_latexcc/sailccfnmipssignextend.tex
deleted file mode 100644
index 80945b61..00000000
--- a/cheri/sail_latexcc/sailccfnmipssignextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-function mips_sign_extend v = #\hyperref[zsailzysignzyextend]{sail\_sign\_extend}#(v, sizeof('m))
diff --git a/cheri/sail_latexcc/sailccfnmipszzeroextend.tex b/cheri/sail_latexcc/sailccfnmipszzeroextend.tex
deleted file mode 100644
index 6c9914d9..00000000
--- a/cheri/sail_latexcc/sailccfnmipszzeroextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-function mips_zero_extend v = #\hyperref[zsailzyzzerozyextend]{sail\_zero\_extend}#(v, sizeof('m))
diff --git a/cheri/sail_latexcc/sailccfnneqanything.tex b/cheri/sail_latexcc/sailccfnneqanything.tex
deleted file mode 100644
index 1605ed05..00000000
--- a/cheri/sail_latexcc/sailccfnneqanything.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zneqzyanything]{neq\_anything}# (x, y) = #\hyperref[znotzybool]{not\_bool}#(x == y)
diff --git a/cheri/sail_latexcc/sailccfnneqatom.tex b/cheri/sail_latexcc/sailccfnneqatom.tex
deleted file mode 100644
index e9a9f93f..00000000
--- a/cheri/sail_latexcc/sailccfnneqatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zneqzyatom]{neq\_atom}# (x, y) = #\hyperref[znotzybool]{not\_bool}#(#\hyperref[zeqzyatom]{eq\_atom}#(x, y))
diff --git a/cheri/sail_latexcc/sailccfnneqbool.tex b/cheri/sail_latexcc/sailccfnneqbool.tex
deleted file mode 100644
index 65007b8e..00000000
--- a/cheri/sail_latexcc/sailccfnneqbool.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zneqzybool]{neq\_bool}# (x, y) = #\hyperref[znotzybool]{not\_bool}#(#\hyperref[zeqzybool]{eq\_bool}#(x, y))
diff --git a/cheri/sail_latexcc/sailccfnneqint.tex b/cheri/sail_latexcc/sailccfnneqint.tex
deleted file mode 100644
index 952a7735..00000000
--- a/cheri/sail_latexcc/sailccfnneqint.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zneqzyint]{neq\_int}# (x, y) = #\hyperref[znotzybool]{not\_bool}#(#\hyperref[zeqzyint]{eq\_int}#(x, y))
diff --git a/cheri/sail_latexcc/sailccfnneqrange.tex b/cheri/sail_latexcc/sailccfnneqrange.tex
deleted file mode 100644
index 43f49e9e..00000000
--- a/cheri/sail_latexcc/sailccfnneqrange.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zneqzyrange]{neq\_range}# (x, y) = #\hyperref[znotzybool]{not\_bool}#(#\hyperref[zeqzyrange]{eq\_range}#(x, y))
diff --git a/cheri/sail_latexcc/sailccfnneqvec.tex b/cheri/sail_latexcc/sailccfnneqvec.tex
deleted file mode 100644
index c446df08..00000000
--- a/cheri/sail_latexcc/sailccfnneqvec.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zneqzyvec]{neq\_vec}# (x, y) = #\hyperref[znotzybool]{not\_bool}#(#\hyperref[zeqzybits]{eq\_bits}#(x, y))
diff --git a/cheri/sail_latexcc/sailccfnnumofCPtrCmpOp.tex b/cheri/sail_latexcc/sailccfnnumofCPtrCmpOp.tex
deleted file mode 100644
index 4d20546b..00000000
--- a/cheri/sail_latexcc/sailccfnnumofCPtrCmpOp.tex
+++ /dev/null
@@ -1,10 +0,0 @@
-function num_of_CPtrCmpOp arg# = match arg# {
- CEQ => 0,
- CNE => 1,
- CLT => 2,
- CLE => 3,
- CLTU => 4,
- CLEU => 5,
- CEXEQ => 6,
- CNEXEQ => 7
-}
diff --git a/cheri/sail_latexcc/sailccfnnumofClearRegSet.tex b/cheri/sail_latexcc/sailccfnnumofClearRegSet.tex
deleted file mode 100644
index 3dd58b89..00000000
--- a/cheri/sail_latexcc/sailccfnnumofClearRegSet.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function num_of_ClearRegSet arg# = match arg# {
- GPLo => 0,
- GPHi => 1,
- CLo => 2,
- CHi => 3
-}
diff --git a/cheri/sail_latexcc/sailccfnones.tex b/cheri/sail_latexcc/sailccfnones.tex
deleted file mode 100644
index e58040d7..00000000
--- a/cheri/sail_latexcc/sailccfnones.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zones]{ones}#() = #\hyperref[zreplicatezybits]{replicate\_bits}# (0b1,'n)
diff --git a/cheri/sail_latexcc/sailccfnroundUp.tex b/cheri/sail_latexcc/sailccfnroundUp.tex
deleted file mode 100644
index 1ed68a59..00000000
--- a/cheri/sail_latexcc/sailccfnroundUp.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function #\hyperref[zroundUp]{roundUp}#(e) : range(0, 45) -> range(0, 48) =
- let 'r = e % 4 in
- if (r == 0)
- then e
- else (e - r + 4)
diff --git a/cheri/sail_latexcc/sailccfnsailmask.tex b/cheri/sail_latexcc/sailccfnsailmask.tex
deleted file mode 100644
index 37ede658..00000000
--- a/cheri/sail_latexcc/sailccfnsailmask.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zsailzymask]{sail\_mask}#(len, v) = if len <= #\hyperref[zlength]{length}#(v) then #\hyperref[ztruncate]{truncate}#(v, len) else #\hyperref[zsailzyzzerozyextend]{sail\_zero\_extend}#(v, len)
diff --git a/cheri/sail_latexcc/sailccfnsealCap.tex b/cheri/sail_latexcc/sailccfnsealCap.tex
deleted file mode 100644
index 55c55014..00000000
--- a/cheri/sail_latexcc/sailccfnsealCap.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-function #\hyperref[zsealCap]{sealCap}#(cap, otype) : (CapStruct, #\hyperref[zbits]{bits}#(24)) -> (bool, CapStruct) =
- if (((cap.T)[11..0] == #\hyperref[zzzeros]{zeros}#()) & ((cap.B)[11..0] == #\hyperref[zzzeros]{zeros}#())) then
- (true, {cap with sealed=true, otype=otype})
- else
- (false, cap /* XXX should be undefined? */ )
diff --git a/cheri/sail_latexcc/sailccfnsetCapBounds.tex b/cheri/sail_latexcc/sailccfnsetCapBounds.tex
deleted file mode 100644
index 44808068..00000000
--- a/cheri/sail_latexcc/sailccfnsetCapBounds.tex
+++ /dev/null
@@ -1,13 +0,0 @@
-function #\hyperref[zsetCapBounds]{setCapBounds}#(cap, base, top) : (CapStruct, #\hyperref[zbits]{bits}#(64), #\hyperref[zbits]{bits}#(65)) -> (bool, CapStruct) =
- /* {cap with base=base; length=(#\hyperref[zbits]{bits}#(64)) length; offset=0} */
- let 'e = #\hyperref[zcomputeE]{computeE}#(top - (0b0 @ base)) in
- let Bc : #\hyperref[zbits]{bits}#(20) = #\hyperref[zmask]{mask}#(base >> e) in
- let T : #\hyperref[zbits]{bits}#(20) = #\hyperref[zmask]{mask}#(top >> e) in
- let e_mask : #\hyperref[zbits]{bits}#(65) = #\hyperref[zzzerozyextend]{zero\_extend}#(#\hyperref[zreplicatezybits]{replicate\_bits}#(0b1, e)) in
- let e_bits = top & e_mask in
- let T2 : #\hyperref[zbits]{bits}#(20) = T + (if #\hyperref[zunsigned]{unsigned}#(e_bits) == 0 then 0x00000 else 0x00001) in
- let newCap = {cap with address=base, E=#\hyperref[ztozybits]{to\_bits}#(6, e), B=Bc, T=T2} in
- let newBase = #\hyperref[zgetCapBase]{getCapBase}#(newCap) in
- let newTop = #\hyperref[zgetCapTop]{getCapTop}#(newCap) in
- let exact = (#\hyperref[zunsigned]{unsigned}#(base) == newBase) & (#\hyperref[zunsigned]{unsigned}#(top) == newTop) in
- (exact, newCap)
diff --git a/cheri/sail_latexcc/sailccfnsetCapOffset.tex b/cheri/sail_latexcc/sailccfnsetCapOffset.tex
deleted file mode 100644
index f272f7d3..00000000
--- a/cheri/sail_latexcc/sailccfnsetCapOffset.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-function #\hyperref[zsetCapOffset]{setCapOffset}#(c, offset) : (CapStruct, #\hyperref[zbits]{bits}#(64)) -> (bool, CapStruct) =
- let base : #\hyperref[zbits]{bits}#(64) = #\hyperref[ztozybits]{to\_bits}#(64, #\hyperref[zgetCapBase]{getCapBase}#(c)) in
- let newAddress : #\hyperref[zbits]{bits}#(64) = base + offset in
- let newCap = { c with address = newAddress } in
- let representable = #\hyperref[zfastRepCheck]{fastRepCheck}#(c, (newAddress - c.address)) in
- (representable, newCap)
diff --git a/cheri/sail_latexcc/sailccfnsetCapPerms.tex b/cheri/sail_latexcc/sailccfnsetCapPerms.tex
deleted file mode 100644
index 5af9e7f6..00000000
--- a/cheri/sail_latexcc/sailccfnsetCapPerms.tex
+++ /dev/null
@@ -1,16 +0,0 @@
-function #\hyperref[zsetCapPerms]{setCapPerms}#(cap, perms) : (CapStruct, #\hyperref[zbits]{bits}#(31)) -> CapStruct =
- { cap with
- uperms = perms[18..15],
- /* 14..11 reserved -- ignore */
- access_system_regs = perms[10],
- permit_unseal = perms[9],
- permit_ccall = perms[8],
- permit_seal = perms[7],
- permit_store_local_cap = perms[6],
- permit_store_cap = perms[5],
- permit_load_cap = perms[4],
- permit_store = perms[3],
- permit_load = perms[2],
- permit_execute = perms[1],
- global = perms[0]
- }
diff --git a/cheri/sail_latexcc/sailccfntobits.tex b/cheri/sail_latexcc/sailccfntobits.tex
deleted file mode 100644
index d1df5e83..00000000
--- a/cheri/sail_latexcc/sailccfntobits.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[ztozybits]{to\_bits}# (l, n) = #\hyperref[zgetzyslicezyint]{get\_slice\_int}#(l, n, 0)
diff --git a/cheri/sail_latexcc/sailccfnzeightoperatorzzerozIsznine.tex b/cheri/sail_latexcc/sailccfnzeightoperatorzzerozIsznine.tex
deleted file mode 100644
index 62e5a2e4..00000000
--- a/cheri/sail_latexcc/sailccfnzeightoperatorzzerozIsznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-function operator <#\hyperref[zzys]{\_s}# (x, y) = #\hyperref[zsigned]{signed}#(x) < #\hyperref[zsigned]{signed}#(y)
diff --git a/cheri/sail_latexcc/sailccfnzeightoperatorzzerozIuznine.tex b/cheri/sail_latexcc/sailccfnzeightoperatorzzerozIuznine.tex
deleted file mode 100644
index 3f946820..00000000
--- a/cheri/sail_latexcc/sailccfnzeightoperatorzzerozIuznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-function operator <#\hyperref[zzyu]{\_u}# (x, y) = #\hyperref[zunsigned]{unsigned}#(x) < #\hyperref[zunsigned]{unsigned}#(y)
diff --git a/cheri/sail_latexcc/sailccfnzeightoperatorzzerozKzJsznine.tex b/cheri/sail_latexcc/sailccfnzeightoperatorzzerozKzJsznine.tex
deleted file mode 100644
index 57ecf181..00000000
--- a/cheri/sail_latexcc/sailccfnzeightoperatorzzerozKzJsznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-function operator >=#\hyperref[zzys]{\_s}# (x, y) = #\hyperref[zsigned]{signed}#(x) >= #\hyperref[zsigned]{signed}#(y)
diff --git a/cheri/sail_latexcc/sailccfnzeightoperatorzzerozKzJuznine.tex b/cheri/sail_latexcc/sailccfnzeightoperatorzzerozKzJuznine.tex
deleted file mode 100644
index 6df36c6f..00000000
--- a/cheri/sail_latexcc/sailccfnzeightoperatorzzerozKzJuznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-function operator >=#\hyperref[zzyu]{\_u}# (x, y) = #\hyperref[zunsigned]{unsigned}#(x) >= #\hyperref[zunsigned]{unsigned}#(y)
diff --git a/cheri/sail_latexcc/sailccfnzeightoperatorzzerozQzQznine.tex b/cheri/sail_latexcc/sailccfnzeightoperatorzzerozQzQznine.tex
deleted file mode 100644
index 2c372e1b..00000000
--- a/cheri/sail_latexcc/sailccfnzeightoperatorzzerozQzQznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-function operator ^^ (bs, n) = #\hyperref[zreplicatezybits]{replicate\_bits}# (bs, n)
diff --git a/cheri/sail_latexcc/sailccfnzzeros.tex b/cheri/sail_latexcc/sailccfnzzeros.tex
deleted file mode 100644
index 38d463fb..00000000
--- a/cheri/sail_latexcc/sailccfnzzeros.tex
+++ /dev/null
@@ -1 +0,0 @@
-function #\hyperref[zzzeros]{zeros}#() = #\hyperref[zreplicatezybits]{replicate\_bits}# (0b0,'n)
diff --git a/cheri/sail_latexcc/sailccgetCapBase.tex b/cheri/sail_latexcc/sailccgetCapBase.tex
deleted file mode 100644
index c7044d1d..00000000
--- a/cheri/sail_latexcc/sailccgetCapBase.tex
+++ /dev/null
@@ -1 +0,0 @@
-val getCapBase : CapStruct -> uint64
diff --git a/cheri/sail_latexcc/sailccgetCapCursor.tex b/cheri/sail_latexcc/sailccgetCapCursor.tex
deleted file mode 100644
index fd5d72d8..00000000
--- a/cheri/sail_latexcc/sailccgetCapCursor.tex
+++ /dev/null
@@ -1 +0,0 @@
-val getCapCursor : CapStruct -> uint64
diff --git a/cheri/sail_latexcc/sailccgetCapHardPerms.tex b/cheri/sail_latexcc/sailccgetCapHardPerms.tex
deleted file mode 100644
index 3b65a7c0..00000000
--- a/cheri/sail_latexcc/sailccgetCapHardPerms.tex
+++ /dev/null
@@ -1 +0,0 @@
-val getCapHardPerms : CapStruct -> bits(11)
diff --git a/cheri/sail_latexcc/sailccgetCapLength.tex b/cheri/sail_latexcc/sailccgetCapLength.tex
deleted file mode 100644
index be84bfb5..00000000
--- a/cheri/sail_latexcc/sailccgetCapLength.tex
+++ /dev/null
@@ -1 +0,0 @@
-val getCapLength : CapStruct -> CapLen effect {escape}
diff --git a/cheri/sail_latexcc/sailccgetCapOffset.tex b/cheri/sail_latexcc/sailccgetCapOffset.tex
deleted file mode 100644
index 668c3df1..00000000
--- a/cheri/sail_latexcc/sailccgetCapOffset.tex
+++ /dev/null
@@ -1 +0,0 @@
-val getCapOffset : CapStruct -> uint64
diff --git a/cheri/sail_latexcc/sailccgetCapPerms.tex b/cheri/sail_latexcc/sailccgetCapPerms.tex
deleted file mode 100644
index b2dabf89..00000000
--- a/cheri/sail_latexcc/sailccgetCapPerms.tex
+++ /dev/null
@@ -1 +0,0 @@
-val getCapPerms : CapStruct -> bits(31)
diff --git a/cheri/sail_latexcc/sailccgetCapTop.tex b/cheri/sail_latexcc/sailccgetCapTop.tex
deleted file mode 100644
index ff0e5f95..00000000
--- a/cheri/sail_latexcc/sailccgetCapTop.tex
+++ /dev/null
@@ -1 +0,0 @@
-val getCapTop : CapStruct -> CapLen
diff --git a/cheri/sail_latexcc/sailccgetsliceint.tex b/cheri/sail_latexcc/sailccgetsliceint.tex
deleted file mode 100644
index 2b30d096..00000000
--- a/cheri/sail_latexcc/sailccgetsliceint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val get_slice_int = "get_slice_int" : forall 'w. (atom('w), int, int) -> #\hyperref[zbits]{bits}#('w)
diff --git a/cheri/sail_latexcc/sailccgettimens.tex b/cheri/sail_latexcc/sailccgettimens.tex
deleted file mode 100644
index 74cfd526..00000000
--- a/cheri/sail_latexcc/sailccgettimens.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "get_time_ns" : unit -> int
diff --git a/cheri/sail_latexcc/sailccgtatom.tex b/cheri/sail_latexcc/sailccgtatom.tex
deleted file mode 100644
index b2147a8f..00000000
--- a/cheri/sail_latexcc/sailccgtatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gt_atom = {coq: "Z.gtb", _: "gt"} : forall 'n 'm. (atom('n), atom('m)) -> bool
diff --git a/cheri/sail_latexcc/sailccgtatomrange.tex b/cheri/sail_latexcc/sailccgtatomrange.tex
deleted file mode 100644
index 3c520181..00000000
--- a/cheri/sail_latexcc/sailccgtatomrange.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gt_atom_range = {coq: "gtb_range_r", _: "gt"} : forall 'n 'm 'o. (atom('n), range('m, 'o)) -> bool
diff --git a/cheri/sail_latexcc/sailccgteqatom.tex b/cheri/sail_latexcc/sailccgteqatom.tex
deleted file mode 100644
index fb3b66b2..00000000
--- a/cheri/sail_latexcc/sailccgteqatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gteq_atom = {coq: "Z.geb", _: "gteq"} : forall 'n 'm. (atom('n), atom('m)) -> bool
diff --git a/cheri/sail_latexcc/sailccgteqatomrange.tex b/cheri/sail_latexcc/sailccgteqatomrange.tex
deleted file mode 100644
index 7aaf633f..00000000
--- a/cheri/sail_latexcc/sailccgteqatomrange.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gteq_atom_range = {coq: "geb_range_r", _: "gteq"} : forall 'n 'm 'o. (atom('n), range('m, 'o)) -> bool
diff --git a/cheri/sail_latexcc/sailccgteqint.tex b/cheri/sail_latexcc/sailccgteqint.tex
deleted file mode 100644
index 77271d1f..00000000
--- a/cheri/sail_latexcc/sailccgteqint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gteq_int = {coq: "Z.geb", _:"gteq"} : (int, int) -> bool
diff --git a/cheri/sail_latexcc/sailccgteqrangeatom.tex b/cheri/sail_latexcc/sailccgteqrangeatom.tex
deleted file mode 100644
index fda25265..00000000
--- a/cheri/sail_latexcc/sailccgteqrangeatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gteq_range_atom = {coq: "geb_range_l", _: "gteq"} : forall 'n 'm 'o. (range('n, 'm), atom('o)) -> bool
diff --git a/cheri/sail_latexcc/sailccgtint.tex b/cheri/sail_latexcc/sailccgtint.tex
deleted file mode 100644
index 2d953eec..00000000
--- a/cheri/sail_latexcc/sailccgtint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gt_int = {coq: "Z.gtb", _:"gt"} : (int, int) -> bool
diff --git a/cheri/sail_latexcc/sailccgtrangeatom.tex b/cheri/sail_latexcc/sailccgtrangeatom.tex
deleted file mode 100644
index b8635909..00000000
--- a/cheri/sail_latexcc/sailccgtrangeatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val gt_range_atom = {coq: "gtb_range_l", _: "gt"} : forall 'n 'm 'o. (range('n, 'm), atom('o)) -> bool
diff --git a/cheri/sail_latexcc/sailccincCapOffset.tex b/cheri/sail_latexcc/sailccincCapOffset.tex
deleted file mode 100644
index 21c08cb5..00000000
--- a/cheri/sail_latexcc/sailccincCapOffset.tex
+++ /dev/null
@@ -1 +0,0 @@
-val incCapOffset : (CapStruct, bits(64)) -> (bool, CapStruct)
diff --git a/cheri/sail_latexcc/sailccintpower.tex b/cheri/sail_latexcc/sailccintpower.tex
deleted file mode 100644
index 0aa13188..00000000
--- a/cheri/sail_latexcc/sailccintpower.tex
+++ /dev/null
@@ -1 +0,0 @@
-val int_power = {ocaml: "int_power", lem: "pow", coq: "Z.pow"} : (int, int) -> int
diff --git a/cheri/sail_latexcc/sailccinttocap.tex b/cheri/sail_latexcc/sailccinttocap.tex
deleted file mode 100644
index 0f4cd328..00000000
--- a/cheri/sail_latexcc/sailccinttocap.tex
+++ /dev/null
@@ -1 +0,0 @@
-val int_to_cap : bits(64) -> CapStruct
diff --git a/cheri/sail_latexcc/sailccisnone.tex b/cheri/sail_latexcc/sailccisnone.tex
deleted file mode 100644
index 76688d37..00000000
--- a/cheri/sail_latexcc/sailccisnone.tex
+++ /dev/null
@@ -1 +0,0 @@
-val is_none : forall ('a : Type). #\hyperref[zoption]{option}#('a) -> bool
diff --git a/cheri/sail_latexcc/sailccissome.tex b/cheri/sail_latexcc/sailccissome.tex
deleted file mode 100644
index 071ac6b6..00000000
--- a/cheri/sail_latexcc/sailccissome.tex
+++ /dev/null
@@ -1 +0,0 @@
-val is_some : forall ('a : Type). #\hyperref[zoption]{option}#('a) -> bool
diff --git a/cheri/sail_latexcc/sailcclength.tex b/cheri/sail_latexcc/sailcclength.tex
deleted file mode 100644
index 248c8507..00000000
--- a/cheri/sail_latexcc/sailcclength.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload length = {bitvector_length, vector_length} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccltatom.tex b/cheri/sail_latexcc/sailccltatom.tex
deleted file mode 100644
index 5cca54df..00000000
--- a/cheri/sail_latexcc/sailccltatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lt_atom = {coq: "Z.ltb", _: "lt"} : forall 'n 'm. (atom('n), atom('m)) -> bool
diff --git a/cheri/sail_latexcc/sailccltatomrange.tex b/cheri/sail_latexcc/sailccltatomrange.tex
deleted file mode 100644
index 19d3375d..00000000
--- a/cheri/sail_latexcc/sailccltatomrange.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lt_atom_range = {coq: "ltb_range_r", _: "lt"} : forall 'n 'm 'o. (atom('n), range('m, 'o)) -> bool
diff --git a/cheri/sail_latexcc/sailcclteqatom.tex b/cheri/sail_latexcc/sailcclteqatom.tex
deleted file mode 100644
index 26e27e2d..00000000
--- a/cheri/sail_latexcc/sailcclteqatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lteq_atom = {coq: "Z.leb", _: "lteq"} : forall 'n 'm. (atom('n), atom('m)) -> bool
diff --git a/cheri/sail_latexcc/sailcclteqatomrange.tex b/cheri/sail_latexcc/sailcclteqatomrange.tex
deleted file mode 100644
index 6e951cf7..00000000
--- a/cheri/sail_latexcc/sailcclteqatomrange.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lteq_atom_range = {coq: "leb_range_r", _: "lteq"} : forall 'n 'm 'o. (atom('n), range('m, 'o)) -> bool
diff --git a/cheri/sail_latexcc/sailcclteqint.tex b/cheri/sail_latexcc/sailcclteqint.tex
deleted file mode 100644
index 555176be..00000000
--- a/cheri/sail_latexcc/sailcclteqint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lteq_int = {coq: "Z.leb", _:"lteq"} : (int, int) -> bool
diff --git a/cheri/sail_latexcc/sailcclteqrangeatom.tex b/cheri/sail_latexcc/sailcclteqrangeatom.tex
deleted file mode 100644
index f8fcd32d..00000000
--- a/cheri/sail_latexcc/sailcclteqrangeatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lteq_range_atom = {coq: "leb_range_l", _: "lteq"} : forall 'n 'm 'o. (range('n, 'm), atom('o)) -> bool
diff --git a/cheri/sail_latexcc/sailccltint.tex b/cheri/sail_latexcc/sailccltint.tex
deleted file mode 100644
index 40bd4e85..00000000
--- a/cheri/sail_latexcc/sailccltint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lt_int = {coq: "Z.ltb", _:"lt"} : (int, int) -> bool
diff --git a/cheri/sail_latexcc/sailccltrangeatom.tex b/cheri/sail_latexcc/sailccltrangeatom.tex
deleted file mode 100644
index d8495496..00000000
--- a/cheri/sail_latexcc/sailccltrangeatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val lt_range_atom = {coq: "ltb_range_l", _: "lt"} : forall 'n 'm 'o. (range('n, 'm), atom('o)) -> bool
diff --git a/cheri/sail_latexcc/sailccmask.tex b/cheri/sail_latexcc/sailccmask.tex
deleted file mode 100644
index 35d052db..00000000
--- a/cheri/sail_latexcc/sailccmask.tex
+++ /dev/null
@@ -1 +0,0 @@
-val mask : forall 'm 'n , 'm >= 'n > 0 . #\hyperref[zbits]{bits}#('m) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccmax.tex b/cheri/sail_latexcc/sailccmax.tex
deleted file mode 100644
index 1ceed42c..00000000
--- a/cheri/sail_latexcc/sailccmax.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload max = {max_atom, max_nat, max_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccmaxatom.tex b/cheri/sail_latexcc/sailccmaxatom.tex
deleted file mode 100644
index 6cbdfa7f..00000000
--- a/cheri/sail_latexcc/sailccmaxatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val max_atom = {ocaml: "max_int", lem: "max", coq: "max_atom", c:"max_int"} : forall 'a 'b . (atom('a), atom('b)) -> {'c, ('c = 'a | 'c = 'b) & 'c >= 'a & 'c >= 'b . atom('c)}
diff --git a/cheri/sail_latexcc/sailccmaxint.tex b/cheri/sail_latexcc/sailccmaxint.tex
deleted file mode 100644
index c537babb..00000000
--- a/cheri/sail_latexcc/sailccmaxint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val max_int = {lem: "max", coq: "Z.max", _: "max_int"} : (int, int) -> int
diff --git a/cheri/sail_latexcc/sailccmaxnat.tex b/cheri/sail_latexcc/sailccmaxnat.tex
deleted file mode 100644
index 1b62334a..00000000
--- a/cheri/sail_latexcc/sailccmaxnat.tex
+++ /dev/null
@@ -1 +0,0 @@
-val max_nat = {lem: "max", coq: "Z.max", _: "max_int"} : (nat, nat) -> nat
diff --git a/cheri/sail_latexcc/sailccmemBitsToCapBits.tex b/cheri/sail_latexcc/sailccmemBitsToCapBits.tex
deleted file mode 100644
index a5c86272..00000000
--- a/cheri/sail_latexcc/sailccmemBitsToCapBits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val memBitsToCapBits : (bool, bits(128)) -> bits(129)
diff --git a/cheri/sail_latexcc/sailccmemBitsToCapBitsonetwoeight.tex b/cheri/sail_latexcc/sailccmemBitsToCapBitsonetwoeight.tex
deleted file mode 100644
index 4eb94a3d..00000000
--- a/cheri/sail_latexcc/sailccmemBitsToCapBitsonetwoeight.tex
+++ /dev/null
@@ -1 +0,0 @@
-val memBitsToCapBits128 : (bool, bits(128)) -> CapReg
diff --git a/cheri/sail_latexcc/sailccmin.tex b/cheri/sail_latexcc/sailccmin.tex
deleted file mode 100644
index 94097198..00000000
--- a/cheri/sail_latexcc/sailccmin.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload min = {min_atom, min_nat, min_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccminatom.tex b/cheri/sail_latexcc/sailccminatom.tex
deleted file mode 100644
index acfea384..00000000
--- a/cheri/sail_latexcc/sailccminatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val min_atom = {ocaml: "min_int", lem: "min", coq: "min_atom", c:"min_int"} : forall 'a 'b . (atom('a), atom('b)) -> {'c, ('c = 'a | 'c = 'b) & 'c <= 'a & 'c <= 'b . atom('c)}
diff --git a/cheri/sail_latexcc/sailccminint.tex b/cheri/sail_latexcc/sailccminint.tex
deleted file mode 100644
index 3d633d08..00000000
--- a/cheri/sail_latexcc/sailccminint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val min_int = {lem: "min", coq: "Z.min", _: "min_int"} : (int, int) -> int
diff --git a/cheri/sail_latexcc/sailccminnat.tex b/cheri/sail_latexcc/sailccminnat.tex
deleted file mode 100644
index 85409bd8..00000000
--- a/cheri/sail_latexcc/sailccminnat.tex
+++ /dev/null
@@ -1 +0,0 @@
-val min_nat = {lem: "min", coq: "Z.min", _: "min_int"} : (nat, nat) -> nat
diff --git a/cheri/sail_latexcc/sailccmipssignextend.tex b/cheri/sail_latexcc/sailccmipssignextend.tex
deleted file mode 100644
index e613567d..00000000
--- a/cheri/sail_latexcc/sailccmipssignextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-val mips_sign_extend : forall 'n 'm , 'm >= 'n . #\hyperref[zbits]{bits}#('n) -> #\hyperref[zbits]{bits}#('m)
diff --git a/cheri/sail_latexcc/sailccmipszzeroextend.tex b/cheri/sail_latexcc/sailccmipszzeroextend.tex
deleted file mode 100644
index adbb4188..00000000
--- a/cheri/sail_latexcc/sailccmipszzeroextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-val mips_zero_extend : forall 'n 'm , 'm >= 'n . #\hyperref[zbits]{bits}#('n) -> #\hyperref[zbits]{bits}#('m)
diff --git a/cheri/sail_latexcc/sailccmod.tex b/cheri/sail_latexcc/sailccmod.tex
deleted file mode 100644
index ab70dd7a..00000000
--- a/cheri/sail_latexcc/sailccmod.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-val mod = {
- smt: "mod",
- ocaml: "modulus",
- lem: "integerMod",
- c: "tmod_int",
- coq: "mod_with_eq"
-} : forall 'n 'm. (atom('n), atom('m)) -> {'o, 'o = #\hyperref[zmod]{mod}#('n, 'm). atom('o)}
diff --git a/cheri/sail_latexcc/sailccmodint.tex b/cheri/sail_latexcc/sailccmodint.tex
deleted file mode 100644
index bd5677aa..00000000
--- a/cheri/sail_latexcc/sailccmodint.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-val mod_int = {
- smt: "mod",
- ocaml: "modulus",
- lem: "integerMod",
- c: "tmod_int",
- coq: "Z.rem"
-} : (int, int) -> int
diff --git a/cheri/sail_latexcc/sailccmodulus.tex b/cheri/sail_latexcc/sailccmodulus.tex
deleted file mode 100644
index ca23a339..00000000
--- a/cheri/sail_latexcc/sailccmodulus.tex
+++ /dev/null
@@ -1 +0,0 @@
-val modulus = {ocaml: "modulus", lem: "hardware_mod", coq: "euclid_modulo", _ : "tmod_int"} : forall 'n, 'n > 0 . (int, atom('n)) -> range(0, 'n - 1)
diff --git a/cheri/sail_latexcc/sailccmultatom.tex b/cheri/sail_latexcc/sailccmultatom.tex
deleted file mode 100644
index bbac3e2f..00000000
--- a/cheri/sail_latexcc/sailccmultatom.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val mult_atom = {ocaml: "mult", lem: "integerMult", c: "mult_int", coq: "Z.mul"} : forall 'n 'm.
- (atom('n), atom('m)) -> atom('n * 'm)
diff --git a/cheri/sail_latexcc/sailccmultint.tex b/cheri/sail_latexcc/sailccmultint.tex
deleted file mode 100644
index 08698e6f..00000000
--- a/cheri/sail_latexcc/sailccmultint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val mult_int = {ocaml: "mult", lem: "integerMult", c: "mult_int", coq: "Z.mul"} : (int, int) -> int
diff --git a/cheri/sail_latexcc/sailccnegate.tex b/cheri/sail_latexcc/sailccnegate.tex
deleted file mode 100644
index ce000062..00000000
--- a/cheri/sail_latexcc/sailccnegate.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload negate = {negate_range, negate_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccnegateatom.tex b/cheri/sail_latexcc/sailccnegateatom.tex
deleted file mode 100644
index d1361e63..00000000
--- a/cheri/sail_latexcc/sailccnegateatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val negate_atom = {ocaml: "negate", lem: "integerNegate", c: "neg_int", coq: "Z.opp"} : forall 'n. atom('n) -> atom(- 'n)
diff --git a/cheri/sail_latexcc/sailccnegateint.tex b/cheri/sail_latexcc/sailccnegateint.tex
deleted file mode 100644
index 52375787..00000000
--- a/cheri/sail_latexcc/sailccnegateint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val negate_int = {ocaml: "negate", lem: "integerNegate", c: "neg_int", coq: "Z.opp"} : int -> int
diff --git a/cheri/sail_latexcc/sailccnegaterange.tex b/cheri/sail_latexcc/sailccnegaterange.tex
deleted file mode 100644
index 7a4ad386..00000000
--- a/cheri/sail_latexcc/sailccnegaterange.tex
+++ /dev/null
@@ -1 +0,0 @@
-val negate_range = {ocaml: "minus_big_int", lem: "integerNegate", coq: "negate_range"} : forall 'n 'm. range('n, 'm) -> range(- 'm, - 'n)
diff --git a/cheri/sail_latexcc/sailccneqanything.tex b/cheri/sail_latexcc/sailccneqanything.tex
deleted file mode 100644
index a898649e..00000000
--- a/cheri/sail_latexcc/sailccneqanything.tex
+++ /dev/null
@@ -1 +0,0 @@
-val neq_anything = {lem: "neq", coq: "generic_neq"} : forall ('a : Type). ('a, 'a) -> bool
diff --git a/cheri/sail_latexcc/sailccneqatom.tex b/cheri/sail_latexcc/sailccneqatom.tex
deleted file mode 100644
index be777013..00000000
--- a/cheri/sail_latexcc/sailccneqatom.tex
+++ /dev/null
@@ -1 +0,0 @@
-val neq_atom = {lem: "neq", coq: "neq_atom"} : forall 'n 'm. (atom('n), atom('m)) -> bool
diff --git a/cheri/sail_latexcc/sailccneqbool.tex b/cheri/sail_latexcc/sailccneqbool.tex
deleted file mode 100644
index 0d80dc17..00000000
--- a/cheri/sail_latexcc/sailccneqbool.tex
+++ /dev/null
@@ -1 +0,0 @@
-val neq_bool : (bool, bool) -> bool
diff --git a/cheri/sail_latexcc/sailccneqint.tex b/cheri/sail_latexcc/sailccneqint.tex
deleted file mode 100644
index b233ca6b..00000000
--- a/cheri/sail_latexcc/sailccneqint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val neq_int = {lem: "neq"} : (int, int) -> bool
diff --git a/cheri/sail_latexcc/sailccneqrange.tex b/cheri/sail_latexcc/sailccneqrange.tex
deleted file mode 100644
index d2d8fb0c..00000000
--- a/cheri/sail_latexcc/sailccneqrange.tex
+++ /dev/null
@@ -1 +0,0 @@
-val neq_range = {lem: "neq"} : forall 'n 'm 'o 'p. (range('n, 'm), range('o, 'p)) -> bool
diff --git a/cheri/sail_latexcc/sailccneqvec.tex b/cheri/sail_latexcc/sailccneqvec.tex
deleted file mode 100644
index f655b3d8..00000000
--- a/cheri/sail_latexcc/sailccneqvec.tex
+++ /dev/null
@@ -1 +0,0 @@
-val neq_vec = {lem: "neq"} : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> bool
diff --git a/cheri/sail_latexcc/sailccnot.tex b/cheri/sail_latexcc/sailccnot.tex
deleted file mode 100644
index 515b3ef9..00000000
--- a/cheri/sail_latexcc/sailccnot.tex
+++ /dev/null
@@ -1 +0,0 @@
-val not = {coq:"negb", _:"not"} : bool -> bool
diff --git a/cheri/sail_latexcc/sailccnotbool.tex b/cheri/sail_latexcc/sailccnotbool.tex
deleted file mode 100644
index 7630f6c2..00000000
--- a/cheri/sail_latexcc/sailccnotbool.tex
+++ /dev/null
@@ -1 +0,0 @@
-val not_bool = {coq: "negb", _: "not"} : bool -> bool
diff --git a/cheri/sail_latexcc/sailccnotvec.tex b/cheri/sail_latexcc/sailccnotvec.tex
deleted file mode 100644
index a560a544..00000000
--- a/cheri/sail_latexcc/sailccnotvec.tex
+++ /dev/null
@@ -1 +0,0 @@
-val not_vec = {c:"not_bits", _:"not_vec"} : forall 'n. #\hyperref[zbits]{bits}#('n) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccnumofCPtrCmpOp.tex b/cheri/sail_latexcc/sailccnumofCPtrCmpOp.tex
deleted file mode 100644
index 40f1bfa9..00000000
--- a/cheri/sail_latexcc/sailccnumofCPtrCmpOp.tex
+++ /dev/null
@@ -1 +0,0 @@
-val num_of_CPtrCmpOp : CPtrCmpOp -> {'e, 0 <= 'e & 'e <= 7. atom('e)}
diff --git a/cheri/sail_latexcc/sailccnumofClearRegSet.tex b/cheri/sail_latexcc/sailccnumofClearRegSet.tex
deleted file mode 100644
index 14ea7bea..00000000
--- a/cheri/sail_latexcc/sailccnumofClearRegSet.tex
+++ /dev/null
@@ -1 +0,0 @@
-val num_of_ClearRegSet : ClearRegSet -> {'e, 0 <= 'e & 'e <= 3. atom('e)}
diff --git a/cheri/sail_latexcc/sailccones.tex b/cheri/sail_latexcc/sailccones.tex
deleted file mode 100644
index 94fd805f..00000000
--- a/cheri/sail_latexcc/sailccones.tex
+++ /dev/null
@@ -1 +0,0 @@
-val ones : forall 'n, 'n >= 0 . unit -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccorbits.tex b/cheri/sail_latexcc/sailccorbits.tex
deleted file mode 100644
index 55db5ffa..00000000
--- a/cheri/sail_latexcc/sailccorbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val or_bits = {c: "or_bits", _: "or_vec"} : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccorbool.tex b/cheri/sail_latexcc/sailccorbool.tex
deleted file mode 100644
index 4b6bfa15..00000000
--- a/cheri/sail_latexcc/sailccorbool.tex
+++ /dev/null
@@ -1 +0,0 @@
-val or_bool = {coq: "orb", _: "or_bool"} : (bool, bool) -> bool
diff --git a/cheri/sail_latexcc/sailccplainvectoraccess.tex b/cheri/sail_latexcc/sailccplainvectoraccess.tex
deleted file mode 100644
index 94824f77..00000000
--- a/cheri/sail_latexcc/sailccplainvectoraccess.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val plain_vector_access = {
- ocaml: "access",
- lem: "access_list_dec",
- coq: "vec_access_dec",
- c: "vector_access"
-} : forall ('n : Int) ('m : Int) ('a : Type), 0 <= 'm < 'n. (vector('n, dec, 'a), atom('m)) -> 'a
diff --git a/cheri/sail_latexcc/sailccplainvectorupdate.tex b/cheri/sail_latexcc/sailccplainvectorupdate.tex
deleted file mode 100644
index 6880d9bd..00000000
--- a/cheri/sail_latexcc/sailccplainvectorupdate.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val plain_vector_update = {
- ocaml: "update",
- lem: "update_list_dec",
- coq: "vec_update_dec",
- c: "vector_update"
-} : forall '#\hyperref[zn]{n}# ('a : Type). (vector('n, dec, 'a), int, 'a) -> vector('n, dec, 'a)
diff --git a/cheri/sail_latexcc/sailccpowtwo.tex b/cheri/sail_latexcc/sailccpowtwo.tex
deleted file mode 100644
index 41da946e..00000000
--- a/cheri/sail_latexcc/sailccpowtwo.tex
+++ /dev/null
@@ -1 +0,0 @@
-val pow2 = "pow2" : forall 'n. atom('n) -> atom(2 ^ 'n)
diff --git a/cheri/sail_latexcc/sailccprerrbits.tex b/cheri/sail_latexcc/sailccprerrbits.tex
deleted file mode 100644
index 7d926384..00000000
--- a/cheri/sail_latexcc/sailccprerrbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "prerr_bits" : forall 'n. (string, #\hyperref[zbits]{bits}#('n)) -> unit
diff --git a/cheri/sail_latexcc/sailccprerrendline.tex b/cheri/sail_latexcc/sailccprerrendline.tex
deleted file mode 100644
index ad4a94a0..00000000
--- a/cheri/sail_latexcc/sailccprerrendline.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "prerr_endline" : string -> unit
diff --git a/cheri/sail_latexcc/sailccprerrint.tex b/cheri/sail_latexcc/sailccprerrint.tex
deleted file mode 100644
index ce7a7d61..00000000
--- a/cheri/sail_latexcc/sailccprerrint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "prerr_int" : (string, int) -> unit
diff --git a/cheri/sail_latexcc/sailccprerrstring.tex b/cheri/sail_latexcc/sailccprerrstring.tex
deleted file mode 100644
index 7b849da2..00000000
--- a/cheri/sail_latexcc/sailccprerrstring.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "prerr_string" : string -> unit
diff --git a/cheri/sail_latexcc/sailccprint.tex b/cheri/sail_latexcc/sailccprint.tex
deleted file mode 100644
index 50a64219..00000000
--- a/cheri/sail_latexcc/sailccprint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val print = "print_endline" : string -> unit
diff --git a/cheri/sail_latexcc/sailccprintbits.tex b/cheri/sail_latexcc/sailccprintbits.tex
deleted file mode 100644
index 8783a59a..00000000
--- a/cheri/sail_latexcc/sailccprintbits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "print_bits" : forall 'n. (string, #\hyperref[zbits]{bits}#('n)) -> unit
diff --git a/cheri/sail_latexcc/sailccprintint.tex b/cheri/sail_latexcc/sailccprintint.tex
deleted file mode 100644
index ddf33afc..00000000
--- a/cheri/sail_latexcc/sailccprintint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "print_int" : (string, int) -> unit
diff --git a/cheri/sail_latexcc/sailccputchar.tex b/cheri/sail_latexcc/sailccputchar.tex
deleted file mode 100644
index a123c709..00000000
--- a/cheri/sail_latexcc/sailccputchar.tex
+++ /dev/null
@@ -1 +0,0 @@
-val putchar = {c:"sail_putchar", _:"putchar"} : int -> unit
diff --git a/cheri/sail_latexcc/sailccquotient.tex b/cheri/sail_latexcc/sailccquotient.tex
deleted file mode 100644
index 7dba5359..00000000
--- a/cheri/sail_latexcc/sailccquotient.tex
+++ /dev/null
@@ -1 +0,0 @@
-val quotient = {ocaml: "quotient", lem: "integerDiv", coq: "Z.mod"} : (int, int) -> int
diff --git a/cheri/sail_latexcc/sailccquotientnat.tex b/cheri/sail_latexcc/sailccquotientnat.tex
deleted file mode 100644
index 14db4ae0..00000000
--- a/cheri/sail_latexcc/sailccquotientnat.tex
+++ /dev/null
@@ -1 +0,0 @@
-val quotient_nat = {ocaml: "quotient", lem: "integerDiv", coq: "Z.div"} : (nat, nat) -> nat
diff --git a/cheri/sail_latexcc/sailccquotroundzzero.tex b/cheri/sail_latexcc/sailccquotroundzzero.tex
deleted file mode 100644
index 9523cfcc..00000000
--- a/cheri/sail_latexcc/sailccquotroundzzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-val quot_round_zero = {ocaml: "quot_round_zero", lem: "hardware_quot", coq: "Z.quot", _ : "tdiv_int"} : (int, int) -> int
diff --git a/cheri/sail_latexcc/sailccregderef.tex b/cheri/sail_latexcc/sailccregderef.tex
deleted file mode 100644
index 7f1dc7e8..00000000
--- a/cheri/sail_latexcc/sailccregderef.tex
+++ /dev/null
@@ -1 +0,0 @@
-val _reg_deref = "reg_deref" : forall ('a : Type). #\hyperref[zregister]{register}#('a) -> 'a
diff --git a/cheri/sail_latexcc/sailccremroundzzero.tex b/cheri/sail_latexcc/sailccremroundzzero.tex
deleted file mode 100644
index 9d8113ba..00000000
--- a/cheri/sail_latexcc/sailccremroundzzero.tex
+++ /dev/null
@@ -1 +0,0 @@
-val rem_round_zero = {ocaml: "rem_round_zero", lem: "hardware_mod", coq: "Z.rem", _ : "tmod_int"} : (int, int) -> int
diff --git a/cheri/sail_latexcc/sailccreplicatebits.tex b/cheri/sail_latexcc/sailccreplicatebits.tex
deleted file mode 100644
index cd7a97d7..00000000
--- a/cheri/sail_latexcc/sailccreplicatebits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val replicate_bits = "replicate_bits" : forall 'n 'm. (#\hyperref[zbits]{bits}#('n), atom('m)) -> #\hyperref[zbits]{bits}#('n * 'm)
diff --git a/cheri/sail_latexcc/sailccroundUp.tex b/cheri/sail_latexcc/sailccroundUp.tex
deleted file mode 100644
index b7e31074..00000000
--- a/cheri/sail_latexcc/sailccroundUp.tex
+++ /dev/null
@@ -1 +0,0 @@
-val roundUp : range(0, 45) -> range(0, 48)
diff --git a/cheri/sail_latexcc/sailccsailccnegatev.tex b/cheri/sail_latexcc/sailccsailccnegatev.tex
deleted file mode 100644
index 4f7aea58..00000000
--- a/cheri/sail_latexcc/sailccsailccnegatev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload negate = {negate_atom, negate_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailccregderefv.tex b/cheri/sail_latexcc/sailccsailccregderefv.tex
deleted file mode 100644
index f5de92ca..00000000
--- a/cheri/sail_latexcc/sailccsailccregderefv.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "reg_deref" : forall ('a : Type). #\hyperref[zregister]{register}#('a) -> 'a effect {rreg}
diff --git a/cheri/sail_latexcc/sailccsailccsailccsailcczeightoperatorzzerozJzJzninevvv.tex b/cheri/sail_latexcc/sailccsailccsailccsailcczeightoperatorzzerozJzJzninevvv.tex
deleted file mode 100644
index 0f72fdc9..00000000
--- a/cheri/sail_latexcc/sailccsailccsailccsailcczeightoperatorzzerozJzJzninevvv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator ==) = {eq_bit2} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozBzninevv.tex b/cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozBzninevv.tex
deleted file mode 100644
index eacd556c..00000000
--- a/cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozBzninevv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator +) = {add_atom, add_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozFzninevv.tex b/cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozFzninevv.tex
deleted file mode 100644
index 73c40722..00000000
--- a/cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozFzninevv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator /) = {div} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozJzJzninevv.tex b/cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozJzJzninevv.tex
deleted file mode 100644
index 47b1d0f6..00000000
--- a/cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozJzJzninevv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator ==) = {eq_atom, eq_range, eq_int, eq_bool} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozfivezninevv.tex b/cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozfivezninevv.tex
deleted file mode 100644
index 552e0c24..00000000
--- a/cheri/sail_latexcc/sailccsailccsailcczeightoperatorzzerozfivezninevv.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator %) = {mod} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozAzninev.tex b/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozAzninev.tex
deleted file mode 100644
index afe7a721..00000000
--- a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozAzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator *) = {mult_atom, mult_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozBzninev.tex b/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozBzninev.tex
deleted file mode 100644
index ddc56bfd..00000000
--- a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozBzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator +) = {add_bits, add_bits_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozDzninev.tex b/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozDzninev.tex
deleted file mode 100644
index 5d12fdf1..00000000
--- a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozDzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator -) = {sub_atom, sub_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozFzninev.tex b/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozFzninev.tex
deleted file mode 100644
index 38e9124b..00000000
--- a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozFzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator /) = {div_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozJzJzninev.tex b/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozJzJzninev.tex
deleted file mode 100644
index 1314a962..00000000
--- a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozJzJzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator ==) = {eq_bit, eq_bits} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozQzninev.tex b/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozQzninev.tex
deleted file mode 100644
index 05769645..00000000
--- a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozQzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator ^) = {sail_mask} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozUzninev.tex b/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozUzninev.tex
deleted file mode 100644
index 1ebacbc4..00000000
--- a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozUzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator |) = {or_bool} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozfivezninev.tex b/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozfivezninev.tex
deleted file mode 100644
index 14fa73b8..00000000
--- a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozfivezninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator %) = {mod_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozonezJzninev.tex b/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozonezJzninev.tex
deleted file mode 100644
index 527cf596..00000000
--- a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozonezJzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator !=) = {neq_atom, neq_range, neq_int, neq_bool} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozsixzninev.tex b/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozsixzninev.tex
deleted file mode 100644
index be6f29ef..00000000
--- a/cheri/sail_latexcc/sailccsailcczeightoperatorzzerozsixzninev.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator &) = {and_bool} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccsailmask.tex b/cheri/sail_latexcc/sailccsailmask.tex
deleted file mode 100644
index 45862747..00000000
--- a/cheri/sail_latexcc/sailccsailmask.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sail_mask : forall 'len 'v, 'len >= 0 & 'v >= 0. (atom('len), vector('v, dec, bit)) -> vector('len, dec, bit)
diff --git a/cheri/sail_latexcc/sailccsailsignextend.tex b/cheri/sail_latexcc/sailccsailsignextend.tex
deleted file mode 100644
index dfaa5c86..00000000
--- a/cheri/sail_latexcc/sailccsailsignextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sail_sign_extend = "sign_extend" : forall 'n 'm, 'm >= 'n. (#\hyperref[zbits]{bits}#('n), atom('m)) -> #\hyperref[zbits]{bits}#('m)
diff --git a/cheri/sail_latexcc/sailccsailzzeroextend.tex b/cheri/sail_latexcc/sailccsailzzeroextend.tex
deleted file mode 100644
index 53f6fff9..00000000
--- a/cheri/sail_latexcc/sailccsailzzeroextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sail_zero_extend = "zero_extend" : forall 'n 'm, 'm >= 'n. (#\hyperref[zbits]{bits}#('n), atom('m)) -> #\hyperref[zbits]{bits}#('m)
diff --git a/cheri/sail_latexcc/sailccsailzzeros.tex b/cheri/sail_latexcc/sailccsailzzeros.tex
deleted file mode 100644
index 9c60aa12..00000000
--- a/cheri/sail_latexcc/sailccsailzzeros.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sail_zeros = "zeros" : forall 'n. atom('n) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccsealCap.tex b/cheri/sail_latexcc/sailccsealCap.tex
deleted file mode 100644
index 891ae279..00000000
--- a/cheri/sail_latexcc/sailccsealCap.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sealCap : (CapStruct, bits(24)) -> (bool, CapStruct)
diff --git a/cheri/sail_latexcc/sailccsetCapBounds.tex b/cheri/sail_latexcc/sailccsetCapBounds.tex
deleted file mode 100644
index 94fbecaf..00000000
--- a/cheri/sail_latexcc/sailccsetCapBounds.tex
+++ /dev/null
@@ -1 +0,0 @@
-val setCapBounds : (CapStruct, bits(64), bits(65)) -> (bool, CapStruct) effect {escape}
diff --git a/cheri/sail_latexcc/sailccsetCapOffset.tex b/cheri/sail_latexcc/sailccsetCapOffset.tex
deleted file mode 100644
index fef324f7..00000000
--- a/cheri/sail_latexcc/sailccsetCapOffset.tex
+++ /dev/null
@@ -1 +0,0 @@
-val setCapOffset : (CapStruct, bits(64)) -> (bool, CapStruct)
diff --git a/cheri/sail_latexcc/sailccsetCapPerms.tex b/cheri/sail_latexcc/sailccsetCapPerms.tex
deleted file mode 100644
index 617f19fb..00000000
--- a/cheri/sail_latexcc/sailccsetCapPerms.tex
+++ /dev/null
@@ -1 +0,0 @@
-val setCapPerms : (CapStruct, bits(31)) -> CapStruct
diff --git a/cheri/sail_latexcc/sailccsetslicebits.tex b/cheri/sail_latexcc/sailccsetslicebits.tex
deleted file mode 100644
index 8a81bff5..00000000
--- a/cheri/sail_latexcc/sailccsetslicebits.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val set_slice_bits = "set_slice" : forall 'n 'm.
- (atom('n), atom('m), #\hyperref[zbits]{bits}#('n), int, #\hyperref[zbits]{bits}#('m)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccsetsliceint.tex b/cheri/sail_latexcc/sailccsetsliceint.tex
deleted file mode 100644
index 413bf721..00000000
--- a/cheri/sail_latexcc/sailccsetsliceint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val set_slice_int = "set_slice_int" : forall 'w. (atom('w), int, int, #\hyperref[zbits]{bits}#('w)) -> int
diff --git a/cheri/sail_latexcc/sailccshiftbitsleft.tex b/cheri/sail_latexcc/sailccshiftbitsleft.tex
deleted file mode 100644
index cdb2eb6a..00000000
--- a/cheri/sail_latexcc/sailccshiftbitsleft.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "shift_bits_left" : forall 'n 'm. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('m)) -> #\hyperref[zbits]{bits}#('n) effect {undef}
diff --git a/cheri/sail_latexcc/sailccshiftbitsright.tex b/cheri/sail_latexcc/sailccshiftbitsright.tex
deleted file mode 100644
index dbc72b11..00000000
--- a/cheri/sail_latexcc/sailccshiftbitsright.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "shift_bits_right" : forall 'n 'm. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('m)) -> #\hyperref[zbits]{bits}#('n) effect {undef}
diff --git a/cheri/sail_latexcc/sailccshiftl.tex b/cheri/sail_latexcc/sailccshiftl.tex
deleted file mode 100644
index b2c54c27..00000000
--- a/cheri/sail_latexcc/sailccshiftl.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "shiftl" : forall 'm 'n, 'n >= 0. (#\hyperref[zbits]{bits}#('m), atom('n)) -> #\hyperref[zbits]{bits}#('m)
diff --git a/cheri/sail_latexcc/sailccshiftr.tex b/cheri/sail_latexcc/sailccshiftr.tex
deleted file mode 100644
index f282dcbe..00000000
--- a/cheri/sail_latexcc/sailccshiftr.tex
+++ /dev/null
@@ -1 +0,0 @@
-val "shiftr" : forall 'm 'n, 'n >= 0. (#\hyperref[zbits]{bits}#('m), atom('n)) -> #\hyperref[zbits]{bits}#('m)
diff --git a/cheri/sail_latexcc/sailccshlint.tex b/cheri/sail_latexcc/sailccshlint.tex
deleted file mode 100644
index 8ffbcf6c..00000000
--- a/cheri/sail_latexcc/sailccshlint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val shl_int = "shl_int" : (int, int) -> int
diff --git a/cheri/sail_latexcc/sailccshrint.tex b/cheri/sail_latexcc/sailccshrint.tex
deleted file mode 100644
index 087c17bb..00000000
--- a/cheri/sail_latexcc/sailccshrint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val shr_int = "shr_int" : (int, int) -> int
diff --git a/cheri/sail_latexcc/sailccsigned.tex b/cheri/sail_latexcc/sailccsigned.tex
deleted file mode 100644
index dcdc3049..00000000
--- a/cheri/sail_latexcc/sailccsigned.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-val signed = {
- c: "sail_signed",
- _: "sint"
-} : forall 'n, 'n > 0. #\hyperref[zbits]{bits}#('n) -> range(- (2 ^ ('n - 1)), 2 ^ ('n - 1) - 1)
diff --git a/cheri/sail_latexcc/sailccsignextend.tex b/cheri/sail_latexcc/sailccsignextend.tex
deleted file mode 100644
index 03f56369..00000000
--- a/cheri/sail_latexcc/sailccsignextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload sign_extend = {mips_sign_extend} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccslice.tex b/cheri/sail_latexcc/sailccslice.tex
deleted file mode 100644
index b9bb5a70..00000000
--- a/cheri/sail_latexcc/sailccslice.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val slice = "slice" : forall 'n 'm 'o, 0 <= 'o < 'm & 'o + 'n <= 'm & 0 <= 'n.
- (#\hyperref[zbits]{bits}#('m), atom('o), atom('n)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccstringofint.tex b/cheri/sail_latexcc/sailccstringofint.tex
deleted file mode 100644
index 05edaa20..00000000
--- a/cheri/sail_latexcc/sailccstringofint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val string_of_int = "string_of_int" : int -> string
diff --git a/cheri/sail_latexcc/sailccsubatom.tex b/cheri/sail_latexcc/sailccsubatom.tex
deleted file mode 100644
index 437e2d4c..00000000
--- a/cheri/sail_latexcc/sailccsubatom.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val sub_atom = {ocaml: "sub_int", lem: "integerMinus", c: "sub_int", coq: "Z.sub"} : forall 'n 'm.
- (atom('n), atom('m)) -> atom('n - 'm)
diff --git a/cheri/sail_latexcc/sailccsubint.tex b/cheri/sail_latexcc/sailccsubint.tex
deleted file mode 100644
index 11fdf922..00000000
--- a/cheri/sail_latexcc/sailccsubint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sub_int = {ocaml: "sub_int", lem: "integerMinus", c: "sub_int", coq: "Z.sub"} : (int, int) -> int
diff --git a/cheri/sail_latexcc/sailccsubrange.tex b/cheri/sail_latexcc/sailccsubrange.tex
deleted file mode 100644
index 2aad56b6..00000000
--- a/cheri/sail_latexcc/sailccsubrange.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-val sub_range = {ocaml: "sub_int", lem: "integerMinus", coq: "sub_range"} : forall 'n 'm 'o 'p.
- (range('n, 'm), range('o, 'p)) -> range('n - 'p, 'm - 'o)
diff --git a/cheri/sail_latexcc/sailccsubvec.tex b/cheri/sail_latexcc/sailccsubvec.tex
deleted file mode 100644
index b92f07a4..00000000
--- a/cheri/sail_latexcc/sailccsubvec.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sub_vec = {c : "sub_bits", _:"sub_vec"} : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccsubvecint.tex b/cheri/sail_latexcc/sailccsubvecint.tex
deleted file mode 100644
index 70bf667e..00000000
--- a/cheri/sail_latexcc/sailccsubvecint.tex
+++ /dev/null
@@ -1 +0,0 @@
-val sub_vec_int = {c:"sub_bits_int", _: "sub_vec_int"} : forall 'n. (#\hyperref[zbits]{bits}#('n), int) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailcctobits.tex b/cheri/sail_latexcc/sailcctobits.tex
deleted file mode 100644
index 9dd3c655..00000000
--- a/cheri/sail_latexcc/sailcctobits.tex
+++ /dev/null
@@ -1 +0,0 @@
-val to_bits : forall 'l, 'l >= 0 .(atom('l), int) -> #\hyperref[zbits]{bits}#('l)
diff --git a/cheri/sail_latexcc/sailcctruncate.tex b/cheri/sail_latexcc/sailcctruncate.tex
deleted file mode 100644
index 5f7760f3..00000000
--- a/cheri/sail_latexcc/sailcctruncate.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val truncate = {
- ocaml: "vector_truncate",
- lem: "vector_truncate",
- coq: "vector_truncate",
- c: "sail_truncate"
-} : forall 'm 'n, 'm >= 0 & 'm <= 'n. (vector('n, dec, bit), atom('m)) -> vector('m, dec, bit)
diff --git a/cheri/sail_latexcc/sailccuintsixfour.tex b/cheri/sail_latexcc/sailccuintsixfour.tex
deleted file mode 100644
index a0d52c8f..00000000
--- a/cheri/sail_latexcc/sailccuintsixfour.tex
+++ /dev/null
@@ -1 +0,0 @@
-type uint64 = range(0, (2 ^ 64) - 1)
diff --git a/cheri/sail_latexcc/sailccunsigned.tex b/cheri/sail_latexcc/sailccunsigned.tex
deleted file mode 100644
index 47867039..00000000
--- a/cheri/sail_latexcc/sailccunsigned.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-val unsigned = {
- ocaml: "uint",
- lem: "uint",
- interpreter: "uint",
- c: "sail_unsigned",
- coq: "uint"
-} : forall 'n. #\hyperref[zbits]{bits}#('n) -> range(0, 2 ^ 'n - 1)
diff --git a/cheri/sail_latexcc/sailccvectoraccess.tex b/cheri/sail_latexcc/sailccvectoraccess.tex
deleted file mode 100644
index a8e8074f..00000000
--- a/cheri/sail_latexcc/sailccvectoraccess.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload vector_access = {bitvector_access, plain_vector_access} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccvectorlength.tex b/cheri/sail_latexcc/sailccvectorlength.tex
deleted file mode 100644
index f41d5bfa..00000000
--- a/cheri/sail_latexcc/sailccvectorlength.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val vector_length = {
- ocaml: "length",
- lem: "length_list",
- c: "length",
- coq: "vec_length"
-} : forall '#\hyperref[zn]{n}# ('a : Type). vector('n, dec, 'a) -> atom('n)
diff --git a/cheri/sail_latexcc/sailccvectorsubrange.tex b/cheri/sail_latexcc/sailccvectorsubrange.tex
deleted file mode 100644
index c069c7b6..00000000
--- a/cheri/sail_latexcc/sailccvectorsubrange.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-val vector_subrange = {
- ocaml: "subrange",
- lem: "subrange_vec_dec",
- c: "vector_subrange",
- coq: "subrange_vec_dec"
-} : forall ('n : Int) ('m : Int) ('o : Int), 0 <= 'o <= 'm < 'n.
- (#\hyperref[zbits]{bits}#('n), atom('m), atom('o)) -> #\hyperref[zbits]{bits}#('m - 'o + 1)
diff --git a/cheri/sail_latexcc/sailccvectorupdate.tex b/cheri/sail_latexcc/sailccvectorupdate.tex
deleted file mode 100644
index 1ec4aaef..00000000
--- a/cheri/sail_latexcc/sailccvectorupdate.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload vector_update = {bitvector_update, plain_vector_update} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailccvectorupdatesubrange.tex b/cheri/sail_latexcc/sailccvectorupdatesubrange.tex
deleted file mode 100644
index 6ff4f9f6..00000000
--- a/cheri/sail_latexcc/sailccvectorupdatesubrange.tex
+++ /dev/null
@@ -1,6 +0,0 @@
-val vector_update_subrange = {
- ocaml: "update_subrange",
- lem: "update_subrange_vec_dec",
- c: "vector_update_subrange",
- coq: "update_subrange_vec_dec"
-} : forall 'n 'm 'o. (#\hyperref[zbits]{bits}#('n), atom('m), atom('o), #\hyperref[zbits]{bits}#('m - ('o - 1))) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailccxorvec.tex b/cheri/sail_latexcc/sailccxorvec.tex
deleted file mode 100644
index b3aa7372..00000000
--- a/cheri/sail_latexcc/sailccxorvec.tex
+++ /dev/null
@@ -1 +0,0 @@
-val xor_vec = {c: "xor_bits" , _: "xor_vec"} : forall 'n. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#('n)
diff --git a/cheri/sail_latexcc/sailcczW.tex b/cheri/sail_latexcc/sailcczW.tex
deleted file mode 100644
index a29ec93f..00000000
--- a/cheri/sail_latexcc/sailcczW.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload ~ = {not_bool, not_vec} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozAsznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozAsznine.tex
deleted file mode 100644
index 0b0a46e2..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozAsznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator *_s = "mults_vec" : forall 'n . (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#(2 * 'n)
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozAuznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozAuznine.tex
deleted file mode 100644
index 5b762ba7..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozAuznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator *_u = "mult_vec" : forall 'n . (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> #\hyperref[zbits]{bits}#(2 * 'n)
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozAznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozAznine.tex
deleted file mode 100644
index 2d188f63..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozAznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator *) = {mult_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozBznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozBznine.tex
deleted file mode 100644
index 432e85e5..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozBznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator +) = {add_range, add_int, add_vec, add_vec_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozDznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozDznine.tex
deleted file mode 100644
index d671e6b0..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozDznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator -) = {sub_range, sub_int, sub_vec, sub_vec_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozFznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozFznine.tex
deleted file mode 100644
index 3c2e441c..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozFznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator /) = {quotient_nat, quotient} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozIsznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozIsznine.tex
deleted file mode 100644
index 9b4ebe19..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozIsznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator <_s : forall 'n, 'n > 0. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> bool
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozIuznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozIuznine.tex
deleted file mode 100644
index 5b54235e..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozIuznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator <_u : forall 'n, 'n >= 0. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> bool
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozIzIznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozIzIznine.tex
deleted file mode 100644
index 51ff2b6c..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozIzIznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator <<) = {shift_bits_left, shiftl} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozIzJznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozIzJznine.tex
deleted file mode 100644
index d23f28dd..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozIzJznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator <=) = {lteq_atom, lteq_range_atom, lteq_atom_range, lteq_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozIznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozIznine.tex
deleted file mode 100644
index 8e5e3fe9..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozIznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator <) = {lt_atom, lt_range_atom, lt_atom_range, lt_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozJzJznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozJzJznine.tex
deleted file mode 100644
index 57ea823c..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozJzJznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator ==) = {eq_anything} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozKzJsznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozKzJsznine.tex
deleted file mode 100644
index 032e8600..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozKzJsznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator >=_s : forall 'n, 'n > 0. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> bool
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozKzJuznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozKzJuznine.tex
deleted file mode 100644
index eaa72e60..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozKzJuznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator >=_u : forall 'n, 'n >= 0. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('n)) -> bool
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozKzJznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozKzJznine.tex
deleted file mode 100644
index 5733b740..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozKzJznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator >=) = {gteq_atom, gteq_range_atom, gteq_atom_range, gteq_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozKzKsznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozKzKsznine.tex
deleted file mode 100644
index 0f0793a6..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozKzKsznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator >>_s = "shift_bits_right_arith" : forall 'n 'm. (#\hyperref[zbits]{bits}#('n), #\hyperref[zbits]{bits}#('m)) -> #\hyperref[zbits]{bits}#('n) effect {undef}
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozKzKznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozKzKznine.tex
deleted file mode 100644
index b129e9d2..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozKzKznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator >>) = {shift_bits_right, shiftr} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozKznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozKznine.tex
deleted file mode 100644
index a8da7e48..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozKznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator >) = {gt_atom, gt_range_atom, gt_atom_range, gt_int} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozQzQznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozQzQznine.tex
deleted file mode 100644
index 185f501e..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozQzQznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-val operator ^^ = {lem: "replicate_bits"} : forall 'n 'm, 'm >= 0 . (#\hyperref[zbits]{bits}#('n), atom('m)) -> #\hyperref[zbits]{bits}#('n * 'm)
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozQznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozQznine.tex
deleted file mode 100644
index 106b6064..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozQznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator ^) = {xor_vec, int_power} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozUznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozUznine.tex
deleted file mode 100644
index 4de737e0..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozUznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator |) = {or_bool, or_bits} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozfiveznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozfiveznine.tex
deleted file mode 100644
index 8d6b54c3..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozfiveznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator %) = {modulus} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozonezJznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozonezJznine.tex
deleted file mode 100644
index 22052668..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozonezJznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator !=) = {neq_atom, neq_int, neq_vec, neq_anything} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczeightoperatorzzerozsixznine.tex b/cheri/sail_latexcc/sailcczeightoperatorzzerozsixznine.tex
deleted file mode 100644
index 248fb15e..00000000
--- a/cheri/sail_latexcc/sailcczeightoperatorzzerozsixznine.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload (operator &) = {and_bool, and_bits} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczzeroextend.tex b/cheri/sail_latexcc/sailcczzeroextend.tex
deleted file mode 100644
index 0f754d44..00000000
--- a/cheri/sail_latexcc/sailcczzeroextend.tex
+++ /dev/null
@@ -1 +0,0 @@
-overload zero_extend = {mips_zero_extend} \ No newline at end of file
diff --git a/cheri/sail_latexcc/sailcczzeros.tex b/cheri/sail_latexcc/sailcczzeros.tex
deleted file mode 100644
index 1c251eda..00000000
--- a/cheri/sail_latexcc/sailcczzeros.tex
+++ /dev/null
@@ -1 +0,0 @@
-val zeros : forall 'n, 'n >= 0 . unit -> #\hyperref[zbits]{bits}#('n)
diff --git a/mips/.gitignore b/mips/.gitignore
deleted file mode 100644
index 2ee9fde0..00000000
--- a/mips/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-mips.lem
-mips_types.lem
-mipsScript.sml
-mips_typesScript.sml
-mips_extrasScript.sml \ No newline at end of file
diff --git a/mips/Holmakefile b/mips/Holmakefile
deleted file mode 100644
index a31bfd4f..00000000
--- a/mips/Holmakefile
+++ /dev/null
@@ -1,11 +0,0 @@
-LEMDIR=../../lem/hol-lib
-
-INCLUDES = $(LEMDIR) ../lib/hol
-
-all: mipsTheory.uo
-.PHONY: all
-
-ifdef POLY
-BASE_HEAP = ../lib/hol/sail-heap
-
-endif
diff --git a/mips/LOOKING_FOR_SOMETHING.txt b/mips/LOOKING_FOR_SOMETHING.txt
new file mode 100644
index 00000000..1f462863
--- /dev/null
+++ b/mips/LOOKING_FOR_SOMETHING.txt
@@ -0,0 +1 @@
+The mips spec. now lives at https://github.com/CTSRD-CHERI/sail-cheri-mips .
diff --git a/mips/Makefile b/mips/Makefile
deleted file mode 100644
index a156428a..00000000
--- a/mips/Makefile
+++ /dev/null
@@ -1,74 +0,0 @@
-THIS_MAKEFILE := $(realpath $(lastword $(MAKEFILE_LIST)))
-SAIL_DIR:=$(realpath $(dir $(THIS_MAKEFILE))..)
-export SAIL_DIR
-SAIL_LIB_DIR:=$(SAIL_DIR)/lib
-MIPS_SAIL_DIR:=$(SAIL_DIR)/mips
-
-SAIL:=$(SAIL_DIR)/sail
-
-MIPS_PRE:=$(MIPS_SAIL_DIR)/prelude.sail $(MIPS_SAIL_DIR)/mips_prelude.sail
-MIPS_TLB:=$(MIPS_SAIL_DIR)/mips_tlb.sail
-MIPS_TLB_STUB:=$(MIPS_SAIL_DIR)/mips_tlb_stub.sail
-MIPS_SAILS:=$(MIPS_SAIL_DIR)/mips_wrappers.sail $(MIPS_SAIL_DIR)/mips_ast_decl.sail $(MIPS_SAIL_DIR)/mips_insts.sail $(MIPS_SAIL_DIR)/mips_ri.sail $(MIPS_SAIL_DIR)/mips_epilogue.sail
-MIPS_MAIN:=$(MIPS_SAIL_DIR)/main.sail
-
-mips: $(MIPS_PRE) $(MIPS_TLB) $(MIPS_SAILS) $(MIPS_MAIN) ../sail
- $(SAIL) -ocaml -o mips -memo_z3 $(filter %.sail, $^)
-
-mips.c: $(MIPS_PRE) $(MIPS_TLB) $(MIPS_SAILS) $(MIPS_MAIN) Makefile ../sail
- $(SAIL) -O -memo_z3 -c $(filter %.sail, $^) 1> $@
-
-C_WARNINGS=-Wall -Wno-unused-but-set-variable -Wno-unused-label -Wno-unused-function -Wno-maybe-uninitialized
-C_OPT=-O2
-GCOV_FLAGS=
-mips_c: mips.c ../lib/sail.h ../lib/*.c Makefile
- gcc $(C_OPT) $(C_WARNINGS) $(GCOV_FLAGS) -g -I ../lib $< ../lib/*.c -lgmp -lz -o $@
-
-# Note that for coverage purposes O1 appears optimal. O0 means lots of obviously dead code but O2 risks reducing granularity too much.
-mips_c_gcov: C_OPT=-O1
-mips_c_gcov: GCOV_FLAGS=-fprofile-arcs -ftest-coverage
-mips_c_gcov: mips_c
-
-gcovr:
- gcovr -r . --html --html-detail -o index.html
-
-sim.dtb: sim.dts
- dtc -O dtb -o $@ -b 0 $<
-
-mips_no_tlb.lem: $(MIPS_PRE) $(MIPS_TLB_STUB) $(MIPS_SAILS)
- $(SAIL) -lem -o mips_no_tlb -lem_mwords -lem_lib Mips_extras -undefined_gen -memo_z3 $^
-mips_no_tlb_types.lem: mips_no_tlb.lem
-
-mips.lem: $(MIPS_PRE) $(SAIL_LIB_DIR)/mono_rewrites.sail $(MIPS_TLB) $(MIPS_SAILS)
- $(SAIL) -lem -o mips -auto_mono -mono_rewrites -lem_mwords -lem_lib Mips_extras -undefined_gen -memo_z3 $^
-mips_types.lem: mips.lem
-
-mips.v: $(MIPS_PRE) $(MIPS_TLB) $(MIPS_SAILS)
- $(SAIL) -coq -dcoq_undef_axioms -o mips -coq_lib mips_extras -undefined_gen -memo_z3 $^
-mips_types.v: mips.v
-
-MIPS_COQ = mips_types.v mips_extras.v mips.v
-COQ_LIBS = -R ../../bbv/theories bbv -R ../lib/coq Sail
-
-%.vo: %.v
- coqc $(COQ_LIBS) $<
-mips.vo: mips_types.vo mips_extras.vo
-
-M%.thy: m%.lem m%_types.lem mips_extras.lem
- lem -isa -outdir . -lib Sail=$(SAIL_DIR)/src/gen_lib -lib Sail=$(SAIL_DIR)/src/lem_interp $^
- sed -i 's/datatype ast/datatype (plugins only: size) ast/' M$*_types.thy
-
-%Script.sml: %.lem %_types.lem $(MIPS_SAIL_DIR)/mips_extras.lem
- lem -hol -outdir . -lib $(SAIL_DIR)/lib/hol -i $(SAIL_DIR)/lib/hol/sail2_prompt_monad.lem -i $(SAIL_DIR)/lib/hol/sail2_prompt.lem -lib $(SAIL_DIR)/src/gen_lib -lib $(SAIL_DIR)/src/lem_interp $^
-
-%Theory.uo: %Script.sml
- Holmake $@
-
-LOC_FILES:=$(MIPS_PRE) $(MIPS_TLB) $(MIPS_SAILS) $(MIPS_MAIN)
-include ../etc/loc.mk
-
-clean:
- rm -rf mips Mips.thy mips.lem mips_types.lem _sbuild mips.c mips_c
- rm -f mipsScript.sml mips_typesScript.sml mips_extrasScript.sml
- rm -f mips.v mips_types.v $(MIPS_COQ:%.v=%.vo) $(MIPS_COQ:%.v=%.glob) $(MIPS_COQ:%.v=.%.aux)
- -Holmake cleanAll
diff --git a/mips/README b/mips/README
deleted file mode 100644
index 8a641e69..00000000
--- a/mips/README
+++ /dev/null
@@ -1,24 +0,0 @@
-This directory contains a MIPS64-style architecture specification
-written in Sail. To support integration with the CHERI ISA it is
-split across several files, which must be given to sail in the
-following order:
-
- 1. mips_prelude.sail contains definitions used in the rest of the
- ISA, including register declarations and helper functions, for
- example for performing address translation.
-
- 2. mips_wrappers.sail contains wrappers and hooks around certain
- functions. In straight MIPS these are mostly identity functions, but
- on CHERI they are substituted for functions which implement
- CHERI-specific behaviour.
-
- 3. mips_insts.sail contains descriptions of instructions in the form
- of AST members, decode and execute function clauses (using Sail's
- scattered union/function definitions).
-
- 4. mips_epilogue.sail just closes the function and AST union definitions.
-
-The CHERI sail model extends this model by adding more declarations in a
-file cheri_prelude.sail, included after mips_prelude.sail, replacing
-the functions in mips_wrappers.sail and adding new instruction
-definitions in cheri_insts.sail.
diff --git a/mips/_CoqProject b/mips/_CoqProject
deleted file mode 100644
index ad38d28d..00000000
--- a/mips/_CoqProject
+++ /dev/null
@@ -1,2 +0,0 @@
--R ../../bbv/theories bbv
--R ../lib/coq Sail \ No newline at end of file
diff --git a/mips/doc/Makefile b/mips/doc/Makefile
deleted file mode 100644
index 0220a4cc..00000000
--- a/mips/doc/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-all:
- cat preamble.tex ../mips_prelude.sail ../mips_wrappers.sail ../mips_insts.sail ../mips_epilogue.sail postamble.tex > mips_all.tex
- pdflatex mips_all.tex
-
-clean:
- rm -rf *~
- rm -rf mips_all.*
diff --git a/mips/doc/postamble.tex b/mips/doc/postamble.tex
deleted file mode 100644
index 892ef896..00000000
--- a/mips/doc/postamble.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-\end{lstlisting}
-\end{document}
diff --git a/mips/doc/preamble.tex b/mips/doc/preamble.tex
deleted file mode 100644
index 524ec736..00000000
--- a/mips/doc/preamble.tex
+++ /dev/null
@@ -1,177 +0,0 @@
-
-\documentclass[10pt]{article}
-
-\usepackage[margin=1.0in]{geometry}
-\usepackage[T1]{fontenc}
-\usepackage[scaled=0.82]{beramono}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% for Lem listing
-\usepackage[scaled=0.82]{beramono}
-\usepackage{listings}
-
-\newsavebox{\codebox}
-
-\lstdefinelanguage{SailExtraKeywords}
- {morekeywords= {
-% from the sail lexer
-and,
-alias,
-as,
-bitzero,
-bitone,
-bits,
-by,
-case,
-clause,
-const,
-dec,
-default,
-deinfix,
-effect,
-Effect,
-end,
-enumerate,
-else,
-exit,
-extern,
-false,
-forall,
-foreach,
-function,
-if,
-in,
-inc,
-IN,
-let,
-member,
-Nat,
-Order,
-pure,
-rec,
-register,
-scattered,
-struct,
-switch,
-then,
-true,
-Type,
-typedef,
-undefined,
-union,
-with,
-val,
-div,
-mod,
-quot,
-rem,
-barr,
-rreg,
-wreg,
-rmem,
-wmem,
-undef,
-unspec,
-nondet,
-bool,unit,vector,range,list,bit,nat, int, uint8,uint16,uint32,uint64,implicit
-}
-}
-
-\lstdefinelanguage{LemExtraKeywords}
- {morekeywords= {
-% from the lem lexer
- as,
- fun,
- function,
- with,
- match,
- let,
- and,
- in,
- of,
- rec,
- type,
- module,
- rename,
- struct,
- end,
- open,
- import,
- include,
- true,
- false,
- begin,
- if,
- then,
- else,
- val,
- class,
- instance,
- default_instance,
- indreln,
- forall,
- exists,
- inline,
- lem_transform,
- IN,
- MEM,
- declare,
- infix,
- field,
- automatic,
- manual,
- exhaustive,
- inexhaustive,
- ascii_rep,
- compile_message,
- set_flag,
- termination_argument,
- pattern_match,
- right_assoc,
- left_assoc,
- non_assoc,
- special,
- target_rep,
- target_type,
- target_const,
- lemma,
- assert,
- theorem,
- do,
- witness,
- check,
- % coq notation
- Inductive,
- Prop,
-% names of targets,
- ocaml,
- html,
- coq,
- hol,
- isabelle,
-% these seem to be used as keywors in indreln?
- input,
- output,
-% and more keywords for specific target code that we quote
- case,
- definition,
-}
-}
-
-%\lstset{basicstyle=\footnotesize\ttfamily} %
-%\lstset{keywordstyle=\pmb}
-%\lstset{basicstyle=\footnotesize\ttfamily} %
-\lstset{basicstyle=\ttfamily} %
-\lstset{keywordstyle=\bfseries}
-\lstset{language=Caml}
-\lstset{defaultdialect=[Objective]Caml}
-\lstset{alsolanguage=SailExtraKeywords}
-\lstset{mathescape}
-
-\lstset{escapeinside={<@}{@>}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\begin{document}
-
-\begin{lstlisting}
diff --git a/mips/gen/ast.hgen b/mips/gen/ast.hgen
deleted file mode 100644
index a251adff..00000000
--- a/mips/gen/ast.hgen
+++ /dev/null
@@ -1,18 +0,0 @@
-| `MIPSThreadStart
-| `MIPSRType of mipsRTypeOp * reg * reg * reg
-| `MIPSIType of mipsITypeOp * reg * reg * bit16
-| `MIPSShiftI of mipsShiftIOp * reg * reg * bit5
-| `MIPSShiftV of mipsShiftVOp * reg * reg * reg
-| `MIPSMulDiv of mipsMulDivOp * reg * reg
-| `MIPSMFHiLo of mipsMFHiLoOp * reg
-| `MIPSLUI of reg * bit16
-| `MIPSLoad of mipsWordWidth * bool * bool * reg * reg * bit16 (* width, signed, linked, base, rt, offset *)
-| `MIPSStore of mipsWordWidth * bool * reg * reg * bit16 (* width, conditional, base, rt, offset *)
-| `MIPSLSLR of bool * bool * bool * reg * reg * bit16 (* store, double, left, base, rt, offset *)
-| `MIPSSYNC
-| `MIPSBEQ of reg * reg * bit16 * bool * bool (* rs, rt, offset, not equal, likely *)
-| `MIPSBCMPZ of reg * bit16 * mipsCmp * bool * bool (* rs, offset, cmp, link, likely *)
-| `MIPSJ of bit26
-| `MIPSJAL of bit26
-| `MIPSJR of reg
-| `MIPSJALR of reg * reg (* rs, rd *)
diff --git a/mips/gen/fold.hgen b/mips/gen/fold.hgen
deleted file mode 100644
index 05b9c808..00000000
--- a/mips/gen/fold.hgen
+++ /dev/null
@@ -1,19 +0,0 @@
-| `MIPSThreadStart -> (y_reg, y_sreg)
-| `MIPSRType (op, rd, rs, rt) -> fold_reg rt (fold_reg rs (fold_reg rd (y_reg, y_sreg)))
-| `MIPSIType (op, rs, rt, imm) -> fold_reg rs (fold_reg rt (y_reg, y_sreg))
-| `MIPSShiftI (op, rd, rt, imm) -> fold_reg rt (fold_reg rd (y_reg, y_sreg))
-| `MIPSShiftV (op, rd, rt, rs) -> fold_reg rs (fold_reg rt (fold_reg rd (y_reg, y_sreg)))
-| `MIPSMulDiv (op, rs, rt) -> fold_reg rs (fold_reg rt (y_reg, y_sreg))
-| `MIPSMFHiLo (op, rs) -> fold_reg rs (y_reg, y_sreg)
-| `MIPSLUI (rt, imm) -> fold_reg rt (y_reg, y_sreg)
-| `MIPSLoad (width, signed, linked, base, rt, offset) -> fold_reg rt (fold_reg base (y_reg, y_sreg))
-| `MIPSStore (width, conditional, base, rt, offset) -> fold_reg rt (fold_reg base (y_reg, y_sreg))
-| `MIPSLSLR (store, double, left, base, rt, offset) -> fold_reg rt (fold_reg base (y_reg, y_sreg))
-| `MIPSSYNC -> (y_reg, y_sreg)
-| `MIPSBEQ (rs, rt, offset, ne, likely) -> fold_reg rs (fold_reg rt (y_reg, y_sreg))
-| `MIPSBCMPZ (rs, offset, cmp, link, likely) -> fold_reg rs (y_reg, y_sreg)
-| `MIPSJ (offset) -> (y_reg, y_sreg)
-| `MIPSJAL (offset) -> fold_reg (IReg(R31)) (y_reg, y_sreg)
-| `MIPSJR (rd) -> fold_reg rd (y_reg, y_sreg)
-| `MIPSJALR (rd, rs) -> fold_reg rd (fold_reg rs (y_reg, y_sreg))
-
diff --git a/mips/gen/herdtools_ast_to_shallow_ast.hgen b/mips/gen/herdtools_ast_to_shallow_ast.hgen
deleted file mode 100644
index 7b1a58d9..00000000
--- a/mips/gen/herdtools_ast_to_shallow_ast.hgen
+++ /dev/null
@@ -1,121 +0,0 @@
-| `MIPSThreadStart ->
- SYSCALL_THREAD_START
-
-| `MIPSStopFetching ->
- ImplementationDefinedStopFetching0
-
-(* Note different argument order, which reflects difference
- between instruction encoding and asm format *)
-| `MIPSRType (op, rd, rs, rt) ->
- (translate_rtype_op op)
- (
- translate_reg "rs" rs,
- translate_reg "rt" rt,
- translate_reg "rd" rd
- )
-
-
-(* Note different argument order similar to above *)
-| `MIPSIType (op, rt, rs, imm) ->
- (translate_itype_op op)
- (
- translate_reg "rs" rs,
- translate_reg "rt" rt,
- translate_imm16 "imm" imm
- )
-
-
-| `MIPSShiftI (op, rd, rt, sa) ->
- (translate_shifti_op op)
- (
- translate_reg "rt" rt,
- translate_reg "rd" rd,
- translate_imm5 "sa" sa
- )
-
-
-| `MIPSShiftV (op, rd, rt, rs) ->
- (translate_shiftv_op op)
- (
- translate_reg "rs" rs,
- translate_reg "rt" rt,
- translate_reg "rd" rd
- )
-
-
-| `MIPSMulDiv (op, rs, rt) ->
- (translate_muldiv_op op)
- (
- translate_reg "rs" rs,
- translate_reg "rt" rt
- )
-
-
-| `MIPSMFHiLo (op, rs) ->
- (translate_mfhilo_op op)
- (
- translate_reg "rs" rs
- )
-
-| `MIPSLUI (rt, imm) ->
- LUI
- (
- translate_reg "rt" rt,
- translate_imm16 "imm" imm
- )
-
-| `MIPSLoad (width, signed, linked, base, rt, offset) ->
- Load
- (
- translate_wordsize "width" width,
- translate_bool "signed" signed,
- translate_bool "linked" linked,
- translate_reg "base" base,
- translate_reg "rt" rt,
- translate_imm16 "offset" offset
- )
-
-| `MIPSStore (width, conditional, base, rt, offset) ->
- Store
- (
- translate_wordsize "width" width,
- translate_bool "conditional" conditional,
- translate_reg "base" base,
- translate_reg "rt" rt,
- translate_imm16 "offset" offset
- )
-
-| `MIPSLSLR (store, double, left, base, rt, offset) ->
- (translate_lslr_op store double left)
- (
- translate_reg "base" base,
- translate_reg "rt" rt,
- translate_imm16 "offset" offset
- )
-
-| `MIPSSYNC -> SYNC
-| `MIPSBEQ (rs, rt, offset, ne, likely) ->
- BEQ
- (translate_reg "rs" rs,
- translate_reg "rt" rt,
- translate_imm16 "offset" offset,
- translate_bool "ne" ne,
- translate_bool "likely" likely
- )
-
-| `MIPSBCMPZ (rs, offset, cmp, link, likely) ->
- BCMPZ
- (translate_reg "rs" rs,
- translate_imm16 "offset" offset,
- translate_cmp "cmp" cmp,
- translate_bool "link" link,
- translate_bool "likely" likely
- )
-| `MIPSJ (offset) ->
- J (translate_imm26 "offset" offset)
-| `MIPSJAL (offset) ->
- JAL (translate_imm26 "offset" offset)
-| `MIPSJR(rd) ->
- JR (translate_reg "rd" rd)
-| `MIPSJALR(rd, rs) ->
- JALR (translate_reg "rd" rd, translate_reg "rs" rs)
diff --git a/mips/gen/herdtools_types_to_shallow_types.hgen b/mips/gen/herdtools_types_to_shallow_types.hgen
deleted file mode 100644
index 5a0e3bfc..00000000
--- a/mips/gen/herdtools_types_to_shallow_types.hgen
+++ /dev/null
@@ -1,120 +0,0 @@
-let is_inc = false
-
-let translate_rtype_op op = uppercase (pp_rtype_op op)
-
-let translate_rtype_op op x = match op with
- | MIPSROpADD -> ADD x
- | MIPSROpADDU -> ADDU x
- | MIPSROpAND -> AND x
- | MIPSROpDADD -> DADD x
- | MIPSROpDADDU -> DADDU x
- | MIPSROpDSUB -> DSUB x
- | MIPSROpDSUBU -> DSUBU x
- | MIPSROpMOVN -> MOVN x
- | MIPSROpMOVZ -> MOVZ x
- | MIPSROpMUL -> MUL x
- | MIPSROpNOR -> NOR x
- | MIPSROpOR -> OR x
- | MIPSROpSLT -> SLT x
- | MIPSROpSLTU -> SLTU x
- | MIPSROpSUB -> SUB x
- | MIPSROpSUBU -> SUBU x
- | MIPSROpXOR -> XOR x
-
-let translate_itype_op op x = match op with
- | MIPSIOpADDI -> ADDI x
- | MIPSIOpADDIU -> ADDIU x
- | MIPSIOpANDI -> ANDI x
- | MIPSIOpDADDI -> DADDI x
- | MIPSIOpDADDIU -> DADDIU x
- | MIPSIOpORI -> ORI x
- | MIPSIOpSLTI -> SLTI x
- | MIPSIOpSLTIU -> SLTIU x
- | MIPSIOpXORI -> XORI x
-
-let translate_shifti_op op x = match op with
- | MIPSDSLL -> DSLL x
- | MIPSDSLL32 -> DSLL32 x
- | MIPSDSRA -> DSRA x
- | MIPSDSRA32 -> DSRA32 x
- | MIPSDSRL -> DSRL x
- | MIPSDSRL32 -> DSRL32 x
- | MIPSSLL -> SLL x
- | MIPSSRA -> SRA x
- | MIPSSRL -> SRL x
-
-let translate_shiftv_op op x = match op with
- | MIPSDSLLV -> DSLLV x
- | MIPSDSRAV -> DSRAV x
- | MIPSDSRLV -> DSRLV x
- | MIPSSLLV -> SLLV x
- | MIPSSRAV -> SRAV x
- | MIPSSRLV -> SRLV x
-
-let translate_muldiv_op op x = match op with
- | MIPSDDIV -> DDIV x
- | MIPSDDIVU -> DDIVU x
- | MIPSDIV -> DIV x
- | MIPSDIVU -> DIVU x
- | MIPSDMULT -> DMULT x
- | MIPSDMULTU -> DMULTU x
- | MIPSMADD -> MADD x
- | MIPSMADDU -> MADDU x
- | MIPSMSUB -> MSUB x
- | MIPSMSUBU -> MSUBU x
- | MIPSMULT -> MULT x
- | MIPSMULTU -> MULTU x
-
-let translate_mfhilo_op op x = match op with
- | MIPSMFHI -> MFHI x
- | MIPSMFLO -> MFLO x
- | MIPSMTHI -> MTHI x
- | MIPSMTLO -> MTLO x
-
-let translate_load_op width signed linked = uppercase (pp_load_op width signed linked)
-
-let translate_store_op width conditional = uppercase (pp_store_op width conditional)
-
-let translate_lslr_op store double left x = match (store,double,left) with
- | (false, false, true ) -> LWL x
- | (false, false, false) -> LWR x
- | (false, true , true ) -> LDL x
- | (false, true , false) -> LDR x
- | (true , false, true ) -> SWL x
- | (true , false, false) -> SWR x
- | (true , true , true ) -> SDL x
- | (true , true , false) -> SDR x
-
-let translate_beq_op ne likely = uppercase (pp_beq_op ne likely)
-
-let translate_bcmpz_op cmp link likely = uppercase (pp_bcmpz_op cmp link likely)
-
-
-let translate_reg name value =
- Sail_values.to_vec0 is_inc (Nat_big_num.of_int 5,Nat_big_num.of_int (reg_to_int value))
-
-let translate_imm26 name value =
- Sail_values.to_vec0 is_inc (Nat_big_num.of_int 26,Nat_big_num.of_int value)
-let translate_imm16 name value =
- Sail_values.to_vec0 is_inc (Nat_big_num.of_int 16,Nat_big_num.of_int value)
-let translate_imm5 name value =
- Sail_values.to_vec0 is_inc (Nat_big_num.of_int 5,Nat_big_num.of_int value)
-let translate_bool name = function
- | true -> Sail_values.B1
- | false -> Sail_values.B0
-
-let translate_wordsize _ = function
- | MIPSByte -> Mips_embed_types.B2
- | MIPSHalf -> Mips_embed_types.H
- | MIPSWord -> Mips_embed_types.W
- | MIPSDouble -> Mips_embed_types.D
-
-let translate_cmp _ = function
- | MIPS_EQ -> EQ'
- | MIPS_NE -> NE
- | MIPS_GE -> GE
- | MIPS_GEU -> GEU
- | MIPS_GT -> GT'
- | MIPS_LE -> LE
- | MIPS_LT -> LT'
- | MIPS_LTU -> LTU
diff --git a/mips/gen/lexer.hgen b/mips/gen/lexer.hgen
deleted file mode 100644
index c01b14cc..00000000
--- a/mips/gen/lexer.hgen
+++ /dev/null
@@ -1,116 +0,0 @@
-"add" , RTYPE {txt="ADD" ; op=MIPSROpADD };
-"addu" , RTYPE {txt="ADDU" ; op=MIPSROpADDU };
-"and" , RTYPE {txt="AND" ; op=MIPSROpAND };
-"dadd" , RTYPE {txt="DADD" ; op=MIPSROpDADD };
-"daddu" , RTYPE {txt="DADDU" ; op=MIPSROpDADDU };
-"dsub" , RTYPE {txt="DSUB" ; op=MIPSROpDSUB };
-"dsubu" , RTYPE {txt="DSUBU" ; op=MIPSROpDSUBU };
-"movn" , RTYPE {txt="MOVN" ; op=MIPSROpMOVN };
-"movz" , RTYPE {txt="MOVZ" ; op=MIPSROpMOVZ };
-"mul" , RTYPE {txt="MUL" ; op=MIPSROpMUL };
-"nor" , RTYPE {txt="NOR" ; op=MIPSROpNOR };
-"or" , RTYPE {txt="OR" ; op=MIPSROpOR };
-"slt" , RTYPE {txt="SLT" ; op=MIPSROpSLT };
-"sltu" , RTYPE {txt="SLTU" ; op=MIPSROpSLTU };
-"sub" , RTYPE {txt="SUB" ; op=MIPSROpSUB };
-"subu" , RTYPE {txt="SUBU" ; op=MIPSROpSUBU };
-"xor" , RTYPE {txt="XOR" ; op=MIPSROpXOR };
-
-"addi" , ITYPE {txt="ADDI" ; op=MIPSIOpADDI };
-"addiu" , ITYPE {txt="ADDIU" ; op=MIPSIOpADDIU };
-"andi" , ITYPE {txt="ANDI" ; op=MIPSIOpANDI };
-"daddi" , ITYPE {txt="DADDI" ; op=MIPSIOpDADDI };
-"daddiu", ITYPE {txt="DADDIU"; op=MIPSIOpDADDIU };
-"ori" , ITYPE {txt="ORI" ; op=MIPSIOpORI };
-"slti" , ITYPE {txt="SLTI" ; op=MIPSIOpSLTI };
-"sltiu" , ITYPE {txt="SLTIU" ; op=MIPSIOpSLTIU };
-"xori" , ITYPE {txt="XORI" ; op=MIPSIOpXORI };
-
-"dsll" , SHIFTI {txt="DSLL" ; op=MIPSDSLL };
-"dsll32" , SHIFTI {txt="DSLL32" ; op=MIPSDSLL32 };
-"dsra" , SHIFTI {txt="DSRA" ; op=MIPSDSRA };
-"dsra32" , SHIFTI {txt="DSRA32" ; op=MIPSDSRA32 };
-"dsrl" , SHIFTI {txt="DSRL" ; op=MIPSDSRL };
-"dsrl32" , SHIFTI {txt="DSRL32" ; op=MIPSDSRL32 };
-"sll" , SHIFTI {txt="SLL" ; op=MIPSSLL };
-"sra" , SHIFTI {txt="SRA" ; op=MIPSSRA };
-"srl" , SHIFTI {txt="SRL" ; op=MIPSSRL };
-
-"dsllv", SHIFTV {txt="DSLLV" ; op=MIPSDSLLV };
-"dsrav", SHIFTV {txt="DSRAV" ; op=MIPSDSRAV };
-"dsrlv", SHIFTV {txt="DSRLV" ; op=MIPSDSRLV };
-"sllv" , SHIFTV {txt="SLLV" ; op=MIPSSLLV };
-"srav" , SHIFTV {txt="SRAV" ; op=MIPSSRAV };
-"srlv" , SHIFTV {txt="SRLV" ; op=MIPSSRLV };
-
-"ddiv" , MULDIV {txt="DDIV" ; op=MIPSDDIV };
-"ddivu" , MULDIV {txt="DDIVU" ; op=MIPSDDIVU };
-"div" , MULDIV {txt="DIV" ; op=MIPSDIV };
-"divu" , MULDIV {txt="DIVU" ; op=MIPSDIVU };
-"dmult" , MULDIV {txt="DMULT" ; op=MIPSDMULT };
-"dmultu", MULDIV {txt="DMULTU"; op=MIPSDMULTU };
-"madd" , MULDIV {txt="MADD" ; op=MIPSMADD };
-"maddu" , MULDIV {txt="MADDU" ; op=MIPSMADDU };
-"msub" , MULDIV {txt="MSUB" ; op=MIPSMSUB };
-"msubu" , MULDIV {txt="MSUBU" ; op=MIPSMSUBU };
-"mult" , MULDIV {txt="MULT" ; op=MIPSMULT };
-"multu" , MULDIV {txt="MULTU" ; op=MIPSMULTU };
-
-"mfhi" , MFHILO {txt="MFHI" ; op=MIPSMFHI };
-"mflo" , MFHILO {txt="MFLO" ; op=MIPSMFLO };
-"mthi" , MFHILO {txt="MTHI" ; op=MIPSMTHI };
-"mtlo" , MFHILO {txt="MTLO" ; op=MIPSMTLO };
-
-"lui" , LUI {txt="LUI" };
-
-"lb" , LOAD {txt="LB" ; width=MIPSByte ; signed=true; linked=false };
-"lbu" , LOAD {txt="LBU" ; width=MIPSByte ; signed=false; linked=false };
-"lh" , LOAD {txt="LH" ; width=MIPSHalf ; signed=true; linked=false };
-"lhu" , LOAD {txt="LHU" ; width=MIPSHalf ; signed=false; linked=false };
-"lw" , LOAD {txt="LW" ; width=MIPSWord ; signed=true; linked=false };
-"lwu" , LOAD {txt="LWU" ; width=MIPSWord ; signed=false; linked=false };
-"ld" , LOAD {txt="LD" ; width=MIPSDouble ; signed=false; linked=false };
-"ll" , LOAD {txt="LL" ; width=MIPSWord ; signed=true; linked=true };
-"lld" , LOAD {txt="LLD" ; width=MIPSDouble ; signed=false; linked=true };
-
-"sb" , STORE {txt="SB" ; width=MIPSByte ; conditional=false };
-"sh" , STORE {txt="SH" ; width=MIPSHalf ; conditional=false };
-"sw" , STORE {txt="SW" ; width=MIPSWord ; conditional=false };
-"sd" , STORE {txt="SD" ; width=MIPSDouble ; conditional=false };
-"sc" , STORE {txt="SC" ; width=MIPSWord ; conditional=true };
-"scd" , STORE {txt="SCD" ; width=MIPSDouble ; conditional=true };
-
-"lwl" , LSLR {txt="LWL" ; store=false; double=false; left=true };
-"lwr" , LSLR {txt="LWR" ; store=false; double=false; left=false};
-"ldl" , LSLR {txt="LDL" ; store=false; double=true ; left=true };
-"ldr" , LSLR {txt="LDR" ; store=false; double=true ; left=false};
-"swl" , LSLR {txt="SWL" ; store=true ; double=false; left=true };
-"swr" , LSLR {txt="SWR" ; store=true ; double=false; left=false};
-"sdl" , LSLR {txt="SDL" ; store=true ; double=true ; left=true };
-"sdr" , LSLR {txt="SDR" ; store=true ; double=true ; left=false};
-"sync", SYNC {txt="SYNC"};
-
-"beq", BEQ {txt="BEQ"; ne=false; likely=false };
-"beql", BEQ {txt="BEQ"; ne=false; likely=true };
-"bne", BEQ {txt="BEQ"; ne=true ; likely=false };
-"bnel", BEQ {txt="BEQ"; ne=true ; likely=true };
-
-"bltz", BCMPZ {txt="BCMPZ"; cmp=MIPS_LT; likely=false; link=false };
-"bltzal", BCMPZ {txt="BCMPZ"; cmp=MIPS_LT; likely=false; link=true };
-"bltzl", BCMPZ {txt="BCMPZ"; cmp=MIPS_LT; likely=true; link=false };
-"bltzall",BCMPZ {txt="BCMPZ"; cmp=MIPS_LT; likely=true; link=true };
-
-"bgez", BCMPZ {txt="BCMPZ"; cmp=MIPS_GE; likely=false; link=false };
-"bgezal", BCMPZ {txt="BCMPZ"; cmp=MIPS_GE; likely=false; link=true };
-"bgezl", BCMPZ {txt="BCMPZ"; cmp=MIPS_GE; likely=true; link=false };
-"bgezall",BCMPZ {txt="BCMPZ"; cmp=MIPS_GE; likely=true; link=true };
-
-"bgtz", BCMPZ {txt="BCMPZ"; cmp=MIPS_GT; likely=false; link=false };
-"bgtzl", BCMPZ {txt="BCMPZ"; cmp=MIPS_GT; likely=true; link=false };
-
-"blez", BCMPZ {txt="BCMPZ"; cmp=MIPS_LE; likely=false; link=false };
-"blezl", BCMPZ {txt="BCMPZ"; cmp=MIPS_LE; likely=true; link=false };
-"j", J {txt="J"};
-"jal", JAL {txt="JAL"};
-"jr", JR {txt="JR"};
-"jalr", JALR {txt="JALR"};
diff --git a/mips/gen/map.hgen b/mips/gen/map.hgen
deleted file mode 100644
index f5116bae..00000000
--- a/mips/gen/map.hgen
+++ /dev/null
@@ -1,19 +0,0 @@
-| `MIPSThreadStart -> `MIPSThreadStart
-| `MIPSRType (op, rd, rs, rt) -> `MIPSRType (op, map_reg rd, map_reg rs, map_reg rt)
-| `MIPSIType (op, rs, rt, imm) -> `MIPSIType (op, map_reg rs, map_reg rt, imm)
-| `MIPSShiftI (op, rd, rt, imm) -> `MIPSShiftI (op, map_reg rd, map_reg rt, imm)
-| `MIPSShiftV (op, rd, rt, rs) -> `MIPSShiftV (op, map_reg rd, map_reg rt, map_reg rs)
-| `MIPSMulDiv (op, rs, rt) -> `MIPSMulDiv (op, map_reg rs, map_reg rt)
-| `MIPSMFHiLo (op, rs) -> `MIPSMFHiLo (op, map_reg rs)
-| `MIPSLUI (rt, imm) -> `MIPSLUI (map_reg rt, imm)
-| `MIPSLoad (width, signed, linked, base, rt, offset) -> `MIPSLoad (width, signed, linked, map_reg base, map_reg rt, offset)
-| `MIPSStore (width, conditional, base, rt, offset) -> `MIPSStore (width, conditional, map_reg base, map_reg rt, offset)
-| `MIPSLSLR (store, double, left, base, rt, offset) -> `MIPSLSLR (store, double, left, map_reg base, map_reg rt, offset)
-| `MIPSSYNC -> `MIPSSYNC
-| `MIPSBEQ (rs, rt, offset, ne, likely) -> `MIPSBEQ (map_reg rs, map_reg rt, offset, ne, likely)
-| `MIPSBCMPZ (rs, offset, cmp, link, likely) -> `MIPSBCMPZ (map_reg rs, offset, cmp, link, likely)
-| `MIPSJ (offset) -> `MIPSJ (offset)
-| `MIPSJAL (offset) -> `MIPSJAL (offset) (* implicit R31? *)
-| `MIPSJR (rd) -> `MIPSJR (map_reg rd)
-| `MIPSJALR (rd, rs) -> `MIPSJALR(map_reg rd, map_reg rs)
-
diff --git a/mips/gen/parser.hgen b/mips/gen/parser.hgen
deleted file mode 100644
index 8f573aa5..00000000
--- a/mips/gen/parser.hgen
+++ /dev/null
@@ -1,34 +0,0 @@
-| RTYPE reg COMMA reg COMMA reg
- { `MIPSRType ($1.op, $2, $4, $6) }
-| ITYPE reg COMMA reg COMMA NUM
- { `MIPSIType ($1.op, $2, $4, $6) }
-| SHIFTI reg COMMA reg COMMA NUM
- { `MIPSShiftI ($1.op, $2, $4, $6) }
-| SHIFTV reg COMMA reg COMMA reg
- { `MIPSShiftV ($1.op, $2, $4, $6) }
-| MULDIV reg COMMA reg
- { `MIPSMulDiv ($1.op, $2, $4) }
-| MFHILO reg
- { `MIPSMFHiLo ($1.op, $2) }
-| LUI reg COMMA NUM
- { `MIPSLUI ($2, $4) }
-| LOAD reg COMMA NUM LPAR reg RPAR
- { `MIPSLoad ($1.width, $1.signed, $1.linked, $6, $2, $4) }
-| STORE reg COMMA NUM LPAR reg RPAR
- { `MIPSStore ($1.width, $1.conditional, $6, $2, $4) }
-| LSLR reg COMMA NUM LPAR reg RPAR
- { `MIPSLSLR ($1.store, $1.double, $1.left, $6, $2, $4) }
-| SYNC
- { `MIPSSYNC }
-| BEQ reg COMMA reg COMMA NUM
- { `MIPSBEQ ( $2, $4, $6, $1.ne, $1.likely) }
-| BCMPZ reg COMMA NUM
- { `MIPSBCMPZ ( $2, $4, $1.cmp, $1.link, $1.likely) }
-| J NUM
- { `MIPSJ ($2) }
-| JAL NUM
- { `MIPSJAL ($2) }
-| JR reg
- { `MIPSJR ($2) }
-| JALR reg COMMA reg
- { `MIPSJALR ($2, $4) }
diff --git a/mips/gen/pretty.hgen b/mips/gen/pretty.hgen
deleted file mode 100644
index 98f56f2e..00000000
--- a/mips/gen/pretty.hgen
+++ /dev/null
@@ -1,36 +0,0 @@
-| `MIPSThreadStart -> "syscall 0xfffff" (* thread start *)
-| `MIPSStopFetching -> "STOP" (* TODO *)
-| `MIPSRType (op, rd,rs,rt) ->
- sprintf "%s %s,%s,%s" (pp_rtype_op op) (pp_reg rd) (pp_reg rs) (pp_reg rt)
-| `MIPSIType (op,rd,rs,imm) ->
- sprintf "%s %s,%s,%d" (pp_itype_op op) (pp_reg rd) (pp_reg rs) imm
-| `MIPSShiftI (op, rs, rt, imm) ->
- sprintf "%s %s,%s,%d" (pp_shifti_op op) (pp_reg rs) (pp_reg rt) imm
-| `MIPSShiftV (op, rd,rs,rt) ->
- sprintf "%s %s,%s,%s" (pp_shiftv_op op) (pp_reg rd) (pp_reg rs) (pp_reg rt)
-| `MIPSMulDiv (op, rs, rt) ->
- sprintf "%s %s,%s" (pp_muldiv_op op) (pp_reg rs) (pp_reg rt)
-| `MIPSMFHiLo (op, rs) ->
- sprintf "%s %s" (pp_mfhilo_op op) (pp_reg rs)
-| `MIPSLUI (rt, imm) ->
- sprintf "lui %s,%d" (pp_reg rt) imm
-| `MIPSLoad (width, signed, linked, base, rt, offset) ->
- sprintf "%s %s,%d(%s)" (pp_load_op width signed linked) (pp_reg rt) offset (pp_reg base)
-| `MIPSStore (width, conditional, base, rt, offset) ->
- sprintf "%s %s,%d(%s)" (pp_store_op width conditional) (pp_reg rt) offset (pp_reg base)
-| `MIPSLSLR (store, double, left, base, rt, offset) ->
- sprintf "%s %s,%d(%s)" (pp_lslr_op store double left) (pp_reg rt) offset (pp_reg base)
-| `MIPSSYNC -> "sync"
-| `MIPSBEQ (rs, rt, offset, ne, likely) ->
- sprintf "%s %s,%s,.%+d" (pp_beq_op ne likely) (pp_reg rs) (pp_reg rt) offset
-| `MIPSBCMPZ (rs, offset, cmp, link, likely) ->
- sprintf "%s,%s,.%+d" (pp_bcmpz_op cmp link likely) (pp_reg rs) offset
-| `MIPSJ (offset) ->
- sprintf "j %d" offset
-| `MIPSJAL (offset) ->
- sprintf "jal %d" offset
-| `MIPSJR(rd) ->
- sprintf "jr %s" (pp_reg rd)
-| `MIPSJALR(rd, rs) ->
- sprintf "jalr %s,%s" (pp_reg rd) (pp_reg rs)
-
diff --git a/mips/gen/sail_trans_out.hgen b/mips/gen/sail_trans_out.hgen
deleted file mode 100644
index f2d006e8..00000000
--- a/mips/gen/sail_trans_out.hgen
+++ /dev/null
@@ -1,98 +0,0 @@
-| ("SYSCALL_THREAD_START", []) -> `MIPSThreadStart
-| ("ADD" , [rs; rt; rd]) -> `MIPSRType (MIPSROpADD , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("ADDU" , [rs; rt; rd]) -> `MIPSRType (MIPSROpADDU , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("AND" , [rs; rt; rd]) -> `MIPSRType (MIPSROpAND , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("DADD" , [rs; rt; rd]) -> `MIPSRType (MIPSROpDADD , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("DADDU" , [rs; rt; rd]) -> `MIPSRType (MIPSROpDADDU , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("DSUB" , [rs; rt; rd]) -> `MIPSRType (MIPSROpDSUB , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("DSUBU" , [rs; rt; rd]) -> `MIPSRType (MIPSROpDSUBU , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("MOVN" , [rs; rt; rd]) -> `MIPSRType (MIPSROpMOVN , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("MOVZ" , [rs; rt; rd]) -> `MIPSRType (MIPSROpMOVZ , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("MUL" , [rs; rt; rd]) -> `MIPSRType (MIPSROpMUL , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("NOR" , [rs; rt; rd]) -> `MIPSRType (MIPSROpNOR , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("OR" , [rs; rt; rd]) -> `MIPSRType (MIPSROpOR , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("SLT" , [rs; rt; rd]) -> `MIPSRType (MIPSROpSLT , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("SLTU" , [rs; rt; rd]) -> `MIPSRType (MIPSROpSLTU , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("SUB" , [rs; rt; rd]) -> `MIPSRType (MIPSROpSUB , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("SUBU" , [rs; rt; rd]) -> `MIPSRType (MIPSROpSUBU , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| ("XOR" , [rs; rt; rd]) -> `MIPSRType (MIPSROpXOR , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-
-| ("ADDI" , [rs; rt; imm]) -> `MIPSIType (MIPSIOpADDI ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_simm16 imm))
-| ("ADDIU" , [rs; rt; imm]) -> `MIPSIType (MIPSIOpADDIU ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_simm16 imm))
-| ("ANDI" , [rs; rt; imm]) -> `MIPSIType (MIPSIOpANDI ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_imm16 imm))
-| ("DADDI" , [rs; rt; imm]) -> `MIPSIType (MIPSIOpDADDI ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_simm16 imm))
-| ("DADDIU", [rs; rt; imm]) -> `MIPSIType (MIPSIOpDADDIU,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_simm16 imm))
-| ("ORI" , [rs; rt; imm]) -> `MIPSIType (MIPSIOpORI ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_imm16 imm))
-| ("SLTI" , [rs; rt; imm]) -> `MIPSIType (MIPSIOpSLTI ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_simm16 imm))
-| ("SLTIU" , [rs; rt; imm]) -> `MIPSIType (MIPSIOpSLTIU ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_simm16 imm))
-| ("XORI" , [rs; rt; imm]) -> `MIPSIType (MIPSIOpXORI ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_imm16 imm))
-
-| ("DSLL" , [rt; rd; sa]) -> `MIPSShiftI (MIPSDSLL , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| ("DSLL32" , [rt; rd; sa]) -> `MIPSShiftI (MIPSDSLL32 , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| ("DSRA" , [rt; rd; sa]) -> `MIPSShiftI (MIPSDSRA , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| ("DSRA32" , [rt; rd; sa]) -> `MIPSShiftI (MIPSDSRA32 , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| ("DSRL" , [rt; rd; sa]) -> `MIPSShiftI (MIPSDSRL , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| ("DSRL32" , [rt; rd; sa]) -> `MIPSShiftI (MIPSDSRL32 , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| ("SLL" , [rt; rd; sa]) -> `MIPSShiftI (MIPSSLL , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| ("SRA" , [rt; rd; sa]) -> `MIPSShiftI (MIPSSRA , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| ("SRL" , [rt; rd; sa]) -> `MIPSShiftI (MIPSSRL , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-
-| "DSLLV" , [rs; rt; rd] -> `MIPSShiftV (MIPSDSLLV , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_ireg rs))
-| "DSRAV" , [rs; rt; rd] -> `MIPSShiftV (MIPSDSRAV , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_ireg rs))
-| "DSRLV" , [rs; rt; rd] -> `MIPSShiftV (MIPSDSRLV , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_ireg rs))
-| "SLLV" , [rs; rt; rd] -> `MIPSShiftV (MIPSSLLV , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_ireg rs))
-| "SRAV" , [rs; rt; rd] -> `MIPSShiftV (MIPSSRAV , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_ireg rs))
-| "SRLV" , [rs; rt; rd] -> `MIPSShiftV (MIPSSRLV , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_ireg rs))
-
-| "DDIV" , [rs; rt] -> `MIPSMulDiv (MIPSDDIV , (translate_out_ireg rs), (translate_out_ireg rt))
-| "DDIVU" , [rs; rt] -> `MIPSMulDiv (MIPSDDIVU , (translate_out_ireg rs), (translate_out_ireg rt))
-| "DIV" , [rs; rt] -> `MIPSMulDiv (MIPSDIV , (translate_out_ireg rs), (translate_out_ireg rt))
-| "DIVU" , [rs; rt] -> `MIPSMulDiv (MIPSDIVU , (translate_out_ireg rs), (translate_out_ireg rt))
-| "DMULT" , [rs; rt] -> `MIPSMulDiv (MIPSDMULT , (translate_out_ireg rs), (translate_out_ireg rt))
-| "DMULTU", [rs; rt] -> `MIPSMulDiv (MIPSDMULTU , (translate_out_ireg rs), (translate_out_ireg rt))
-| "MADD" , [rs; rt] -> `MIPSMulDiv (MIPSMADD , (translate_out_ireg rs), (translate_out_ireg rt))
-| "MADDU" , [rs; rt] -> `MIPSMulDiv (MIPSMADDU , (translate_out_ireg rs), (translate_out_ireg rt))
-| "MSUB" , [rs; rt] -> `MIPSMulDiv (MIPSMSUB , (translate_out_ireg rs), (translate_out_ireg rt))
-| "MSUBU" , [rs; rt] -> `MIPSMulDiv (MIPSMSUBU , (translate_out_ireg rs), (translate_out_ireg rt))
-| "MULT" , [rs; rt] -> `MIPSMulDiv (MIPSMULT , (translate_out_ireg rs), (translate_out_ireg rt))
-| "MULTU" , [rs; rt] -> `MIPSMulDiv (MIPSMULTU , (translate_out_ireg rs), (translate_out_ireg rt))
-
-| "MFHI" , [rs] -> `MIPSMFHiLo (MIPSMFHI, (translate_out_ireg rs))
-| "MFLO" , [rs] -> `MIPSMFHiLo (MIPSMFLO, (translate_out_ireg rs))
-| "MTHI" , [rs] -> `MIPSMFHiLo (MIPSMTHI, (translate_out_ireg rs))
-| "MTLO" , [rs] -> `MIPSMFHiLo (MIPSMTLO, (translate_out_ireg rs))
-
-| "LUI" , [rt; imm] -> `MIPSLUI ((translate_out_ireg rt), (translate_out_imm16 imm))
-| "Load", [width; signed; linked; base; rt; offset] ->
- `MIPSLoad (
- (translate_out_wordWidth width),
- (translate_out_bool signed),
- (translate_out_bool linked),
- (translate_out_ireg base),
- (translate_out_ireg rt),
- (translate_out_simm16 offset)
- )
-| "Store", [width; conditional; base; rt; offset] ->
- `MIPSStore (
- (translate_out_wordWidth width),
- (translate_out_bool conditional),
- (translate_out_ireg base),
- (translate_out_ireg rt),
- (translate_out_simm16 offset)
- )
-| "LWL", [base; rt; offset] -> `MIPSLSLR (false, false, true , (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| "LWR", [base; rt; offset] -> `MIPSLSLR (false, false, false, (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| "LDL", [base; rt; offset] -> `MIPSLSLR (false, true , true , (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| "LDR", [base; rt; offset] -> `MIPSLSLR (false, true , false, (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| "SWL", [base; rt; offset] -> `MIPSLSLR (true , false, true , (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| "SWR", [base; rt; offset] -> `MIPSLSLR (true , false, false, (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| "SDL", [base; rt; offset] -> `MIPSLSLR (true , true , true , (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| "SDR", [base; rt; offset] -> `MIPSLSLR (true , true , false, (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| "SYNC", [] -> `MIPSSYNC
-| "BEQ", [rs; rt; offset; ne; likely] -> `MIPSBEQ ((translate_out_ireg rs), (translate_out_ireg rt), (translate_out_simm16 offset), (translate_out_bool ne), (translate_out_bool likely))
-| "BCMPZ", [rs; offset; cmp; link; likely] -> `MIPSBCMPZ ((translate_out_ireg rs), (translate_out_simm16 offset), (translate_out_cmp cmp), (translate_out_bool link), (translate_out_bool likely))
-| "J", [offset] -> `MIPSJ (translate_out_imm26 offset)
-| "JAL", [offset] -> `MIPSJAL (translate_out_imm26 offset)
-| "JR", [rd] -> `MIPSJR (translate_out_ireg rd)
-| "JALR", [rd; rs] -> `MIPSJALR (translate_out_ireg rd, translate_out_ireg rs)
-
diff --git a/mips/gen/shallow_ast_to_herdtools_ast.hgen b/mips/gen/shallow_ast_to_herdtools_ast.hgen
deleted file mode 100644
index efe2c77e..00000000
--- a/mips/gen/shallow_ast_to_herdtools_ast.hgen
+++ /dev/null
@@ -1,98 +0,0 @@
-| SYSCALL_THREAD_START -> `MIPSThreadStart
-| (ADD (rs, rt, rd)) -> `MIPSRType (MIPSROpADD , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (ADDU (rs, rt, rd)) -> `MIPSRType (MIPSROpADDU , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (AND (rs, rt, rd)) -> `MIPSRType (MIPSROpAND , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (DADD (rs, rt, rd)) -> `MIPSRType (MIPSROpDADD , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (DADDU (rs, rt, rd)) -> `MIPSRType (MIPSROpDADDU , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (DSUB (rs, rt, rd)) -> `MIPSRType (MIPSROpDSUB , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (DSUBU (rs, rt, rd)) -> `MIPSRType (MIPSROpDSUBU , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (MOVN (rs, rt, rd)) -> `MIPSRType (MIPSROpMOVN , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (MOVZ (rs, rt, rd)) -> `MIPSRType (MIPSROpMOVZ , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (MUL (rs, rt, rd)) -> `MIPSRType (MIPSROpMUL , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (NOR (rs, rt, rd)) -> `MIPSRType (MIPSROpNOR , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (OR (rs, rt, rd)) -> `MIPSRType (MIPSROpOR , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (SLT (rs, rt, rd)) -> `MIPSRType (MIPSROpSLT , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (SLTU (rs, rt, rd)) -> `MIPSRType (MIPSROpSLTU , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (SUB (rs, rt, rd)) -> `MIPSRType (MIPSROpSUB , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (SUBU (rs, rt, rd)) -> `MIPSRType (MIPSROpSUBU , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-| (XOR (rs, rt, rd)) -> `MIPSRType (MIPSROpXOR , (translate_out_ireg rd), (translate_out_ireg rs), (translate_out_ireg rt))
-
-| (ADDI (rs, rt, imm)) -> `MIPSIType (MIPSIOpADDI ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_simm16 imm))
-| (ADDIU (rs, rt, imm)) -> `MIPSIType (MIPSIOpADDIU ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_simm16 imm))
-| (ANDI (rs, rt, imm)) -> `MIPSIType (MIPSIOpANDI ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_imm16 imm))
-| (DADDI (rs, rt, imm)) -> `MIPSIType (MIPSIOpDADDI ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_simm16 imm))
-| (DADDIU (rs, rt, imm)) -> `MIPSIType (MIPSIOpDADDIU,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_simm16 imm))
-| (ORI (rs, rt, imm)) -> `MIPSIType (MIPSIOpORI ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_imm16 imm))
-| (SLTI (rs, rt, imm)) -> `MIPSIType (MIPSIOpSLTI ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_simm16 imm))
-| (SLTIU (rs, rt, imm)) -> `MIPSIType (MIPSIOpSLTIU ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_simm16 imm))
-| (XORI (rs, rt, imm)) -> `MIPSIType (MIPSIOpXORI ,(translate_out_ireg rt), (translate_out_ireg rs), (translate_out_imm16 imm))
-
-| (DSLL (rt, rd, sa)) -> `MIPSShiftI (MIPSDSLL , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| (DSLL32 (rt, rd, sa)) -> `MIPSShiftI (MIPSDSLL32 , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| (DSRA (rt, rd, sa)) -> `MIPSShiftI (MIPSDSRA , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| (DSRA32 (rt, rd, sa)) -> `MIPSShiftI (MIPSDSRA32 , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| (DSRL (rt, rd, sa)) -> `MIPSShiftI (MIPSDSRL , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| (DSRL32 (rt, rd, sa)) -> `MIPSShiftI (MIPSDSRL32 , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| (SLL (rt, rd, sa)) -> `MIPSShiftI (MIPSSLL , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| (SRA (rt, rd, sa)) -> `MIPSShiftI (MIPSSRA , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-| (SRL (rt, rd, sa)) -> `MIPSShiftI (MIPSSRL , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_imm5 sa))
-
-| DSLLV (rs, rt, rd) -> `MIPSShiftV (MIPSDSLLV , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_ireg rs))
-| DSRAV (rs, rt, rd) -> `MIPSShiftV (MIPSDSRAV , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_ireg rs))
-| DSRLV (rs, rt, rd) -> `MIPSShiftV (MIPSDSRLV , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_ireg rs))
-| SLLV (rs, rt, rd) -> `MIPSShiftV (MIPSSLLV , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_ireg rs))
-| SRAV (rs, rt, rd) -> `MIPSShiftV (MIPSSRAV , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_ireg rs))
-| SRLV (rs, rt, rd) -> `MIPSShiftV (MIPSSRLV , (translate_out_ireg rd), (translate_out_ireg rt), (translate_out_ireg rs))
-
-| DDIV (rs, rt) -> `MIPSMulDiv (MIPSDDIV , (translate_out_ireg rs), (translate_out_ireg rt))
-| DDIVU (rs, rt) -> `MIPSMulDiv (MIPSDDIVU , (translate_out_ireg rs), (translate_out_ireg rt))
-| DIV (rs, rt) -> `MIPSMulDiv (MIPSDIV , (translate_out_ireg rs), (translate_out_ireg rt))
-| DIVU (rs, rt) -> `MIPSMulDiv (MIPSDIVU , (translate_out_ireg rs), (translate_out_ireg rt))
-| DMULT (rs, rt) -> `MIPSMulDiv (MIPSDMULT , (translate_out_ireg rs), (translate_out_ireg rt))
-| DMULTU (rs, rt) -> `MIPSMulDiv (MIPSDMULTU , (translate_out_ireg rs), (translate_out_ireg rt))
-| MADD (rs, rt) -> `MIPSMulDiv (MIPSMADD , (translate_out_ireg rs), (translate_out_ireg rt))
-| MADDU (rs, rt) -> `MIPSMulDiv (MIPSMADDU , (translate_out_ireg rs), (translate_out_ireg rt))
-| MSUB (rs, rt) -> `MIPSMulDiv (MIPSMSUB , (translate_out_ireg rs), (translate_out_ireg rt))
-| MSUBU (rs, rt) -> `MIPSMulDiv (MIPSMSUBU , (translate_out_ireg rs), (translate_out_ireg rt))
-| MULT (rs, rt) -> `MIPSMulDiv (MIPSMULT , (translate_out_ireg rs), (translate_out_ireg rt))
-| MULTU (rs, rt) -> `MIPSMulDiv (MIPSMULTU , (translate_out_ireg rs), (translate_out_ireg rt))
-
-| MFHI (rs) -> `MIPSMFHiLo (MIPSMFHI, (translate_out_ireg rs))
-| MFLO (rs) -> `MIPSMFHiLo (MIPSMFLO, (translate_out_ireg rs))
-| MTHI (rs) -> `MIPSMFHiLo (MIPSMTHI, (translate_out_ireg rs))
-| MTLO (rs) -> `MIPSMFHiLo (MIPSMTLO, (translate_out_ireg rs))
-
-| LUI (rt, imm) -> `MIPSLUI ((translate_out_ireg rt), (translate_out_imm16 imm))
-| Load (width, signed, linked, base, rt, offset) ->
- `MIPSLoad (
- (translate_out_wordWidth width),
- (translate_out_bool signed),
- (translate_out_bool linked),
- (translate_out_ireg base),
- (translate_out_ireg rt),
- (translate_out_simm16 offset)
- )
-| Store (width, conditional, base, rt, offset) ->
- `MIPSStore (
- (translate_out_wordWidth width),
- (translate_out_bool conditional),
- (translate_out_ireg base),
- (translate_out_ireg rt),
- (translate_out_simm16 offset)
- )
-| LWL (base, rt, offset) -> `MIPSLSLR (false, false, true , (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| LWR (base, rt, offset) -> `MIPSLSLR (false, false, false, (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| LDL (base, rt, offset) -> `MIPSLSLR (false, true , true , (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| LDR (base, rt, offset) -> `MIPSLSLR (false, true , false, (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| SWL (base, rt, offset) -> `MIPSLSLR (true , false, true , (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| SWR (base, rt, offset) -> `MIPSLSLR (true , false, false, (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| SDL (base, rt, offset) -> `MIPSLSLR (true , true , true , (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| SDR (base, rt, offset) -> `MIPSLSLR (true , true , false, (translate_out_ireg base), (translate_out_ireg rt), (translate_out_simm16 offset))
-| SYNC -> `MIPSSYNC
-| BEQ (rs, rt, offset, ne, likely) -> `MIPSBEQ ((translate_out_ireg rs), (translate_out_ireg rt), (translate_out_simm16 offset), (translate_out_bool ne), (translate_out_bool likely))
-| BCMPZ (rs, offset, cmp, link, likely) -> `MIPSBCMPZ ((translate_out_ireg rs), (translate_out_simm16 offset), (translate_out_cmp cmp), (translate_out_bool link), (translate_out_bool likely))
-| J (offset) -> `MIPSJ (translate_out_imm26 offset)
-| JAL (offset) -> `MIPSJAL (translate_out_imm26 offset)
-| JR (rd) -> `MIPSJR (translate_out_ireg rd)
-| JALR (rd, rs) -> `MIPSJALR (translate_out_ireg rd, translate_out_ireg rs)
-
diff --git a/mips/gen/shallow_types_to_herdtools_types.hgen b/mips/gen/shallow_types_to_herdtools_types.hgen
deleted file mode 100644
index a02d83b7..00000000
--- a/mips/gen/shallow_types_to_herdtools_types.hgen
+++ /dev/null
@@ -1,39 +0,0 @@
-let translate_out_big_bit = Sail_values.unsigned
-
-let translate_out_int inst = (Nat_big_num.to_int (translate_out_big_bit inst))
-let translate_out_signed_int inst bits =
- let i = (Nat_big_num.to_int (translate_out_big_bit inst)) in
- if (i >= (1 lsl (bits - 1))) then
- (i - (1 lsl bits)) else
- i
-
-let translate_out_ireg ireg = IReg (int_to_ireg (translate_out_int ireg))
-
-let translate_out_imm26 imm = translate_out_int imm
-
-let translate_out_imm16 imm = translate_out_int imm
-let translate_out_simm16 imm = translate_out_signed_int imm 16
-
-let translate_out_imm5 imm = translate_out_int imm
-
-let translate_out_bool = function
- | Sail_values.B1 -> true
- | Sail_values.B0 -> false
- | _ -> failwith "translate_out_bool Undef"
-
-
-let translate_out_wordWidth = function
- | Mips_embed_types.B2 -> MIPSByte
- | Mips_embed_types.H -> MIPSHalf
- | Mips_embed_types.W -> MIPSWord
- | Mips_embed_types.D -> MIPSDouble
-
-let translate_out_cmp = function
- | Mips_embed_types.EQ' -> MIPS_EQ (* equal *)
- | Mips_embed_types.NE -> MIPS_NE (* not equal *)
- | Mips_embed_types.GE -> MIPS_GE (* signed greater than or equal *)
- | Mips_embed_types.GEU -> MIPS_GEU (* unsigned greater than or equal *)
- | Mips_embed_types.GT' -> MIPS_GT (* signed strictly greater than *)
- | Mips_embed_types.LE -> MIPS_LE (* signed less than or equal *)
- | Mips_embed_types.LT' -> MIPS_LT (* signed strictly less than *)
- | Mips_embed_types.LTU -> MIPS_LTU (* unsigned less than or qual *)
diff --git a/mips/gen/token_types.hgen b/mips/gen/token_types.hgen
deleted file mode 100644
index 170b42d3..00000000
--- a/mips/gen/token_types.hgen
+++ /dev/null
@@ -1,39 +0,0 @@
-type token_RTYPE = {txt : string; op : mipsRTypeOp }
-type token_ITYPE = {txt : string; op : mipsITypeOp }
-type token_ShiftI = {txt : string; op : mipsShiftIOp }
-type token_ShiftV = {txt : string; op : mipsShiftVOp }
-type token_MulDiv = {txt : string; op : mipsMulDivOp }
-type token_MFHiLo = {txt : string; op : mipsMFHiLoOp }
-type token_LUI = {txt : string }
-type token_Load = {txt : string; width: mipsWordWidth; signed : bool; linked : bool}
-type token_Store = {txt : string; width: mipsWordWidth; conditional : bool}
-type token_LSLR = {txt : string; store : bool; double : bool; left: bool } (* Load/Store Left/Right *)
-type token_SYNC = {txt : string}
-type token_BEQ = {txt : string; ne : bool; likely : bool }
-type token_BCMPZ = {txt : string; cmp : mipsCmp; likely : bool; link : bool }
-type token_J = {txt : string}
-type token_JAL = {txt : string}
-type token_JR = {txt : string}
-type token_JALR = {txt : string}
-(*
-(regno, imm16, Comparison) TRAPIMM
-
-(regno, regno) RDHWR
-(regno, regno, Comparison) TRAPREG
-(regno, regno, bit[3], bool) MFC0
-(regno, regno, bit[3], bool) MTC0
-(regno, regno, imm16, bool, bool) BEQ
-TLBP
-TLBR
-TLBWI
-TLBWR
-
-regregimm16 CACHE
-regregimm16 PREF
-
-unit BREAK
-unit ERET
-unit HCF
-unit SYSCALL
-unit WAIT
-*) \ No newline at end of file
diff --git a/mips/gen/tokens.hgen b/mips/gen/tokens.hgen
deleted file mode 100644
index 937c6354..00000000
--- a/mips/gen/tokens.hgen
+++ /dev/null
@@ -1,17 +0,0 @@
-%token <MIPSHGenBase.token_RTYPE> RTYPE
-%token <MIPSHGenBase.token_ITYPE> ITYPE
-%token <MIPSHGenBase.token_ShiftI> SHIFTI
-%token <MIPSHGenBase.token_ShiftV> SHIFTV
-%token <MIPSHGenBase.token_MulDiv> MULDIV
-%token <MIPSHGenBase.token_MFHiLo> MFHILO
-%token <MIPSHGenBase.token_LUI> LUI
-%token <MIPSHGenBase.token_Load> LOAD
-%token <MIPSHGenBase.token_Store> STORE
-%token <MIPSHGenBase.token_LSLR> LSLR
-%token <MIPSHGenBase.token_SYNC> SYNC
-%token <MIPSHGenBase.token_BEQ> BEQ
-%token <MIPSHGenBase.token_BCMPZ> BCMPZ
-%token <MIPSHGenBase.token_J> J
-%token <MIPSHGenBase.token_JAL> JAL
-%token <MIPSHGenBase.token_JR> JR
-%token <MIPSHGenBase.token_JALR> JALR
diff --git a/mips/gen/trans_sail.hgen b/mips/gen/trans_sail.hgen
deleted file mode 100644
index e42d1b19..00000000
--- a/mips/gen/trans_sail.hgen
+++ /dev/null
@@ -1,122 +0,0 @@
-| `MIPSThreadStart ->
- ("SYSCALL_THREAD_START", [], [])
-| `MIPSStopFetching ->
- ("ImplementationDefinedStopFetching",
- [],
- [])
-
-(* Note different argument order, which reflects difference
- between instruction encoding and asm format *)
-| `MIPSRType (op, rd, rs, rt) ->
- (translate_rtype_op op,
- [
- translate_reg "rs" rs;
- translate_reg "rt" rt;
- translate_reg "rd" rd;
- ],
- [])
-
-(* Note different argument order similar to above *)
-| `MIPSIType (op, rt, rs, imm) ->
- (translate_itype_op op,
- [
- translate_reg "rs" rs;
- translate_reg "rt" rt;
- translate_imm16 "imm" imm;
- ],
- [])
-
-| `MIPSShiftI (op, rd, rt, sa) ->
- (translate_shifti_op op,
- [
- translate_reg "rt" rt;
- translate_reg "rd" rd;
- translate_imm5 "sa" sa;
- ],
- [])
-
-| `MIPSShiftV (op, rd, rt, rs) ->
- (translate_shiftv_op op,
- [
- translate_reg "rs" rs;
- translate_reg "rt" rt;
- translate_reg "rd" rd;
- ],
- [])
-
-| `MIPSMulDiv (op, rs, rt) ->
- (translate_muldiv_op op,
- [
- translate_reg "rs" rs;
- translate_reg "rt" rt;
- ],
- [])
-
-| `MIPSMFHiLo (op, rs) ->
- (translate_mfhilo_op op,
- [
- translate_reg "rs" rs;
- ],
- [])
-| `MIPSLUI (rt, imm) ->
- ("LUI",
- [
- translate_reg "rt" rt;
- translate_imm16 "imm" imm;
- ],
- [])
-| `MIPSLoad (width, signed, linked, base, rt, offset) ->
- ("Load",
- [
- translate_wordsize "width" width;
- translate_bool "signed" signed;
- translate_bool "linked" linked;
- translate_reg "base" base;
- translate_reg "rt" rt;
- translate_imm16 "offset" offset;
- ],
- [])
-| `MIPSStore (width, conditional, base, rt, offset) ->
- ("Store",
- [
- translate_wordsize "width" width;
- translate_bool "conditional" conditional;
- translate_reg "base" base;
- translate_reg "rt" rt;
- translate_imm16 "offset" offset;
- ],
- [])
-| `MIPSLSLR (store, double, left, base, rt, offset) ->
- (translate_lslr_op store double left,
- [
- translate_reg "base" base;
- translate_reg "rt" rt;
- translate_imm16 "offset" offset;
- ],
- [])
-| `MIPSSYNC -> ("SYNC", [], [])
-| `MIPSBEQ (rs, rt, offset, ne, likely) ->
- ("BEQ",
- [translate_reg "rs" rs;
- translate_reg "rt" rt;
- translate_imm16 "offset" offset;
- translate_bool "ne" ne;
- translate_bool "likely" likely;
- ], [])
-
-| `MIPSBCMPZ (rs, offset, cmp, link, likely) ->
- ("BCMPZ",
- [translate_reg "rs" rs;
- translate_imm16 "offset" offset;
- translate_cmp "cmp" cmp;
- translate_bool "link" link;
- translate_bool "likely" likely;
- ], [])
-| `MIPSJ (offset) ->
- ("J", [translate_imm26 "offset" offset;], [])
-| `MIPSJAL (offset) ->
- ("JAL", [translate_imm26 "offset" offset;], [])
-| `MIPSJR(rd) ->
- ("JR", [translate_reg "rd" rd;], [])
-| `MIPSJALR(rd, rs) ->
- ("JALR", [translate_reg "rd" rd; translate_reg "rs" rs;], [])
diff --git a/mips/gen/types.hgen b/mips/gen/types.hgen
deleted file mode 100644
index a1c61f4b..00000000
--- a/mips/gen/types.hgen
+++ /dev/null
@@ -1,209 +0,0 @@
-type mipsRTypeOp =
-| MIPSROpADD
-| MIPSROpADDU
-| MIPSROpAND
-| MIPSROpDADD
-| MIPSROpDADDU
-| MIPSROpDSUB
-| MIPSROpDSUBU
-| MIPSROpMOVN
-| MIPSROpMOVZ
-| MIPSROpMUL
-| MIPSROpNOR
-| MIPSROpOR
-| MIPSROpSLT
-| MIPSROpSLTU
-| MIPSROpSUB
-| MIPSROpSUBU
-| MIPSROpXOR
-
-let pp_rtype_op = function
-| MIPSROpADD -> "add"
-| MIPSROpADDU -> "addu"
-| MIPSROpAND -> "and"
-| MIPSROpDADD -> "dadd"
-| MIPSROpDADDU -> "daddu"
-| MIPSROpDSUB -> "dsub"
-| MIPSROpDSUBU -> "dsubu"
-| MIPSROpMOVN -> "movn"
-| MIPSROpMOVZ -> "movz"
-| MIPSROpMUL -> "mul"
-| MIPSROpNOR -> "nor"
-| MIPSROpOR -> "or"
-| MIPSROpSLT -> "slt"
-| MIPSROpSLTU -> "sltu"
-| MIPSROpSUB -> "sub"
-| MIPSROpSUBU -> "subu"
-| MIPSROpXOR -> "xor"
-
-type bit26 = int
-type bit16 = int
-type bit5 = int
-
-type mipsITypeOp =
-| MIPSIOpADDI
-| MIPSIOpADDIU
-| MIPSIOpANDI
-| MIPSIOpDADDI
-| MIPSIOpDADDIU
-| MIPSIOpORI
-| MIPSIOpSLTI
-| MIPSIOpSLTIU
-| MIPSIOpXORI
-
-let pp_itype_op = function
-| MIPSIOpADDI -> "addi"
-| MIPSIOpADDIU -> "addiu"
-| MIPSIOpANDI -> "andi"
-| MIPSIOpDADDI -> "daddi"
-| MIPSIOpDADDIU -> "daddiu"
-| MIPSIOpORI -> "ori"
-| MIPSIOpSLTI -> "slti"
-| MIPSIOpSLTIU -> "sltiu"
-| MIPSIOpXORI -> "xori"
-
-type mipsShiftIOp =
-| MIPSDSLL
-| MIPSDSLL32
-| MIPSDSRA
-| MIPSDSRA32
-| MIPSDSRL
-| MIPSDSRL32
-| MIPSSLL
-| MIPSSRA
-| MIPSSRL
-
-let pp_shifti_op = function
-| MIPSDSLL -> "dsll"
-| MIPSDSLL32 -> "dsll32"
-| MIPSDSRA -> "dsra"
-| MIPSDSRA32 -> "dsra32"
-| MIPSDSRL -> "dsrl"
-| MIPSDSRL32 -> "dsrl32"
-| MIPSSLL -> "sll"
-| MIPSSRA -> "sra"
-| MIPSSRL -> "srl"
-
-type mipsShiftVOp =
-| MIPSDSLLV
-| MIPSDSRAV
-| MIPSDSRLV
-| MIPSSLLV
-| MIPSSRAV
-| MIPSSRLV
-
-let pp_shiftv_op = function
-| MIPSDSLLV -> "dsllv"
-| MIPSDSRAV -> "dsrav"
-| MIPSDSRLV -> "dsrlv"
-| MIPSSLLV -> "sllv"
-| MIPSSRAV -> "srav"
-| MIPSSRLV -> "srlv"
-
-type mipsMulDivOp =
-| MIPSDDIV
-| MIPSDDIVU
-| MIPSDIV
-| MIPSDIVU
-| MIPSDMULT
-| MIPSDMULTU
-| MIPSMADD
-| MIPSMADDU
-| MIPSMSUB
-| MIPSMSUBU
-| MIPSMULT
-| MIPSMULTU
-
-let pp_muldiv_op = function
-| MIPSDDIV -> "ddiv"
-| MIPSDDIVU -> "ddivu"
-| MIPSDIV -> "div"
-| MIPSDIVU -> "divu"
-| MIPSDMULT -> "dmult"
-| MIPSDMULTU -> "dmultu"
-| MIPSMADD -> "madd"
-| MIPSMADDU -> "maddu"
-| MIPSMSUB -> "msub"
-| MIPSMSUBU -> "msubu"
-| MIPSMULT -> "mult"
-| MIPSMULTU -> "multu"
-
-type mipsMFHiLoOp =
-| MIPSMFHI
-| MIPSMFLO
-| MIPSMTHI
-| MIPSMTLO
-
-let pp_mfhilo_op = function
-| MIPSMFHI -> "mfhi"
-| MIPSMFLO -> "mflo"
-| MIPSMTHI -> "mthi"
-| MIPSMTLO -> "mtlo"
-
-type mipsWordWidth =
-| MIPSByte
-| MIPSHalf
-| MIPSWord
-| MIPSDouble
-
-type mipsCmp =
-| MIPS_EQ (* equal *)
-| MIPS_NE (* not equal *)
-| MIPS_GE (* signed greater than or equal *)
-| MIPS_GEU (* unsigned greater than or equal *)
-| MIPS_GT (* signed strictly greater than *)
-| MIPS_LE (* signed less than or equal *)
-| MIPS_LT (* signed strictly less than *)
-| MIPS_LTU (* unsigned less than or qual *)
-
-let pp_load_op width signed linked = match (width, signed, linked) with
- | (MIPSByte, true, false) -> "lb"
- | (MIPSByte, false, false) -> "lbu"
- | (MIPSHalf, true, false) -> "lh"
- | (MIPSHalf, false, false) -> "lhu"
- | (MIPSWord, true, false) -> "lw"
- | (MIPSWord, false, false) -> "lwu"
- | (MIPSDouble, false, false) -> "ld"
- | (MIPSWord, true, true) -> "ll"
- | (MIPSDouble, false, true) -> "lld"
- | _ -> failwith "unexpected load op"
-
-let pp_store_op width conditional = match (width, conditional) with
- | (MIPSByte, false) -> "sb"
- | (MIPSHalf, false) -> "sh"
- | (MIPSWord, false) -> "sw"
- | (MIPSDouble, false) -> "sd"
- | (MIPSWord, true) -> "sc"
- | (MIPSDouble, true) -> "scd"
- | _ -> failwith "unexpected store op"
-
-let pp_lslr_op store double left = match (store, double, left) with
- | (false, false, true ) -> "lwl"
- | (false, false, false) -> "lwr"
- | (false, true , true ) -> "ldl"
- | (false, true , false) -> "ldr"
- | (true , false, true ) -> "swl"
- | (true , false, false) -> "swr"
- | (true , true , true ) -> "sdl"
- | (true , true , false) -> "sdr"
-
-let pp_beq_op ne likely = match (ne, likely) with
- | (false, false) -> "beq"
- | (false, true) -> "beql"
- | (true , false) -> "bne"
- | (true , true) -> "bnel"
-
-let pp_bcmpz_op cmp link likely = match (cmp, likely, link) with
-| (MIPS_LT, false , false ) -> "bltz"
-| (MIPS_LT, false , true ) -> "bltzal"
-| (MIPS_LT, true , false ) -> "bltzl"
-| (MIPS_LT, true , true ) -> "bltzall"
-| (MIPS_GE, false , false ) -> "bgez"
-| (MIPS_GE, false , true ) -> "bgezal"
-| (MIPS_GE, true , false ) -> "bgezl"
-| (MIPS_GE, true , true ) -> "bgezall"
-| (MIPS_GT, false , false ) -> "bgtz"
-| (MIPS_GT, true , false ) -> "bgtzl"
-| (MIPS_LE, false , false ) -> "blez"
-| (MIPS_LE, true , false ) -> "blezl"
-| _ -> failwith "unknown bcmpz instruction"
diff --git a/mips/gen/types_sail_trans_out.hgen b/mips/gen/types_sail_trans_out.hgen
deleted file mode 100644
index ebd31fcb..00000000
--- a/mips/gen/types_sail_trans_out.hgen
+++ /dev/null
@@ -1,47 +0,0 @@
-let translate_out_big_bit = function
- | (name, Bvector _, bits) -> IInt.integer_of_bit_list bits
- | _ -> assert false
-
-let translate_out_int inst = (Nat_big_num.to_int (translate_out_big_bit inst))
-let translate_out_signed_int inst bits =
- let i = (Nat_big_num.to_int (translate_out_big_bit inst)) in
- if (i >= (1 lsl (bits - 1))) then
- (i - (1 lsl bits)) else
- i
-
-let translate_out_ireg ireg = IReg (int_to_ireg (translate_out_int ireg))
-
-let translate_out_imm26 imm = translate_out_int imm
-
-let translate_out_imm16 imm = translate_out_int imm
-let translate_out_simm16 imm = translate_out_signed_int imm 16
-
-let translate_out_imm5 imm = translate_out_int imm
-
-let translate_out_bool = function
- | (name, Bit, [Bitc_one]) -> true
- | (name, Bit, [Bitc_zero]) -> false
- | _ -> assert false
-
-let translate_out_enum (name,_,bits) =
- Nat_big_num.to_int (IInt.integer_of_bit_list bits)
-
-let translate_out_wordWidth inst =
- match translate_out_enum inst with
- | 0 -> MIPSByte
- | 1 -> MIPSHalf
- | 2 -> MIPSWord
- | 3 -> MIPSDouble
- | _ -> failwith "Unknown wordWidth in sail translate out"
-
-let translate_out_cmp inst =
- match translate_out_enum inst with
- | 0 -> MIPS_EQ (* equal *)
- | 1 -> MIPS_NE (* not equal *)
- | 2 -> MIPS_GE (* signed greater than or equal *)
- | 3 -> MIPS_GEU (* unsigned greater than or equal *)
- | 4 -> MIPS_GT (* signed strictly greater than *)
- | 5 -> MIPS_LE (* signed less than or equal *)
- | 6 -> MIPS_LT (* signed strictly less than *)
- | 7 -> MIPS_LTU (* unsigned less than or qual *)
- | _ -> failwith "Unknown mipsCmp in sail translate out"
diff --git a/mips/gen/types_trans_sail.hgen b/mips/gen/types_trans_sail.hgen
deleted file mode 100644
index 63880ae9..00000000
--- a/mips/gen/types_trans_sail.hgen
+++ /dev/null
@@ -1,44 +0,0 @@
-let translate_rtype_op op = uppercase (pp_rtype_op op)
-let translate_itype_op op = uppercase (pp_itype_op op)
-let translate_shifti_op op = uppercase (pp_shifti_op op)
-let translate_shiftv_op op = uppercase (pp_shiftv_op op)
-let translate_muldiv_op op = uppercase (pp_muldiv_op op)
-let translate_mfhilo_op op = uppercase (pp_mfhilo_op op)
-let translate_load_op width signed linked = uppercase (pp_load_op width signed linked)
-let translate_store_op width conditional = uppercase (pp_store_op width conditional)
-let translate_lslr_op store double left = uppercase (pp_lslr_op store double left)
-let translate_beq_op ne likely = uppercase (pp_beq_op ne likely)
-let translate_bcmpz_op cmp link likely = uppercase (pp_bcmpz_op cmp link likely)
-
-let translate_reg name value =
- (name, Bvector (Some 5), bit_list_of_integer 5 (Nat_big_num.of_int (reg_to_int value)))
-let translate_imm26 name value =
- (name, Bvector (Some 26), bit_list_of_integer 26 (Nat_big_num.of_int value))
-let translate_imm16 name value =
- (name, Bvector (Some 16), bit_list_of_integer 16 (Nat_big_num.of_int value))
-let translate_imm5 name value =
- (name, Bvector (Some 5), bit_list_of_integer 5 (Nat_big_num.of_int value))
-let translate_bool name value =
- (name, Bit, [if value then Bitc_one else Bitc_zero])
-let translate_enum enum_values name value =
- let rec bit_count n =
- if n = 0 then 0
- else 1 + (bit_count (n lsr 1)) in
- let rec find_index element = function
- | h::tail -> if h = element then 0 else 1 + (find_index element tail)
- | _ -> failwith "translate_enum could not find value"
- in
- let size = bit_count (List.length enum_values) in
- let index = find_index value enum_values in
- (name, Range0 (Some size), IInt.bit_list_of_integer size (Nat_big_num.of_int index))
-let translate_wordsize = translate_enum [MIPSByte; MIPSHalf; MIPSWord; MIPSDouble]
-let translate_cmp = translate_enum [
-MIPS_EQ ;(* equal *)
-MIPS_NE ;(* not equal *)
-MIPS_GE ;(* signed greater than or equal *)
-MIPS_GEU ;(* unsigned greater than or equal *)
-MIPS_GT ;(* signed strictly greater than *)
-MIPS_LE ;(* signed less than or equal *)
-MIPS_LT ;(* signed strictly less than *)
-MIPS_LTU ;(* unsigned less than or qual *)
-] \ No newline at end of file
diff --git a/mips/main.sail b/mips/main.sail
deleted file mode 100644
index 8fc48f9a..00000000
--- a/mips/main.sail
+++ /dev/null
@@ -1,97 +0,0 @@
-
-val cycle_limit_reached = { c: "cycle_limit_reached" } : unit -> bool
-
-function cycle_limit_reached() = false
-
-register instCount : int
-
-val fetch_and_execute : unit -> bool effect {barr, eamem, escape, rmem, rreg, wmv, wreg, undef, wmvt, rmemt}
-function fetch_and_execute () = {
- PC = nextPC;
- inBranchDelay = branchPending;
- branchPending = 0b0;
- nextPC = if inBranchDelay then delayedPC else PC + 4;
- cp2_next_pc();
- instCount = instCount + 1;
- if UART_WRITTEN then {
- putchar(unsigned(UART_WDATA));
- UART_WRITTEN = 0b0;
- };
- /* the following skips are required on mips to fake the tag effects otherwise type checker complains */
- skip_rmemt();
- skip_wmvt();
- /* prerr_bits("PC: ", PC); */
- loop_again = true;
- try {
- let pc_pa = TranslatePC(PC);
- /*print_bits("pa: ", pc_pa);*/
- let instr = MEMr_wrapper(pc_pa, 4);
- /*print_bits("hex: ", instr);*/
- let instr_ast = decode(instr);
- match instr_ast {
- Some(HCF()) => {
- print("simulation stopped due to halt instruction.");
- loop_again = false
- },
- Some(ast) => execute(ast),
- None() => { print("Decode failed"); loop_again=false } /* Never expect this -- unknown instruction should actually result in reserved instruction ISA-level exception (see mips_ri.sail). */
- }
- } catch {
- ISAException() => () /*prerr_endline("EXCEPTION")*/
- /* ISA-level exception occurrred either during TranslatePC or execute --
- just continue from nextPC, which should have been set to the appropriate
- exception vector (along with clearing branchPending etc.) . */
- };
- loop_again & not (cycle_limit_reached());
-}
-
-val elf_entry = {
- ocaml: "Elf_loader.elf_entry",
- lem: "elf_entry",
- c: "elf_entry"
-} : unit -> int
-
-val init_registers : bits(64) -> unit effect {wreg}
-
-function init_registers (initialPC) = {
- init_cp0_state();
- init_cp2_state();
- nextPC = initialPC;
-}
-
-function dump_mips_state () : unit -> unit = {
- print_bits("DEBUG MIPS PC ", PC);
- foreach (idx from 0 to 31) {
- print(concat_str("DEBUG MIPS REG ", concat_str(string_of_int(idx), concat_str(" ", BitStr(rGPR(to_bits(5,idx)))))));
- }
-}
-
-val main : unit -> unit effect {barr, eamem, escape, rmem, rreg, undef, wmv, wreg, rmemt, wmvt}
-
-function main () = {
- init_registers(to_bits(64, elf_entry()));
- startTime = get_time_ns();
- while (fetch_and_execute()) do {
- /* uncomment to print IPS every 10M instructions (~10s)
- if (instCount == 10000000) then {
- endTime = get_time_ns();
- elapsed = endTime - startTime;
- inst_1e9 = instCount * 1000000000;
- ips = inst_1e9 / elapsed;
- print_int("*IPS*: ", ips);
- startTime = get_time_ns();
- instCount = 0;
- };*/
- ();
- };
-
- endTime = get_time_ns();
- elapsed = endTime - startTime;
- inst_1e9 = instCount * 1000000000;
- ips = inst_1e9 / elapsed;
- dump_mips_state ();
- dump_cp2_state ();
- print_int("Executed instructions: ", instCount);
- print_int("Nanoseconds elapsed: ", elapsed);
- print_int("Instructions per second: ", ips);
-}
diff --git a/mips/mips_ast_decl.sail b/mips/mips_ast_decl.sail
deleted file mode 100644
index e39bc270..00000000
--- a/mips/mips_ast_decl.sail
+++ /dev/null
@@ -1,44 +0,0 @@
-/*========================================================================*/
-/* */
-/* Copyright (c) 2015-2017 Robert M. Norton */
-/* Copyright (c) 2015-2017 Kathyrn Gray */
-/* All rights reserved. */
-/* */
-/* This software was developed by the University of Cambridge Computer */
-/* Laboratory as part of the Rigorous Engineering of Mainstream Systems */
-/* (REMS) project, funded by EPSRC grant EP/K008528/1. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following conditions */
-/* are met: */
-/* 1. Redistributions of source code must retain the above copyright */
-/* notice, this list of conditions and the following disclaimer. */
-/* 2. Redistributions in binary form must reproduce the above copyright */
-/* notice, this list of conditions and the following disclaimer in */
-/* the documentation and/or other materials provided with the */
-/* distribution. */
-/* */
-/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */
-/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
-/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
-/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */
-/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
-/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */
-/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */
-/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
-/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */
-/* SUCH DAMAGE. */
-/*========================================================================*/
-
-/* misp_insts.sail: mips instruction decode and execute clauses and AST node
- declarations */
-
-scattered union ast
-
-val execute : ast -> unit effect {barr, eamem, escape, rmem, rreg, undef, wmv, wreg}
-scattered function execute
-
-val decode : bits(32) -> option(ast) effect pure
-scattered function decode
diff --git a/mips/mips_epilogue.sail b/mips/mips_epilogue.sail
deleted file mode 100644
index c7477a50..00000000
--- a/mips/mips_epilogue.sail
+++ /dev/null
@@ -1,42 +0,0 @@
-/*========================================================================*/
-/* */
-/* Copyright (c) 2015-2017 Robert M. Norton */
-/* Copyright (c) 2015-2017 Kathyrn Gray */
-/* All rights reserved. */
-/* */
-/* This software was developed by the University of Cambridge Computer */
-/* Laboratory as part of the Rigorous Engineering of Mainstream Systems */
-/* (REMS) project, funded by EPSRC grant EP/K008528/1. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following conditions */
-/* are met: */
-/* 1. Redistributions of source code must retain the above copyright */
-/* notice, this list of conditions and the following disclaimer. */
-/* 2. Redistributions in binary form must reproduce the above copyright */
-/* notice, this list of conditions and the following disclaimer in */
-/* the documentation and/or other materials provided with the */
-/* distribution. */
-/* */
-/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */
-/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
-/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
-/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */
-/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
-/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */
-/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */
-/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
-/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */
-/* SUCH DAMAGE. */
-/*========================================================================*/
-
-/* mips_epilogue.sail: end of decode, execute and AST definitions. */
-
-end decode
-end execute
-end ast
-
-val supported_instructions : ast -> option(ast)
-function supported_instructions instr = Some(instr)
diff --git a/mips/mips_extras.lem b/mips/mips_extras.lem
deleted file mode 100644
index 4edb0066..00000000
--- a/mips/mips_extras.lem
+++ /dev/null
@@ -1,128 +0,0 @@
-open import Pervasives
-open import Pervasives_extra
-open import Sail2_instr_kinds
-open import Sail2_values
-open import Sail2_operators
-open import Sail2_prompt_monad
-open import Sail2_prompt
-
-val MEMr : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> monad 'regval 'b 'e
-val MEMr_reserve : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> monad 'regval 'b 'e
-val MEMr_tag : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> monad 'regval (bool * 'b) 'e
-val MEMr_tag_reserve : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> monad 'regval (bool * 'b) 'e
-
-let MEMr addr size = read_mem Read_plain addr size
-let MEMr_reserve addr size = read_mem Read_reserve addr size
-
-val read_tag_bool : forall 'regval 'a 'e. Bitvector 'a => 'a -> monad 'regval bool 'e
-let read_tag_bool addr =
- read_tag addr >>= fun t ->
- maybe_fail "read_tag_bool" (bool_of_bitU t)
-
-val write_tag_bool : forall 'regval 'a 'e. Bitvector 'a => 'a -> bool -> monad 'regval unit 'e
-let write_tag_bool addr t = write_tag addr (bitU_of_bool t) >>= fun _ -> return ()
-
-let MEMr_tag addr size =
- read_mem Read_plain addr size >>= fun v ->
- read_tag_bool addr >>= fun t ->
- return (t, v)
-
-let MEMr_tag_reserve addr size =
- read_mem Read_plain addr size >>= fun v ->
- read_tag_bool addr >>= fun t ->
- return (t, v)
-
-
-val MEMea : forall 'regval 'a 'e. Bitvector 'a => 'a -> integer -> monad 'regval unit 'e
-val MEMea_conditional : forall 'regval 'a 'e. Bitvector 'a => 'a -> integer -> monad 'regval unit 'e
-val MEMea_tag : forall 'regval 'a 'e. Bitvector 'a => 'a -> integer -> monad 'regval unit 'e
-val MEMea_tag_conditional : forall 'regval 'a 'e. Bitvector 'a => 'a -> integer -> monad 'regval unit 'e
-
-let MEMea addr size = write_mem_ea Write_plain addr size
-let MEMea_conditional addr size = write_mem_ea Write_conditional addr size
-
-let MEMea_tag addr size = write_mem_ea Write_plain addr size
-let MEMea_tag_conditional addr size = write_mem_ea Write_conditional addr size
-
-
-val MEMval : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> 'b -> monad 'regval unit 'e
-val MEMval_conditional : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> 'b -> monad 'regval bool 'e
-val MEMval_tag : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> bool -> 'b -> monad 'regval unit 'e
-val MEMval_tag_conditional : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> bool -> 'b -> monad 'regval bool 'e
-
-let MEMval _ size v = write_mem_val v >>= fun _ -> return ()
-let MEMval_conditional _ size v = write_mem_val v >>= fun b -> return (if b then true else false)
-let MEMval_tag addr size t v = write_mem_val v >>= fun _ -> write_tag_bool addr t >>= fun _ -> return ()
-let MEMval_tag_conditional addr size t v = write_mem_val v >>= fun b -> write_tag_bool addr t >>= fun _ -> return (if b then true else false)
-
-val MEM_sync : forall 'regval 'e. unit -> monad 'regval unit 'e
-
-let MEM_sync () = barrier Barrier_MIPS_SYNC
-
-(* Some wrappers copied from aarch64_extras *)
-(* TODO: Harmonise into a common library *)
-
-let get_slice_int_bl len n lo =
- (* TODO: Is this the intended behaviour? *)
- let hi = lo + len - 1 in
- let bs = bools_of_int (hi + 1) n in
- subrange_list false bs hi lo
-
-val get_slice_int : forall 'a. Bitvector 'a => integer -> integer -> integer -> 'a
-let get_slice_int len n lo = of_bools (get_slice_int_bl len n lo)
-
-let write_ram _ size _ addr data =
- MEMea addr size >>
- MEMval addr size data
-
-let read_ram _ size _ addr = MEMr addr size
-
-let string_of_int = show
-
-let shift_bits_left v n =
- let r = Maybe.bind (unsigned n) (fun n -> of_bits (shiftl_bv v n)) in
- maybe_fail "shift_bits_left" r
-let shift_bits_right v n =
- let r = Maybe.bind (unsigned n) (fun n -> of_bits (shiftr_bv v n)) in
- maybe_fail "shift_bits_right" r
-let shift_bits_right_arith v n =
- let r = Maybe.bind (unsigned n) (fun n -> of_bits (arith_shiftr_bv v n)) in
- maybe_fail "shift_bits_right_arith" r
-
-(* Use constants for undefined values for now *)
-let undefined_string () = return ""
-let undefined_unit () = return ()
-let undefined_int () = return (0:ii)
-val undefined_vector : forall 'rv 'a 'e. integer -> 'a -> monad 'rv (list 'a) 'e
-let undefined_vector len u = return (repeat [u] len)
-val undefined_bitvector : forall 'rv 'a 'e. Bitvector 'a => integer -> monad 'rv 'a 'e
-let undefined_bitvector len = return (of_bools (repeat [false] len))
-val undefined_bits : forall 'rv 'a 'e. Bitvector 'a => integer -> monad 'rv 'a 'e
-let undefined_bits = undefined_bitvector
-let undefined_bit () = return B0
-let undefined_real () = return (realFromFrac 0 1)
-let undefined_range i j = return i
-let undefined_atom i = return i
-let undefined_nat () = return (0:ii)
-
-let skip () = return ()
-
-val elf_entry : unit -> integer
-let elf_entry () = 0
-declare ocaml target_rep function elf_entry = `Elf_loader.elf_entry`
-
-let print_bits msg bs = print_endline (msg ^ (string_of_bv bs))
-let prerr_bits msg bs = prerr_endline (msg ^ (string_of_bv bs))
-
-val prerr_string : string -> unit
-let prerr_string _ = ()
-declare ocaml target_rep function prerr_string = `Pervasives.prerr_string`
-
-val get_time_ns : unit -> integer
-let get_time_ns () = 0
-declare ocaml target_rep function get_time_ns = `(fun () -> Big_int.of_int (int_of_float (1e9 *. Unix.gettimeofday ())))`
-
-val cycle_count : unit -> unit
-let cycle_count _ = ()
-
-let inline eq_bit = eq
diff --git a/mips/mips_extras.v b/mips/mips_extras.v
deleted file mode 100644
index 83f39079..00000000
--- a/mips/mips_extras.v
+++ /dev/null
@@ -1,179 +0,0 @@
-Require Import Sail2_instr_kinds.
-Require Import Sail2_values.
-Require Import Sail2_operators_mwords.
-Require Import Sail2_prompt_monad.
-Require Import Sail2_prompt.
-Require Import String.
-Require Import List.
-Import List.ListNotations.
-(*
-val MEMr : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> monad 'regval 'b 'e
-val MEMr_reserve : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> monad 'regval 'b 'e
-val MEMr_tag : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> monad 'regval (bool * 'b) 'e
-val MEMr_tag_reserve : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> monad 'regval (bool * 'b) 'e
-*)
-Definition MEMr {regval a b e} `{ArithFact (b >= 0)} (addr : mword a) size : monad regval (mword b) e := read_mem Read_plain addr size.
-Definition MEMr_reserve {regval a b e} `{ArithFact (b >= 0)} (addr : mword a) size : monad regval (mword b) e := read_mem Read_reserve addr size.
-
-(*val read_tag_bool : forall 'regval 'a 'e. Bitvector 'a => 'a -> monad 'regval bool 'e*)
-Definition read_tag_bool {regval a e} (addr : mword a) : monad regval bool e :=
- read_tag addr >>= fun t =>
- maybe_fail "read_tag_bool" (bool_of_bitU t).
-
-(*val write_tag_bool : forall 'regval 'a 'e. Bitvector 'a => 'a -> bool -> monad 'regval unit 'e*)
-Definition write_tag_bool {regval a e} (addr : mword a) t : monad regval unit e :=
- write_tag addr (bitU_of_bool t) >>= fun _ => returnm tt.
-
-Definition MEMr_tag {regval a b e} `{ArithFact (b >= 0)} (addr : mword a) size : monad regval (bool * mword b) e :=
- read_mem Read_plain addr size >>= fun v =>
- read_tag_bool addr >>= fun t =>
- returnm (t, v).
-
-Definition MEMr_tag_reserve {regval a b e} `{ArithFact (b >= 0)} (addr : mword a) size : monad regval (bool * mword b) e :=
- read_mem Read_plain addr size >>= fun v =>
- read_tag_bool addr >>= fun t =>
- returnm (t, v).
-
-(*
-val MEMea : forall 'regval 'a 'e. Bitvector 'a => 'a -> integer -> monad 'regval unit 'e
-val MEMea_conditional : forall 'regval 'a 'e. Bitvector 'a => 'a -> integer -> monad 'regval unit 'e
-val MEMea_tag : forall 'regval 'a 'e. Bitvector 'a => 'a -> integer -> monad 'regval unit 'e
-val MEMea_tag_conditional : forall 'regval 'a 'e. Bitvector 'a => 'a -> integer -> monad 'regval unit 'e
-*)
-Definition MEMea {regval a e} (addr : mword a) size : monad regval unit e := write_mem_ea Write_plain addr size.
-Definition MEMea_conditional {regval a e} (addr : mword a) size : monad regval unit e := write_mem_ea Write_conditional addr size.
-
-Definition MEMea_tag {regval a e} (addr : mword a) size : monad regval unit e := write_mem_ea Write_plain addr size.
-Definition MEMea_tag_conditional {regval a e} (addr : mword a) size : monad regval unit e := write_mem_ea Write_conditional addr size.
-
-(*
-val MEMval : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> 'b -> monad 'regval unit 'e
-val MEMval_conditional : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> 'b -> monad 'regval bool 'e
-val MEMval_tag : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> bool -> 'b -> monad 'regval unit 'e
-val MEMval_tag_conditional : forall 'regval 'a 'b 'e. Bitvector 'a, Bitvector 'b => 'a -> integer -> bool -> 'b -> monad 'regval bool 'e
-*)
-Definition MEMval {regval a b e} (_ : mword a) (size : Z) (v : mword b) : monad regval unit e := write_mem_val v >>= fun _ => returnm tt.
-Definition MEMval_conditional {regval a b e} (_ : mword a) (size : Z) (v : mword b) : monad regval bool e := write_mem_val v >>= fun b => returnm (if b then true else false).
-Definition MEMval_tag {regval a b e} (addr : mword a) (size : Z) t (v : mword b) : monad regval unit e := write_mem_val v >>= fun _ => write_tag_bool addr t >>= fun _ => returnm tt.
-Definition MEMval_tag_conditional {regval a b e} (addr : mword a) (size : Z) t (v : mword b) : monad regval bool e := write_mem_val v >>= fun b => write_tag_bool addr t >>= fun _ => returnm (if b then true else false).
-
-(*val MEM_sync : forall 'regval 'e. unit -> monad 'regval unit 'e*)
-
-Definition MEM_sync {regval e} (_:unit) : monad regval unit e := barrier Barrier_MIPS_SYNC.
-
-(* Some wrappers copied from aarch64_extras *)
-(* TODO: Harmonise into a common library *)
-(*
-Definition get_slice_int_bl len n lo :=
- (* TODO: Is this the intended behaviour? *)
- let hi := lo + len - 1 in
- let bs := bools_of_int (hi + 1) n in
- subrange_list false bs hi lo
-
-val get_slice_int : forall 'a. Bitvector 'a => integer -> integer -> integer -> 'a
-Definition get_slice_int len n lo := of_bools (get_slice_int_bl len n lo)
-*)
-Definition write_ram {rv e} m size (_ : mword m) (addr : mword m) (data : mword (8 * size)) : monad rv unit e :=
- MEMea addr size >>
- MEMval addr size data.
-
-Definition read_ram {rv e} m size `{ArithFact (size >= 0)} (_ : mword m) (addr : mword m) : monad rv (mword (8 * size)) e := MEMr addr size.
-(*
-Definition string_of_bits bs := string_of_bv (bits_of bs).
-Definition string_of_int := show
-
-Definition _sign_extend bits len := maybe_failwith (of_bits (exts_bv len bits))
-Definition _zero_extend bits len := maybe_failwith (of_bits (extz_bv len bits))
-*)
-Definition shift_bits_left {rv e a b} (v : mword a) (n : mword b) : monad rv (mword a) e :=
- maybe_fail "shift_bits_left" (unsigned n) >>= fun n =>
- returnm (shiftl v n).
-
-Definition shift_bits_right {rv e a b} (v : mword a) (n : mword b) : monad rv (mword a) e :=
- maybe_fail "shift_bits_right" (unsigned n) >>= fun n =>
- returnm (shiftr v n).
-
-Definition shift_bits_right_arith {rv e a b} (v : mword a) (n : mword b) : monad rv (mword a) e :=
- maybe_fail "shift_bits_right" (unsigned n) >>= fun n =>
- returnm (arith_shiftr v n).
-
-(* Use constants for undefined values for now *)
-Definition internal_pick {rv a e} (vs : list a) : monad rv a e :=
-match vs with
-| (h::_) => returnm h
-| _ => Fail "empty list in internal_pick"
-end.
-Definition undefined_string {rv e} (_:unit) : monad rv string e := returnm ""%string.
-Definition undefined_unit {rv e} (_:unit) : monad rv unit e := returnm tt.
-Definition undefined_int {rv e} (_:unit) : monad rv Z e := returnm (0:ii).
-(*val undefined_vector : forall 'rv 'a 'e. integer -> 'a -> monad 'rv (list 'a) 'e*)
-Definition undefined_vector {rv a e} len (u : a) `{ArithFact (len >= 0)} : monad rv (vec a len) e := returnm (vec_init u len).
-(*val undefined_bitvector : forall 'rv 'a 'e. Bitvector 'a => integer -> monad 'rv 'a 'e*)
-Definition undefined_bitvector {rv e} len `{ArithFact (len >= 0)} : monad rv (mword len) e := returnm (mword_of_int 0).
-(*val undefined_bits : forall 'rv 'a 'e. Bitvector 'a => integer -> monad 'rv 'a 'e*)
-Definition undefined_bits {rv e} := @undefined_bitvector rv e.
-Definition undefined_bit {rv e} (_:unit) : monad rv bitU e := returnm BU.
-(*Definition undefined_real {rv e} (_:unit) : monad rv real e := returnm (realFromFrac 0 1).*)
-Definition undefined_range {rv e} i j `{ArithFact (i <= j)} : monad rv {z : Z & ArithFact (i <= z /\ z <= j)} e := returnm (build_ex i).
-Definition undefined_atom {rv e} i : monad rv Z e := returnm i.
-Definition undefined_nat {rv e} (_:unit) : monad rv Z e := returnm (0:ii).
-
-Definition skip {rv e} (_:unit) : monad rv unit e := returnm tt.
-
-(*val elf_entry : unit -> integer*)
-Definition elf_entry (_:unit) : Z := 0.
-(*declare ocaml target_rep function elf_entry := `Elf_loader.elf_entry`*)
-
-(*Definition print_bits msg bs := prerr_endline (msg ^ (string_of_bits bs))
-
-val get_time_ns : unit -> integer*)
-Definition get_time_ns (_:unit) : Z := 0.
-(*declare ocaml target_rep function get_time_ns := `(fun () -> Big_int.of_int (int_of_float (1e9 *. Unix.gettimeofday ())))`*)
-
-Definition eq_bit (x : bitU) (y : bitU) : bool :=
- match x, y with
- | B0, B0 => true
- | B1, B1 => true
- | BU, BU => true
- | _,_ => false
- end.
-
-Require Import Zeuclid.
-Definition euclid_modulo (m n : Z) `{ArithFact (n > 0)} : {z : Z & ArithFact (0 <= z <= n-1)}.
-refine (existT _ (ZEuclid.modulo m n) _).
-constructor.
-destruct H.
-assert (Z.abs n = n). { rewrite Z.abs_eq; auto with zarith. }
-rewrite <- H at 3.
-lapply (ZEuclid.mod_always_pos m n); omega.
-Qed.
-
-(* Override the more general version *)
-
-Definition mults_vec {n} (l : mword n) (r : mword n) : mword (2 * n) := mults_vec l r.
-Definition mult_vec {n} (l : mword n) (r : mword n) : mword (2 * n) := mult_vec l r.
-
-
-Definition print_endline (_:string) : unit := tt.
-Definition prerr_endline (_:string) : unit := tt.
-Definition prerr_string (_:string) : unit := tt.
-Definition putchar {T} (_:T) : unit := tt.
-Require DecimalString.
-Definition string_of_int z := DecimalString.NilZero.string_of_int (Z.to_int z).
-
-Lemma __MIPS_read_lemma : forall width, 8 * width = 8 * (8 * width ÷ 8).
-intros.
-rewrite Z.mul_comm.
-rewrite Z.quot_mul; auto with zarith.
-Qed.
-Hint Resolve __MIPS_read_lemma : sail.
-
-Lemma MEMr_wrapper_lemma : forall size : Z, 8 * size = 8 * (8 * (8 * size ÷ 8) ÷ 8).
-intros.
-rewrite Z.mul_comm.
-rewrite Z.quot_mul; auto with zarith.
-rewrite Z.mul_comm with (m := size).
-rewrite Z.quot_mul; auto with zarith.
-Qed.
-Hint Resolve MEMr_wrapper_lemma : sail.
-
diff --git a/mips/mips_insts.sail b/mips/mips_insts.sail
deleted file mode 100644
index 63c380de..00000000
--- a/mips/mips_insts.sail
+++ /dev/null
@@ -1,1682 +0,0 @@
-/*========================================================================*/
-/* */
-/* Copyright (c) 2015-2017 Robert M. Norton */
-/* Copyright (c) 2015-2017 Kathyrn Gray */
-/* All rights reserved. */
-/* */
-/* This software was developed by the University of Cambridge Computer */
-/* Laboratory as part of the Rigorous Engineering of Mainstream Systems */
-/* (REMS) project, funded by EPSRC grant EP/K008528/1. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following conditions */
-/* are met: */
-/* 1. Redistributions of source code must retain the above copyright */
-/* notice, this list of conditions and the following disclaimer. */
-/* 2. Redistributions in binary form must reproduce the above copyright */
-/* notice, this list of conditions and the following disclaimer in */
-/* the documentation and/or other materials provided with the */
-/* distribution. */
-/* */
-/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */
-/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
-/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
-/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */
-/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
-/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */
-/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */
-/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
-/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */
-/* SUCH DAMAGE. */
-/*========================================================================*/
-
-/* misp_insts.sail: mips instruction decode and execute clauses and AST node
- declarations */
-
-/**************************************************************************************/
-/* [D]ADD[I][U] various forms of ADD */
-/**************************************************************************************/
-
-/* DADDIU Doubleword Add Immediate Unsigned --
- the simplest possible instruction, no undefined behaviour or exceptions
- reg, reg, immediate */
-
-union clause ast = DADDIU : (regno, regno, imm16)
-
-function clause decode (0b011001 @ rs : regno @ rt : regno @ imm : imm16) =
- Some(DADDIU(rs, rt, imm))
-
-function clause execute (DADDIU (rs, rt, imm)) =
- {
- wGPR(rt) = rGPR(rs) + sign_extend(imm)
- }
-
-/* DADDU Doubleword Add Unsigned -- another very simple instruction,
- reg, reg, reg */
-
-union clause ast = DADDU : (regno, regno, regno)
-
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b101101) =
- Some(DADDU(rs, rt, rd))
-
-function clause execute (DADDU (rs, rt, rd)) =
- {
- wGPR(rd) = rGPR(rs) + rGPR(rt)
- }
-
-/* DADDI Doubleword Add Immediate
- reg, reg, imm with possible exception */
-
-union clause ast = DADDI : (regno, regno, bits(16))
-
-function clause decode (0b011000 @ rs : regno @ rt : regno @ imm : imm16) =
- Some(DADDI(rs, rt, imm))
-
-function clause execute (DADDI (rs, rt, imm)) =
- {
- let sum65 : bits(65) = sign_extend(rGPR(rs)) + sign_extend(imm) in
- {
- if (sum65[64] != sum65[63]) then
- (SignalException(Ov))
- else
- wGPR(rt) = sum65[63..0]
- }
- }
-
-/* DADD Doubleword Add
- reg, reg, reg with possible exception */
-
-union clause ast = DADD : (regno, regno, regno)
-
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b101100) =
- Some(DADD(rs, rt, rd))
-
-function clause execute (DADD (rs, rt, rd)) =
- {
- let sum65 : bits(65) = sign_extend(rGPR(rs)) + sign_extend(rGPR(rt)) in
- {
- if sum65[64] != sum65[63] then
- (SignalException(Ov))
- else
- wGPR(rd) = sum65[63..0]
- }
- }
-
-/* ADD 32-bit add -- reg, reg, reg with possible undefined behaviour or exception */
-
-union clause ast = ADD : (regno, regno, regno)
-
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100000) =
- Some(ADD(rs, rt, rd))
-
-function clause execute (ADD(rs, rt, rd)) =
- {
- opA : bits(64) = rGPR(rs);
- opB : bits(64) = rGPR(rt);
- if NotWordVal(opA) | NotWordVal(opB) then
- wGPR(rd) = undefined /* XXX could exit instead */
- else
- let sum33 : bits(33) = sign_extend(opA[31 .. 0]) + sign_extend(opB[31 .. 0])in
- if sum33[32] != sum33[31] then
- (SignalException(Ov))
- else
- wGPR(rd) = sign_extend(sum33[31..0])
- }
-
-/* ADDI 32-bit add immediate -- reg, reg, imm with possible undefined behaviour or exception */
-
-union clause ast = ADDI : (regno, regno, bits(16))
-
-function clause decode (0b001000 @ rs : regno @ rt : regno @ imm : imm16) =
- Some(ADDI(rs, rt, imm))
-
-function clause execute (ADDI(rs, rt, imm)) =
- {
- opA = rGPR(rs);
- if NotWordVal(opA) then
- wGPR(rt) = undefined /* XXX could exit instead */
- else
- let sum33 : bits(33) = sign_extend(opA[31 .. 0]) + sign_extend(imm) in
- if sum33[32] != sum33[31] then
- (SignalException(Ov))
- else
- wGPR(rt) = sign_extend(sum33[31..0])
- }
-
-/* ADDU 32-bit add immediate -- reg, reg, reg with possible undefined behaviour */
-
-union clause ast = ADDU : (regno, regno, regno)
-
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100001) =
- Some(ADDU(rs, rt, rd))
-
-function clause execute (ADDU(rs, rt, rd)) =
- {
- opA = rGPR(rs);
- opB = rGPR(rt);
- if NotWordVal(opA) | NotWordVal(opB) then
- wGPR(rd) = undefined
- else
- wGPR(rd) = sign_extend(opA[31..0] + opB[31..0])
- }
-
-
-/* ADDIU 32-bit add immediate -- reg, reg, imm with possible undefined behaviour */
-
-union clause ast = ADDIU : (regno, regno, bits(16))
-
-function clause decode (0b001001 @ rs : regno @ rt : regno @ imm : imm16) =
- Some(ADDIU(rs, rt, imm))
-
-function clause execute (ADDIU(rs, rt, imm)) =
- {
- opA = rGPR(rs);
- if NotWordVal(opA) then
- wGPR(rt) = undefined /* XXX could exit instead */
- else
- wGPR(rt) = sign_extend((opA[31 .. 0]) + sign_extend(imm))
- }
-
-/**************************************************************************************/
-/* [D]SUB[U] various forms of SUB */
-/**************************************************************************************/
-
-/* DSUBU doubleword subtract 'unsigned' reg, reg, reg */
-
-union clause ast = DSUBU : (regno, regno, regno)
-
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b101111) =
- Some(DSUBU(rs, rt, rd))
-
-function clause execute (DSUBU (rs, rt, rd)) =
- {
- wGPR(rd) = rGPR(rs) - rGPR(rt)
- }
-
-/* DSUB reg, reg, reg with possible exception */
-
-union clause ast = DSUB : (regno, regno, regno)
-
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b101110) =
- Some(DSUB(rs, rt, rd))
-
-function clause execute (DSUB (rs, rt, rd)) =
- {
- let temp65 : bits(65) = sign_extend(rGPR(rs)) - sign_extend(rGPR(rt)) in
- {
- if temp65[64] != temp65[63] then
- (SignalException(Ov))
- else
- wGPR(rd) = temp65[63..0]
- }
- }
-
-/* SUB 32-bit sub -- reg, reg, reg with possible undefined behaviour or exception */
-
-union clause ast = SUB : (regno, regno, regno)
-
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100010) =
- Some(SUB(rs, rt, rd))
-
-function clause execute (SUB(rs, rt, rd)) =
- {
- opA = rGPR(rs);
- opB = rGPR(rt);
- if NotWordVal(opA) | NotWordVal(opB) then
- wGPR(rd) = undefined /* XXX could instead */
- else
- let temp33 : bits(33) = sign_extend(opA[31..0]) - sign_extend(opB[31..0]) in
- if temp33[32] != temp33[31] then
- (SignalException(Ov))
- else
- wGPR(rd) = sign_extend(temp33[31..0])
- }
-
-/* SUBU 32-bit 'unsigned' sub -- reg, reg, reg with possible undefined behaviour */
-
-union clause ast = SUBU : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100011) =
- Some(SUBU(rs, rt, rd))
-
-function clause execute (SUBU(rs, rt, rd)) =
- {
- opA = rGPR(rs);
- opB = rGPR(rt);
- if NotWordVal(opA) | NotWordVal(opB) then
- wGPR(rd) = undefined
- else
- wGPR(rd) = sign_extend(opA[31..0] - opB[31..0])
- }
-
-/**************************************************************************************/
-/* Logical bitwise operations */
-/**************************************************************************************/
-
-/* AND reg, reg, reg */
-
-union clause ast = AND : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100100) =
- Some(AND(rs, rt, rd))
-
-function clause execute (AND (rs, rt, rd)) =
- {
- wGPR(rd) = (rGPR(rs) & rGPR(rt))
- }
-
-/* ANDI reg, reg, imm */
-
-union clause ast = ANDI : (regno, regno, bits(16))
-function clause decode (0b001100 @ rs : regno @ rt : regno @ imm : imm16) =
- Some(ANDI(rs, rt, imm))
-function clause execute (ANDI (rs, rt, imm)) =
- {
- wGPR(rt) = (rGPR(rs) & zero_extend(imm))
- }
-
-/* OR reg, reg, reg */
-
-union clause ast = OR : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100101) =
- Some(OR(rs, rt, rd))
-function clause execute (OR (rs, rt, rd)) =
- {
- wGPR(rd) = (rGPR(rs) | rGPR(rt))
- }
-
-/* ORI reg, reg, imm */
-
-union clause ast = ORI : (regno, regno, bits(16))
-function clause decode (0b001101 @ rs : regno @ rt : regno @ imm : imm16) =
- Some(ORI(rs, rt, imm))
-function clause execute (ORI (rs, rt, imm)) =
- {
- wGPR(rt) = (rGPR(rs) | zero_extend(imm))
- }
-
-/* NOR reg, reg, reg */
-
-union clause ast = NOR : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100111) =
- Some(NOR(rs, rt, rd))
-function clause execute (NOR (rs, rt, rd)) =
- {
- wGPR(rd) = ~(rGPR(rs) | rGPR(rt))
- }
-
-/* XOR reg, reg, reg */
-
-union clause ast = XOR : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b100110) =
- Some(XOR(rs, rt, rd))
-function clause execute (XOR (rs, rt, rd)) =
- {
- wGPR(rd) = (rGPR(rs) ^ rGPR(rt))
- }
-
-/* XORI reg, reg, imm */
-union clause ast = XORI : (regno, regno, bits(16))
-function clause decode (0b001110 @ rs : regno @ rt : regno @ imm : imm16) =
- Some(XORI(rs, rt, imm))
-function clause execute (XORI (rs, rt, imm)) =
- {
- wGPR(rt) = (rGPR(rs) ^ zero_extend(imm))
- }
-
-/* LUI reg, imm 32-bit load immediate into upper 16 bits */
-union clause ast = LUI : (regno, imm16)
-function clause decode (0b001111 @ 0b00000 @ rt : regno @ imm : imm16) =
- Some(LUI(rt, imm))
-function clause execute (LUI (rt, imm)) =
- {
- wGPR(rt) = sign_extend(imm @ 0x0000)
- }
-
-/**************************************************************************************/
-/* 64-bit shift operations */
-/**************************************************************************************/
-
-/* DSLL reg, reg, imm5 */
-
-union clause ast = DSLL : (regno, regno, regno)
-function clause decode (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : bits(5) @ 0b111000) =
- Some(DSLL(rt, rd, sa))
-function clause execute (DSLL (rt, rd, sa)) =
- {
-
- wGPR(rd) = (rGPR(rt) << sa)
- }
-
-/* DSLL32 reg, reg, imm5 */
-
-union clause ast = DSLL32 : (regno, regno, regno)
-function clause decode (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : bits(5) @ 0b111100) =
- Some(DSLL32(rt, rd, sa))
-function clause execute (DSLL32 (rt, rd, sa)) =
- {
- wGPR(rd) = (rGPR(rt) << (0b1 @ sa))
- }
-
-/* DSLLV reg, reg, reg */
-
-union clause ast = DSLLV : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b010100) =
- Some(DSLLV(rs, rt, rd))
-function clause execute (DSLLV (rs, rt, rd)) =
- {
- wGPR(rd) = (rGPR(rt) << ((rGPR(rs))[5 .. 0]))
- }
-
-/* DSRA arithmetic shift duplicating sign bit - reg, reg, imm5 */
-
-union clause ast = DSRA : (regno, regno, regno)
-function clause decode (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : bits(5) @ 0b111011) =
- Some(DSRA(rt, rd, sa))
-function clause execute (DSRA (rt, rd, sa)) =
- {
- temp = rGPR(rt);
- wGPR(rd) = temp >>_s sa
- }
-
-/* DSRA32 reg, reg, imm5 */
-
-union clause ast = DSRA32 : (regno, regno, regno)
-function clause decode (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : bits(5) @ 0b111111) =
- Some(DSRA32(rt, rd, sa))
-function clause execute (DSRA32 (rt, rd, sa)) =
- {
- temp = rGPR(rt);
- sa32 = 0b1 @ sa; /* sa+32 */
- wGPR(rd) = temp >>_s sa32
- }
-
-/* DSRAV reg, reg, reg */
-union clause ast = DSRAV : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b010111) =
- Some(DSRAV(rs, rt, rd))
-function clause execute (DSRAV (rs, rt, rd)) =
- {
- temp = rGPR(rt);
- sa = rGPR(rs)[5..0];
- wGPR(rd) = temp >>_s sa
- }
-
-/* DSRL shift right logical - reg, reg, imm5 */
-
-union clause ast = DSRL : (regno, regno, regno)
-function clause decode (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : bits(5) @ 0b111010) =
- Some(DSRL(rt, rd, sa))
-function clause execute (DSRL (rt, rd, sa)) =
- {
- temp = rGPR(rt);
- wGPR(rd) = temp >> sa;
- }
-
-/* DSRL32 reg, reg, imm5 */
-
-union clause ast = DSRL32 : (regno, regno, regno)
-function clause decode (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : bits(5) @ 0b111110) =
- Some(DSRL32(rt, rd, sa))
-function clause execute (DSRL32 (rt, rd, sa)) =
- {
- temp = rGPR(rt);
- sa32 = 0b1 @ sa; /* sa+32 */
- wGPR(rd) = temp >> sa32;
- }
-
-/* DSRLV reg, reg, reg */
-
-union clause ast = DSRLV : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b010110) =
- Some(DSRLV(rs, rt, rd))
-function clause execute (DSRLV (rs, rt, rd)) =
- {
- temp = rGPR(rt);
- sa = rGPR(rs)[5..0];
- wGPR(rd) = temp >> sa;
- }
-
-/**************************************************************************************/
-/* 32-bit shift operations */
-/**************************************************************************************/
-
-/* SLL 32-bit shift left */
-
-union clause ast = SLL : (regno, regno, regno)
-function clause decode (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : regno @ 0b000000) =
- Some(SLL(rt, rd, sa))
-function clause execute (SLL(rt, rd, sa)) =
- {
- rt32 = rGPR(rt)[31..0];
- wGPR(rd) = sign_extend(rt32 << sa);
- }
-
-/* SLLV 32-bit shift left variable */
-
-union clause ast = SLLV : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b000100) =
- Some(SLLV(rs, rt, rd))
-function clause execute (SLLV(rs, rt, rd)) =
- {
- sa = rGPR(rs)[4..0];
- rt32 = rGPR(rt)[31..0];
- wGPR(rd) = sign_extend(rt32 << sa)
- }
-
-/* SRA 32-bit arithmetic shift right */
-
-union clause ast = SRA : (regno, regno, regno)
-function clause decode (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : regno @ 0b000011) =
- Some(SRA(rt, rd, sa))
-function clause execute (SRA(rt, rd, sa)) =
- {
- temp = rGPR(rt);
- if (NotWordVal(temp)) then
- wGPR(rd) = undefined
- else {
- rt32 = temp[31..0];
- wGPR(rd) = sign_extend(rt32 >>_s sa);
- }
- }
-
-/* SRAV 32-bit arithmetic shift right variable */
-
-union clause ast = SRAV : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b000111) =
- Some(SRAV(rs, rt, rd))
-function clause execute (SRAV(rs, rt, rd)) =
- {
- temp = rGPR(rt);
- sa = rGPR(rs)[4..0];
- if (NotWordVal(temp)) then
- wGPR(rd) = undefined
- else {
- rt32 = temp[31..0];
- wGPR(rd) = sign_extend(rt32 >>_s sa)
- }
- }
-
-/* SRL 32-bit shift right */
-
-union clause ast = SRL : (regno, regno, regno)
-function clause decode (0b000000 @ 0b00000 @ rt : regno @ rd : regno @ sa : regno @ 0b000010) =
- Some(SRL(rt, rd, sa))
-function clause execute (SRL(rt, rd, sa)) =
- {
- temp = rGPR(rt);
- if (NotWordVal(temp)) then
- wGPR(rd) = undefined
- else {
- rt32 = temp[31..0];
- wGPR(rd) = sign_extend(rt32 >> sa);
- }
- }
-
-/* SRLV 32-bit shift right variable */
-
-union clause ast = SRLV : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b000110) =
- Some(SRLV(rs, rt, rd))
-function clause execute (SRLV(rs, rt, rd)) =
- {
- temp = rGPR(rt);
- sa = (rGPR(rs))[4..0];
- if (NotWordVal(temp)) then
- wGPR(rd) = undefined
- else {
- rt32 = temp[31..0];
- wGPR(rd) = sign_extend(rt32 >> sa);
- }
- }
-
-/**************************************************************************************/
-/* set less than / conditional move */
-/**************************************************************************************/
-
-/* SLT set if less than (signed) */
-
-union clause ast = SLT : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b101010) =
- Some(SLT(rs, rt, rd))
-function clause execute (SLT(rs, rt, rd)) =
- {
- wGPR(rd) = zero_extend(if (rGPR(rs) <_s rGPR(rt)) then 0b1 else 0b0)
- }
-
-/* SLT set if less than immediate (signed) */
-
-union clause ast = SLTI : (regno, regno, bits(16))
-function clause decode (0b001010 @ rs : regno @ rt : regno @ imm : imm16) =
- Some(SLTI(rs, rt, imm))
-function clause execute (SLTI(rs, rt, imm)) =
- {
- let imm_val = signed(imm) in
- let rs_val = signed(rGPR(rs)) in
- wGPR(rt) = zero_extend(if (rs_val < imm_val) then 0b1 else 0b0)
- }
-
-/* SLTU set if less than unsigned */
-
-union clause ast = SLTU : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b101011) =
- Some(SLTU(rs, rt, rd))
-function clause execute (SLTU(rs, rt, rd)) =
- {
- let rs_val = rGPR(rs) in
- let rt_val = rGPR(rt) in
- wGPR(rd) = zero_extend(if (rs_val <_u rt_val) then 0b1 else 0b0)
- }
-
-/* SLTIU set if less than immediate unsigned */
-
-union clause ast = SLTIU : (regno, regno, bits(16))
-function clause decode (0b001011 @ rs : regno @ rt : regno @ imm : imm16) =
- Some(SLTIU(rs, rt, imm))
-function clause execute (SLTIU(rs, rt, imm)) =
- {
- let rs_val = rGPR(rs) in
- let immext : bits(64) = sign_extend(imm) in /* NB defined to sign extend here even though comparison is unsigned! */
- wGPR(rt) = zero_extend(if (rs_val <_u immext) then 0b1 else 0b0)
- }
-
-/* MOVN move if non-zero */
-
-union clause ast = MOVN : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b001011) =
- Some(MOVN(rs, rt, rd))
-function clause execute (MOVN(rs, rt, rd)) =
- {
- if (rGPR(rt) != 0x0000000000000000) then
- wGPR(rd) = rGPR(rs)
- }
-
-/* MOVZ move if zero */
-
-union clause ast = MOVZ : (regno, regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b001010) =
- Some(MOVZ(rs, rt, rd))
-function clause execute (MOVZ(rs, rt, rd)) =
- {
- if (rGPR(rt) == 0x0000000000000000) then
- wGPR(rd) = rGPR(rs)
- }
-
-/******************************************************************************/
-/* MUL/DIV instructions */
-/******************************************************************************/
-
-/* MFHI move from HI register */
-union clause ast = MFHI : regno
-function clause decode (0b000000 @ 0b0000000000 @ rd : regno @ 0b00000 @ 0b010000) =
- Some(MFHI(rd))
-function clause execute (MFHI(rd)) =
- {
- wGPR(rd) = HI
- }
-
-/* MFLO move from LO register */
-union clause ast = MFLO : regno
-function clause decode (0b000000 @ 0b0000000000 @ rd : regno @ 0b00000 @ 0b010010) =
- Some(MFLO(rd))
-function clause execute (MFLO(rd)) =
- {
- wGPR(rd) = LO
- }
-
-/* MTHI move to HI register */
-union clause ast = MTHI : regno
-function clause decode (0b000000 @ rs : regno @ 0b000000000000000 @ 0b010001) =
- Some(MTHI(rs))
-function clause execute (MTHI(rs)) =
- {
- HI = rGPR(rs)
- }
-
-/* MTLO move to LO register */
-union clause ast = MTLO : regno
-function clause decode (0b000000 @ rs : regno @ 0b000000000000000 @ 0b010011) =
- Some(MTLO(rs))
-function clause execute (MTLO(rs)) =
- {
- LO = rGPR(rs)
- }
-
-/* MUL 32-bit multiply into GPR */
-union clause ast = MUL : (regno, regno, regno)
-function clause decode (0b011100 @ rs : regno @ rt : regno @ rd : regno @ 0b00000 @ 0b000010) =
- Some(MUL(rs, rt, rd))
-function clause execute (MUL(rs, rt, rd)) =
- {
- rsVal = rGPR(rs);
- rtVal = rGPR(rt);
- result : bits(64) = sign_extend((rsVal[31..0]) *_s (rtVal[31..0]));
- wGPR(rd) = if (NotWordVal(rsVal) | NotWordVal(rtVal)) then
- undefined
- else
- sign_extend(result[31..0]);
- /* HI and LO are technically undefined after MUL, but this causes problems with tests and
- (potentially) context switch so just leave them alone
- HI = undefined;
- LO = undefined;
- */
- }
-
-/* MULT 32-bit multiply into HI/LO */
-union clause ast = MULT : (regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011000) =
- Some(MULT(rs, rt))
-function clause execute (MULT(rs, rt)) =
- {
- rsVal = rGPR(rs);
- rtVal = rGPR(rt);
- result : bits(64) = if (NotWordVal(rsVal) | NotWordVal(rtVal)) then
- undefined
- else
- (rsVal[31..0]) *_s (rtVal[31..0]);
- HI = sign_extend(result[63..32]);
- LO = sign_extend(result[31..0]);
- }
-
-/* MULTU 32-bit unsignedm rultiply into HI/LO */
-union clause ast = MULTU : (regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011001) =
- Some(MULTU(rs, rt))
-function clause execute (MULTU(rs, rt)) =
- {
- rsVal = rGPR(rs);
- rtVal = rGPR(rt);
- result : bits(64) = if (NotWordVal(rsVal) | NotWordVal(rtVal)) then
- undefined
- else
- (rsVal[31..0]) *_u (rtVal[31..0]);
- HI = sign_extend(result[63..32]);
- LO = sign_extend(result[31..0]);
- }
-
-/* DMULT 64-bit multiply into HI/LO */
-union clause ast = DMULT : (regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011100) =
- Some(DMULT(rs, rt))
-function clause execute (DMULT(rs, rt)) =
- {
- result = rGPR(rs) *_s rGPR(rt);
- HI = (result[127..64]);
- LO = (result[63..0]);
- }
-
-/* DMULTU 64-bit unsigned multiply into HI/LO */
-union clause ast = DMULTU : (regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011101) =
- Some(DMULTU(rs, rt))
-function clause execute (DMULTU(rs, rt)) =
- {
- result = rGPR(rs) *_u rGPR(rt);
- HI = (result[127..64]);
- LO = (result[63..0]);
- }
-
-/* MADD 32-bit signed multiply and add into HI/LO */
-union clause ast = MADD : (regno, regno)
-function clause decode (0b011100 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b000000) =
- Some(MADD(rs, rt))
-function clause execute (MADD(rs, rt)) =
- {
- rsVal = rGPR(rs);
- rtVal = rGPR(rt);
- mul_result : bits(64) = if (NotWordVal(rsVal) | NotWordVal(rtVal)) then
- undefined
- else
- rsVal[31..0] *_s rtVal[31..0];
- result = mul_result + (HI[31..0] @ LO[31..0]);
- HI = sign_extend(result[63..32]);
- LO = sign_extend(result[31..0]);
- }
-
-/* MADDU 32-bit unsigned multiply and add into HI/LO */
-union clause ast = MADDU : (regno, regno)
-function clause decode (0b011100 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b000001) =
- Some(MADDU(rs, rt))
-function clause execute (MADDU(rs, rt)) =
- {
- rsVal = rGPR(rs);
- rtVal = rGPR(rt);
- mul_result : bits(64) = if (NotWordVal(rsVal) | NotWordVal(rtVal)) then
- undefined
- else
- rsVal[31..0] *_u rtVal[31..0];
- result = mul_result + (HI[31..0] @ LO[31..0]);
- HI = sign_extend(result[63..32]);
- LO = sign_extend(result[31..0]);
- }
-
-/* MSUB 32-bit signed multiply and sub from HI/LO */
-union clause ast = MSUB : (regno, regno)
-function clause decode (0b011100 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b000100) =
- Some(MSUB(rs, rt))
-function clause execute (MSUB(rs, rt)) =
- {
- rsVal = rGPR(rs);
- rtVal = rGPR(rt);
- mul_result : bits(64) = if (NotWordVal(rsVal) | NotWordVal(rtVal)) then
- undefined
- else
- rsVal[31..0] *_s rtVal[31..0];
- result = (HI[31..0] @ LO[31..0]) - mul_result;
- HI = sign_extend(result[63..32]);
- LO = sign_extend(result[31..0]);
- }
-
-/* MSUBU 32-bit unsigned multiply and sub from HI/LO */
-union clause ast = MSUBU : (regno, regno)
-function clause decode (0b011100 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b000101) =
- Some(MSUBU(rs, rt))
-function clause execute (MSUBU(rs, rt)) =
- {
- rsVal = rGPR(rs);
- rtVal = rGPR(rt);
- mul_result : bits(64) = if (NotWordVal(rsVal) | NotWordVal(rtVal)) then
- undefined
- else
- rsVal[31..0] *_u rtVal[31..0];
- result = (HI[31..0] @ LO[31..0]) - mul_result;
- HI = sign_extend(result[63..32]);
- LO = sign_extend(result[31..0]);
- }
-
-/* DIV 32-bit divide into HI/LO */
-union clause ast = DIV : (regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011010) =
- Some(DIV(rs, rt))
-function clause execute (DIV(rs, rt)) =
- {
- rsVal = rGPR(rs);
- rtVal = rGPR(rt);
- let (q, r) =
- if (NotWordVal(rsVal) | NotWordVal(rtVal) | (rtVal == 0x0000000000000000)) then
- (undefined : bits(32), undefined : bits(32))
- else
- let si = signed((rsVal[31..0])) in
- let ti = signed((rtVal[31..0])) in
- let qi = quot_round_zero(si, ti) in
- let ri = si - (ti*qi) in
- (to_bits(32, qi), to_bits(32, ri))
- in
- {
- HI = sign_extend(r);
- LO = sign_extend(q);
- }
- }
-
-/* DIVU 32-bit unsigned divide into HI/LO */
-union clause ast = DIVU : (regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011011) =
- Some(DIVU(rs, rt))
-function clause execute (DIVU(rs, rt)) =
- {
- rsVal = rGPR(rs);
- rtVal = rGPR(rt);
- let (q, r) =
- if (NotWordVal(rsVal) | NotWordVal(rtVal) | rtVal == 0x0000000000000000) then
- (undefined : bits(32), undefined : bits(32))
- else
- let si = unsigned(rsVal[31..0]) in
- let ti = unsigned(rtVal[31..0]) in
- let qi = quot_round_zero(si, ti) in
- let ri = rem_round_zero(si, ti) in
- (to_bits(32, qi), to_bits(32, ri))
- in
- {
- HI = sign_extend(r);
- LO = sign_extend(q);
- }
- }
-
-/* DDIV 64-bit divide into HI/LO */
-union clause ast = DDIV : (regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011110) =
- Some(DDIV(rs, rt))
-function clause execute (DDIV(rs, rt)) =
- {
- rsVal = signed(rGPR(rs));
- rtVal = signed(rGPR(rt));
- let (q , r) =
- if (rtVal == 0)
- then (undefined : bits(64), undefined : bits(64))
- else
- let qi = quot_round_zero(rsVal, rtVal) in
- let ri = (rsVal - (qi * rtVal)) in
- (to_bits(64, qi), to_bits(64, ri)) in
- {
- LO = q;
- HI = r;
- }
- }
-
-/* DDIV 64-bit divide into HI/LO */
-union clause ast = DDIVU : (regno, regno)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ 0b00000 @ 0b00000 @ 0b011111) =
- Some(DDIVU(rs, rt))
-function clause execute (DDIVU(rs, rt)) =
- {
- rsVal = unsigned(rGPR(rs));
- rtVal = unsigned(rGPR(rt));
- let (q, r) =
- if (rtVal == 0)
- then (undefined : bits(64), undefined : bits(64))
- else
- let qi = quot_round_zero(rsVal, rtVal) in
- let ri = rem_round_zero(rsVal, rtVal) in
- (to_bits(64, qi), to_bits(64, ri)) in
- {
- LO = q;
- HI = r;
- }
- }
-
-/**************************************************************************************/
-/* Jump instructions -- unconditional branches */
-/**************************************************************************************/
-
-/* J - jump, the simplest control flow instruction, with branch delay slot */
-union clause ast = J : bits(26)
-function clause decode (0b000010 @ offset : bits(26)) =
- Some(J(offset))
-function clause execute (J(offset)) =
- {
- execute_branch((PC + 4)[63..28] @ offset @ 0b00);
- }
-
-/* JAL - jump and link */
-union clause ast = JAL : bits(26)
-function clause decode (0b000011 @ offset : bits(26)) =
- Some(JAL(offset))
-function clause execute (JAL(offset)) =
- {
- execute_branch((PC + 4)[63..28] @ offset @ 0b00);
- wGPR(0b11111) = PC + 8;
- }
-
-/* JR -- jump via register */
-union clause ast = JR : regno
-function clause decode (0b000000 @ rs : regno @ 0b00000 @ 0b00000 @ hint : regno @ 0b001000) =
- Some(JR(rs)) /* hint is ignored */
-function clause execute (JR(rs)) =
- {
- execute_branch(rGPR(rs));
- }
-
-/* JALR -- jump via register with link */
-union clause ast = JALR : (regno, regno)
-function clause decode (0b000000 @ rs : regno @ 0b00000 @ rd : regno @ hint : regno @ 0b001001) =
- Some(JALR(rs, rd)) /* hint is ignored */
-function clause execute (JALR(rs, rd)) =
- {
- execute_branch(rGPR(rs));
- wGPR(rd) = PC + 8;
- }
-
-/**************************************************************************************/
-/* B[N]EQ[L] - branch on (not) equal (likely) */
-/* Conditional branch instructions with two register operands */
-/**************************************************************************************/
-
-union clause ast = BEQ : (regno, regno, imm16, bool, bool)
-function clause decode (0b000100 @ rs : regno @ rt : regno @ imm : imm16) =
- Some(BEQ(rs, rt, imm, false, false)) /* BEQ */
-function clause decode (0b010100 @ rs : regno @ rt : regno @ imm : imm16) =
- Some(BEQ(rs, rt, imm, false, true)) /* BEQL */
-function clause decode (0b000101 @ rs : regno @ rt : regno @ imm : imm16) =
- Some(BEQ(rs, rt, imm, true , false)) /* BNE */
-function clause decode (0b010101 @ rs : regno @ rt : regno @ imm : imm16) =
- Some(BEQ(rs, rt, imm, true , true)) /* BNEL */
-function clause execute (BEQ(rs, rd, imm, ne, likely)) =
- {
- if ((rGPR(rs) == rGPR(rd)) ^ ne) then
- {
- let offset : bits(64) = (sign_extend(imm @ 0b00) + 4) in
- execute_branch(PC + offset);
- }
- else
- {
- if (likely) then
- nextPC = PC + 8; /* skip branch delay */
- }
- }
-
-/*
-
- Branches comparing with zero (single register operand, possible link in r31)
-*/
-
-/**************************************************************************************/
-/* BGEZ[AL][L] - branch on comparison with zero (possibly link, likely) */
-/* Conditional branch instructions with single register operand */
-/**************************************************************************************/
-
-union clause ast = BCMPZ : (regno, imm16, Comparison, bool, bool)
-function clause decode (0b000001 @ rs : regno @ 0b00000 @ imm : imm16) =
- Some(BCMPZ(rs, imm, LT, false, false)) /* BLTZ */
-function clause decode (0b000001 @ rs : regno @ 0b10000 @ imm : imm16) =
- Some(BCMPZ(rs, imm, LT, true, false)) /* BLTZAL */
-function clause decode (0b000001 @ rs : regno @ 0b00010 @ imm : imm16) =
- Some(BCMPZ(rs, imm, LT, false, true)) /* BLTZL */
-function clause decode (0b000001 @ rs : regno @ 0b10010 @ imm : imm16) =
- Some(BCMPZ(rs, imm, LT, true, true)) /* BLTZALL */
-
-function clause decode (0b000001 @ rs : regno @ 0b00001 @ imm : imm16) =
- Some(BCMPZ(rs, imm, GE, false, false)) /* BGEZ */
-function clause decode (0b000001 @ rs : regno @ 0b10001 @ imm : imm16) =
- Some(BCMPZ(rs, imm, GE, true, false)) /* BGEZAL */
-function clause decode (0b000001 @ rs : regno @ 0b00011 @ imm : imm16) =
- Some(BCMPZ(rs, imm, GE, false, true)) /* BGEZL */
-function clause decode (0b000001 @ rs : regno @ 0b10011 @ imm : imm16) =
- Some(BCMPZ(rs, imm, GE, true, true)) /* BGEZALL */
-
-function clause decode (0b000111 @ rs : regno @ 0b00000 @ imm : imm16) =
- Some(BCMPZ(rs, imm, GT, false, false)) /* BGTZ */
-function clause decode (0b010111 @ rs : regno @ 0b00000 @ imm : imm16) =
- Some(BCMPZ(rs, imm, GT, false, true)) /* BGTZL */
-
-function clause decode (0b000110 @ rs : regno @ 0b00000 @ imm : imm16) =
- Some(BCMPZ(rs, imm, LE, false, false)) /* BLEZ */
-function clause decode (0b010110 @ rs : regno @ 0b00000 @ imm : imm16) =
- Some(BCMPZ(rs, imm, LE, false, true)) /* BLEZL */
-
-function clause execute (BCMPZ(rs, imm, cmp, link, likely)) =
- {
- linkVal = PC + 8;
- regVal = rGPR(rs);
- condition = compare(cmp, regVal, zero_extend(0b0));
- if (condition) then
- {
- let offset : bits(64) = (sign_extend(imm @ 0b00) + 4) in
- execute_branch(PC + offset);
- }
- else if (likely) then
- {
- nextPC = PC + 8 /* skip branch delay */
- };
- if (link) then
- wGPR(0b11111) = linkVal
- }
-
-/**************************************************************************************/
-/* SYSCALL/BREAK/WAIT/Trap */
-/**************************************************************************************/
-
-/* $include mips_rmem.sail */
-
-union clause ast = SYSCALL : unit
-function clause decode (0b000000 @ code : bits(20) @ 0b001100) =
- Some(SYSCALL()) /* code is ignored */
-function clause execute (SYSCALL()) =
- {
- (SignalException(Sys))
- }
-
-/* BREAK is identical to SYSCALL exception for the exception raised */
-union clause ast = BREAK : unit
-function clause decode (0b000000 @ code : bits(20) @ 0b001101) =
- Some(BREAK()) /* code is ignored */
-function clause execute (BREAK()) =
- {
- (SignalException(Bp))
- }
-
-/* Accept WAIT as a NOP */
-union clause ast = WAIT : unit
-function clause decode (0b010000 @ 0x80000 @ 0b100000) =
- Some(WAIT()) /* we only accept code == 0 */
-function clause execute (WAIT()) = {
- nextPC = PC;
-}
-
-/* Trap instructions with two register operands */
-union clause ast = TRAPREG : (regno, regno, Comparison)
-function clause decode (0b000000 @ rs : regno @ rt : regno @ code : bits(10) @ 0b110000) =
- Some(TRAPREG(rs, rt, GE)) /* TGE */
-function clause decode (0b000000 @ rs : regno @ rt : regno @ code : bits(10) @ 0b110001) =
- Some(TRAPREG(rs, rt, GEU)) /* TGEU */
-function clause decode (0b000000 @ rs : regno @ rt : regno @ code : bits(10) @ 0b110010) =
- Some(TRAPREG(rs, rt, LT)) /* TLT */
-function clause decode (0b000000 @ rs : regno @ rt : regno @ code : bits(10) @ 0b110011) =
- Some(TRAPREG(rs, rt, LTU)) /* TLTU */
-function clause decode (0b000000 @ rs : regno @ rt : regno @ code : bits(10) @ 0b110100) =
- Some(TRAPREG(rs, rt, EQ)) /* TEQ */
-function clause decode (0b000000 @ rs : regno @ rt : regno @ code : bits(10) @ 0b110110) =
- Some(TRAPREG(rs, rt, NE)) /* TNE */
-function clause execute (TRAPREG(rs, rt, cmp)) =
- {
- rs_val = rGPR(rs);
- rt_val = rGPR(rt);
- condition = compare(cmp, rs_val, rt_val);
- if (condition) then
- (SignalException(Tr))
- }
-
-
-/* Trap instructions with one register and one immediate operand */
-union clause ast = TRAPIMM : (regno, imm16, Comparison)
-function clause decode (0b000001 @ rs : regno @ 0b01100 @ imm : imm16) =
- Some(TRAPIMM(rs, imm, EQ)) /* TEQI */
-function clause decode (0b000001 @ rs : regno @ 0b01110 @ imm : imm16) =
- Some(TRAPIMM(rs, imm, NE)) /* TNEI */
-function clause decode (0b000001 @ rs : regno @ 0b01000 @ imm : imm16) =
- Some(TRAPIMM(rs, imm, GE)) /* TGEI */
-function clause decode (0b000001 @ rs : regno @ 0b01001 @ imm : imm16) =
- Some(TRAPIMM(rs, imm, GEU)) /* TGEIU */
-function clause decode (0b000001 @ rs : regno @ 0b01010 @ imm : imm16) =
- Some(TRAPIMM(rs, imm, LT)) /* TLTI */
-function clause decode (0b000001 @ rs : regno @ 0b01011 @ imm : imm16) =
- Some(TRAPIMM(rs, imm, LTU)) /* TLTIU */
-function clause execute (TRAPIMM(rs, imm, cmp)) =
- {
- rs_val = rGPR(rs);
- imm_val : bits(64) = sign_extend(imm);
- condition = compare(cmp, rs_val, imm_val);
- if (condition) then
- (SignalException(Tr))
- }
-
-/**************************************************************************************/
-/* Load instructions -- various width/signs */
-/**************************************************************************************/
-
-union clause ast = Load : (WordType, bool, bool, regno, regno, imm16)
-function clause decode (0b100000 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Load(B, true, false, base, rt, offset)) /* LB */
-function clause decode (0b100100 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Load(B, false, false, base, rt, offset)) /* LBU */
-function clause decode (0b100001 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Load(H, true, false, base, rt, offset)) /* LH */
-function clause decode (0b100101 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Load(H, false, false, base, rt, offset)) /* LHU */
-function clause decode (0b100011 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Load(W, true, false, base, rt, offset)) /* LW */
-function clause decode (0b100111 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Load(W, false, false, base, rt, offset)) /* LWU */
-function clause decode (0b110111 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Load(D, false, false, base, rt, offset)) /* LD */
-function clause decode (0b110000 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Load(W, true, true, base, rt, offset)) /* LL */
-function clause decode (0b110100 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Load(D, false, true, base, rt, offset)) /* LLD */
-
-val extendLoad : forall 'sz, 'sz <= 64 . (bits('sz), bool) -> bits(64) effect pure
-function extendLoad(memResult, sign) = {
- if (sign) then
- sign_extend(memResult)
- else
- zero_extend(memResult)
-}
-
-function clause execute (Load(width, sign, linked, base, rt, offset)) =
- {
- vAddr : bits(64) = addrWrapper(sign_extend(offset) + rGPR(base), LoadData, width);
- if ~ (isAddressAligned(vAddr, width)) then
- (SignalExceptionBadAddr(AdEL, vAddr)) /* unaligned access */
- else
- let pAddr = (TLBTranslate(vAddr, LoadData)) in
- {
- memResult : bits(64) = if (linked) then
- {
- CP0LLBit = 0b1;
- CP0LLAddr = pAddr;
- match width {
- W => extendLoad(MEMr_reserve_wrapper(pAddr, 4), sign),
- D => extendLoad(MEMr_reserve_wrapper(pAddr, 8), sign),
- _ => throw(Error_internal_error()) /* there is no llbc or llhc */
- }
- }
- else
- {
- match width {
- B => extendLoad(MEMr_wrapper(pAddr, 1), sign),
- H => extendLoad(MEMr_wrapper(pAddr, 2), sign),
- W => extendLoad(MEMr_wrapper(pAddr, 4), sign),
- D => extendLoad(MEMr_wrapper(pAddr, 8), sign)
- }
- };
- wGPR(rt) = memResult
- }
- }
-
-/**************************************************************************************/
-/* Store instructions -- various widths */
-/**************************************************************************************/
-
-union clause ast = Store : (WordType, bool, regno, regno, imm16)
-function clause decode (0b101000 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Store(B, false, base, rt, offset)) /* SB */
-function clause decode (0b101001 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Store(H, false, base, rt, offset)) /* SH */
-function clause decode (0b101011 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Store(W, false, base, rt, offset)) /* SW */
-function clause decode (0b111111 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Store(D, false, base, rt, offset)) /* SD */
-function clause decode (0b111000 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Store(W, true, base, rt, offset)) /* SC */
-function clause decode (0b111100 @ base : regno @ rt : regno @ offset : imm16) =
- Some(Store(D, true, base, rt, offset)) /* SCD */
-function clause execute (Store(width, conditional, base, rt, offset)) =
- {
- vAddr : bits(64) = addrWrapper(sign_extend(offset) + rGPR(base), StoreData, width);
- rt_val = rGPR(rt);
- if ~ (isAddressAligned(vAddr, width)) then
- (SignalExceptionBadAddr(AdES, vAddr)) /* unaligned access */
- else
- let pAddr = (TLBTranslate(vAddr, StoreData)) in
- {
- if (conditional) then
- {
- success : bool = if (CP0LLBit[0]) then match width
- {
- W => MEMw_conditional_wrapper(pAddr, 4, rt_val[31..0]),
- D => MEMw_conditional_wrapper(pAddr, 8, rt_val),
- _ => throw(Error_internal_error()) /* there is no sbc or shc */
- } else false;
- wGPR(rt) = zero_extend(success)
- }
- else
- match width
- {
- B => MEMw_wrapper(pAddr, 1) = rt_val[7..0],
- H => MEMw_wrapper(pAddr, 2) = rt_val[15..0],
- W => MEMw_wrapper(pAddr, 4) = rt_val[31..0],
- D => MEMw_wrapper(pAddr, 8) = rt_val
- }
- }
- }
-
-/* LWL - Load word left (big-endian only) */
-
-union clause ast = LWL : (regno, regno, bits(16))
-function clause decode(0b100010 @ base : regno @ rt : regno @ offset : imm16) =
- Some(LWL(base, rt, offset))
-function clause execute(LWL(base, rt, offset)) =
- {
- vAddr = addrWrapperUnaligned(sign_extend(offset) + rGPR(base), LoadData, WL);
- let pAddr = (TLBTranslate(vAddr, LoadData)) in
- {
- mem_val = MEMr_wrapper (pAddr[63..2] @ 0b00, 4); /* read word of interest */
- reg_val = rGPR(rt);
- result : bits(32) = match vAddr[1..0]
- {
- 0b00 => mem_val,
- 0b01 => mem_val[23..0] @ reg_val[07..0],
- 0b10 => mem_val[15..0] @ reg_val[15..0],
- 0b11 => mem_val[07..0] @ reg_val[23..0]
- };
- wGPR(rt) = sign_extend(result);
- }
- }
-union clause ast = LWR : (regno, regno, bits(16))
-function clause decode(0b100110 @ base : regno @ rt : regno @ offset : imm16) =
- Some(LWR(base, rt, offset))
-function clause execute(LWR(base, rt, offset)) =
- {
- vAddr = addrWrapperUnaligned(sign_extend(offset) + rGPR(base), LoadData, WR);
- let pAddr = (TLBTranslate(vAddr, LoadData)) in
- {
- mem_val = MEMr_wrapper(pAddr[63..2] @ 0b00, 4); /* read word of interest */
- reg_val = rGPR(rt);
- result : bits(32) = match vAddr[1..0]
- {
- 0b00 => reg_val[31..8] @ mem_val[31..24],
- 0b01 => reg_val[31..16] @ mem_val[31..16],
- 0b10 => reg_val[31..24] @ mem_val[31..8],
- 0b11 => mem_val
- };
- wGPR(rt) = sign_extend(result)
- }
- }
-
-/* SWL - Store word left */
-union clause ast = SWL : (regno, regno, bits(16))
-function clause decode(0b101010 @ base : regno @ rt : regno @ offset : imm16) =
- Some(SWL(base, rt, offset))
-function clause execute(SWL(base, rt, offset)) =
- {
- vAddr = addrWrapperUnaligned(sign_extend(offset) + rGPR(base), StoreData, WL);
- let pAddr = TLBTranslate(vAddr, StoreData) in
- {
- reg_val = rGPR(rt);
- match vAddr[1..0]
- {
- 0b00 => (MEMw_wrapper(pAddr, 4) = reg_val[31..0]),
- 0b01 => (MEMw_wrapper(pAddr, 3) = reg_val[31..8]),
- 0b10 => (MEMw_wrapper(pAddr, 2) = reg_val[31..16]),
- 0b11 => (MEMw_wrapper(pAddr, 1) = reg_val[31..24])
- }
- }
- }
-
-union clause ast = SWR : (regno, regno, bits(16))
-function clause decode(0b101110 @ base : regno @ rt : regno @ offset : imm16) =
- Some(SWR(base, rt, offset))
-function clause execute(SWR(base, rt, offset)) =
- {
- vAddr = addrWrapperUnaligned(sign_extend(offset) + rGPR(base), StoreData, WR);
- let pAddr = TLBTranslate(vAddr, StoreData) in
- {
- wordAddr = pAddr[63..2] @ 0b00;
- reg_val = rGPR(rt);
- match vAddr[1..0]
- {
- 0b00 => (MEMw_wrapper(wordAddr, 1) = reg_val[7..0]),
- 0b01 => (MEMw_wrapper(wordAddr, 2) = reg_val[15..0]),
- 0b10 => (MEMw_wrapper(wordAddr, 3) = reg_val[23..0]),
- 0b11 => (MEMw_wrapper(wordAddr, 4) = reg_val[31..0])
- }
- }
- }
-
-/* Load double-word left */
-union clause ast = LDL : (regno, regno, bits(16))
-function clause decode(0b011010 @ base : regno @ rt : regno @ offset : imm16) =
- Some(LDL(base, rt, offset))
-function clause execute(LDL(base, rt, offset)) =
- {
- vAddr = addrWrapperUnaligned(sign_extend(offset) + rGPR(base), LoadData, DL);
- let pAddr = TLBTranslate(vAddr, LoadData) in
- {
- mem_val = MEMr_wrapper(pAddr[63..3] @ 0b000, 8); /* read double of interest */
- reg_val = rGPR(rt);
- wGPR(rt) = match vAddr[2..0]
- {
- 0b000 => mem_val,
- 0b001 => mem_val[55..0] @ reg_val[7..0],
- 0b010 => mem_val[47..0] @ reg_val[15..0],
- 0b011 => mem_val[39..0] @ reg_val[23..0],
- 0b100 => mem_val[31..0] @ reg_val[31..0],
- 0b101 => mem_val[23..0] @ reg_val[39..0],
- 0b110 => mem_val[15..0] @ reg_val[47..0],
- 0b111 => mem_val[07..0] @ reg_val[55..0]
- };
- }
- }
-
-/* Load double-word right */
-union clause ast = LDR : (regno, regno, bits(16))
-function clause decode(0b011011 @ base : regno @ rt : regno @ offset : imm16) =
- Some(LDR(base, rt, offset))
-function clause execute(LDR(base, rt, offset)) =
- {
- vAddr = addrWrapperUnaligned(sign_extend(offset) + rGPR(base), LoadData, DR);
- let pAddr = TLBTranslate(vAddr, LoadData) in
- {
- mem_val = MEMr_wrapper(pAddr[63..3] @ 0b000, 8); /* read double of interest */
- reg_val = rGPR(rt);
- wGPR(rt) = match vAddr[2..0]
- {
- 0b000 => reg_val[63..08] @ mem_val[63..56],
- 0b001 => reg_val[63..16] @ mem_val[63..48],
- 0b010 => reg_val[63..24] @ mem_val[63..40],
- 0b011 => reg_val[63..32] @ mem_val[63..32],
- 0b100 => reg_val[63..40] @ mem_val[63..24],
- 0b101 => reg_val[63..48] @ mem_val[63..16],
- 0b110 => reg_val[63..56] @ mem_val[63..08],
- 0b111 => mem_val
- };
- }
- }
-
-/* SDL - Store double-word left */
-union clause ast = SDL : (regno, regno, bits(16))
-function clause decode(0b101100 @ base : regno @ rt : regno @ offset : imm16) =
- Some(SDL(base, rt, offset))
-function clause execute(SDL(base, rt, offset)) =
- {
- vAddr = addrWrapperUnaligned(sign_extend(offset) + rGPR(base), StoreData, DL);
- let pAddr = TLBTranslate(vAddr, StoreData) in
- {
- reg_val = rGPR(rt);
- match vAddr[2..0]
- {
- 0b000 => (MEMw_wrapper(pAddr, 8) = reg_val[63..00]),
- 0b001 => (MEMw_wrapper(pAddr, 7) = reg_val[63..08]),
- 0b010 => (MEMw_wrapper(pAddr, 6) = reg_val[63..16]),
- 0b011 => (MEMw_wrapper(pAddr, 5) = reg_val[63..24]),
- 0b100 => (MEMw_wrapper(pAddr, 4) = reg_val[63..32]),
- 0b101 => (MEMw_wrapper(pAddr, 3) = reg_val[63..40]),
- 0b110 => (MEMw_wrapper(pAddr, 2) = reg_val[63..48]),
- 0b111 => (MEMw_wrapper(pAddr, 1) = reg_val[63..56])
- }
- }
- }
-
-
-/* SDR - Store double-word right */
-union clause ast = SDR : (regno, regno, bits(16))
-function clause decode(0b101101 @ base : regno @ rt : regno @ offset : imm16) =
- Some(SDR(base, rt, offset))
-function clause execute(SDR(base, rt, offset)) =
- {
- vAddr = addrWrapperUnaligned(sign_extend(offset) + rGPR(base), StoreData, DR);
- let pAddr = TLBTranslate(vAddr, StoreData) in
- {
- reg_val = rGPR(rt);
- wordAddr = pAddr[63..3] @ 0b000;
- match vAddr[2..0]
- {
- 0b000 => (MEMw_wrapper(wordAddr, 1) = reg_val[07..0]),
- 0b001 => (MEMw_wrapper(wordAddr, 2) = reg_val[15..0]),
- 0b010 => (MEMw_wrapper(wordAddr, 3) = reg_val[23..0]),
- 0b011 => (MEMw_wrapper(wordAddr, 4) = reg_val[31..0]),
- 0b100 => (MEMw_wrapper(wordAddr, 5) = reg_val[39..0]),
- 0b101 => (MEMw_wrapper(wordAddr, 6) = reg_val[47..0]),
- 0b110 => (MEMw_wrapper(wordAddr, 7) = reg_val[55..0]),
- 0b111 => (MEMw_wrapper(wordAddr, 8) = reg_val[63..0])
- }
- }
- }
-
-/* CACHE - manipulate (non-existent) caches */
-
-union clause ast = CACHE : (regno, regno, bits(16))
-function clause decode (0b101111 @ base : regno @ op : regno @ imm : imm16) =
- Some(CACHE(base, op, imm))
-function clause execute (CACHE(base, op, imm)) =
- checkCP0Access () /* pretty much a NOP because no caches */
-
-/* PREF - prefetching into (non-existent) caches
-
-union clause ast = PREF : (regno, regno, bits(16))
-function clause decode (0b110011 @ base : regno @ op : regno @ imm : imm16) =
- Some(PREF(base, op, imm))
-function clause execute (PREF(base, op, imm)) =
- () /* XXX NOP */
-
-*/
-
-/* SYNC - Memory barrier */
-union clause ast = SYNC : unit
-function clause decode (0b000000 @ 0b00000 @ 0b00000 @ 0b00000 @ stype : regno @ 0b001111) =
- Some(SYNC()) /* stype is currently ignored */
-function clause execute(SYNC()) =
- MEM_sync()
-
-union clause ast = MFC0 : (regno, regno, bits(3), bool)
-function clause decode (0b010000 @ 0b00000 @ rt : regno @ rd : regno @ 0b00000000 @ sel : bits(3)) =
- Some(MFC0(rt, rd, sel, false)) /* MFC0 */
-function clause decode (0b010000 @ 0b00001 @ rt : regno @ rd : regno @ 0b00000000 @ sel : bits(3)) =
- Some(MFC0(rt, rd, sel, true)) /* DMFC0 */
-function clause execute (MFC0(rt, rd, sel, double)) = {
- checkCP0Access();
- let result : bits(64) = match (rd, sel)
- {
- (0b00000,0b000) => let idx : bits(31) = zero_extend(TLBIndex) in
- (0x00000000 @ TLBProbe @ idx), /* 0, TLB Index */
- (0b00001,0b000) => zero_extend(TLBRandom), /* 1, TLB Random */
- (0b00010,0b000) => TLBEntryLo0.bits(), /* 2, TLB EntryLo0 */
- (0b00011,0b000) => TLBEntryLo1.bits(), /* 3, TLB EntryLo1 */
- (0b00100,0b000) => TLBContext.bits(), /* 4, TLB Context */
- (0b00100,0b010) => CP0UserLocal,
- (0b00101,0b000) => zero_extend(TLBPageMask @ 0x000), /* 5, TLB PageMask */
- (0b00110,0b000) => zero_extend(TLBWired), /* 6, TLB Wired */
- (0b00111,0b000) => zero_extend(CP0HWREna), /* 7, HWREna */
- (0b01000,0b000) => CP0BadVAddr, /* 8, BadVAddr reg */
- (0b01000,0b001) => zero_extend(0b0), /* 8, BadInstr reg XXX TODO */
- (0b01001,0b000) => zero_extend(CP0Count), /* 9, Count reg */
- (0b01010,0b000) => TLBEntryHi.bits(),/* 10, TLB EntryHi */
- (0b01011,0b000) => zero_extend(CP0Compare), /* 11, Compare reg */
- (0b01100,0b000) => zero_extend(CP0Status.bits()), /* 12, Status reg */
- (0b01101,0b000) => zero_extend(CP0Cause.bits()), /* 13, Cause reg */
- (0b01110,0b000) => CP0EPC, /* 14, EPC */
- (0b01111,0b000) => zero_extend(0x00000400), /* 15, sel 0: PrID processor ID */
- (0b01111,0b110) => zero_extend(0b0), /* 15, sel 6: CHERI core ID */
- (0b01111,0b111) => zero_extend(0b0), /* 15, sel 7: CHERI thread ID */
- (0b10000,0b000) => zero_extend(0b1 /* M */ /* 16, sel 0: Config0 */
- @ 0b000000000000000 /* Impl */
- @ 0b1 /* BE */
- @ 0b10 /* AT */
- @ 0b000 /* AR */
- @ 0b001 /* MT standard TLB */
- @ 0b0000 /* zero */
- @ CP0ConfigK0),
- (0b10000,0b001) => zero_extend( /* 16, sel 1: Config1 */
- 0b1 /* M */
- @ TLBIndexMax /* MMU size-1 */
- @ 0b000 /* IS icache sets */
- @ 0b000 /* IL icache lines */
- @ 0b000 /* IA icache assoc. */
- @ 0b000 /* DS dcache sets */
- @ 0b000 /* DL dcache lines */
- @ 0b000 /* DA dcache assoc. */
- @ bool_to_bits(have_cp2) /* C2 CP2 presence */
- @ 0b0 /* MD MDMX implemented */
- @ 0b0 /* PC performance counters */
- @ 0b0 /* WR watch registers */
- @ 0b0 /* CA 16e code compression */
- @ 0b0 /* EP EJTAG */
- @ 0b0), /* FP FPU present */
- (0b10000,0b010) => zero_extend( /* 16, sel 2: Config2 */
- 0b1 /* M */
- @ 0b000 /* TU L3 control */
- @ 0b0000 /* TS L3 sets */
- @ 0b0000 /* TL L3 lines */
- @ 0b0000 /* TA L3 assoc. */
- @ 0b0000 /* SU L2 control */
- @ 0b0000 /* SS L2 sets */
- @ 0b0000 /* SL L2 lines */
- @ 0b0000), /* SA L2 assoc. */
- (0b10000,0b011) => 0x0000000000002000, /* 16, sel 3: Config3 zero except for bit 13 == ulri */
- (0b10000,0b101) => 0x0000000000000000, /* 16, sel 5: Config5 beri specific -- no extended TLB */
- (0b10001,0b000) => CP0LLAddr, /* 17, sel 0: LLAddr */
- (0b10010,0b000) => zero_extend(0b0), /* 18, WatchLo */
- (0b10011,0b000) => zero_extend(0b0), /* 19, WatchHi */
- (0b10100,0b000) => TLBXContext.bits(), /* 20, XContext */
- (0b11110,0b000) => CP0ErrorEPC, /* 30, ErrorEPC */
- _ => (SignalException(ResI))
- } in
- wGPR(rt) = if (double) then result else sign_extend(result[31..0])
-}
-
-/* simulator halt instruction "MTC0 rt, r23" (cheri specific behaviour) */
-union clause ast = HCF : unit
-function clause decode (0b010000 @ 0b00100 @ rt : regno @ 0b10111 @ 0b00000000000) =
- Some(HCF())
-
-function clause decode (0b010000 @ 0b00100 @ rt : regno @ 0b11010 @ 0b00000000000) =
- Some(HCF())
-
-function clause execute (HCF()) =
- () /* halt instruction actually executed by interpreter framework */
-
-union clause ast = MTC0 : (regno, regno, bits(3), bool)
-function clause decode (0b010000 @ 0b00100 @ rt : regno @ rd : regno @ 0b00000000 @ sel : bits(3)) =
- Some(MTC0(rt, rd, sel, false)) /* MTC0 */
-function clause decode (0b010000 @ 0b00101 @ rt : regno @ rd : regno @ 0b00000000 @ sel : bits(3)) =
- Some(MTC0(rt, rd, sel, true)) /* DMTC0 */
-function clause execute (MTC0(rt, rd, sel, double)) = {
- checkCP0Access();
- let reg_val = rGPR(rt) in
- match (rd, sel)
- {
- (0b00000,0b000) => TLBIndex = mask(reg_val), /* NB no write to TLBProbe */
- (0b00001,0b000) => (), /* TLBRandom is read only */
- (0b00010,0b000) => TLBEntryLo0->bits() = reg_val,
- (0b00011,0b000) => TLBEntryLo1->bits() = reg_val,
- (0b00100,0b000) => TLBContext->PTEBase() = reg_val[63..23],
- (0b00100,0b010) => CP0UserLocal = reg_val,
- (0b00101,0b000) => TLBPageMask = reg_val[28..13],
- (0b00110,0b000) => {
- TLBWired = mask(reg_val);
- TLBRandom = TLBIndexMax;
- },
- (0b00111,0b000) => CP0HWREna = (reg_val[31..29] @ 0b0000000000000000000000000 @ reg_val[3..0]),
- (0b01000,0b000) => (), /* BadVAddr read only */
- (0b01001,0b000) => CP0Count = reg_val[31..0],
- (0b01010,0b000) => {
- TLBEntryHi->R() = reg_val[63..62];
- TLBEntryHi->VPN2() = reg_val[39..13];
- TLBEntryHi->ASID() = reg_val[7..0];
- },
- (0b01011,0b000) => { /* 11, sel 0: Compare reg */
- CP0Compare = reg_val[31..0];
- CP0Cause->IP() = CP0Cause.IP() & 0x7f; /* clear IP7 */
- },
- (0b01100,0b000) => { /* 12 Status */
- CP0Status->CU() = reg_val[31..28];
- CP0Status->BEV() = reg_val[22];
- CP0Status->IM() = reg_val[15..8];
- CP0Status->KX() = reg_val[7];
- CP0Status->SX() = reg_val[6];
- CP0Status->UX() = reg_val[5];
- CP0Status->KSU() = reg_val[4..3];
- CP0Status->ERL() = reg_val[2];
- CP0Status->EXL() = reg_val[1];
- CP0Status->IE() = reg_val[0];
- },
- (0b01101,0b000) => { /* 13 Cause */
- CP0Cause->IV() = reg_val[23]; /* TODO special interrupt vector not implemeneted */
- let ip = CP0Cause.IP() in
- CP0Cause->IP() = ((ip[7..2]) @ (reg_val[9..8]));
- },
- (0b01110,0b000) => CP0EPC = reg_val, /* 14, EPC */
- (0b10000,0b000) => CP0ConfigK0 = reg_val[2..0], /* K0 cache config 16: Config0 */
- (0b10100,0b000) => TLBXContext->XPTEBase() = reg_val[63..33],
- (0b11110,0b000) => CP0ErrorEPC = reg_val, /* 30, ErrorEPC */
- _ => (SignalException(ResI))
- }
-}
-
-val TLBWriteEntry : TLBIndexT -> unit effect {rreg, wreg, escape}
-function TLBWriteEntry(idx) = {
- pagemask = TLBPageMask;
- match pagemask {
- 0x0000 => (),
- 0x0003 => (),
- 0x000f => (),
- 0x003f => (),
- 0x00ff => (),
- 0x03ff => (),
- 0x0fff => (),
- 0x3fff => (),
- 0xffff => (),
- _ => (SignalException(MCheck))
- };
- let i as atom(_) = unsigned(idx) in
- let entry = TLBEntries[i] in {
- entry.pagemask() = pagemask;
- entry.r() = TLBEntryHi.R();
- entry.vpn2() = TLBEntryHi.VPN2();
- entry.asid() = TLBEntryHi.ASID();
- entry.g() = ((TLBEntryLo0.G()) & (TLBEntryLo1.G()));
- entry.valid() = bitone;
- entry.caps0() = TLBEntryLo0.CapS();
- entry.capl0() = TLBEntryLo0.CapL();
- entry.pfn0() = TLBEntryLo0.PFN();
- entry.c0() = TLBEntryLo0.C();
- entry.d0() = TLBEntryLo0.D();
- entry.v0() = TLBEntryLo0.V();
- entry.caps1() = TLBEntryLo1.CapS();
- entry.capl1() = TLBEntryLo1.CapL();
- entry.pfn1() = TLBEntryLo1.PFN();
- entry.c1() = TLBEntryLo1.C();
- entry.d1() = TLBEntryLo1.D();
- entry.v1() = TLBEntryLo1.V();
- }
-}
-
-union clause ast = TLBWI : unit
-function clause decode (0b010000 @ 0b10000000000000000000 @ 0b000010) = Some(TLBWI() : ast)
-function clause execute (TLBWI()) = {
- checkCP0Access();
- TLBWriteEntry(TLBIndex);
-}
-
-union clause ast = TLBWR : unit
-function clause decode (0b010000 @ 0b10000000000000000000 @ 0b000110) = Some(TLBWR() : ast)
-function clause execute (TLBWR()) = {
- checkCP0Access();
- TLBWriteEntry(TLBRandom);
-}
-
-union clause ast = TLBR : unit
-function clause decode (0b010000 @ 0b10000000000000000000 @ 0b000001) = Some(TLBR() : ast)
-function clause execute (TLBR()) = {
- checkCP0Access();
- let i as atom(_) = unsigned(TLBIndex) in
- let entry = reg_deref(TLBEntries[i]) in {
- TLBPageMask = entry.pagemask();
- TLBEntryHi->R() = entry.r();
- TLBEntryHi->VPN2() = entry.vpn2();
- TLBEntryHi->ASID() = entry.asid();
- TLBEntryLo0->CapS()= entry.caps0();
- TLBEntryLo0->CapL()= entry.capl0();
- TLBEntryLo0->PFN() = entry.pfn0();
- TLBEntryLo0->C() = entry.c0();
- TLBEntryLo0->D() = entry.d0();
- TLBEntryLo0->V() = entry.v0();
- TLBEntryLo0->G() = entry.g();
- TLBEntryLo1->CapS()= entry.caps1();
- TLBEntryLo1->CapL()= entry.capl1();
- TLBEntryLo1->PFN() = entry.pfn1();
- TLBEntryLo1->C() = entry.c1();
- TLBEntryLo1->D() = entry.d1();
- TLBEntryLo1->V() = entry.v1();
- TLBEntryLo1->G() = entry.g();
- }
-}
-
-union clause ast = TLBP : unit
-function clause decode (0b010000 @ 0b10000000000000000000 @ 0b001000) = Some(TLBP() : ast)
-function clause execute (TLBP()) = {
- checkCP0Access();
- let result = tlbSearch(TLBEntryHi.bits()) in
- match result {
- (Some(idx)) => {
- TLBProbe = [bitzero];
- TLBIndex = idx;
- },
- None() => {
- TLBProbe = [bitone];
- TLBIndex = 0b000000;
- }
- }
-}
-
-union clause ast = RDHWR : (regno, regno)
-function clause decode (0b011111 @ 0b00000 @ rt : regno @ rd : regno @ 0b00000 @ 0b111011) =
- Some(RDHWR(rt, rd))
-function clause execute (RDHWR(rt, rd)) = {
- let accessLevel = getAccessLevel() in
- let haveAccessLevel : bool = accessLevel == Kernel in
- let haveCU0 : bool = bitone == (CP0Status.CU()[0]) in
- let rdi as atom(_) = unsigned(rd) in
- let haveHWREna : bool = bitone == (CP0HWREna[rdi]) in
- if ~(haveAccessLevel | haveCU0 | haveHWREna) then
- (SignalException(ResI));
- let temp : bits(64) = match rd {
- 0b00000 => zero_extend([bitzero]), /* CPUNum */
- 0b00001 => zero_extend([bitzero]), /* SYNCI_step */
- 0b00010 => zero_extend(CP0Count), /* Count */
- 0b00011 => zero_extend([bitone]), /* Count resolution */
- 0b11101 => CP0UserLocal, /* User local register */
- _ => (SignalException(ResI))
- } in
- wGPR(rt) = temp;
-}
-
-union clause ast = ERET : unit
-
-function clause decode (0b010000 @ 0b1 @ 0b0000000000000000000 @ 0b011000) =
- Some(ERET())
-function clause execute (ERET()) =
- {
- checkCP0Access();
- ERETHook();
- CP0LLBit = 0b0;
- if (CP0Status.ERL() == bitone) then
- {
- nextPC = CP0ErrorEPC;
- CP0Status->ERL() = 0b0;
- }
- else
- {
- nextPC = CP0EPC;
- CP0Status->EXL() = 0b0;
- }
- }
diff --git a/mips/mips_prelude.sail b/mips/mips_prelude.sail
deleted file mode 100644
index 6babfd19..00000000
--- a/mips/mips_prelude.sail
+++ /dev/null
@@ -1,649 +0,0 @@
-/*========================================================================*/
-/* */
-/* Copyright (c) 2015-2017 Robert M. Norton */
-/* Copyright (c) 2015-2017 Kathyrn Gray */
-/* All rights reserved. */
-/* */
-/* This software was developed by the University of Cambridge Computer */
-/* Laboratory as part of the Rigorous Engineering of Mainstream Systems */
-/* (REMS) project, funded by EPSRC grant EP/K008528/1. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following conditions */
-/* are met: */
-/* 1. Redistributions of source code must retain the above copyright */
-/* notice, this list of conditions and the following disclaimer. */
-/* 2. Redistributions in binary form must reproduce the above copyright */
-/* notice, this list of conditions and the following disclaimer in */
-/* the documentation and/or other materials provided with the */
-/* distribution. */
-/* */
-/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */
-/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
-/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
-/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */
-/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
-/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */
-/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */
-/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
-/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */
-/* SUCH DAMAGE. */
-/*========================================================================*/
-
-/* mips_prelude.sail: declarations of mips registers, and functions common
- to mips instructions (e.g. address translation) */
-
-register PC : bits(64)
-register nextPC : bits(64)
-
-/* CP0 Registers */
-
-bitfield CauseReg : bits(32) = {
- BD : 31, /* branch delay */
- /*Z0 : 30,*/
- CE : 29.. 28, /* for coprocessor enable exception */
- /*Z1 : 27.. 24,*/
- IV : 23, /* special interrupt vector not supported */
- WP : 22, /* watchpoint exception occurred */
- /*Z2 : 21.. 16, */
- IP : 15.. 8, /* interrupt pending bits */
- /*Z3 : 7,*/
- ExcCode : 6.. 2, /* code of last exception */
- /*Z4 : 1.. 0,*/
-}
-
-bitfield TLBEntryLoReg : bits(64) = {
- CapS : 63,
- CapL : 62,
- PFN : 29.. 6,
- C : 5.. 3,
- D : 2,
- V : 1,
- G : 0,
-}
-
-bitfield TLBEntryHiReg : bits(64) = {
- R : 63.. 62,
- VPN2 : 39.. 13,
- ASID : 7.. 0,
-}
-
-bitfield ContextReg : bits(64) = {
- PTEBase : 63.. 23,
- BadVPN2 : 22.. 4,
- /*ZR : 3.. 0,*/
-}
-
-bitfield XContextReg : bits(64) = {
- XPTEBase : 63.. 33,
- XR : 32.. 31,
- XBadVPN2 : 30.. 4,
-}
-
-let TLBNumEntries = 64
-type TLBIndexT = (bits(6))
-let TLBIndexMax : TLBIndexT = 0b111111
-
-val MAX : forall 'n. atom('n) -> atom(2 ^ 'n - 1) effect pure
-function MAX(n) = pow2(n) - 1
-
-let MAX_U64 = MAX(64) /*unsigned(0xffffffffffffffff)*/
-let MAX_VA = MAX(40) /*unsigned(0xffffffffff)*/
-let MAX_PA = MAX(36) /*unsigned(0xfffffffff)*/
-
-bitfield TLBEntry : bits(117) = {
- pagemask : 116.. 101,
- r : 100.. 99,
- vpn2 : 98.. 72,
- asid : 71.. 64,
- g : 63,
- valid : 62,
- caps1 : 61,
- capl1 : 60,
- pfn1 : 59.. 36,
- c1 : 35.. 33,
- d1 : 32,
- v1 : 31,
- caps0 : 30,
- capl0 : 29,
- pfn0 : 28.. 5,
- c0 : 4.. 2,
- d0 : 1,
- v0 : 0,
-}
-
-register TLBProbe : bits(1)
-register TLBIndex : TLBIndexT
-register TLBRandom : TLBIndexT
-register TLBEntryLo0 : TLBEntryLoReg
-register TLBEntryLo1 : TLBEntryLoReg
-register TLBContext : ContextReg
-register TLBPageMask : bits(16)
-register TLBWired : TLBIndexT
-register TLBEntryHi : TLBEntryHiReg
-register TLBXContext : XContextReg
-
-register TLBEntry00 : TLBEntry
-register TLBEntry01 : TLBEntry
-register TLBEntry02 : TLBEntry
-register TLBEntry03 : TLBEntry
-register TLBEntry04 : TLBEntry
-register TLBEntry05 : TLBEntry
-register TLBEntry06 : TLBEntry
-register TLBEntry07 : TLBEntry
-register TLBEntry08 : TLBEntry
-register TLBEntry09 : TLBEntry
-register TLBEntry10 : TLBEntry
-register TLBEntry11 : TLBEntry
-register TLBEntry12 : TLBEntry
-register TLBEntry13 : TLBEntry
-register TLBEntry14 : TLBEntry
-register TLBEntry15 : TLBEntry
-register TLBEntry16 : TLBEntry
-register TLBEntry17 : TLBEntry
-register TLBEntry18 : TLBEntry
-register TLBEntry19 : TLBEntry
-register TLBEntry20 : TLBEntry
-register TLBEntry21 : TLBEntry
-register TLBEntry22 : TLBEntry
-register TLBEntry23 : TLBEntry
-register TLBEntry24 : TLBEntry
-register TLBEntry25 : TLBEntry
-register TLBEntry26 : TLBEntry
-register TLBEntry27 : TLBEntry
-register TLBEntry28 : TLBEntry
-register TLBEntry29 : TLBEntry
-register TLBEntry30 : TLBEntry
-register TLBEntry31 : TLBEntry
-register TLBEntry32 : TLBEntry
-register TLBEntry33 : TLBEntry
-register TLBEntry34 : TLBEntry
-register TLBEntry35 : TLBEntry
-register TLBEntry36 : TLBEntry
-register TLBEntry37 : TLBEntry
-register TLBEntry38 : TLBEntry
-register TLBEntry39 : TLBEntry
-register TLBEntry40 : TLBEntry
-register TLBEntry41 : TLBEntry
-register TLBEntry42 : TLBEntry
-register TLBEntry43 : TLBEntry
-register TLBEntry44 : TLBEntry
-register TLBEntry45 : TLBEntry
-register TLBEntry46 : TLBEntry
-register TLBEntry47 : TLBEntry
-register TLBEntry48 : TLBEntry
-register TLBEntry49 : TLBEntry
-register TLBEntry50 : TLBEntry
-register TLBEntry51 : TLBEntry
-register TLBEntry52 : TLBEntry
-register TLBEntry53 : TLBEntry
-register TLBEntry54 : TLBEntry
-register TLBEntry55 : TLBEntry
-register TLBEntry56 : TLBEntry
-register TLBEntry57 : TLBEntry
-register TLBEntry58 : TLBEntry
-register TLBEntry59 : TLBEntry
-register TLBEntry60 : TLBEntry
-register TLBEntry61 : TLBEntry
-register TLBEntry62 : TLBEntry
-register TLBEntry63 : TLBEntry
-
-let TLBEntries : vector(64, dec, register(TLBEntry)) = [
- ref TLBEntry63,
- ref TLBEntry62,
- ref TLBEntry61,
- ref TLBEntry60,
- ref TLBEntry59,
- ref TLBEntry58,
- ref TLBEntry57,
- ref TLBEntry56,
- ref TLBEntry55,
- ref TLBEntry54,
- ref TLBEntry53,
- ref TLBEntry52,
- ref TLBEntry51,
- ref TLBEntry50,
- ref TLBEntry49,
- ref TLBEntry48,
- ref TLBEntry47,
- ref TLBEntry46,
- ref TLBEntry45,
- ref TLBEntry44,
- ref TLBEntry43,
- ref TLBEntry42,
- ref TLBEntry41,
- ref TLBEntry40,
- ref TLBEntry39,
- ref TLBEntry38,
- ref TLBEntry37,
- ref TLBEntry36,
- ref TLBEntry35,
- ref TLBEntry34,
- ref TLBEntry33,
- ref TLBEntry32,
- ref TLBEntry31,
- ref TLBEntry30,
- ref TLBEntry29,
- ref TLBEntry28,
- ref TLBEntry27,
- ref TLBEntry26,
- ref TLBEntry25,
- ref TLBEntry24,
- ref TLBEntry23,
- ref TLBEntry22,
- ref TLBEntry21,
- ref TLBEntry20,
- ref TLBEntry19,
- ref TLBEntry18,
- ref TLBEntry17,
- ref TLBEntry16,
- ref TLBEntry15,
- ref TLBEntry14,
- ref TLBEntry13,
- ref TLBEntry12,
- ref TLBEntry11,
- ref TLBEntry10,
- ref TLBEntry09,
- ref TLBEntry08,
- ref TLBEntry07,
- ref TLBEntry06,
- ref TLBEntry05,
- ref TLBEntry04,
- ref TLBEntry03,
- ref TLBEntry02,
- ref TLBEntry01,
- ref TLBEntry00
-]
-
-register CP0Compare : bits(32)
-register CP0Cause : CauseReg
-register CP0EPC : bits(64)
-register CP0ErrorEPC : bits(64)
-register CP0LLBit : bits(1)
-register CP0LLAddr : bits(64)
-register CP0BadVAddr : bits(64)
-register CP0Count : bits(32)
-register CP0HWREna : bits(32)
-register CP0UserLocal : bits(64)
-register CP0ConfigK0 : bits(3)
-
-bitfield StatusReg : bits(32) = {
- CU : 31.. 28, /* co-processor enable bits */
- /* RP/FR/RE/MX/PX not implemented */
- BEV : 22, /* use boot exception vectors (initialised to one) */
- /* TS/SR/NMI not implemented */
- IM : 15.. 8, /* Interrupt mask */
- KX : 7, /* kernel 64-bit enable */
- SX : 6, /* supervisor 64-bit enable */
- UX : 5, /* user 64-bit enable */
- KSU : 4.. 3, /* Processor mode */
- ERL : 2, /* error level (should be initialised to one, but BERI is different) */
- EXL : 1, /* exception level */
- IE : 0, /* interrupt enable */
-}
-register CP0Status : StatusReg
-
-/* Implementation registers -- not ISA defined */
-register branchPending : bits(1) /* Set by branch instructions to implement branch delay */
-register inBranchDelay : bits(1) /* Needs to be set by outside world when in branch delay slot */
-register delayedPC : bits(64) /* Set by branch instructions to implement branch delay */
-
-val execute_branch : bits(64) -> unit effect {wreg}
-function execute_branch(pc) = {
- delayedPC = pc;
- branchPending = 0b1;
-}
-
-/* General purpose registers */
-
-
-/* Special registers For MUL/DIV */
-register HI : bits(64)
-register LO : bits(64)
-
-register GPR : vector(32, dec, bits(64))
-
-/* JTAG Uart registers */
-
-register UART_WDATA : bits(8)
-register UART_WRITTEN : bits(1)
-register UART_RDATA : bits(8)
-register UART_RVALID : bits(1)
-
-/* Check whether a given 64-bit vector is a properly sign extended 32-bit word */
-val NotWordVal : bits(64) -> bool effect pure
-function NotWordVal (word) =
- (word[31] ^^ 32) != word[63..32]
-
-/* Read numbered GP reg. (r0 is always zero) */
-val rGPR : bits(5) -> bits(64) effect {rreg}
-function rGPR idx = {
- let i as atom(_) = unsigned(idx) in
- if i == 0 then 0x0000000000000000 else GPR[i]
-}
-
-/* Write numbered GP reg. (writes to r0 ignored) */
-val wGPR : (bits(5), bits(64)) -> unit effect {wreg}
-function wGPR (idx, v) = {
- let i as atom(_) = unsigned(idx) in
- if i != 0 then {
- /*prerr_string(string_of_int(i));
- prerr_bits(" <- ", v);*/
- GPR[i] = v;
- };
-}
-
-val MEMr = {lem: "MEMr"} : forall 'n, 'n >= 0.
- ( bits(64) , atom('n) ) -> (bits(8 * 'n)) effect { rmem }
-val MEMr_reserve = {lem: "MEMr_reserve"} : forall 'n, 'n >= 0.
- ( bits(64) , atom('n) ) -> (bits(8 * 'n)) effect { rmem }
-val MEM_sync = {lem: "MEM_sync"} :
- unit -> unit effect { barr }
-
-val MEMea = {lem: "MEMea"} : forall 'n.
- ( bits(64) , atom('n)) -> unit effect { eamem }
-val MEMea_conditional = {lem: "MEMea_conditional"} : forall 'n.
- ( bits(64) , atom('n)) -> unit effect { eamem }
-val MEMval = {lem: "MEMval"} : forall 'n.
- ( bits(64) , atom('n), bits(8*'n)) -> unit effect { wmv }
-val MEMval_conditional = {lem: "MEMval_conditional"} : forall 'n.
- ( bits(64) , atom('n), bits(8*'n)) -> bool effect { wmv }
-
-/* Extern nops with effects, sometimes useful for faking effect */
-val skip_eamem = "skip" : unit -> unit effect {eamem}
-val skip_barr = "skip" : unit -> unit effect {barr}
-val skip_wreg = "skip" : unit -> unit effect {wreg}
-val skip_rreg = "skip" : unit -> unit effect {rreg}
-val skip_wmvt = "skip" : unit -> unit effect {wmvt}
-val skip_rmemt = "skip" : unit -> unit effect {rmemt}
-val skip_escape = "skip" : unit -> unit effect {escape}
-
-function MEMr (addr, size) = __MIPS_read(addr, size)
-function MEMr_reserve (addr, size) = __MIPS_read(addr, size)
-function MEM_sync () = skip_barr()
-
-function MEMea (addr, size) = skip_eamem()
-function MEMea_conditional (addr, size) = skip_eamem()
-function MEMval (addr, size, data) = __MIPS_write(addr, size, data)
-function MEMval_conditional (addr, size, data) = { __MIPS_write(addr, size, data); true }
-
-enum Exception =
-{
- Interrupt, TLBMod, TLBL, TLBS, AdEL, AdES, Sys, Bp, ResI, CpU, Ov, Tr, C2E, C2Trap,
- XTLBRefillL, XTLBRefillS, XTLBInvL, XTLBInvS, MCheck
-}
-
-/* Return the ISA defined code for an exception condition */
-function ExceptionCode (ex) : Exception -> bits(5)=
- let x : bits(8) = match ex
- {
- Interrupt => 0x00, /* Interrupt */
- TLBMod => 0x01, /* TLB modification exception */
- TLBL => 0x02, /* TLB exception (load or fetch) */
- TLBS => 0x03, /* TLB exception (store) */
- AdEL => 0x04, /* Address error (load or fetch) */
- AdES => 0x05, /* Address error (store) */
- Sys => 0x08, /* Syscall */
- Bp => 0x09, /* Breakpoint */
- ResI => 0x0a, /* Reserved instruction */
- CpU => 0x0b, /* Coprocessor Unusable */
- Ov => 0x0c, /* Arithmetic overflow */
- Tr => 0x0d, /* Trap */
- C2E => 0x12, /* C2E coprocessor 2 exception */
- C2Trap => 0x12, /* C2Trap maps to same exception code, different vector */
- XTLBRefillL => 0x02,
- XTLBRefillS => 0x03,
- XTLBInvL => 0x02,
- XTLBInvS => 0x03,
- MCheck => 0x18
- } in x[4..0]
-
-
-val SignalExceptionMIPS : forall ('o : Type) . (Exception, bits(64)) -> 'o effect {escape, rreg, wreg}
-function SignalExceptionMIPS (ex, kccBase) =
- {
- /* Only update EPC and BD if not already in EXL mode */
- if (~ (CP0Status.EXL())) then
- {
- if (inBranchDelay[0]) then
- {
- CP0EPC = PC - 4;
- CP0Cause->BD() = 0b1;
- }
- else
- {
- CP0EPC = PC;
- CP0Cause->BD() = 0b0;
- }
- };
-
- /* choose an exception vector to branch to. Some are not supported
- e.g. Reset */
- vectorOffset =
- if (CP0Status.EXL()) then
- 0x180 /* Always use common vector if in exception mode already */
- else if ((ex == XTLBRefillL) | (ex == XTLBRefillS)) then
- 0x080
- else if (ex == C2Trap) then
- 0x280 /* Special vector for CHERI traps */
- else
- 0x180; /* Common vector */
- vectorBase : bits(64) = if CP0Status.BEV() then
- 0xFFFFFFFFBFC00200
- else
- 0xFFFFFFFF80000000;
- /* On CHERI we have to subtract KCC.base so that we end up at the
- right absolute vector address after indirecting via new PCC */
- nextPC = vectorBase + sign_extend(vectorOffset) - kccBase;
- CP0Cause->ExcCode() = ExceptionCode(ex);
- CP0Status->EXL() = 0b1;
- throw (ISAException());
- }
-
-/* Defined either in mips_wrappers (directly calling SignalExceptionMIPS) or in cheri_prelude_common (cheri things plus above) */
-val SignalException : forall ('o : Type) . Exception -> 'o effect {escape, rreg, wreg}
-
-val SignalExceptionBadAddr : forall ('o : Type) . (Exception, bits(64)) -> 'o effect {escape, rreg, wreg}
-function SignalExceptionBadAddr(ex, badAddr) =
- {
- CP0BadVAddr = badAddr;
- SignalException(ex);
- }
-
-val SignalExceptionTLB : forall ('o : Type) . (Exception, bits(64)) -> 'o effect {escape, rreg, wreg}
-function SignalExceptionTLB(ex, badAddr) = {
- CP0BadVAddr = badAddr;
- TLBContext->BadVPN2() = (badAddr[31..13]);
- TLBXContext->XBadVPN2()= (badAddr[39..13]);
- TLBXContext->XR() = (badAddr[63..62]);
- TLBEntryHi->R() = (badAddr[63..62]);
- TLBEntryHi->VPN2() = (badAddr[39..13]);
- SignalException(ex);
-}
-
-enum MemAccessType = {Instruction, LoadData, StoreData}
-enum AccessLevel = {User, Supervisor, Kernel}
-
-val int_of_AccessLevel : AccessLevel -> {|0, 1, 2|} effect pure
-function int_of_AccessLevel level =
- match level {
- User => 0,
- Supervisor => 1,
- Kernel => 2
- }
-
-/*!
-Returns whether the first AccessLevel is sufficient to grant access at the second, required, access level.
- */
-val grantsAccess : (AccessLevel, AccessLevel) -> bool
-function grantsAccess (currentLevel, requiredLevel) =
- int_of_AccessLevel(currentLevel) >= int_of_AccessLevel(requiredLevel)
-
-/*!
-Returns the current effective access level determined by accessing the relevant parts of the MIPS status register.
- */
-val getAccessLevel : unit -> AccessLevel effect {rreg}
-function getAccessLevel() =
- if ((CP0Status.EXL()) | (CP0Status.ERL())) then
- Kernel
- else match CP0Status.KSU()
- {
- 0b00 => Kernel,
- 0b01 => Supervisor,
- 0b10 => User,
- _ => User /* behaviour undefined, assume user */
- }
-
-val checkCP0Access : unit->unit effect{escape, rreg, wreg}
-function checkCP0Access () =
- {
- let accessLevel = getAccessLevel() in
- if ((accessLevel != Kernel) & (~(CP0Status.CU()[0]))) then
- {
- CP0Cause->CE() = 0b00;
- SignalException(CpU);
- }
- }
-
-val incrementCP0Count : unit -> unit effect {rreg,wreg,escape}
-function incrementCP0Count() = {
- TLBRandom = (if (TLBRandom == TLBWired)
- then (TLBIndexMax) else (TLBRandom - 1));
-
- CP0Count = (CP0Count + 1);
- if (CP0Count == CP0Compare) then {
- CP0Cause->IP() = CP0Cause.IP() | 0x80; /* IP7 is timer interrupt */
- };
-
- let ims = CP0Status.IM() in
- let ips = CP0Cause.IP() in
- let ie = CP0Status.IE() in
- let exl = CP0Status.EXL() in
- let erl = CP0Status.ERL() in
- if ((~(exl)) & (~(erl)) & ie & ((ips & ims) != 0x00)) then
- SignalException(Interrupt);
-}
-
-type regno = bits(5) /* a register number */
-type imm16 = bits(16) /* 16-bit immediate */
-/* a commonly used instruction format with three register operands */
-type regregreg = (regno, regno, regno)
-/* a commonly used instruction format with two register operands and 16-bit immediate */
-type regregimm16 = (regno, regno, imm16)
-
-enum decode_failure = {
- no_matching_pattern,
- unsupported_instruction,
- illegal_instruction,
- internal_error
-}
-
-/* Used by branch and trap instructions */
-enum Comparison = {
- EQ, /* equal */
- NE, /* not equal */
- GE, /* signed greater than or equal */
- GEU,/* unsigned greater than or equal */
- GT, /* signed strictly greater than */
- LE, /* signed less than or equal */
- LT, /* signed strictly less than */
- LTU /* unsigned less than or qual */
-}
-
-val compare : (Comparison, bits(64), bits(64)) -> bool
-function compare (cmp, valA, valB) =
- match cmp {
- EQ => valA == valB,
- NE => valA != valB,
- GE => valA >=_s valB,
- GEU => valA >=_u valB,
- GT => valB <_s valA,
- LE => valB >=_s valA,
- LT => valA <_s valB,
- LTU => valA <_u valB
- }
-enum WordType = { B, H, W, D}
-enum WordTypeUnaligned = { WL, WR, DL, DR }
-
-val wordWidthBytes : WordType -> range(1, 8)
-function wordWidthBytes(w) =
- match w {
- B => 1,
- H => 2,
- W => 4,
- D => 8
- }
-
-/* This function checks that memory accesses are naturally aligned
- -- it is disabled in favour of BERI specific behaviour below.
-function bool isAddressAligned(addr, (WordType) wordType) =
- match wordType {
- B => true
- H => (addr[0] == 0)
- W => (addr[1..0] == 0b00)
- D => (addr[2..0] == 0b000)
- }
-*/
-
-/* BERI relaxes the natural alignment requirement for loads and stores
- but still throws an exception if an access spans a cache line
- boundary. Here we assume this is 32 bytes so that we don't have to
- worry about clearing multiple tags when an access spans more than
- one capability. Capability load/stores are still naturally
- aligned. Provided this is a factor of smallest supported page size
- (4k) we don't need to worry about accesses spanning page boundaries
- either.
-*/
-let alignment_width = 16
-val isAddressAligned : (bits(64), WordType) -> bool
-function isAddressAligned (addr, wordType) =
- let a = unsigned(addr) in
- a / alignment_width == (a + wordWidthBytes(wordType) - 1) / alignment_width
-
-val reverse_endianness = "reverse_endianness" : forall 'W, 'W >= 1. bits(8 * 'W) -> bits(8 * 'W) effect pure
-
-/*
-function rec forall Nat 'W, 'W >= 1. bits(8 * 'W) reverse_endianness' (w, value) =
-{
- ([:8 * 'W:]) width = length(value);
- if width <= 8
- then value
- else value[7..0] : reverse_endianness'(w - 1, value[(width - 1) .. 8])
-}
-
-
-
-function rec forall Nat 'W, 'W >= 1. bits(8 * 'W) reverse_endianness ((bits(8 * 'W)) value) =
-{
- reverse_endianness'(sizeof 'W, value)
-}*/
-
-val MEMr_wrapper : forall 'n, 1 <= 'n <= 8 . (bits(64), atom('n)) -> bits(8*'n) effect {rmem, rreg, wreg}
-function MEMr_wrapper (addr, size) =
- if (addr == 0x000000007f000000) then
- {
- let rvalid = UART_RVALID in
- {
- UART_RVALID = [bitzero];
- mask(0x00000000 @ UART_RDATA @ rvalid @ 0b0000000 @ 0x0000)
- }
- }
- else if (addr == 0x000000007f000004) then
- mask(0x000000000004ffff) /* Always plenty of write space available and jtag activity */
- else
- reverse_endianness(MEMr(addr, size)) /* MEMr assumes little endian */
-
-val MEMr_reserve_wrapper : forall 'n, 1 <= 'n <= 8 . ( bits(64) , atom('n) ) -> (bits(8 * 'n)) effect { rmem }
-function MEMr_reserve_wrapper (addr , size) =
- reverse_endianness(MEMr_reserve(addr, size))
-
-
-function init_cp0_state () : unit -> unit = {
- CP0Status->BEV() = bitone;
-}
-
-val init_cp2_state : unit -> unit effect {wreg}
-val cp2_next_pc: unit -> unit effect {rreg, wreg}
-val dump_cp2_state : unit -> unit effect {rreg, escape}
diff --git a/mips/mips_regfp.sail b/mips/mips_regfp.sail
deleted file mode 100644
index 0c77fb9f..00000000
--- a/mips/mips_regfp.sail
+++ /dev/null
@@ -1,455 +0,0 @@
-/*========================================================================*/
-/* */
-/* Copyright (c) 2015-2017 Robert M. Norton */
-/* Copyright (c) 2015-2017 Kathyrn Gray */
-/* All rights reserved. */
-/* */
-/* This software was developed by the University of Cambridge Computer */
-/* Laboratory as part of the Rigorous Engineering of Mainstream Systems */
-/* (REMS) project, funded by EPSRC grant EP/K008528/1. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following conditions */
-/* are met: */
-/* 1. Redistributions of source code must retain the above copyright */
-/* notice, this list of conditions and the following disclaimer. */
-/* 2. Redistributions in binary form must reproduce the above copyright */
-/* notice, this list of conditions and the following disclaimer in */
-/* the documentation and/or other materials provided with the */
-/* distribution. */
-/* */
-/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */
-/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
-/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
-/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */
-/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
-/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */
-/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */
-/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
-/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */
-/* SUCH DAMAGE. */
-/*========================================================================*/
-
-let GPRs : vector <0, 32, inc, string > =
- [ "GPR00", "GPR01", "GPR02", "GPR03", "GPR04", "GPR05", "GPR06", "GPR07", "GPR08", "GPR09", "GPR10",
- "GPR11", "GPR12", "GPR13", "GPR14", "GPR15", "GPR16", "GPR17", "GPR18", "GPR19", "GPR20",
- "GPR21", "GPR22", "GPR23", "GPR24", "GPR25", "GPR26", "GPR27", "GPR28", "GPR29", "GPR30", "GPR31"
- ]
-
-let CIA_fp = RFull("CIA")
-let NIA_fp = RFull("NIA")
-
-function (regfps,regfps,regfps,niafps,diafp,instruction_kind) initial_analysis ((ast) instr) = {
- (regfps) iR = [|| ||];
- (regfps) oR = [|| ||];
- (regfps) aR = [|| ||];
- (instruction_kind) ik = IK_simple;
- (niafps) Nias = [|| ||];
- (diafp) Dia = DIAFP_none;
-
- switch instr {
- (DADDIU (rs, rt, imm)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (DADDU (rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (DADDI (rs, rt, imm)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (DADD (rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (ADD(rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (ADDI(rs, rt, imm)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (ADDU(rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (ADDIU(rs, rt, imm)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (DSUBU (rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (DSUB (rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (SUB(rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (SUBU(rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (AND (rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (ANDI (rs, rt, imm)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (OR (rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (ORI (rs, rt, imm)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (NOR (rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (XOR (rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (XORI (rs, rt, imm)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (LUI (rt, imm)) => {
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (DSLL (rt, rd, sa)) => {
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (DSLL32 (rt, rd, sa)) => {
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (DSLLV (rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (DSRA (rt, rd, sa)) => {
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (DSRA32 (rt, rd, sa)) => {
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (DSRAV (rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (DSRL (rt, rd, sa)) => {
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (DSRL32 (rt, rd, sa)) => {
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (DSRLV (rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (SLL(rt, rd, sa)) => {
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (SLLV(rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (SRA(rt, rd, sa)) => {
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (SRAV(rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (SRL(rt, rd, sa)) => {
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (SRLV(rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (SLT(rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (SLTI(rs, rt, imm)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (SLTU(rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (SLTIU(rs, rt, imm)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (MOVN(rs, rt, rd)) => {
- /* XXX don't always write rd */
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (MOVZ(rs, rt, rd)) => {
- /* XXX don't always write rd */
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (MFHI(rd)) => {
- iR = RFull("HI") :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (MFLO(rd)) => {
- iR = RFull("LO") :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (MTHI(rs)) => {
- oR = RFull("HI") :: oR;
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- }
- (MTLO(rs)) => {
- oR = RFull("LO") :: oR;
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- }
- (MUL(rs, rt, rd)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- if rd == 0 then () else oR = RFull(GPRs[rd]) :: oR;
- }
- (MULT(rs, rt)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- oR = RFull("HI") :: RFull ("LO") :: oR;
- }
- (MULTU(rs, rt)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- oR = RFull("HI") :: RFull ("LO") :: oR;
- }
- (DMULT(rs, rt)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- oR = RFull("HI") :: RFull ("LO") :: oR;
- }
- (DMULTU(rs, rt)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- oR = RFull("HI") :: RFull ("LO") :: oR;
- }
- (MADD(rs, rt)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- iR = RFull("HI") :: RFull ("LO") :: iR;
- oR = RFull("HI") :: RFull ("LO") :: oR;
- }
- (MADDU(rs, rt)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- iR = RFull("HI") :: RFull ("LO") :: iR;
- oR = RFull("HI") :: RFull ("LO") :: oR;
- }
- (MSUB(rs, rt)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- iR = RFull("HI") :: RFull ("LO") :: iR;
- oR = RFull("HI") :: RFull ("LO") :: oR;
- }
- (MSUBU(rs, rt)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- iR = RFull("HI") :: RFull ("LO") :: iR;
- oR = RFull("HI") :: RFull ("LO") :: oR;
- }
- (DIV(rs, rt)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- oR = RFull("HI") :: RFull ("LO") :: oR;
- }
- (DIVU(rs, rt)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- oR = RFull("HI") :: RFull ("LO") :: oR;
- }
- (DDIV(rs, rt)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- oR = RFull("HI") :: RFull ("LO") :: oR;
- }
- (DDIVU(rs, rt)) => {
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- oR = RFull("HI") :: RFull ("LO") :: oR;
- }
- (J(offset)) => {
- /* XXX actually unconditional jump */
- /*ik = IK_cond_branch;*/
- Dia = DIAFP_concrete((PC + 4)[63..28] : offset : 0b00);
- }
- (JAL(offset)) => {
- /* XXX actually unconditional jump */
- /*ik = IK_cond_branch;*/
- oR = RFull("GPR31") :: oR;
- Dia = DIAFP_concrete((PC + 4)[63..28] : offset : 0b00);
- }
- (JR(rs)) => {
- /* XXX actually unconditional jump */
- /*ik = IK_cond_branch;*/
- iR = RFull(GPRs[rs]) :: iR;
- Dia = DIAFP_reg(RFull(GPRs[rs]));
- }
- (JALR(rs, rd)) => {
- /* XXX actually unconditional jump */
- /*ik = IK_cond_branch;*/
- iR = RFull(GPRs[rs]) :: iR;
- oR = RFull("GPR31") :: oR;
- Dia = DIAFP_reg(RFull(GPRs[rs]));
- }
- (BEQ(rs, rd, imm, ne, likely)) => {
- ik = IK_cond_branch;
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if rd == 0 then () else iR = RFull(GPRs[rd]) :: iR;
- let offset : bits(64) = (sign_extend(imm : 0b00) + 4) in
- Dia = DIAFP_concrete (PC + offset);
- }
- (BCMPZ(rs, imm, cmp, link, likely)) => {
- ik = IK_cond_branch;
- if rs == 0 then () else iR = RFull(GPRs[rs]) :: iR;
- if link then
- oR = RFull("GPR31") :: oR;
- let offset : bits(64) = (sign_extend(imm : 0b00) + 4) in
- Dia = DIAFP_concrete (PC + offset);
- }
- (SYSCALL_THREAD_START) => ()
-/*
-
- case (SYSCALL) =
- case (BREAK) =
- case (WAIT) = {
- case (TRAPREG(rs, rt, cmp)) =
- case (TRAPIMM(rs, imm, cmp)) =
-*/
- (Load(width, signed, linked, base, rt, offset)) => {
- ik = IK_mem_read (if linked then Read_reserve else Read_plain);
- if linked then oR = RFull("CP0LLBit")::RFull("CP0LLAddr")::oR else ();
- if base == 0 then () else aR = RFull(GPRs[base]) :: aR;
- iR = aR;
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (Store(width, conditional, base, rt, offset)) => {
- ik = IK_mem_write(if conditional then Write_conditional else Write_plain);
- if base == 0 then () else aR = RFull(GPRs[base]) :: aR;
- iR = aR;
- if conditional then iR = RFull("CP0LLBit")::iR else ();
- if (conditional & (rt != 0)) then oR = RFull(GPRs[rt])::oR else ();
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- }
- (LWL(base, rt, offset)) => {
- ik = IK_mem_read(Read_plain);
- if base == 0 then () else aR = RFull(GPRs[base]) :: aR;
- iR = aR;
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (LWR(base, rt, offset)) => {
- ik = IK_mem_read(Read_plain);
- if base == 0 then () else aR = RFull(GPRs[base]) :: aR;
- iR = aR;
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (SWL(base, rt, offset)) => {
- ik = IK_mem_write(Write_plain);
- if base == 0 then () else aR = RFull(GPRs[base]) :: aR;
- iR = aR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- }
- (SWR(base, rt, offset)) => {
- ik = IK_mem_write(Write_plain);
- if base == 0 then () else aR = RFull(GPRs[base]) :: aR;
- iR = aR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- }
- (LDL(base, rt, offset)) => {
- ik = IK_mem_read(Read_plain);
- if base == 0 then () else aR = RFull(GPRs[base]) :: aR;
- iR = aR;
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (LDR(base, rt, offset)) => {
- ik = IK_mem_read(Read_plain);
- if base == 0 then () else aR = RFull(GPRs[base]) :: aR;
- iR = aR;
- if rt == 0 then () else oR = RFull(GPRs[rt]) :: oR;
- }
- (SDL(base, rt, offset)) => {
- ik = IK_mem_write(Write_plain);
- if base == 0 then () else aR = RFull(GPRs[base]) :: aR;
- iR = aR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- }
- (SDR(base, rt, offset)) => {
- ik = IK_mem_write(Write_plain);
- if base == 0 then () else aR = RFull(GPRs[base]) :: aR;
- iR = aR;
- if rt == 0 then () else iR = RFull(GPRs[rt]) :: iR;
- }
-/*
- case (CACHE(base, op, imm)) =
- case (PREF(base, op, imm)) =
-*/
- (SYNC) => {
- iK = IK_barrier(Barrier_MIPS_SYNC);
- }
-/*
- case (MFC0(rt, rd, sel, double))
- case (HCF)
- case (MTC0(rt, rd, sel, double))
- case (TLBWI)
- case (TLBWR)
- case (TLBR)
- case ((TLBP))
- case (RDHWR(rt, rd))
- case (ERET)
-*/
- };
- (iR,oR,aR,Nias,Dia,ik)
-}
diff --git a/mips/mips_ri.sail b/mips/mips_ri.sail
deleted file mode 100644
index edce0657..00000000
--- a/mips/mips_ri.sail
+++ /dev/null
@@ -1,42 +0,0 @@
-/*========================================================================*/
-/* */
-/* Copyright (c) 2015-2017 Robert M. Norton */
-/* Copyright (c) 2015-2017 Kathyrn Gray */
-/* All rights reserved. */
-/* */
-/* This software was developed by the University of Cambridge Computer */
-/* Laboratory as part of the Rigorous Engineering of Mainstream Systems */
-/* (REMS) project, funded by EPSRC grant EP/K008528/1. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following conditions */
-/* are met: */
-/* 1. Redistributions of source code must retain the above copyright */
-/* notice, this list of conditions and the following disclaimer. */
-/* 2. Redistributions in binary form must reproduce the above copyright */
-/* notice, this list of conditions and the following disclaimer in */
-/* the documentation and/or other materials provided with the */
-/* distribution. */
-/* */
-/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */
-/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
-/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
-/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */
-/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
-/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */
-/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */
-/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
-/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */
-/* SUCH DAMAGE. */
-/*========================================================================*/
-
-/* mips_ri.sail: only use if want unknown instructions to throw
- exception (like real hardware) instead of die (convenient for ppcmem) */
-
-union clause ast = RI : unit
-function clause decode _ = Some(RI())
-function clause execute (RI()) =
- SignalException (ResI)
-
diff --git a/mips/mips_rmem.sail b/mips/mips_rmem.sail
deleted file mode 100644
index 1bc47337..00000000
--- a/mips/mips_rmem.sail
+++ /dev/null
@@ -1,15 +0,0 @@
-/* These instructions are used for RMEM integration only */
-
-/* Co-opt syscall 0xfffff for use as thread start in pccmem */
-union clause ast = SYSCALL_THREAD_START : unit
-function clause decode (0b000000 @ 0xfffff @ 0b001100) =
- Some(SYSCALL_THREAD_START())
-function clause execute (SYSCALL_THREAD_START()) = ()
-
-
-/* fake stop fetching instruction for ppcmem, execute doesn't do anything,
- decode never produces it */
-
-union clause ast = ImplementationDefinedStopFetching : unit
-function clause execute (ImplementationDefinedStopFetching()) = ()
-
diff --git a/mips/mips_tlb.sail b/mips/mips_tlb.sail
deleted file mode 100644
index a8bb819e..00000000
--- a/mips/mips_tlb.sail
+++ /dev/null
@@ -1,140 +0,0 @@
-/*========================================================================*/
-/* */
-/* Copyright (c) 2015-2017 Robert M. Norton */
-/* Copyright (c) 2015-2017 Kathyrn Gray */
-/* All rights reserved. */
-/* */
-/* This software was developed by the University of Cambridge Computer */
-/* Laboratory as part of the Rigorous Engineering of Mainstream Systems */
-/* (REMS) project, funded by EPSRC grant EP/K008528/1. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following conditions */
-/* are met: */
-/* 1. Redistributions of source code must retain the above copyright */
-/* notice, this list of conditions and the following disclaimer. */
-/* 2. Redistributions in binary form must reproduce the above copyright */
-/* notice, this list of conditions and the following disclaimer in */
-/* the documentation and/or other materials provided with the */
-/* distribution. */
-/* */
-/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */
-/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
-/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
-/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */
-/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
-/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */
-/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */
-/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
-/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */
-/* SUCH DAMAGE. */
-/*========================================================================*/
-
-val tlbEntryMatch : (bits(2), bits(27), bits(8), TLBEntry) -> bool effect pure
-function tlbEntryMatch(r, vpn2, asid, entry) =
- let entryValid = entry.valid() in
- let entryR = entry.r() in
- let entryMask = entry.pagemask() in
- let entryVPN = entry.vpn2() in
- let entryASID = entry.asid() in
- let entryG = entry.g() in
- let vpnMask : bits(27) = ~(zero_extend(entryMask)) in
- (entryValid &
- (r == entryR) &
- ((vpn2 & vpnMask) == ((entryVPN) & vpnMask)) &
- ((asid == (entryASID)) | (entryG)))
-
-val tlbSearch : bits(64) -> option(TLBIndexT) effect {rreg}
-function tlbSearch(VAddr) =
- let r = (VAddr[63..62]) in
- let vpn2 = (VAddr[39..13]) in
- let asid = TLBEntryHi.ASID() in {
- foreach (idx from 0 to 63) {
- if(tlbEntryMatch(r, vpn2, asid, reg_deref(TLBEntries[idx]))) then
- return Some(to_bits(6, idx))
- };
- None()
- }
-
-/** For given virtual address and accessType returns physical address and
-bool flag indicating whether capability stores / loads are permitted for
-page (depending on access type). */
-
-val TLBTranslate2 : (bits(64), MemAccessType) -> (bits(64), bool) effect {rreg, wreg, undef, escape}
-function TLBTranslate2 (vAddr, accessType) = {
- let idx = tlbSearch(vAddr) in
- match idx {
- Some(idx) =>
- let i as atom(_) = unsigned(idx) in
- let entry = reg_deref(TLBEntries[i]) in
- let entryMask = entry.pagemask() in
- let 'evenOddBit : range(12,28) = match (entryMask) {
- 0x0000 => 12,
- 0x0003 => 14,
- 0x000f => 16,
- 0x003f => 18,
- 0x00ff => 20,
- 0x03ff => 22,
- 0x0fff => 24,
- 0x3fff => 26,
- 0xffff => 28,
- _ => undefined
- } in
- let isOdd = (vAddr[evenOddBit]) in
- let (caps : bits(1), capl : bits(1), pfn : bits(24), d : bits(1), v : bits(1)) =
- if (isOdd) then
- (entry.caps1(), entry.capl1(), entry.pfn1(), entry.d1(), entry.v1())
- else
- (entry.caps0(), entry.capl0(), entry.pfn0(), entry.d0(), entry.v0()) in
- if (~(v)) then
- SignalExceptionTLB(if (accessType == StoreData) then XTLBInvS else XTLBInvL, vAddr)
- else if ((accessType == StoreData) & ~(d)) then
- SignalExceptionTLB(TLBMod, vAddr)
- else
- let res : bits(64) = zero_extend(pfn[23..(evenOddBit - 12)] @ vAddr[(evenOddBit - 1) .. 0]) in
- (res, bits_to_bool(if (accessType == StoreData) then caps else capl)),
- None() => SignalExceptionTLB(
- if (accessType == StoreData) then XTLBRefillS else XTLBRefillL, vAddr)
- }
-}
-
-/* perform TLB translation. bool is CHERI specific TLB bits noStoreCap/suppressTag */
-val TLBTranslateC : (bits(64), MemAccessType) -> (bits(64), bool) effect {escape, rreg, undef, wreg}
-function TLBTranslateC (vAddr, accessType) =
- {
- let currentAccessLevel = getAccessLevel() in
- let compat32 = (vAddr[61..31] == 0b1111111111111111111111111111111) in
- let (requiredLevel, addr) : (AccessLevel, option(bits(64))) = match (vAddr[63..62]) {
- 0b11 => match (compat32, vAddr[30..29]) { /* xkseg */
- (true, 0b11) => (Kernel, None() : option(bits(64))), /* kseg3 mapped 32-bit compat */
- (true, 0b10) => (Supervisor, None() : option(bits(64))), /* sseg mapped 32-bit compat */
- (true, 0b01) => (Kernel, Some(0x00000000 @ 0b000 @ vAddr[28..0])), /* kseg1 unmapped uncached 32-bit compat */
- (true, 0b00) => (Kernel, Some(0x00000000 @ 0b000 @ vAddr[28..0])), /* kseg0 unmapped cached 32-bit compat */
- (_, _) => (Kernel, None() : option(bits(64))) /* xkseg mapped */
- },
- 0b10 => (Kernel, Some(0b00000 @ vAddr[58..0])), /* xkphys bits 61-59 are cache mode (ignored) */
- 0b01 => (Supervisor, None() : option(bits(64))), /* xsseg - supervisor mapped */
- 0b00 => (User, None() : option(bits(64))) /* xuseg - user mapped */
- } in
- if not(grantsAccess(currentAccessLevel, requiredLevel)) then
- SignalExceptionBadAddr(if (accessType == StoreData) then AdES else AdEL, vAddr)
- else
- let (pa, c) : (bits(64), bool) = match addr {
- Some(a) => (a, false),
- None() => if ((~(compat32)) & (unsigned(vAddr[61..0]) > MAX_VA)) then
- SignalExceptionBadAddr(if (accessType == StoreData) then AdES else AdEL, vAddr)
- else
- TLBTranslate2(vAddr, accessType)
- }
- in if (unsigned(pa) > MAX_PA) then
- SignalExceptionBadAddr(if (accessType == StoreData) then AdES else AdEL, vAddr)
- else
- (pa, c)
- }
-
-/* TLB translate function for MIPS (throws away capability flag) */
-val TLBTranslate : (bits(64), MemAccessType) -> bits(64) effect {rreg, wreg, escape, undef}
-function TLBTranslate (vAddr, accessType) =
- let (addr, c) = TLBTranslateC(vAddr, accessType) in addr
diff --git a/mips/mips_tlb_stub.sail b/mips/mips_tlb_stub.sail
deleted file mode 100644
index c42e4764..00000000
--- a/mips/mips_tlb_stub.sail
+++ /dev/null
@@ -1,48 +0,0 @@
-/*========================================================================*/
-/* */
-/* Copyright (c) 2015-2017 Robert M. Norton */
-/* Copyright (c) 2015-2017 Kathyrn Gray */
-/* All rights reserved. */
-/* */
-/* This software was developed by the University of Cambridge Computer */
-/* Laboratory as part of the Rigorous Engineering of Mainstream Systems */
-/* (REMS) project, funded by EPSRC grant EP/K008528/1. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following conditions */
-/* are met: */
-/* 1. Redistributions of source code must retain the above copyright */
-/* notice, this list of conditions and the following disclaimer. */
-/* 2. Redistributions in binary form must reproduce the above copyright */
-/* notice, this list of conditions and the following disclaimer in */
-/* the documentation and/or other materials provided with the */
-/* distribution. */
-/* */
-/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */
-/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
-/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
-/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */
-/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
-/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */
-/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */
-/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
-/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */
-/* SUCH DAMAGE. */
-/*========================================================================*/
-
-$ifndef _MIPS_TLB_STUB
-$define _MIPS_TLB_STUB
-
-val tlbEntryMatch : (bits(2), bits(27), bits(8), TLBEntry) -> bool effect pure
-function tlbSearch(VAddr) : bits(64) -> option(TLBIndexT) = None()
-
-val TLBTranslate2 : (bits(64), MemAccessType) -> (bits(64), bool) effect pure
-function TLBTranslate (vAddr, accessType) : (bits(64), MemAccessType) -> bits(64) =
- vAddr
-
-val TLBTranslateC : (bits(64), MemAccessType) -> (bits(64), bool) effect pure
-function TLBTranslateC (vAddr, accessType) : (bits(64), MemAccessType) -> (bits(64), bool) = (vAddr, false)
-
-$endif
diff --git a/mips/mips_wrappers.sail b/mips/mips_wrappers.sail
deleted file mode 100644
index 43e759b9..00000000
--- a/mips/mips_wrappers.sail
+++ /dev/null
@@ -1,90 +0,0 @@
-/*========================================================================*/
-/* */
-/* Copyright (c) 2015-2017 Robert M. Norton */
-/* Copyright (c) 2015-2017 Kathyrn Gray */
-/* All rights reserved. */
-/* */
-/* This software was developed by the University of Cambridge Computer */
-/* Laboratory as part of the Rigorous Engineering of Mainstream Systems */
-/* (REMS) project, funded by EPSRC grant EP/K008528/1. */
-/* */
-/* Redistribution and use in source and binary forms, with or without */
-/* modification, are permitted provided that the following conditions */
-/* are met: */
-/* 1. Redistributions of source code must retain the above copyright */
-/* notice, this list of conditions and the following disclaimer. */
-/* 2. Redistributions in binary form must reproduce the above copyright */
-/* notice, this list of conditions and the following disclaimer in */
-/* the documentation and/or other materials provided with the */
-/* distribution. */
-/* */
-/* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' */
-/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
-/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
-/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR */
-/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
-/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
-/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF */
-/* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND */
-/* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
-/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
-/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */
-/* SUCH DAMAGE. */
-/*========================================================================*/
-
-/* mips_wrappers.sail: wrappers functions and hooks for CHERI extensibility
- (mostly identity functions here) */
-
-val MEMw_wrapper : forall 'n, 1 <= 'n <= 8. (bits(64), atom('n), bits(8 * 'n)) -> unit effect {eamem, wmv, wreg}
-
-function MEMw_wrapper(addr, size, data) =
- let ledata = reverse_endianness(data) in
- if (addr == 0x000000007f000000) then
- {
- UART_WDATA = ledata[7..0];
- UART_WRITTEN = bitone;
- } else {
- MEMea(addr, size);
- MEMval(addr, size, ledata);
- }
-
-val MEMw_conditional_wrapper : forall 'n, 1 <= 'n <= 8. (bits(64), atom('n), bits(8 * 'n)) -> bool effect {eamem, wmv}
-
-function MEMw_conditional_wrapper(addr, size, data) =
- {
- MEMea_conditional(addr, size);
- MEMval_conditional(addr, size, reverse_endianness(data))
- }
-
-val addrWrapper : (bits(64), MemAccessType, WordType) -> bits(64)
-function addrWrapper(addr, accessType, width) =
- addr
-
-val addrWrapperUnaligned : (bits(64), MemAccessType, WordTypeUnaligned) -> bits(64)
-function addrWrapperUnaligned(addr, accessType, width) =
- addr
-
-$ifdef _MIPS_TLB_STUB
-val TranslatePC : bits(64) -> bits(64) effect {rreg, wreg, escape}
-$else
-val TranslatePC : bits(64) -> bits(64) effect {rreg, wreg, escape, undef}
-$endif
-
-function TranslatePC (vAddr) = {
- incrementCP0Count();
- if (vAddr[1..0] != 0b00) then /* bad PC alignment */
- (SignalExceptionBadAddr(AdEL, vAddr))
- else
- TLBTranslate(vAddr, Instruction)
-}
-
-let have_cp2 = false
-
-function SignalException (ex) = SignalExceptionMIPS(ex, 0x0000000000000000)
-
-val ERETHook : unit -> unit
-function ERETHook() = ()
-
-function init_cp2_state () = skip_wreg()
-function cp2_next_pc() = {skip_wreg(); skip_rreg()}
-function dump_cp2_state () = {skip_rreg(); skip_escape();}
diff --git a/mips/prelude.sail b/mips/prelude.sail
deleted file mode 100644
index 094f82e8..00000000
--- a/mips/prelude.sail
+++ /dev/null
@@ -1,223 +0,0 @@
-default Order dec
-
-val "reg_deref" : forall ('a : Type). register('a) -> 'a effect {rreg}
-/* sneaky deref with no effect necessary for bitfield writes */
-val _reg_deref = "reg_deref" : forall ('a : Type). register('a) -> 'a
-
-/* this is here because if we don't have it before including vector_dec
- we get infinite loops caused by interaction with bool/bit casts */
-val eq_bit2 = "eq_bit" : (bit, bit) -> bool
-overload operator == = {eq_bit2}
-
-$include <smt.sail>
-$include <flow.sail>
-$include <arith.sail>
-$include <option.sail>
-$include <vector_dec.sail>
-
-val eq_anything = {ocaml: "(fun (x, y) -> x = y)", lem: "eq", coq: "generic_eq", _:"eq_anything"} : forall ('a : Type). ('a, 'a) -> bool
-overload operator == = {eq_anything}
-
-val not_vec = {c:"not_bits", _:"not_vec"} : forall 'n. bits('n) -> bits('n)
-
-overload ~ = {not_bool, not_vec}
-
-val not = {coq:"negb", _:"not"} : bool -> bool
-
-val neq_vec = {lem: "neq"} : forall 'n. (bits('n), bits('n)) -> bool
-function neq_vec (x, y) = not_bool(eq_bits(x, y))
-
-val neq_anything = {lem: "neq", coq: "generic_neq"} : forall ('a : Type). ('a, 'a) -> bool
-function neq_anything (x, y) = not_bool(x == y)
-
-overload operator != = {neq_atom, neq_int, neq_vec, neq_anything}
-
-val and_bits = {c:"and_bits", _: "and_vec"} : forall 'n. (bits('n), bits('n)) -> bits('n)
-
-overload operator & = {and_bool, and_bits}
-
-val or_bits = {c: "or_bits", _: "or_vec"} : forall 'n. (bits('n), bits('n)) -> bits('n)
-
-overload operator | = {or_bool, or_bits}
-
-val cast cast_unit_vec : bit -> bits(1)
-
-function cast_unit_vec b = match b {
- bitzero => 0b0,
- _ => 0b1
-}
-
-val print = "print_endline" : string -> unit
-
-val "prerr_endline" : string -> unit
-
-val "prerr_string" : string -> unit
-
-val putchar = {c:"sail_putchar", _:"putchar"} : int -> unit
-
-val concat_str = {lem: "stringAppend", coq: "String.append", _: "concat_str"} : (string, string) -> string
-
-val string_of_int = "string_of_int" : int -> string
-/* Unused?
-val DecStr : int -> string
-
-val HexStr : int -> string
-*/
-val BitStr = "string_of_bits" : forall 'n. bits('n) -> string
-
-val xor_vec = {c: "xor_bits" , _: "xor_vec"} : forall 'n. (bits('n), bits('n)) -> bits('n)
-
-val int_power = {ocaml: "int_power", lem: "pow", coq: "Z.pow"} : (int, int) -> int
-
-overload operator ^ = {xor_vec, int_power}
-
-val add_range = {ocaml: "add_int", lem: "integerAdd", coq: "add_range", c: "add_int"} : forall 'n 'm 'o 'p.
- (range('n, 'm), range('o, 'p)) -> range('n + 'o, 'm + 'p)
-
-val add_vec = "add_vec" : forall 'n. (bits('n), bits('n)) -> bits('n)
-
-val add_vec_int = "add_vec_int" : forall 'n. (bits('n), int) -> bits('n)
-
-overload operator + = {add_range, add_int, add_vec, add_vec_int}
-
-val sub_range = {ocaml: "sub_int", lem: "integerMinus", coq: "sub_range"} : forall 'n 'm 'o 'p.
- (range('n, 'm), range('o, 'p)) -> range('n - 'p, 'm - 'o)
-
-val sub_vec = {c : "sub_bits", _:"sub_vec"} : forall 'n. (bits('n), bits('n)) -> bits('n)
-
-val sub_vec_int = {c:"sub_bits_int", _: "sub_vec_int"} : forall 'n. (bits('n), int) -> bits('n)
-
-val negate_range = {ocaml: "minus_big_int", lem: "integerNegate", coq: "negate_range"} : forall 'n 'm. range('n, 'm) -> range(- 'm, - 'n)
-
-overload operator - = {sub_range, sub_int, sub_vec, sub_vec_int}
-
-overload negate = {negate_range, negate_int}
-
-overload operator * = {mult_int}
-
-val quotient_nat = {ocaml: "quotient", lem: "integerDiv", coq: "Z.div"} : (nat, nat) -> nat
-
-val quotient = {ocaml: "quotient", lem: "integerDiv", coq: "Z.mod"} : (int, int) -> int
-
-overload operator / = {quotient_nat, quotient}
-
-val quot_round_zero = {ocaml: "quot_round_zero", lem: "hardware_quot", coq: "Z.quot", _ : "tdiv_int"} : (int, int) -> int
-val rem_round_zero = {ocaml: "rem_round_zero", lem: "hardware_mod", coq: "Z.rem", _ : "tmod_int"} : (int, int) -> int
-
-val modulus = {ocaml: "modulus", lem: "hardware_mod", coq: "euclid_modulo", _ : "tmod_int"} : forall 'n, 'n > 0 . (int, atom('n)) -> range(0, 'n - 1)
-
-overload operator % = {modulus}
-
-val min_nat = {lem: "min", coq: "Z.min", _: "min_int"} : (nat, nat) -> nat
-
-val min_int = {lem: "min", coq: "Z.min", _: "min_int"} : (int, int) -> int
-
-val max_nat = {lem: "max", coq: "Z.max", _: "max_int"} : (nat, nat) -> nat
-
-val max_int = {lem: "max", coq: "Z.max", _: "max_int"} : (int, int) -> int
-
-val min_atom = {ocaml: "min_int", lem: "min", coq: "min_atom", c:"min_int"} : forall 'a 'b . (atom('a), atom('b)) -> {'c, ('c = 'a | 'c = 'b) & 'c <= 'a & 'c <= 'b . atom('c)}
-
-val max_atom = {ocaml: "max_int", lem: "max", coq: "max_atom", c:"max_int"} : forall 'a 'b . (atom('a), atom('b)) -> {'c, ('c = 'a | 'c = 'b) & 'c >= 'a & 'c >= 'b . atom('c)}
-
-overload min = {min_atom, min_nat, min_int}
-
-overload max = {max_atom, max_nat, max_int}
-
-val __WriteRAM = "write_ram" : forall 'n 'm.
- (atom('m), atom('n), bits('m), bits('m), bits(8 * 'n)) -> bool effect {wmv}
-
-val __MIPS_write : forall 'n. (bits(64), atom('n), bits(8 * 'n)) -> unit effect {wmv}
-function __MIPS_write (addr, width, data) = let _ = __WriteRAM(64, width, 0x0000_0000_0000_0000, addr, data) in ()
-
-val __ReadRAM = "read_ram" : forall 'n 'm, 'n >= 0.
- (atom('m), atom('n), bits('m), bits('m)) -> bits(8 * 'n) effect {rmem}
-
-val __MIPS_read : forall 'n, 'n >= 0. (bits(64), atom('n)) -> bits(8 * 'n) effect {rmem}
-function __MIPS_read (addr, width) = __ReadRAM(64, width, 0x0000_0000_0000_0000, addr)
-
-infix 8 ^^
-val operator ^^ = {lem: "replicate_bits"} : forall 'n 'm, 'm >= 0 . (bits('n), atom('m)) -> bits('n * 'm)
-function operator ^^ (bs, n) = replicate_bits (bs, n)
-
-val pow2 = "pow2" : forall 'n. atom('n) -> atom(2 ^ 'n)
-
-union exception = {
- ISAException : unit,
- Error_not_implemented : string,
- Error_misaligned_access : unit,
- Error_EBREAK : unit,
- Error_internal_error : unit
-}
-
-val mips_sign_extend : forall 'n 'm , 'm >= 'n . bits('n) -> bits('m)
-val mips_zero_extend : forall 'n 'm , 'm >= 'n . bits('n) -> bits('m)
-
-function mips_sign_extend v = sail_sign_extend(v, sizeof('m))
-function mips_zero_extend v = sail_zero_extend(v, sizeof('m))
-
-overload sign_extend = {mips_sign_extend}
-overload zero_extend = {mips_zero_extend}
-
-val zeros : forall 'n, 'n >= 0 . unit -> bits('n)
-function zeros() = replicate_bits (0b0,'n)
-
-val ones : forall 'n, 'n >= 0 . unit -> bits('n)
-function ones() = replicate_bits (0b1,'n)
-
-infix 4 <_s
-infix 4 >=_s
-infix 4 <_u
-infix 4 >=_u
-
-val operator <_s : forall 'n, 'n > 0. (bits('n), bits('n)) -> bool
-val operator >=_s : forall 'n, 'n > 0. (bits('n), bits('n)) -> bool
-val operator <_u : forall 'n, 'n >= 0. (bits('n), bits('n)) -> bool
-val operator >=_u : forall 'n, 'n >= 0. (bits('n), bits('n)) -> bool
-
-function operator <_s (x, y) = signed(x) < signed(y)
-function operator >=_s (x, y) = signed(x) >= signed(y)
-function operator <_u (x, y) = unsigned(x) < unsigned(y)
-function operator >=_u (x, y) = unsigned(x) >= unsigned(y)
-
-val cast bool_to_bits : bool -> bits(1)
-function bool_to_bits x = if x then 0b1 else 0b0
-
-val cast bit_to_bool : bit -> bool
-function bit_to_bool b = match b {
- bitone => true,
- _ => false
-}
-
-val cast bits_to_bool : bits(1) -> bool
-function bits_to_bool x = bit_to_bool(x[0])
-
-infix 1 >>
-infix 1 <<
-infix 1 >>_s
-
-val "shift_bits_right" : forall 'n 'm. (bits('n), bits('m)) -> bits('n) effect {undef}
-val "shift_bits_left" : forall 'n 'm. (bits('n), bits('m)) -> bits('n) effect {undef}
-
-val "shiftl" : forall 'm 'n, 'n >= 0. (bits('m), atom('n)) -> bits('m)
-val "shiftr" : forall 'm 'n, 'n >= 0. (bits('m), atom('n)) -> bits('m)
-
-overload operator >> = {shift_bits_right, shiftr}
-overload operator << = {shift_bits_left, shiftl}
-val operator >>_s = "shift_bits_right_arith" : forall 'n 'm. (bits('n), bits('m)) -> bits('n) effect {undef}
-
-infix 7 *_s
-val operator *_s = "mults_vec" : forall 'n . (bits('n), bits('n)) -> bits(2 * 'n)
-infix 7 *_u
-val operator *_u = "mult_vec" : forall 'n . (bits('n), bits('n)) -> bits(2 * 'n)
-
-/*!
-\function{to\_bits} converts an integer to a bit vector of given length. If the integer is negative a twos-complement representation is used. If the integer is too large (or too negative) to fit in the requested length then it is truncated to the least significant bits.
-*/
-val to_bits : forall 'l, 'l >= 0 .(atom('l), int) -> bits('l)
-function to_bits (l, n) = get_slice_int(l, n, 0)
-
-val mask : forall 'm 'n , 'm >= 'n > 0 . bits('m) -> bits('n)
-function mask bs = bs['n - 1 .. 0]
-
-val "get_time_ns" : unit -> int
diff --git a/mips/sim.dts b/mips/sim.dts
deleted file mode 100644
index d1720441..00000000
--- a/mips/sim.dts
+++ /dev/null
@@ -1,79 +0,0 @@
-/dts-v1/;
-/ {
- model = "SRI/Cambridge BERI simulation";
- compatible = "sri-cambridge,beri-sim";
- #address-cells = <1>;
- #size-cells = <1>;
- sri-cambridge,build-time = <0 1527247299>;
- sri-cambridge,build-host = "TODO";
- sri-cambridge,build-path = "TODO";
- sri-cambridge,build-source-path = "TODO";
- sri-cambridge,build-source-revision = "TODO";
-
- cpus {
- #address-cells = <1>;
- #size-cells = <1>;
- status = "disabled";
- enable-method = "spin-table";
-
- cpu@0 {
- device-type = "cpu";
- compatible = "sri-cambridge,beri";
-
- reg = <0 1>;
- status = "okay";
- };
- };
-
- cpuintc: cpuintc@0 {
- #address-cells = <0>;
- #interrupt-cells = <1>;
- interrupt-controller;
- compatible = "mti,cpu-interrupt-controller";
- };
- /* THE PIC IS A LIE!
- FreeBSD panics if there isn't one even though
- we don't actually need one if we put the UART
- in polled mode. We can get away with just pointing
- FreeBSD at some plain memory and telling it that
- is a PIC... */
- beripic0: beripic@7f804000 {
- compatible = "sri-cambridge,beri-pic";
- interrupt-controller;
- #address-cells = <0>;
- #interrupt-cells = <1>;
- reg = <0x7f804000 0x400
- 0x7f806000 0x10
- 0x7f806080 0x10
- 0x7f806100 0x10>;
- interrupts = < 2 3 4 5 6 >;
- hard-interrupt-sources = <64>;
- soft-interrupt-sources = <64>;
- interrupt-parent = <&cpuintc>;
- };
- soc {
- #address-cells = <1>;
- #size-cells = <1>;
- #interrupt-cells = <1>;
-
- compatible = "simple-bus", "mips,mips4k";
- ranges;
-
- memory {
- device_type = "memory";
- reg = <0x0 0x4000000>;
- };
-
- serial@7f000000 {
- compatible = "altera,jtag_uart-11_0";
- reg = <0x7f000000 0x40>;
- /* Removing these two lines puts the UART
- in polled mode which is necessary because
- we don't have a PIC or a UART capable of
- generating interrupts. Fortunately FreeBSD
- copes.
- interrupts = <0>;
- interrupt-parent = <&beripic0>;*/
- };
- };
-};
diff --git a/test/run_tests.sh b/test/run_tests.sh
index 336a70f9..5e6fe691 100755
--- a/test/run_tests.sh
+++ b/test/run_tests.sh
@@ -46,9 +46,3 @@ printf "RISCV spec tests\n"
printf "==========================================\n"
./riscv/run_tests.sh
-
-printf "\n==========================================\n"
-printf "CHERI spec tests\n"
-printf "==========================================\n"
-
-./cheri/run_tests.sh