diff options
author | Kevin Newton <kddnewton@gmail.com> | 2022-06-22 12:27:59 -0400 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2022-08-29 08:46:58 -0700 |
commit | b272c57f27628ab114206c777d5b274713d31079 (patch) | |
tree | 4f490b317586ebbfc46d2142c4bde2fdb09f45e2 /yjit/src/asm/arm64/arg/condition.rs | |
parent | d9163280782086b57119abc9478580a6b3efd2c3 (diff) | |
download | ruby-b272c57f27628ab114206c777d5b274713d31079.tar.gz |
LSL, LSR, B.cond (https://github.com/Shopify/ruby/pull/303)
* LSL and LSR
* B.cond
* Move A64 files around to make more sense
* offset -> byte_offset for bcond
Diffstat (limited to 'yjit/src/asm/arm64/arg/condition.rs')
-rw-r--r-- | yjit/src/asm/arm64/arg/condition.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/yjit/src/asm/arm64/arg/condition.rs b/yjit/src/asm/arm64/arg/condition.rs new file mode 100644 index 0000000000..db269726d7 --- /dev/null +++ b/yjit/src/asm/arm64/arg/condition.rs @@ -0,0 +1,20 @@ +/// Various instructions in A64 can have condition codes attached. This enum +/// includes all of the various kinds of conditions along with their respective +/// encodings. +pub enum Condition { + EQ = 0b0000, // equal to + NE = 0b0001, // not equal to + CS = 0b0010, // carry set (alias for HS) + CC = 0b0011, // carry clear (alias for LO) + MI = 0b0100, // minus, negative + PL = 0b0101, // positive or zero + VS = 0b0110, // signed overflow + VC = 0b0111, // no signed overflow + HI = 0b1000, // greater than (unsigned) + LS = 0b1001, // less than or equal to (unsigned) + GE = 0b1010, // greater than or equal to (signed) + LT = 0b1011, // less than (signed) + GT = 0b1100, // greater than (signed) + LE = 0b1101, // less than or equal to (signed) + AL = 0b1110, // always +} |