Files
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

1478 lines
42 KiB
C++

#if !defined(SG_ASM_EXPR_H)
#define SG_ASM_EXPR_H
#include "external/rose/rose-compat.h"
#include "SgNode.h"
#include "RegisterDescriptor.h"
#include "SgAsmType.h"
#include "external/rose/powerpcInstructionEnum.h"
#include <stddef.h>
#include <string>
#include <utility>
#include <inttypes.h>
class SgAsmExpression : public SgAsmNode {
public:
virtual SgAsmType *get_type() const;
virtual void set_type(SgAsmType *type);
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmExpression
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmExpression *isSgAsmExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmExpression *isSgAsmExpression(const SgNode *s);
std::string get_replacement() const;
void set_replacement(std::string replacement);
std::string get_comment() const;
void set_comment(std::string comment);
size_t get_nBits() const;
virtual ~SgAsmExpression();
SgAsmExpression();
SgAsmExpression(const SgAsmExpression&) = default;
protected:
std::string p_replacement;
std::string p_comment;
SgAsmType *p_type;
};
// Class Definition for SgAsmValueExpression
class SgAsmValueExpression : public SgAsmExpression {
public:
virtual SgAsmType *get_type() const;
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmValueExpression
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmValueExpression *isSgAsmValueExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmValueExpression *isSgAsmValueExpression(const SgNode *s);
public:
SgAsmValueExpression *get_unfolded_expression_tree() const;
void set_unfolded_expression_tree(SgAsmValueExpression *unfolded_expression_tree);
public:
unsigned short get_bit_offset() const;
void set_bit_offset(unsigned short bit_offset);
public:
unsigned short get_bit_size() const;
void set_bit_size(unsigned short bit_size);
public:
virtual ~SgAsmValueExpression();
public:
SgAsmValueExpression();
protected:
// Start of memberFunctionString
SgAsmValueExpression *p_unfolded_expression_tree;
// End of memberFunctionString
// Start of memberFunctionString
unsigned short p_bit_offset;
// End of memberFunctionString
// Start of memberFunctionString
unsigned short p_bit_size;
// End of memberFunctionString
};
class SgAsmByteValueExpression : public SgAsmValueExpression {
public:
virtual SgAsmType *get_type() const;
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
static const VariantT static_variant = V_SgAsmByteValueExpression;
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmByteValueExpression *isSgAsmByteValueExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmByteValueExpression *isSgAsmByteValueExpression(const SgNode *s);
public:
uint8_t get_value() const;
void set_value(uint8_t value);
public:
virtual ~SgAsmByteValueExpression();
public:
SgAsmByteValueExpression(uint8_t value = 0x0);
protected:
// Start of memberFunctionString
uint8_t p_value;
};
class SgAsmWordValueExpression : public SgAsmValueExpression {
public:
virtual SgAsmType *get_type() const;
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
static const VariantT static_variant = V_SgAsmWordValueExpression;
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmWordValueExpression *isSgAsmWordValueExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmWordValueExpression *isSgAsmWordValueExpression(const SgNode *s);
public:
uint16_t get_value() const;
void set_value(uint16_t value);
public:
virtual ~SgAsmWordValueExpression();
public:
SgAsmWordValueExpression(uint16_t value = 0x0);
protected:
// Start of memberFunctionString
uint16_t p_value;
};
// Class Definition for SgAsmDoubleWordValueExpression
class SgAsmDoubleWordValueExpression : public SgAsmValueExpression {
public:
virtual SgAsmType *get_type() const;
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
static const VariantT static_variant = V_SgAsmDoubleWordValueExpression;
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmDoubleWordValueExpression *isSgAsmDoubleWordValueExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmDoubleWordValueExpression *isSgAsmDoubleWordValueExpression(const SgNode *s);
public:
uint32_t get_value() const;
void set_value(uint32_t value);
public:
virtual ~SgAsmDoubleWordValueExpression();
public:
SgAsmDoubleWordValueExpression(uint32_t value = 0x0);
protected:
// Start of memberFunctionString
uint32_t p_value;
};
class SgAsmQuadWordValueExpression : public SgAsmValueExpression {
public:
virtual SgAsmType *get_type() const;
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
static const VariantT static_variant = V_SgAsmQuadWordValueExpression;
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmQuadWordValueExpression *isSgAsmQuadWordValueExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmQuadWordValueExpression *isSgAsmQuadWordValueExpression(const SgNode *s);
// End of memberFunctionString
public:
uint64_t get_value() const;
void set_value(uint64_t value);
public:
virtual ~SgAsmQuadWordValueExpression();
public:
SgAsmQuadWordValueExpression(uint64_t value = 0x0);
protected:
// Start of memberFunctionString
uint64_t p_value;
// End of memberFunctionString
};
class SgAsmSingleFloatValueExpression : public SgAsmValueExpression {
public:
virtual SgAsmType *get_type() const;
// virtual SgNode* copy ( const SgCopyHelp & help) const;
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
static const VariantT static_variant = V_SgAsmSingleFloatValueExpression;
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmSingleFloatValueExpression *isSgAsmSingleFloatValueExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmSingleFloatValueExpression *isSgAsmSingleFloatValueExpression(const SgNode *s);
public:
float get_value() const;
void set_value(float value);
public:
virtual ~SgAsmSingleFloatValueExpression();
public:
SgAsmSingleFloatValueExpression(float value = 0.0F);
protected:
// Start of memberFunctionString
float p_value;
};
class SgAsmDoubleFloatValueExpression : public SgAsmValueExpression {
public:
virtual SgAsmType *get_type() const;
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
static const VariantT static_variant = V_SgAsmDoubleFloatValueExpression;
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmDoubleFloatValueExpression *isSgAsmDoubleFloatValueExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmDoubleFloatValueExpression *isSgAsmDoubleFloatValueExpression(const SgNode *s);
public:
double get_value() const;
void set_value(double value);
public:
virtual ~SgAsmDoubleFloatValueExpression();
public:
SgAsmDoubleFloatValueExpression(double value = 0.0);
protected:
// Start of memberFunctionString
double p_value;
};
class SgAsmType;
class SgAsmVectorValueExpression : public SgAsmValueExpression {
public:
virtual SgAsmType *get_type() const;
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
static const VariantT static_variant = V_SgAsmVectorValueExpression;
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmVectorValueExpression *isSgAsmVectorValueExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmVectorValueExpression *isSgAsmVectorValueExpression(const SgNode *s);
public:
unsigned int get_size() const;
void set_size(unsigned int size);
public:
void set_type(SgAsmType *type);
public:
virtual ~SgAsmVectorValueExpression();
public:
SgAsmVectorValueExpression();
protected:
// Start of memberFunctionString
unsigned int p_size;
// End of memberFunctionString
// Start of memberFunctionString
SgAsmType *p_type;
// End of memberFunctionString
};
class SgAsmConstantExpression : public SgAsmValueExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmConstantExpression
};
public:
const Sawyer::Container::BitVector &get_bitVector() const { return p_bitVector; }
Sawyer::Container::BitVector &get_bitVector() { return p_bitVector; }
void set_bitVector(const Sawyer::Container::BitVector &bv) { p_bitVector = bv; }
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmConstantExpression *isSgAsmConstantExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmConstantExpression *isSgAsmConstantExpression(const SgNode *s);
public:
virtual ~SgAsmConstantExpression();
public:
SgAsmConstantExpression();
protected:
Sawyer::Container::BitVector p_bitVector;
};
class SgAsmIntegerValueExpression : public SgAsmConstantExpression {
public:
SgAsmIntegerValueExpression(uint64_t n, SgAsmType *type);
SgAsmIntegerValueExpression(const Sawyer::Container::BitVector &bv, SgAsmType *type);
size_t get_significantBits() const;
void makeRelativeTo(SgNode *baseNode);
uint64_t get_baseAddress() const;
uint64_t get_absoluteValue(size_t nbits = 0) const;
void set_absoluteValue(uint64_t);
int64_t get_signedValue() const;
int64_t get_relativeValue() const;
void set_relativeValue(int64_t v, size_t nbits = 64);
uint64_t get_value() const { return get_absoluteValue(); }
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmIntegerValueExpression
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmIntegerValueExpression *isSgAsmIntegerValueExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmIntegerValueExpression *isSgAsmIntegerValueExpression(const SgNode *s);
public:
SgNode *get_baseNode() const;
void set_baseNode(SgNode *baseNode);
public:
virtual ~SgAsmIntegerValueExpression();
public:
SgAsmIntegerValueExpression();
protected:
SgNode *p_baseNode;
};
// NOTE: SgAsmFloatType should ideally be used for some purpose in this class, but it is not.
class SgAsmFloatValueExpression : public SgAsmConstantExpression {
private:
mutable double p_nativeValue;
mutable bool p_nativeValueIsValid;
public:
SgAsmFloatValueExpression() : p_nativeValue(0.0), p_nativeValueIsValid(true) { }
SgAsmFloatValueExpression(double nativeValue, SgAsmType *type = NULL);
SgAsmFloatValueExpression(const Sawyer::Container::BitVector &, SgAsmType *type = NULL);
void set_nativeValue(double);
double get_nativeValue() const;
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmFloatValueExpression
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmFloatValueExpression *isSgAsmFloatValueExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmFloatValueExpression *isSgAsmFloatValueExpression(const SgNode *s);
public:
virtual ~SgAsmFloatValueExpression();
};
class SgAsmBinaryExpression : public SgAsmExpression {
public:
virtual SgAsmType *get_type() const;
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmBinaryExpression
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmBinaryExpression *isSgAsmBinaryExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmBinaryExpression *isSgAsmBinaryExpression(const SgNode *s);
public:
SgAsmExpression *get_lhs() const;
void set_lhs(SgAsmExpression *lhs);
public:
SgAsmExpression *get_rhs() const;
void set_rhs(SgAsmExpression *rhs);
public:
virtual ~SgAsmBinaryExpression();
SgAsmBinaryExpression& operator=(const SgAsmBinaryExpression&) = default;
SgAsmBinaryExpression(const SgAsmBinaryExpression&) = default;
public:
SgAsmBinaryExpression(SgAsmExpression *lhs = NULL, SgAsmExpression *rhs = NULL);
protected:
// Start of memberFunctionString
SgAsmExpression *p_lhs;
// End of memberFunctionString
// Start of memberFunctionString
SgAsmExpression *p_rhs;
// End of memberFunctionString
};
class SgAsmBinaryAdd : public SgAsmBinaryExpression {
public:
virtual SgAsmType *get_type() const;
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmBinaryAdd
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmBinaryAdd *isSgAsmBinaryAdd(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmBinaryAdd *isSgAsmBinaryAdd(const SgNode *s);
public:
virtual ~SgAsmBinaryAdd();
public:
SgAsmBinaryAdd(SgAsmExpression *lhs = NULL, SgAsmExpression *rhs = NULL);
protected:
};
class SgAsmBinarySubtract : public SgAsmBinaryExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmBinarySubtract
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmBinarySubtract *isSgAsmBinarySubtract(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmBinarySubtract *isSgAsmBinarySubtract(const SgNode *s);
public:
virtual ~SgAsmBinarySubtract();
public:
SgAsmBinarySubtract(SgAsmExpression *lhs = NULL, SgAsmExpression *rhs = NULL);
protected:
};
// Class Definition for SgAsmBinaryMultiply
class SgAsmBinaryMultiply : public SgAsmBinaryExpression {
public:
virtual SgAsmType *get_type() const;
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmBinaryMultiply
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmBinaryMultiply *isSgAsmBinaryMultiply(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmBinaryMultiply *isSgAsmBinaryMultiply(const SgNode *s);
public:
virtual ~SgAsmBinaryMultiply();
public:
SgAsmBinaryMultiply(SgAsmExpression *lhs = NULL, SgAsmExpression *rhs = NULL);
};
class SgAsmBinaryDivide : public SgAsmBinaryExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmBinaryDivide
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmBinaryDivide *isSgAsmBinaryDivide(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmBinaryDivide *isSgAsmBinaryDivide(const SgNode *s);
public:
virtual ~SgAsmBinaryDivide();
public:
SgAsmBinaryDivide(SgAsmExpression *lhs = NULL, SgAsmExpression *rhs = NULL);
protected:
};
// Class Definition for SgAsmBinaryMod
class SgAsmBinaryMod : public SgAsmBinaryExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmBinaryMod
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmBinaryMod *isSgAsmBinaryMod(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmBinaryMod *isSgAsmBinaryMod(const SgNode *s);
public:
virtual ~SgAsmBinaryMod();
public:
SgAsmBinaryMod(SgAsmExpression *lhs = NULL, SgAsmExpression *rhs = NULL);
};
class SgAsmBinaryAddPreupdate : public SgAsmBinaryExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmBinaryAddPreupdate
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmBinaryAddPreupdate *isSgAsmBinaryAddPreupdate(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmBinaryAddPreupdate *isSgAsmBinaryAddPreupdate(const SgNode *s);
public:
virtual ~SgAsmBinaryAddPreupdate();
public:
SgAsmBinaryAddPreupdate(SgAsmExpression *lhs = NULL, SgAsmExpression *rhs = NULL);
};
class SgAsmBinarySubtractPreupdate : public SgAsmBinaryExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmBinarySubtractPreupdate
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmBinarySubtractPreupdate *isSgAsmBinarySubtractPreupdate(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmBinarySubtractPreupdate *isSgAsmBinarySubtractPreupdate(const SgNode *s);
public:
virtual ~SgAsmBinarySubtractPreupdate();
public:
SgAsmBinarySubtractPreupdate(SgAsmExpression *lhs = NULL, SgAsmExpression *rhs = NULL);
};
class SgAsmBinaryAddPostupdate : public SgAsmBinaryExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmBinaryAddPostupdate
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmBinaryAddPostupdate *isSgAsmBinaryAddPostupdate(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmBinaryAddPostupdate *isSgAsmBinaryAddPostupdate(const SgNode *s);
public:
virtual ~SgAsmBinaryAddPostupdate();
public:
SgAsmBinaryAddPostupdate(SgAsmExpression *lhs = NULL, SgAsmExpression *rhs = NULL);
};
class SgAsmBinarySubtractPostupdate : public SgAsmBinaryExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmBinarySubtractPostupdate
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmBinarySubtractPostupdate *isSgAsmBinarySubtractPostupdate(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmBinarySubtractPostupdate *isSgAsmBinarySubtractPostupdate(const SgNode *s);
public:
virtual ~SgAsmBinarySubtractPostupdate();
public:
SgAsmBinarySubtractPostupdate(SgAsmExpression *lhs = NULL, SgAsmExpression *rhs = NULL);
};
class SgAsmBinaryLsl : public SgAsmBinaryExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmBinaryLsl
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmBinaryLsl *isSgAsmBinaryLsl(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmBinaryLsl *isSgAsmBinaryLsl(const SgNode *s);
public:
virtual ~SgAsmBinaryLsl();
public:
SgAsmBinaryLsl(SgAsmExpression *lhs = NULL, SgAsmExpression *rhs = NULL);
};
class SgAsmBinaryLsr : public SgAsmBinaryExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmBinaryLsr
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmBinaryLsr *isSgAsmBinaryLsr(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmBinaryLsr *isSgAsmBinaryLsr(const SgNode *s);
public:
virtual ~SgAsmBinaryLsr();
public:
SgAsmBinaryLsr(SgAsmExpression *lhs = NULL, SgAsmExpression *rhs = NULL);
};
class SgAsmBinaryAsr : public SgAsmBinaryExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmBinaryAsr
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmBinaryAsr *isSgAsmBinaryAsr(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmBinaryAsr *isSgAsmBinaryAsr(const SgNode *s);
public:
virtual ~SgAsmBinaryAsr();
public:
SgAsmBinaryAsr(SgAsmExpression *lhs = NULL, SgAsmExpression *rhs = NULL);
};
class SgAsmBinaryRor : public SgAsmBinaryExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmBinaryRor
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmBinaryRor *isSgAsmBinaryRor(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmBinaryRor *isSgAsmBinaryRor(const SgNode *s);
public:
virtual ~SgAsmBinaryRor();
public:
SgAsmBinaryRor(SgAsmExpression *lhs = NULL, SgAsmExpression *rhs = NULL);
};
class SgAsmUnaryExpression : public SgAsmExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmUnaryExpression
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmUnaryExpression *isSgAsmUnaryExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmUnaryExpression *isSgAsmUnaryExpression(const SgNode *s);
public:
SgAsmExpression *get_operand() const;
void set_operand(SgAsmExpression *operand);
public:
virtual ~SgAsmUnaryExpression();
public:
SgAsmUnaryExpression(SgAsmExpression *operand = NULL);
protected:
// Start of memberFunctionString
SgAsmExpression *p_operand;
// End of memberFunctionString
};
class SgAsmUnaryPlus : public SgAsmUnaryExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmUnaryPlus
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmUnaryPlus *isSgAsmUnaryPlus(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmUnaryPlus *isSgAsmUnaryPlus(const SgNode *s);
public:
virtual ~SgAsmUnaryPlus();
public:
SgAsmUnaryPlus(SgAsmExpression *operand = NULL);
protected:
};
class SgAsmUnaryMinus : public SgAsmUnaryExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmUnaryMinus
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmUnaryMinus *isSgAsmUnaryMinus(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmUnaryMinus *isSgAsmUnaryMinus(const SgNode *s);
public:
virtual ~SgAsmUnaryMinus();
public:
SgAsmUnaryMinus(SgAsmExpression *operand = NULL);
protected:
};
// Class Definition for SgAsmUnaryRrx
class SgAsmUnaryRrx : public SgAsmUnaryExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmUnaryRrx
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmUnaryRrx *isSgAsmUnaryRrx(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmUnaryRrx *isSgAsmUnaryRrx(const SgNode *s);
public:
virtual ~SgAsmUnaryRrx();
public:
SgAsmUnaryRrx(SgAsmExpression *operand = NULL);
protected:
};
// Class Definition for SgAsmMemoryReferenceExpression
class SgAsmMemoryReferenceExpression : public SgAsmExpression {
public:
virtual SgAsmType *get_type() const;
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmMemoryReferenceExpression
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmMemoryReferenceExpression *isSgAsmMemoryReferenceExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmMemoryReferenceExpression *isSgAsmMemoryReferenceExpression(const SgNode *s);
public:
SgAsmExpression *get_address() const;
void set_address(SgAsmExpression *address);
public:
SgAsmExpression *get_segment() const;
void set_segment(SgAsmExpression *segment);
public:
void set_type(SgAsmType *type);
public:
virtual ~SgAsmMemoryReferenceExpression();
public:
SgAsmMemoryReferenceExpression(SgAsmExpression *address = NULL, SgAsmExpression *segment = NULL);
protected:
// Start of memberFunctionString
SgAsmExpression *p_address;
// End of memberFunctionString
// Start of memberFunctionString
SgAsmExpression *p_segment;
// End of memberFunctionString
// Start of memberFunctionString
SgAsmType *p_type;
// End of memberFunctionString
};
// Class Definition for SgAsmRegisterReferenceExpression
class SgAsmRegisterReferenceExpression : public SgAsmExpression {
public:
virtual SgAsmType *get_type() const;
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmRegisterReferenceExpression
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmRegisterReferenceExpression *isSgAsmRegisterReferenceExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmRegisterReferenceExpression *isSgAsmRegisterReferenceExpression(const SgNode *s);
public:
RegisterDescriptor get_descriptor() const;
void set_descriptor(RegisterDescriptor);
int get_adjustment() const;
void set_adjustment(int);
public:
virtual void set_type(SgAsmType *type);
public:
virtual ~SgAsmRegisterReferenceExpression();
public:
SgAsmRegisterReferenceExpression();
protected:
// Start of memberFunctionString
SgAsmType *p_type{};
// End of memberFunctionString
public:
SgAsmRegisterReferenceExpression(RegisterDescriptor);
protected:
RegisterDescriptor p_descriptor;
int p_adjustment;
};
class SgAsmDirectRegisterExpression : public SgAsmRegisterReferenceExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
enum {
static_variant = V_SgAsmDirectRegisterExpression
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmDirectRegisterExpression *isSgAsmDirectRegisterExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmDirectRegisterExpression *isSgAsmDirectRegisterExpression(const SgNode *s);
public:
virtual ~SgAsmDirectRegisterExpression();
public:
SgAsmDirectRegisterExpression(RegisterDescriptor descriptor);
};
class SgAsmIndirectRegisterExpression : public SgAsmRegisterReferenceExpression {
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
// King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
// static const VariantT static_variant = V_SgAsmIndirectRegisterExpression;
enum {
static_variant = V_SgAsmIndirectRegisterExpression
};
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmIndirectRegisterExpression *isSgAsmIndirectRegisterExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmIndirectRegisterExpression *isSgAsmIndirectRegisterExpression(const SgNode *s);
public:
RegisterDescriptor get_stride() const;
void set_stride(RegisterDescriptor stride);
public:
RegisterDescriptor get_offset() const;
void set_offset(RegisterDescriptor offset);
public:
size_t get_index() const;
void set_index(size_t index);
public:
size_t get_modulus() const;
void set_modulus(size_t modulus);
public:
virtual ~SgAsmIndirectRegisterExpression();
public:
SgAsmIndirectRegisterExpression(RegisterDescriptor descriptor, RegisterDescriptor stride, RegisterDescriptor offset,
size_t index, size_t modulus);
protected:
// Start of memberFunctionString
RegisterDescriptor p_stride;
// End of memberFunctionString
// Start of memberFunctionString
RegisterDescriptor p_offset;
// End of memberFunctionString
// Start of memberFunctionString
size_t p_index;
// End of memberFunctionString
// Start of memberFunctionString
size_t p_modulus;
};
class SgAsmx86RegisterReferenceExpression : public SgAsmRegisterReferenceExpression {
public:
//! Get a unique identifier for this particular register
std::pair<X86RegisterClass, int> get_identifier() const;
/*! \brief returns a string representing the class name */
virtual std::string class_name() const;
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const; // MS: new variant used in tree traversal
/*! \brief static variant value */
static const VariantT static_variant = V_SgAsmx86RegisterReferenceExpression;
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmx86RegisterReferenceExpression *isSgAsmx86RegisterReferenceExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmx86RegisterReferenceExpression *isSgAsmx86RegisterReferenceExpression(const SgNode *s);
public:
X86RegisterClass get_register_class() const;
void set_register_class(X86RegisterClass register_class);
public:
int get_register_number() const;
void set_register_number(int register_number);
public:
X86PositionInRegister get_position_in_register() const;
void set_position_in_register(X86PositionInRegister position_in_register);
public:
virtual ~SgAsmx86RegisterReferenceExpression();
public:
SgAsmx86RegisterReferenceExpression(X86RegisterClass register_class = x86_regclass_unknown, int register_number = 0,
X86PositionInRegister position_in_register = x86_regpos_unknown);
protected:
// Start of memberFunctionString
X86RegisterClass p_register_class;
// End of memberFunctionString
// Start of memberFunctionString
int p_register_number;
// End of memberFunctionString
// Start of memberFunctionString
X86PositionInRegister p_position_in_register;
// End of memberFunctionString
};
// Class Definition for SgAsmPowerpcRegisterReferenceExpression
class SgAsmPowerpcRegisterReferenceExpression : public SgAsmRegisterReferenceExpression {
public:
enum powerpc_register_enum { // The exact numbers here are important
undefined_powerpc_register = 0, /*!< unknown (error or unitialized value) */
reg0 = 1,
reg1 = 2,
reg2 = 3,
reg3 = 4,
reg4 = 5,
reg5 = 6,
reg6 = 7,
reg7 = 8,
last_powerpc_register
};
public:
/*! \brief returns a string representing the class name */
virtual std::string class_name() const { return "SgAsmPowerpcRegisterReferenceExpression"; }
/*! \brief returns new style SageIII enum values */
virtual VariantT variantT() const { return static_variant; }
/*! \brief static variant value */
static const VariantT static_variant = V_SgAsmPowerpcRegisterReferenceExpression;
/* the generated cast function */
/*! \brief Casts pointer from base class to derived class */
friend SgAsmPowerpcRegisterReferenceExpression *isSgAsmPowerpcRegisterReferenceExpression(SgNode *s);
/*! \brief Casts pointer from base class to derived class (for const pointers) */
friend const SgAsmPowerpcRegisterReferenceExpression *isSgAsmPowerpcRegisterReferenceExpression(const SgNode *s);
public:
PowerpcRegisterClass get_register_class() const;
void set_register_class(PowerpcRegisterClass register_class);
int get_register_number() const;
void set_register_number(int register_number);
PowerpcConditionRegisterAccessGranularity get_conditionRegisterGranularity() const;
void set_conditionRegisterGranularity(PowerpcConditionRegisterAccessGranularity conditionRegisterGranularity);
virtual ~SgAsmPowerpcRegisterReferenceExpression();
SgAsmPowerpcRegisterReferenceExpression(PowerpcRegisterClass register_class = powerpc_regclass_unknown, int
register_number = 0, PowerpcConditionRegisterAccessGranularity conditionRegisterGranularity =
powerpc_condreggranularity_whole);
protected:
PowerpcRegisterClass p_register_class;
int p_register_number;
PowerpcConditionRegisterAccessGranularity p_conditionRegisterGranularity;
};
uint64_t getAsmSignedConstant(SgAsmValueExpression *e);
#endif