gingerBill
45413b78a4
asm: #clobber %flags replaces #clobber flags
2026-09-08 11:56:44 +01:00
gingerBill
c9da30f51d
Minor logic clean-up
2026-09-08 11:50:52 +01:00
gingerBill
c1b51f915e
asm: Change logic for shifting with unsigned and signed numbers with n>>1 style operands
2026-09-08 11:40:32 +01:00
gingerBill
2816c1a4ae
asm: Improve error propagation with condition code identifiers
2026-09-08 10:41:53 +01:00
gingerBill
b703f33d22
asm: Give good error message when trying to use condition code identifiers that are not defined, even giving hints as to what you should define them as.
2026-09-08 10:37:29 +01:00
gingerBill
e5bce4b2ad
asm: add exceptions to the whole descriptor-table ops (lgdt/lidt/sgdt/sidt)
2026-09-08 10:05:54 +01:00
gingerBill
a6004f297f
Improve describe_form for AsmOperand_RegisterShift
2026-09-08 09:37:28 +01:00
gingerBill
2a48d1f3be
asm: Support add x, y, z<<1 style syntax for the arm64 target
2026-09-08 09:16:45 +01:00
gingerBill
56f0fbe1c2
Fix scaled-index shift test to only test on arm64
2026-09-07 19:00:05 +01:00
gingerBill
654b3a8895
asm: Generalize memory operand syntax to a flat term list
...
Parse `[...]` as `term { (+|-) term }` where each term is `operand [ (*|<<|>>) operand ]`.
This allows for constant-only terms to be folded in-place, especially for things like displacement.
e.g. `[p + 8*32]` means `[p + 256]`.
Term order is also free: `[8 + p]` == `[p + 8]`
2026-09-07 18:39:59 +01:00
gingerBill
c59786ce87
asm: Constant fold [ptr + 8*32] to mean [ptr + 256], and not index=8/scale=32
2026-09-07 15:45:44 +01:00
gingerBill
94aba2bd6b
Support #reserve for asm registers
2026-09-07 14:43:58 +01:00
gingerBill
773383879a
Fix #7521 - check for target feature for parameters not being enabled and then labelled correctly
2026-09-07 13:04:41 +01:00
gingerBill
3f873d656c
Check for non allocateable registers and disallow them to be pinned to output parameters
2026-09-07 12:26:38 +01:00
gingerBill
c7201725d5
Support %rip relative memory operands for amd64 [.label]
2026-09-03 18:09:23 +01:00
gingerBill
7dd33b5e48
Implement #pre/#post` memory operand forms
2026-08-31 18:31:37 +01:00
gingerBill
4f8a91092b
Add more MOV forms; fix liveness check for lanes
2026-08-31 17:51:24 +01:00
gingerBill
07b5c2ee0f
Support enable_target_feature and require_target_feature for asm templates
2026-08-31 16:39:17 +01:00
gingerBill
df3b988db8
asm: add new operand kind for lanes (arm64)
2026-08-31 15:45:44 +01:00
gingerBill
c789811597
Add a form transfer bytes check for memory operands
2026-08-31 15:15:46 +01:00
gingerBill
af0842343d
Work on trying to get the arm64 asm backend working
2026-08-31 11:02:06 +01:00
gingerBill
3d8437d152
Get the ARM64 frontend working
2026-08-31 10:23:09 +01:00
gingerBill
210defa21b
Handle system registers and conditional branching instructions correctly.
2026-08-31 09:55:01 +01:00
gingerBill
3b3bba54a8
Update for new mnemonics
2026-08-27 15:06:12 +01:00
gingerBill
d8cea6ceb0
asm: semantic checking for v[idx] (arm style)
2026-08-27 13:02:10 +01:00
gingerBill
87b9b39749
Begin integrating arm64 into the Odin compiler
2026-08-27 11:39:23 +01:00
gingerBill
d805730c67
Correct cpp-gen.odin files
2026-08-27 10:59:54 +01:00
gingerBill
f7f3d3f198
asm: reenable riscv64
2026-08-25 19:30:38 +01:00
gingerBill
337bb43948
asm: minor cleanups
2026-08-25 13:40:16 +01:00
gingerBill
b4cf9b14bd
asm: Implement sub-register width analysis
2026-08-25 12:17:06 +01:00
gingerBill
173443cdd1
Add read-before-write for flags, and fix bugs caused by typos
2026-08-25 10:26:27 +01:00
gingerBill
6f65d775c2
Re-add check_asm_cfg_liveness
2026-08-25 09:43:31 +01:00
gingerBill
13394e8bcd
asm: remove liveness backwards check as it causes way too many false positives
2026-08-24 23:49:23 +01:00
gingerBill
e093329012
asm: add a backward liveness check for the CFG
2026-08-24 23:35:41 +01:00
gingerBill
a9068261bf
Fix view-width testing for unpinned parameters in the lattice
2026-08-24 23:13:12 +01:00
gingerBill
032566714c
asm: correctly handle flags in the CFG
2026-08-24 22:56:49 +01:00
gingerBill
a2d9ca8697
Remove unneeded hash maps when you can store the data directly on the nodes
2026-08-24 22:25:53 +01:00
gingerBill
7fcf65d2c2
asm: General clean up of the CFG code and remove redundant calculations
2026-08-24 22:17:31 +01:00
gingerBill
322f59dae0
Implement a CFG for the assembler to improve the soundness of the checks
2026-08-24 21:49:32 +01:00
gingerBill
b69e61983a
Mock out the data structures for working on a CFG for asm
2026-08-24 19:52:56 +01:00
gingerBill
3e159a4e10
Add #no_init suffix directive for asm specifications.
2026-08-24 19:10:32 +01:00
gingerBill
dfa473f2c8
Minor grammar fix in error message
2026-08-24 18:20:12 +01:00
gingerBill
9ae9a9bf99
asm: Add support for constraint checks such as division by zero or overshifting
2026-08-24 18:18:28 +01:00
gingerBill
9367fa2ec2
Even more general clean ups
2026-08-24 16:58:37 +01:00
gingerBill
670b996f91
Minor clean ups
2026-08-24 16:43:36 +01:00
gingerBill
13558978be
Fix typo
2026-08-24 16:40:02 +01:00
gingerBill
427d300562
asm: minor cleanups
2026-08-24 16:39:23 +01:00
gingerBill
171bdaf378
asm: check for undefined output parameters
2026-08-24 16:25:00 +01:00
gingerBill
e59da59826
Add support to check if an output is being read before it is written to; fix -vet-unused on input parameters
2026-08-24 16:14:25 +01:00
gingerBill
2f588e0329
Correct clobbering for instructions which did not write actually write to memory
2026-08-24 12:20:45 +01:00