mirror of
https://github.com/odin-lang/Odin.git
synced 2026-08-18 03:12:10 +00:00
Remove f suffix e.g. %flags.z rather than %flags.zf
This commit is contained in:
@@ -221,21 +221,21 @@ struct Asm_amd64 {
|
||||
|
||||
i32 flag_bit_from_name(String const &name, i32 *width_) {
|
||||
static const struct {String name; i32 bit; } table[] = {
|
||||
{str_lit("cf"), 0}, // Carry
|
||||
{str_lit("pf"), 2}, // Parity
|
||||
{str_lit("af"), 4}, // Auxiliary Carry
|
||||
{str_lit("zf"), 6}, // Zero
|
||||
{str_lit("sf"), 7}, // Sign
|
||||
{str_lit("tf"), 8}, // Trap
|
||||
{str_lit("if"), 9}, // Interrupt Enable
|
||||
{str_lit("df"), 10}, // Direction
|
||||
{str_lit("of"), 11}, // Overflow
|
||||
{str_lit("c"), 0}, // Carry
|
||||
{str_lit("p"), 2}, // Parity
|
||||
{str_lit("a"), 4}, // Auxiliary Carry
|
||||
{str_lit("z"), 6}, // Zero
|
||||
{str_lit("s"), 7}, // Sign
|
||||
{str_lit("t"), 8}, // Trap
|
||||
{str_lit("i"), 9}, // Interrupt Enable
|
||||
{str_lit("d"), 10}, // Direction
|
||||
{str_lit("o"), 11}, // Overflow
|
||||
{str_lit("iopl"),12}, // I/O Privilege Level (2-bit field: bits 12-13, low bit)
|
||||
{str_lit("nt"), 14}, // Nested Task
|
||||
{str_lit("rf"), 16}, // Resume
|
||||
{str_lit("r"), 16}, // Resume
|
||||
{str_lit("vm"), 17}, // Virtual-8086 Mode
|
||||
{str_lit("ac"), 18}, // Alignment Check / Access Control
|
||||
{str_lit("vif"), 19}, // Virtual Interrupt Flag
|
||||
{str_lit("vi"), 19}, // Virtual Interrupt Flag
|
||||
{str_lit("vip"), 20}, // Virtual Interrupt Pending
|
||||
{str_lit("id"), 21}, // Identification
|
||||
};
|
||||
|
||||
@@ -245,11 +245,11 @@ struct lbAsmGenerate_amd64 : lbAsmGenerate {
|
||||
// Map an EFLAGS flag name to its LLVM `=@cc<suffix>` setcc condition, or {} if
|
||||
// the flag has no single-flag setcc form (af/df/if/... can't be a flag output).
|
||||
String flag_output_cc_suffix(String const &pin_flag) override {
|
||||
if (pin_flag == "cf") return str_lit("c"); // carry
|
||||
if (pin_flag == "pf") return str_lit("p"); // parity (even)
|
||||
if (pin_flag == "zf") return str_lit("z"); // zero
|
||||
if (pin_flag == "sf") return str_lit("s"); // sign
|
||||
if (pin_flag == "of") return str_lit("o"); // overflow
|
||||
if (pin_flag == "c") return str_lit("c"); // carry
|
||||
if (pin_flag == "p") return str_lit("p"); // parity (even)
|
||||
if (pin_flag == "z") return str_lit("z"); // zero
|
||||
if (pin_flag == "s") return str_lit("s"); // sign
|
||||
if (pin_flag == "o") return str_lit("o"); // overflow
|
||||
return {};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user