TPDE
Loading...
Searching...
No Matches
tpde::a64::CompilerA64< Adaptor, Derived, BaseTy, Config >::Jump Struct Reference

Jump conditions. More...

#include <CompilerA64.hpp>

Public Types

enum  Kind : uint8_t {
  Jeq , Jne , Jcs , Jhs = Jcs ,
  Jcc , Jlo = Jcc , Jmi , Jpl ,
  Jvs , Jvc , Jhi , Jls ,
  Jge , Jlt , Jgt , Jle ,
  jmp , Cbz , Cbnz , Tbz ,
  Tbnz
}
 

Public Member Functions

constexpr Jump ()
 Unconditional branch.
 
constexpr Jump (Kind kind)
 Unconditional or conditional branch based on flags.
 
constexpr Jump (Kind kind, AsmReg cmp_reg, bool cmp_is_32)
 Cbz/Cbnz branch.
 
constexpr Jump (Kind kind, AsmReg cmp_reg, u8 test_bit)
 Tbz/Tbnz branch.
 

Detailed Description

template<IRAdaptor Adaptor, typename Derived, template< typename, typename, typename > typename BaseTy = CompilerBase, typename Config = PlatformConfig>
struct tpde::a64::CompilerA64< Adaptor, Derived, BaseTy, Config >::Jump

Jump conditions.

Definition at line 454 of file CompilerA64.hpp.

Member Enumeration Documentation

◆ Kind

template<IRAdaptor Adaptor, typename Derived, template< typename, typename, typename > typename BaseTy = CompilerBase, typename Config = PlatformConfig>
enum tpde::a64::CompilerA64::Jump::Kind : uint8_t
Enumerator
Jeq 

Equal (Z == 1)

Jne 

Not equal (Z == 0)

Jcs 

Carry set (C == 1)

Jhs 

Unsigned higher or same (C == 1)

Jcc 

Carry clear (C == 0)

Jlo 

Unsigned lower (C == 0)

Jmi 

Minus, negative (N == 1)

Jpl 

Plus, positive or zero (N == 0)

Jvs 

Overflow (V == 1)

Jvc 

No Overflow (V == 0)

Jhi 

Unsigned higher (C == 1 && Z == 0)

Jls 

Unsigned lower or same (!(C == 1 && Z == 0))

Jge 

Signed greater than or equal (N == V)

Jlt 

Signed less than (N != V)

Jgt 

Signed greater than (Z == 0 && N == V)

Jle 

Signed lessthan or equal (!(Z == 0 && N == V))

jmp 

Unconditional jump.

Cbz 

Compare and branch if zero (Wn or Xn register)

Cbnz 

Compare and branch if not zero (Wn or Xn register)

Tbz 

Test single bit and branch if zero (Xn register)

Tbnz 

Test single bit and branch if not zero (Xn register)

Definition at line 456 of file CompilerA64.hpp.


The documentation for this struct was generated from the following file: