-/******************************************************************************************************
- * _ _ _ _ __ _ _
- * (_) | | | | | | / _| | | (_)
- * ___ _ __ ___ ___ _ __ _| | __ _| |_| |_ _ __ | |_ _ _ _ __ ___| |_ _ ___ _ __ ___
- * / __| '_ \ / _ \/ __| |/ _` | | / _` | __| __| '__| | _| | | | '_ \ / __| __| |/ _ \| '_ \ / __|
- * \__ \ |_) | __/ (__| | (_| | | | (_| | |_| |_| | | | | |_| | | | | (__| |_| | (_) | | | | \__ \
- * |___/ .__/ \___|\___|_|\__,_|_| \__,_|\__|\__|_| |_| \__,_|_| |_|\___|\__|_|\___/|_| |_| |___/
- * | |
- * |_|
- ******************************************************************************************************/
-
-/**
- * Sets the AddrMode(S|D) attribute
- */
-void set_ia32_AddrMode(ir_node *node, char direction) {
- ia32_attr_t *attr = get_ia32_attr(node);
-
- switch (direction) {
- case 'D':
- attr->data.tp = ia32_AddrModeD;
- break;
- case 'S':
- attr->data.tp = ia32_AddrModeS;
- break;
- default:
- assert(0 && "wrong AM type");
- }
-}
-
-/**
- * Returns whether or not the node is an AddrModeS node.
- */
-int is_ia32_AddrModeS(const ir_node *node) {
- const ia32_attr_t *attr = get_ia32_attr_const(node);
- return (attr->data.tp == ia32_AddrModeS);
-}
-
-/**
- * Returns whether or not the node is an AddrModeD node.
- */
-int is_ia32_AddrModeD(const ir_node *node) {
- const ia32_attr_t *attr = get_ia32_attr_const(node);
- return (attr->data.tp == ia32_AddrModeD);
-}
-
-/**
- * Checks if node is a Load or xLoad/vfLoad.
- */
-int is_ia32_Ld(const ir_node *node) {
- int op = get_ia32_irn_opcode(node);
- return op == iro_ia32_Load ||
- op == iro_ia32_xLoad ||
- op == iro_ia32_vfld ||
- op == iro_ia32_fld;
-}
-
-/**
- * Checks if node is a Store or xStore/vfStore.
- */
-int is_ia32_St(const ir_node *node) {
- int op = get_ia32_irn_opcode(node);
- return op == iro_ia32_Store ||
- op == iro_ia32_Store8Bit ||
- op == iro_ia32_xStore ||
- op == iro_ia32_vfst ||
- op == iro_ia32_fst ||
- op == iro_ia32_fstp;
-}
-
-/**
- * Returns the name of the OUT register at position pos.
- */
-const char *get_ia32_out_reg_name(const ir_node *node, int pos) {
- const ia32_attr_t *attr = get_ia32_attr_const(node);
-
- assert(pos < ARR_LEN(attr->slots) && "Invalid OUT position.");
- assert(attr->slots[pos] && "No register assigned");
-
- return arch_register_get_name(attr->slots[pos]);
-}
-
-/**
- * Returns the index of the OUT register at position pos within its register class.
- */
-int get_ia32_out_regnr(const ir_node *node, int pos) {
- const ia32_attr_t *attr = get_ia32_attr_const(node);
-
- assert(pos < ARR_LEN(attr->slots) && "Invalid OUT position.");
- assert(attr->slots[pos] && "No register assigned");
-
- return arch_register_get_index(attr->slots[pos]);
-}
-