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.