Source/Packages

Compiler.MachineAArch64

packages/compiler/src/Compiler/MachineAArch64.alpha

1,480 lines362 declarations58.2 KiBSHA-256 16c7a1ba00f1

def · lines 1058–1412

aarch64EncodeInstruction

Full file
1058def aarch64EncodeInstruction :
1059  (pi unrestricted instruction : (family AArch64Instruction) . (family AArch64EncodeResult)) =
1060  (lambda unrestricted instruction : (family AArch64Instruction) .
1061    (eliminate
1062      AArch64Instruction
1063      (lambda unrestricted current : (family AArch64Instruction) . (family AArch64EncodeResult))
1064      instruction
1065      (branch
1066        AArch64MoveWideZero
1067        destination
1068        value
1069        shift
1070        .
1071        (aarch64WideWord 210 destination value shift))
1072      (branch
1073        AArch64MoveWideKeep
1074        destination
1075        value
1076        shift
1077        .
1078        (aarch64WideWord 242 destination value shift))
1079      (branch
1080        AArch64MoveRegister
1081        destination
1082        source
1083        .
1084        (aarch64ByteWord
1085          (naturalAdd aarch64StackPointerByte0 (aarch64LowFive destination))
1086          aarch64StackPointerByte1
1087          (aarch64RegisterCode source)
1088          170))
1089      (branch
1090        AArch64AddImmediate
1091        destination
1092        source
1093        value
1094        .
1095        (aarch64ImmediateWord 145 (aarch64LowFive destination) source value))
1096      (branch
1097        AArch64SubtractImmediate
1098        destination
1099        source
1100        value
1101        .
1102        (aarch64ImmediateWord 209 (aarch64LowFive destination) source value))
1103      (branch
1104        AArch64AddRegister
1105        destination
1106        left
1107        right
1108        .
1109        (aarch64ThreeRegisterWord 0 0 139 destination left right))
1110      (branch
1111        AArch64SubtractRegister
1112        destination
1113        left
1114        right
1115        .
1116        (aarch64ThreeRegisterWord 0 0 203 destination left right))
1117      (branch
1118        AArch64AndRegister
1119        destination
1120        left
1121        right
1122        .
1123        (aarch64ThreeRegisterWord 0 0 138 destination left right))
1124      (branch
1125        AArch64OrRegister
1126        destination
1127        left
1128        right
1129        .
1130        (aarch64ThreeRegisterWord 0 0 170 destination left right))
1131      (branch
1132        AArch64ExclusiveOrRegister
1133        destination
1134        left
1135        right
1136        .
1137        (aarch64ThreeRegisterWord 0 0 202 destination left right))
1138      (branch
1139        AArch64ShiftLeftImmediate
1140        destination
1141        source
1142        amount
1143        .
1144        (aarch64ShiftLeftWord destination source amount))
1145      (branch
1146        AArch64ShiftRightImmediate
1147        destination
1148        source
1149        amount
1150        .
1151        (aarch64ShiftRightWord destination source amount))
1152      (branch
1153        AArch64MultiplyRegister
1154        destination
1155        left
1156        right
1157        .
1158        (aarch64ThreeRegisterWord 124 0 155 destination left right))
1159      (branch
1160        AArch64DivideRegisterUnsigned
1161        destination
1162        left
1163        right
1164        .
1165        (aarch64ThreeRegisterWord 8 192 154 destination left right))
1166      (branch
1167        AArch64CompareImmediate
1168        register
1169        value
1170        .
1171        (aarch64ImmediateWord 241 aarch64ZeroRegisterByte0 register value))
1172      (branch
1173        AArch64CompareRegister
1174        left
1175        right
1176        .
1177        (aarch64ByteWord
1178          (naturalAdd aarch64ZeroRegisterByte0 (aarch64RnByte0 left))
1179          (aarch64RnByte1 left)
1180          (aarch64RegisterCode right)
1181          235))
1182      (branch
1183        AArch64LoadMemory64
1184        destination
1185        base
1186        offset
1187        .
1188        (aarch64ScaledMemoryWord aarch64SixtyFour 249 destination base offset))
1189      (branch
1190        AArch64StoreMemory64
1191        base
1192        offset
1193        source
1194        .
1195        (aarch64ScaledMemoryWord 0 249 source base offset))
1196      (branch
1197        AArch64LoadMemory32ZeroExtend
1198        destination
1199        base
1200        offset
1201        .
1202        (aarch64ScaledMemoryWord32 aarch64SixtyFour 185 destination base offset))
1203      (branch
1204        AArch64StoreMemory32
1205        base
1206        offset
1207        source
1208        .
1209        (aarch64ScaledMemoryWord32 0 185 source base offset))
1210      (branch
1211        AArch64LoadMemory8ZeroExtend
1212        destination
1213        base
1214        offset
1215        .
1216        (aarch64ByteMemoryWord aarch64SixtyFour 57 destination base offset))
1217      (branch
1218        AArch64StoreMemory8
1219        base
1220        offset
1221        source
1222        .
1223        (aarch64ByteMemoryWord 0 57 source base offset))
1224      (branch
1225        AArch64AddressRelative
1226        destination
1227        direction
1228        distance
1229        .
1230        (aarch64AddressWord destination direction distance))
1231      (branch AArch64Branch direction distance . (aarch64Branch26Word 20 direction distance))
1232      (branch AArch64BranchLink direction distance . (aarch64Branch26Word 148 direction distance))
1233      (branch
1234        AArch64BranchLinkRegister
1235        target
1236        .
1237        (aarch64ByteWord (aarch64RnByte0 target) (aarch64RnByte1 target) 63 214))
1238      (branch
1239        AArch64BranchIf
1240        condition
1241        direction
1242        distance
1243        .
1244        (aarch64Branch19Word 84 (aarch64ConditionCode condition) direction distance))
1245      (branch
1246        AArch64CompareBranchIfZero
1247        register
1248        direction
1249        distance
1250        .
1251        (aarch64Branch19Word 180 (aarch64LowFive register) direction distance))
1252      (branch
1253        AArch64CompareBranchIfNotZero
1254        register
1255        direction
1256        distance
1257        .
1258        (aarch64Branch19Word 181 (aarch64LowFive register) direction distance))
1259      (branch
1260        AArch64AddImmediateFromStackPointer
1261        destination
1262        value
1263        .
1264        (aarch64EncodeBounded
1265          value
1266          aarch64Immediate12Limit
1267          (aarch64ByteWord
1268            (naturalAdd aarch64StackPointerByte0 (aarch64LowFive destination))
1269            (naturalAdd aarch64StackPointerByte1 (aarch64Immediate12Byte1 value))
1270            (aarch64Immediate12Byte2 value)
1271            145)))
1272      (branch AArch64AddStackPointer value shift . (aarch64StackAdjustWord 145 value shift))
1273      (branch AArch64SubtractStackPointer value shift . (aarch64StackAdjustWord 209 value shift))
1274      (branch
1275        AArch64LoadMemory64FromStack
1276        destination
1277        offset
1278        .
1279        (aarch64StackScaledWord aarch64SixtyFour 249 destination offset))
1280      (branch
1281        AArch64StoreMemory64ToStack
1282        offset
1283        source
1284        .
1285        (aarch64StackScaledWord 0 249 source offset))
1286      (branch
1287        AArch64LoadMemory8FromStack
1288        destination
1289        offset
1290        .
1291        (aarch64StackByteWord aarch64SixtyFour 57 destination offset))
1292      (branch AArch64StoreMemory8ToStack offset source . (aarch64StackByteWord 0 57 source offset))
1293      (branch AArch64Return . (aarch64ByteWord 192 3 95 214))
1294      (branch AArch64SupervisorCall . (aarch64ByteWord 1 0 0 212))
1295      (branch AArch64DataSynchronizationBarrierSystem . (aarch64ByteWord 159 63 3 213))
1296      (branch
1297        AArch64FloatAdd32
1298        destination
1299        left
1300        right
1301        .
1302        (aarch64FloatDataWord aarch64Two destination left right))
1303      (branch
1304        AArch64FloatSubtract32
1305        destination
1306        left
1307        right
1308        .
1309        (aarch64FloatDataWord 3 destination left right))
1310      (branch
1311        AArch64FloatMultiply32
1312        destination
1313        left
1314        right
1315        .
1316        (aarch64FloatDataWord 0 destination left right))
1317      (branch
1318        AArch64FloatDivide32
1319        destination
1320        left
1321        right
1322        .
1323        (aarch64FloatDataWord 1 destination left right))
1324      (branch
1325        AArch64FloatCompare32
1326        left
1327        right
1328        .
1329        (aarch64FloatCompareWord left right))
1330      (branch
1331        AArch64FloatMoveFromGeneral32
1332        destination
1333        source
1334        .
1335        (aarch64ByteWord
1336          (naturalAdd (aarch64FloatRdByte0 destination) (aarch64RnByte0 source))
1337          (aarch64RnByte1 source)
1338          39
1339          30))
1340      (branch
1341        AArch64FloatMoveToGeneral32
1342        destination
1343        source
1344        .
1345        (aarch64ByteWord
1346          (naturalAdd (aarch64LowFive destination) (aarch64FloatRnByte0 source))
1347          (aarch64FloatRnByte1 source)
1348          38
1349          30))
1350      (branch
1351        AArch64ReadFloatControl
1352        destination
1353        .
1354        (aarch64ByteWord (aarch64LowFive destination) 68 59 213))
1355      (branch
1356        AArch64WriteFloatControl
1357        source
1358        .
1359        (aarch64ByteWord (aarch64LowFive source) 68 27 213))
1360      (branch AArch64FloatAdd64 destination left right . (aarch64FloatData64Word aarch64Two destination left right))
1361      (branch AArch64FloatSubtract64 destination left right . (aarch64FloatData64Word 3 destination left right))
1362      (branch AArch64FloatMultiply64 destination left right . (aarch64FloatData64Word 0 destination left right))
1363      (branch AArch64FloatDivide64 destination left right . (aarch64FloatData64Word 1 destination left right))
1364      (branch
1365        AArch64FloatSquareRoot64
1366        destination
1367        source
1368        .
1369        (aarch64FloatUnaryWord 192 97 30 destination source))
1370      (branch
1371        AArch64FloatFromSigned64
1372        destination
1373        source
1374        .
1375        (aarch64ByteWord
1376          (naturalAdd (aarch64FloatRdByte0 destination) (aarch64RnByte0 source))
1377          (aarch64RnByte1 source)
1378          98
1379          158))
1380      (branch
1381        AArch64FloatNarrow64To32
1382        destination
1383        source
1384        .
1385        (aarch64FloatUnaryWord aarch64SixtyFour 98 30 destination source))
1386      (branch
1387        AArch64FloatWiden32To64
1388        destination
1389        source
1390        .
1391        (aarch64FloatUnaryWord 192 34 30 destination source))
1392      (branch
1393        AArch64FloatMoveFromGeneral64
1394        destination
1395        source
1396        .
1397        (aarch64ByteWord
1398          (naturalAdd (aarch64FloatRdByte0 destination) (aarch64RnByte0 source))
1399          (aarch64RnByte1 source)
1400          103
1401          158))
1402      (branch
1403        AArch64FloatMoveToGeneral64
1404        destination
1405        source
1406        .
1407        (aarch64ByteWord
1408          (naturalAdd (aarch64LowFive destination) (aarch64FloatRnByte0 source))
1409          (aarch64FloatRnByte1 source)
1410          102
1411          158))
1412      (branch AArch64DataSynchronizationBarrier . (aarch64ByteWord 159 63 3 213))))

The compiler supplied declaration spans and resolved links from this source snapshot. This page does not assert that this file belongs to a checked closure.