Go to file
Roland Paterson-Jones 5c1eb24e2c If-conversion RFC 4 - x86 only (for now), use cmovXX
Replacement of tiny conditional jump graphlets with
conditional move instructions.

Currently enabled only for x86. Arm64 support using cselXX
will be essentially identical.

Adds (internal) frontend sel0/sel1 ops with flag-specific
backend xselXX following jnz implementation pattern.

Testing: standard QBE, cproc, harec, hare, roland
2026-01-13 18:11:30 +01:00
amd64 If-conversion RFC 4 - x86 only (for now), use cmovXX 2026-01-13 18:11:30 +01:00
arm64 If-conversion RFC 4 - x86 only (for now), use cmovXX 2026-01-13 18:11:30 +01:00
doc function params must be unique 2024-04-27 10:52:03 +02:00
minic minic: C23 doesn't allow bool as identifier 2025-03-16 11:27:49 +01:00
rv64 If-conversion RFC 4 - x86 only (for now), use cmovXX 2026-01-13 18:11:30 +01:00
test If-conversion RFC 4 - x86 only (for now), use cmovXX 2026-01-13 18:11:30 +01:00
tools tools/test.sh: test the native architecture without QEMU 2025-03-15 14:43:33 +01:00
.gitignore Global Value Numbering / Global Code Motion 2025-03-14 09:58:37 +01:00
abi.c add new target-specific abi0 pass 2022-10-03 10:41:03 +02:00
alias.c fix bug in alias analysis 2024-03-07 16:40:51 +01:00
all.h If-conversion RFC 4 - x86 only (for now), use cmovXX 2026-01-13 18:11:30 +01:00
cfg.c If-conversion RFC 4 - x86 only (for now), use cmovXX 2026-01-13 18:11:30 +01:00
copy.c skip deleted phis in use width scan 2025-05-30 17:40:17 +02:00
emit.c please as with truncated constants 2026-01-06 20:43:42 +01:00
fold.c gvn/gcm review 2025-03-14 13:09:21 +01:00
gcm.c gvn/gcm review 2025-03-14 13:09:21 +01:00
gvn.c If-conversion RFC 4 - x86 only (for now), use cmovXX 2026-01-13 18:11:30 +01:00
ifopt.c If-conversion RFC 4 - x86 only (for now), use cmovXX 2026-01-13 18:11:30 +01:00
LICENSE update copyright years 2026-01-13 17:09:41 +01:00
live.c refine assertion in liveness analysis 2022-06-14 09:11:44 +02:00
load.c gvn/gcm review 2025-03-14 13:09:21 +01:00
main.c If-conversion RFC 4 - x86 only (for now), use cmovXX 2026-01-13 18:11:30 +01:00
Makefile If-conversion RFC 4 - x86 only (for now), use cmovXX 2026-01-13 18:11:30 +01:00
mem.c relax one assert 2024-06-05 12:50:36 +02:00
ops.h If-conversion RFC 4 - x86 only (for now), use cmovXX 2026-01-13 18:11:30 +01:00
parse.c gvn/gcm review 2025-03-14 13:09:21 +01:00
README 10 years of qbe! 2025-03-14 13:09:42 +01:00
rega.c idup(Ins **, Ins *, ulong) -> idup(Blk *, Ins *, ulong) 2025-03-14 09:47:05 +01:00
simpl.c idup(Ins **, Ins *, ulong) -> idup(Blk *, Ins *, ulong) 2025-03-14 09:47:05 +01:00
spill.c fix jmp arg spilling 2026-01-13 17:09:41 +01:00
ssa.c gvn/gcm review 2025-03-14 13:09:21 +01:00
util.c If-conversion RFC 4 - x86 only (for now), use cmovXX 2026-01-13 18:11:30 +01:00

QBE - Backend Compiler              http://c9x.me/compile/

doc/    Documentation.
minic/  An example C frontend for QBE.
tools/  Miscellaneous tools (testing).
test/   Tests.
amd64/
arm64/
rv64/   Architecture-specific code.

The LICENSE file applies to all files distributed.

- Compilation and Installation

Invoke make in this directory to create the executable
file qbe.  Install using 'make install', the standard
DESTDIR and PREFIX environment variables are supported.
Alternatively, you may simply copy the qbe binary.