{"ground_truth": ["", "static", "int", "crx_address_cost", "(", "rtx", "addr", ")", "{", "enum", "crx_addrtype", "addrtype", ";", "struct", "crx_address", "address", ";", "int", "cost", "=", "2", ";", "addrtype", "=", "crx_decompose_address", "(", "addr", ",", "&", "address", ")", ";", "gcc_assert", "(", "addrtype", "!=", "CRX_INVALID", ")", ";", "if", "(", "addrtype", "==", "CRX_ABSOLUTE", ")", "cost", "+=", "2", ";", "if", "(", "addrtype", "==", "CRX_POST_INC", ")", "cost", "-=", "2", ";", "if", "(", "address", ".", "base", ")", "cost", "++", ";", "if", "(", "address", ".", "index", "&&", "address", ".", "scale", "==", "1", ")", "cost", "+=", "5", ";", "if", "(", "address", ".", "disp", "&&", "!", "INT_CST4", "(", "INTVAL", "(", "address", ".", "disp", ")", ")", ")", "cost", "+=", "2", ";", "if", "(", "TARGET_DEBUG_ADDR", ")", "{", "fprintf", "(", "stderr", ",", "\"\\n======\\nTARGET_ADDRESS_COST = %d\\n\"", ",", "cost", ")", ";", "debug_rtx", "(", "addr", ")", ";", "}", "return", "cost", ";", "}", ""], "natrual_language": ["Return", "cost", "of", "the", "memory", "address", "x", "."], "TS_V_token": ["crx", "2", "2", "2", "1", "5", "2", "\"\\n======\\nTARGET_ADDRESS_COST = %d\\n\""], "File": "crx", "Func": "crx_address_cost", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32336, "Length": 128}
{"ground_truth": ["", "static", "void", "crx_compute_frame", "(", "void", ")", "{", "int", "stack_alignment", "=", "STACK_BOUNDARY", "/", "BITS_PER_UNIT", ";", "int", "padding_locals", ";", "local_vars_size", "=", "get_frame_size", "(", ")", ";", "padding_locals", "=", "local_vars_size", "%", "stack_alignment", ";", "if", "(", "padding_locals", ")", "padding_locals", "=", "stack_alignment", "-", "padding_locals", ";", "local_vars_size", "+=", "padding_locals", ";", "size_for_adjusting_sp", "=", "local_vars_size", "+", "(", "ACCUMULATE_OUTGOING_ARGS", "?", "current_function_outgoing_args_size", ":", "0", ")", ";", "}", ""], "natrual_language": ["Compute", "the", "size", "of", "the", "local", "area", "and", "the", "size", "to", "be", "adjusted", "by", "the", "*", "prologue", "and", "epilogue", "."], "TS_V_token": ["crx", "0"], "File": "crx", "Func": "crx_compute_frame", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32337, "Length": 56}
{"ground_truth": ["", "static", "void", "crx_compute_save_regs", "(", "void", ")", "{", "unsigned", "int", "regno", ";", "last_reg_to_save", "=", "-", "1", ";", "if", "(", "FUNC_IS_NORETURN_P", "(", "current_function_decl", ")", ")", "return", ";", "sum_regs", "=", "0", ";", "for", "(", "regno", "=", "0", ";", "regno", "<", "FIRST_PSEUDO_REGISTER", ";", "regno", "++", ")", "{", "if", "(", "fixed_regs", "[", "regno", "]", ")", "{", "save_regs", "[", "regno", "]", "=", "0", ";", "continue", ";", "}", "if", "(", "crx_interrupt_function_p", "(", ")", ")", "{", "if", "(", "!", "current_function_is_leaf", "&&", "call_used_regs", "[", "regno", "]", ")", "save_regs", "[", "regno", "]", "=", "1", ";", "else", "if", "(", "regs_ever_live", "[", "regno", "]", ")", "save_regs", "[", "regno", "]", "=", "1", ";", "else", "save_regs", "[", "regno", "]", "=", "0", ";", "}", "else", "{", "if", "(", "regs_ever_live", "[", "regno", "]", "&&", "(", "!", "call_used_regs", "[", "regno", "]", "||", "regno", "==", "RETURN_ADDRESS_REGNUM", ")", ")", "save_regs", "[", "regno", "]", "=", "1", ";", "else", "save_regs", "[", "regno", "]", "=", "0", ";", "}", "}", "for", "(", "regno", "=", "0", ";", "regno", "<", "FIRST_PSEUDO_REGISTER", ";", "regno", "++", ")", "if", "(", "save_regs", "[", "regno", "]", "==", "1", ")", "{", "last_reg_to_save", "=", "regno", ";", "sum_regs", "+=", "UNITS_PER_WORD", ";", "}", "}", ""], "natrual_language": ["Compute", "values", "for", "the", "array", "save_regs", "and", "the", "variable", "sum_regs", ".", "The", "index", "*", "of", "save_regs", "is", "numbers", "of", "register", ",", "each", "will", "get", "1", "if", "we", "need", "to", "save", "it", "*", "in", "the", "current", "function", ",", "0", "if", "not", ".", "sum_regs", "is", "the", "total", "sum", "of", "the", "*", "registers", "being", "saved", "."], "TS_V_token": ["crx", "1", "0", "0", "0", "1", "1", "0", "1", "0", "0", "1"], "File": "crx", "Func": "crx_compute_save_regs", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32338, "Length": 180}
{"ground_truth": ["", "int", "crx_const_double_ok", "(", "rtx", "op", ")", "{", "if", "(", "GET_MODE", "(", "op", ")", "==", "DFmode", ")", "{", "REAL_VALUE_TYPE", "r", ";", "long", "l", "[", "2", "]", ";", "REAL_VALUE_FROM_CONST_DOUBLE", "(", "r", ",", "op", ")", ";", "REAL_VALUE_TO_TARGET_DOUBLE", "(", "r", ",", "l", ")", ";", "return", "(", "UNSIGNED_INT_FITS_N_BITS", "(", "l", "[", "0", "]", ",", "4", ")", "&&", "UNSIGNED_INT_FITS_N_BITS", "(", "l", "[", "1", "]", ",", "4", ")", ")", "?", "1", ":", "0", ";", "}", "if", "(", "GET_MODE", "(", "op", ")", "==", "SFmode", ")", "{", "REAL_VALUE_TYPE", "r", ";", "long", "l", ";", "REAL_VALUE_FROM_CONST_DOUBLE", "(", "r", ",", "op", ")", ";", "REAL_VALUE_TO_TARGET_SINGLE", "(", "r", ",", "l", ")", ";", "return", "UNSIGNED_INT_FITS_N_BITS", "(", "l", ",", "4", ")", "?", "1", ":", "0", ";", "}", "return", "(", "UNSIGNED_INT_FITS_N_BITS", "(", "CONST_DOUBLE_LOW", "(", "op", ")", ",", "4", ")", "&&", "UNSIGNED_INT_FITS_N_BITS", "(", "CONST_DOUBLE_HIGH", "(", "op", ")", ",", "4", ")", ")", "?", "1", ":", "0", ";", "}", ""], "natrual_language": ["Check", "if", "a", "const_double", "is", "ok", "for", "crx", "store-immediate", "instructions"], "TS_V_token": ["crx", "2", "0", "4", "1", "4", "1", "0", "4", "1", "0", "4", "4", "1", "0"], "File": "crx", "Func": "crx_const_double_ok", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32339, "Length": 139}
{"ground_truth": ["", "void", "crx_expand_epilogue", "(", "void", ")", "{", "rtx", "return_reg", ";", "int", "only_popret_RA", "=", "(", "save_regs", "[", "RETURN_ADDRESS_REGNUM", "]", "&&", "(", "sum_regs", "==", "UNITS_PER_WORD", ")", ")", ";", "return_reg", "=", "gen_rtx_REG", "(", "Pmode", ",", "RETURN_ADDRESS_REGNUM", ")", ";", "if", "(", "frame_pointer_needed", ")", "emit_move_insn", "(", "stack_pointer_rtx", ",", "frame_pointer_rtx", ")", ";", "if", "(", "size_for_adjusting_sp", ">", "0", ")", "emit_insn", "(", "gen_addsi3", "(", "stack_pointer_rtx", ",", "stack_pointer_rtx", ",", "GEN_INT", "(", "size_for_adjusting_sp", ")", ")", ")", ";", "if", "(", "crx_interrupt_function_p", "(", ")", ")", "emit_jump_insn", "(", "gen_interrupt_return", "(", ")", ")", ";", "else", "if", "(", "last_reg_to_save", "==", "-", "1", ")", "emit_jump_insn", "(", "gen_indirect_jump_return", "(", ")", ")", ";", "else", "if", "(", "only_popret_RA", ")", "emit_jump_insn", "(", "gen_popret_RA_return", "(", ")", ")", ";", "else", "emit_jump_insn", "(", "gen_pop_and_popret_return", "(", "GEN_INT", "(", "sum_regs", ")", ")", ")", ";", "}", ""], "natrual_language": ["Generate", "insn", "that", "updates", "the", "stack", "for", "local", "variables", "and", "padding", "for", "*", "registers", "we", "save", ".", "-", "Generate", "the", "appropriate", "return", "insn", "."], "TS_V_token": ["crx", "0", "1"], "File": "crx", "Func": "crx_expand_epilogue", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32340, "Length": 119}
{"ground_truth": ["", "void", "crx_expand_prologue", "(", "void", ")", "{", "crx_compute_frame", "(", ")", ";", "crx_compute_save_regs", "(", ")", ";", "if", "(", "size_for_adjusting_sp", "+", "sum_regs", "==", "0", ")", "return", ";", "if", "(", "last_reg_to_save", "!=", "-", "1", ")", "emit_insn", "(", "gen_push_for_prologue", "(", "GEN_INT", "(", "sum_regs", ")", ")", ")", ";", "if", "(", "size_for_adjusting_sp", ">", "0", ")", "emit_insn", "(", "gen_addsi3", "(", "stack_pointer_rtx", ",", "stack_pointer_rtx", ",", "GEN_INT", "(", "-", "size_for_adjusting_sp", ")", ")", ")", ";", "if", "(", "frame_pointer_needed", ")", "emit_move_insn", "(", "frame_pointer_rtx", ",", "stack_pointer_rtx", ")", ";", "}", ""], "natrual_language": ["CompactRISC", "CRX", "Architecture", "stack", "layout", ":", "0", "+", "--", "--", "--", "--", "--", "--", "--", "--", "--", "--", "-", "|", ".", ".", "|", "+====================", "Sp", "(", "x", ")", "=Ap", "(", "x+1", ")", "A", "|", "Args", "for", "functions", "|", "|", "called", "by", "X", "and", "Dynamically", "|", "|", "Dynamic", "allocations", "allocated", "and", "|", "|", "(", "alloca", ",", "variable", "deallocated", "Stack", "|", "length", "arrays", ")", ".", "grows", "+", "--", "--", "--", "--", "--", "--", "--", "--", "--", "--", "Fp", "(", "x", ")", "down|", "|", "Local", "variables", "of", "X", "ward|", "+", "--", "--", "--", "--", "--", "--", "--", "--", "--", "--", "|", "|", "Regs", "saved", "for", "X-1", "|", "+====================", "Sp", "(", "x-1", ")", "=Ap", "(", "x", ")", "|", "Args", "for", "func", "X", "|", "pushed", "by", "X-1", "+", "--", "--", "--", "--", "--", "--", "--", "--", "--", "--", "Fp", "(", "x-1", ")", "|", "|", "V"], "TS_V_token": ["crx", "0", "1", "0"], "File": "crx", "Func": "crx_expand_prologue", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32341, "Length": 76}
{"ground_truth": ["", "static", "bool", "crx_fixed_condition_code_regs", "(", "unsigned", "int", "*", "p1", ",", "unsigned", "int", "*", "p2", ")", "{", "*", "p1", "=", "CC_REGNUM", ";", "*", "p2", "=", "INVALID_REGNUM", ";", "return", "true", ";", "}", ""], "natrual_language": ["Return", "the", "fixed", "registers", "used", "for", "condition", "codes", "."], "TS_V_token": ["crx"], "File": "crx", "Func": "crx_fixed_condition_code_regs", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32342, "Length": 29}
{"ground_truth": ["", "rtx", "crx_function_arg", "(", "CUMULATIVE_ARGS", "*", "cum", ",", "enum", "machine_mode", "mode", ",", "tree", "type", ",", "int", "named", "ATTRIBUTE_UNUSED", ")", "{", "last_parm_in_reg", "=", "0", ";", "if", "(", "type", "==", "void_type_node", ")", "return", "NULL_RTX", ";", "if", "(", "targetm", ".", "calls", ".", "must_pass_in_stack", "(", "mode", ",", "type", ")", "||", "(", "cum", "->", "ints", "<", "0", ")", ")", "return", "NULL_RTX", ";", "if", "(", "mode", "==", "BLKmode", ")", "{", "if", "(", "enough_regs_for_param", "(", "cum", ",", "type", ",", "mode", ")", "!=", "0", ")", "{", "last_parm_in_reg", "=", "1", ";", "return", "gen_rtx_REG", "(", "mode", ",", "MIN_REG_FOR_PASSING_ARGS", "+", "cum", "->", "ints", ")", ";", "}", "}", "if", "(", "MIN_REG_FOR_PASSING_ARGS", "+", "cum", "->", "ints", ">", "MAX_REG_FOR_PASSING_ARGS", ")", "return", "NULL_RTX", ";", "else", "{", "if", "(", "enough_regs_for_param", "(", "cum", ",", "type", ",", "mode", ")", "!=", "0", ")", "{", "last_parm_in_reg", "=", "1", ";", "return", "gen_rtx_REG", "(", "mode", ",", "MIN_REG_FOR_PASSING_ARGS", "+", "cum", "->", "ints", ")", ";", "}", "}", "return", "NULL_RTX", ";", "}", ""], "natrual_language": ["Implements", "the", "macro", "FUNCTION_ARG", "defined", "in", "crx.h", "."], "TS_V_token": ["crx", "0", "0", "0", "1", "0", "1"], "File": "crx", "Func": "crx_function_arg", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32343, "Length": 146}
{"ground_truth": ["", "void", "crx_function_arg_advance", "(", "CUMULATIVE_ARGS", "*", "cum", ",", "enum", "machine_mode", "mode", ",", "tree", "type", ",", "int", "named", "ATTRIBUTE_UNUSED", ")", "{", "int", "l", "=", "GET_MODE_BITSIZE", "(", "mode", ")", "/", "BITS_PER_WORD", ";", "if", "(", "!", "last_parm_in_reg", ")", "return", ";", "if", "(", "targetm", ".", "calls", ".", "must_pass_in_stack", "(", "mode", ",", "type", ")", "||", "(", "cum", "->", "ints", "<", "0", ")", ")", "return", ";", "if", "(", "mode", "==", "SImode", "||", "mode", "==", "HImode", "||", "mode", "==", "QImode", "||", "mode", "==", "DImode", ")", "{", "if", "(", "l", "<=", "1", ")", "cum", "->", "ints", "+=", "1", ";", "else", "cum", "->", "ints", "+=", "l", ";", "}", "else", "if", "(", "mode", "==", "SFmode", "||", "mode", "==", "DFmode", ")", "cum", "->", "ints", "+=", "l", ";", "else", "if", "(", "(", "mode", ")", "==", "BLKmode", ")", "{", "if", "(", "(", "l", "=", "enough_regs_for_param", "(", "cum", ",", "type", ",", "mode", ")", ")", "!=", "0", ")", "cum", "->", "ints", "+=", "l", ";", "}", "}", ""], "natrual_language": ["Implements", "the", "macro", "FUNCTION_ARG_ADVANCE", "defined", "in", "crx.h", "."], "TS_V_token": ["crx", "0", "1", "1", "0"], "File": "crx", "Func": "crx_function_arg_advance", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32344, "Length": 150}
{"ground_truth": ["", "int", "crx_function_arg_regno_p", "(", "int", "n", ")", "{", "return", "(", "n", "<=", "MAX_REG_FOR_PASSING_ARGS", "&&", "n", ">=", "MIN_REG_FOR_PASSING_ARGS", ")", ";", "}", ""], "natrual_language": ["Implements", "the", "macro", "FUNCTION_ARG_REGNO_P", "defined", "in", "crx.h", ".", "Return", "nonzero", "*", "if", "N", "is", "a", "register", "used", "for", "passing", "parameters", "."], "TS_V_token": ["crx"], "File": "crx", "Func": "crx_function_arg_regno_p", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32345, "Length": 19}
{"ground_truth": ["", "int", "crx_hard_regno_mode_ok", "(", "int", "regno", ",", "enum", "machine_mode", "mode", ")", "{", "if", "(", "regno", "==", "CC_REGNUM", ")", "return", "GET_MODE_CLASS", "(", "mode", ")", "==", "MODE_CC", ";", "if", "(", "GET_MODE_CLASS", "(", "mode", ")", "==", "MODE_CC", ")", "return", "0", ";", "if", "(", "HILO_REGNO_P", "(", "regno", ")", ")", "return", "mode", "==", "SImode", "||", "mode", "==", "DImode", ";", "return", "1", ";", "}", ""], "natrual_language": ["Return", "1", "if", "hard", "register", "REGNO", "can", "hold", "a", "value", "of", "machine-mode", "MODE", "."], "TS_V_token": ["crx", "0", "1"], "File": "crx", "Func": "crx_hard_regno_mode_ok", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32346, "Length": 57}
{"ground_truth": ["", "int", "crx_initial_elimination_offset", "(", "int", "from", ",", "int", "to", ")", "{", "crx_compute_save_regs", "(", ")", ";", "crx_compute_frame", "(", ")", ";", "if", "(", "(", "from", ")", "==", "FRAME_POINTER_REGNUM", "&&", "(", "to", ")", "==", "STACK_POINTER_REGNUM", ")", "return", "(", "ACCUMULATE_OUTGOING_ARGS", "?", "current_function_outgoing_args_size", ":", "0", ")", ";", "else", "if", "(", "(", "from", ")", "==", "ARG_POINTER_REGNUM", "&&", "(", "to", ")", "==", "FRAME_POINTER_REGNUM", ")", "return", "(", "sum_regs", "+", "local_vars_size", ")", ";", "else", "if", "(", "(", "from", ")", "==", "ARG_POINTER_REGNUM", "&&", "(", "to", ")", "==", "STACK_POINTER_REGNUM", ")", "return", "(", "sum_regs", "+", "local_vars_size", "+", "(", "ACCUMULATE_OUTGOING_ARGS", "?", "current_function_outgoing_args_size", ":", "0", ")", ")", ";", "else", "abort", "(", ")", ";", "}", ""], "natrual_language": ["Implements", "the", "macro", "INITIAL_ELIMINATION_OFFSET", ",", "return", "the", "OFFSET", "."], "TS_V_token": ["crx", "0", "0"], "File": "crx", "Func": "crx_initial_elimination_offset", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32347, "Length": 99}
{"ground_truth": ["", "void", "crx_init_cumulative_args", "(", "CUMULATIVE_ARGS", "*", "cum", ",", "tree", "fntype", ",", "rtx", "libfunc", "ATTRIBUTE_UNUSED", ")", "{", "tree", "param", ",", "next_param", ";", "cum", "->", "ints", "=", "0", ";", "for", "(", "param", "=", "(", "fntype", ")", "?", "TYPE_ARG_TYPES", "(", "fntype", ")", ":", "0", ";", "param", "!=", "(", "tree", ")", "0", ";", "param", "=", "next_param", ")", "{", "next_param", "=", "TREE_CHAIN", "(", "param", ")", ";", "if", "(", "next_param", "==", "(", "tree", ")", "0", "&&", "TREE_VALUE", "(", "param", ")", "!=", "void_type_node", ")", "{", "cum", "->", "ints", "=", "-", "1", ";", "return", ";", "}", "}", "}", ""], "natrual_language": ["Implements", "the", "macro", "INIT_CUMULATIVE_ARGS", "defined", "in", "crx.h", "."], "TS_V_token": ["crx", "0", "0", "0", "0", "1"], "File": "crx", "Func": "crx_init_cumulative_args", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32348, "Length": 89}
{"ground_truth": ["", "int", "crx_interrupt_function_p", "(", "void", ")", "{", "tree", "attributes", ";", "attributes", "=", "TYPE_ATTRIBUTES", "(", "TREE_TYPE", "(", "current_function_decl", ")", ")", ";", "return", "lookup_attribute", "(", "\"interrupt\"", ",", "attributes", ")", "!=", "NULL_TREE", ";", "}", ""], "natrual_language": ["Return", "nonzero", "if", "the", "current", "function", "being", "compiled", "is", "an", "interrupt", "*", "function", "as", "specified", "by", "the", "``", "interrupt", "''", "attribute", "."], "TS_V_token": ["crx", "\"interrupt\""], "File": "crx", "Func": "crx_interrupt_function_p", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32349, "Length": 30}
{"ground_truth": ["", "int", "crx_memory_move_cost", "(", "enum", "machine_mode", "mode", ",", "enum", "reg_class", "class", "ATTRIBUTE_UNUSED", ",", "int", "in", "ATTRIBUTE_UNUSED", ")", "{", "if", "(", "reg_classes_intersect_p", "(", "class", ",", "GENERAL_REGS", ")", ")", "{", "return", "4", "*", "HARD_REGNO_NREGS", "(", "0", ",", "mode", ")", ";", "}", "else", "if", "(", "reg_classes_intersect_p", "(", "class", ",", "HILO_REGS", ")", ")", "{", "return", "(", "REGISTER_MOVE_COST", "(", "mode", ",", "in", "?", "GENERAL_REGS", ":", "HILO_REGS", ",", "in", "?", "HILO_REGS", ":", "GENERAL_REGS", ")", "+", "4", ")", "*", "HARD_REGNO_NREGS", "(", "0", ",", "mode", ")", ";", "}", "else", "{", "return", "100", ";", "}", "}", ""], "natrual_language": ["Return", "the", "cost", "of", "moving", "data", "of", "mode", "MODE", "between", "a", "register", "of", "class", "*", "CLASS", "and", "memory", ";", "IN", "is", "zero", "if", "the", "value", "is", "to", "be", "written", "to", "memory", ",", "*", "nonzero", "if", "it", "is", "to", "be", "read", "in", ".", "This", "cost", "is", "relative", "to", "those", "in", "*", "REGISTER_MOVE_COST", "."], "TS_V_token": ["crx", "4", "0", "4", "0", "100"], "File": "crx", "Func": "crx_memory_move_cost", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32350, "Length": 86}
{"ground_truth": ["", "char", "*", "crx_prepare_push_pop_string", "(", "int", "push_or_pop", ")", "{", "static", "char", "mask_str", "[", "50", "]", ";", "int", "i", "=", "0", ";", "int", "ra_in_bitmask", "=", "0", ";", "char", "*", "return_str", ";", "char", "*", "temp_str", ";", "return_str", "=", "(", "char", "*", ")", "xmalloc", "(", "120", ")", ";", "temp_str", "=", "(", "char", "*", ")", "xmalloc", "(", "120", ")", ";", "memset", "(", "return_str", ",", "0", ",", "3", ")", ";", "while", "(", "i", "<=", "last_reg_to_save", ")", "{", "mask_str", "[", "0", "]", "=", "0", ";", "if", "(", "i", "<=", "SP_REGNUM", ")", "{", "int", "j", "=", "0", ";", "while", "(", "j", "<", "MAX_COUNT", "&&", "i", "<=", "SP_REGNUM", ")", "{", "if", "(", "save_regs", "[", "i", "]", ")", "{", "if", "(", "i", "==", "RETURN_ADDRESS_REGNUM", ")", "ra_in_bitmask", "=", "1", ";", "if", "(", "j", ">", "0", ")", "strcat", "(", "mask_str", ",", "\", \"", ")", ";", "strcat", "(", "mask_str", ",", "reg_names", "[", "i", "]", ")", ";", "++", "j", ";", "}", "++", "i", ";", "}", "}", "else", "{", "while", "(", "i", "<=", "last_reg_to_save", ")", "{", "if", "(", "save_regs", "[", "i", "]", ")", "{", "strcat", "(", "mask_str", ",", "\"lo, hi\"", ")", ";", "i", "=", "last_reg_to_save", "+", "1", ";", "break", ";", "}", "++", "i", ";", "}", "}", "if", "(", "strlen", "(", "mask_str", ")", "==", "0", ")", "continue", ";", "if", "(", "push_or_pop", "==", "1", ")", "{", "if", "(", "crx_interrupt_function_p", "(", ")", ")", "mpushpop_str", "(", "temp_str", ",", "\"popx\"", ",", "mask_str", ")", ";", "else", "{", "if", "(", "ra_in_bitmask", ")", "{", "mpushpop_str", "(", "temp_str", ",", "\"popret\"", ",", "mask_str", ")", ";", "ra_in_bitmask", "=", "0", ";", "}", "else", "mpushpop_str", "(", "temp_str", ",", "\"pop\"", ",", "mask_str", ")", ";", "}", "strcat", "(", "return_str", ",", "temp_str", ")", ";", "}", "else", "{", "if", "(", "crx_interrupt_function_p", "(", ")", ")", "mpushpop_str", "(", "temp_str", ",", "\"pushx\"", ",", "mask_str", ")", ";", "else", "mpushpop_str", "(", "temp_str", ",", "\"push\"", ",", "mask_str", ")", ";", "strcat", "(", "temp_str", ",", "return_str", ")", ";", "strcpy", "(", "strcat", "(", "return_str", ",", "\"\\t\"", ")", ",", "temp_str", ")", ";", "}", "}", "if", "(", "push_or_pop", "==", "1", ")", "{", "if", "(", "crx_interrupt_function_p", "(", ")", ")", "strcat", "(", "return_str", ",", "\"\\n\\tretx\\n\"", ")", ";", "else", "if", "(", "!", "FUNC_IS_NORETURN_P", "(", "current_function_decl", ")", "&&", "!", "save_regs", "[", "RETURN_ADDRESS_REGNUM", "]", ")", "strcat", "(", "return_str", ",", "\"\\n\\tjump\\tra\\n\"", ")", ";", "}", "return_str", "+=", "2", ";", "return", "return_str", ";", "}", ""], "natrual_language": ["Called", "from", "crx.md", ".", "The", "return", "value", "depends", "on", "the", "parameter", "push_or_pop", ":", "*", "When", "push_or_pop", "is", "zero", "-", ">", "string", "for", "push", "instructions", "of", "prologue", ".", "*", "When", "push_or_pop", "is", "nonzero", "-", ">", "string", "for", "pop/popret/retx", "in", "epilogue", ".", "*", "Relies", "on", "the", "assumptions", ":", "*", "1", ".", "RA", "is", "the", "last", "register", "to", "be", "saved", ".", "*", "2", ".", "The", "maximal", "value", "of", "the", "counter", "is", "MAX_COUNT", "."], "TS_V_token": ["crx", "50", "0", "0", "120", "120", "0", "3", "0", "0", "0", "1", "0", "\", \"", "\"lo, hi\"", "1", "0", "1", "\"popx\"", "\"popret\"", "0", "\"pop\"", "\"pushx\"", "\"push\"", "\"\\t\"", "1", "\"\\n\\tretx\\n\"", "\"\\n\\tjump\\tra\\n\"", "2"], "File": "crx", "Func": "crx_prepare_push_pop_string", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32351, "Length": 361}
{"ground_truth": ["", "void", "crx_print_operand_address", "(", "FILE", "*", "file", ",", "rtx", "addr", ")", "{", "enum", "crx_addrtype", "addrtype", ";", "struct", "crx_address", "address", ";", "int", "offset", ";", "addrtype", "=", "crx_decompose_address", "(", "addr", ",", "&", "address", ")", ";", "if", "(", "address", ".", "disp", ")", "offset", "=", "INTVAL", "(", "address", ".", "disp", ")", ";", "else", "offset", "=", "0", ";", "switch", "(", "addrtype", ")", "{", "case", "CRX_REG_REL", ":", "fprintf", "(", "file", ",", "\"%d(%s)\"", ",", "offset", ",", "reg_names", "[", "REGNO", "(", "address", ".", "base", ")", "]", ")", ";", "return", ";", "case", "CRX_POST_INC", ":", "switch", "(", "GET_CODE", "(", "address", ".", "side_effect", ")", ")", "{", "case", "PLUS", ":", "break", ";", "case", "MINUS", ":", "offset", "=", "-", "offset", ";", "break", ";", "case", "POST_INC", ":", "offset", "=", "GET_MODE_SIZE", "(", "output_memory_reference_mode", ")", ";", "break", ";", "case", "POST_DEC", ":", "offset", "=", "-", "GET_MODE_SIZE", "(", "output_memory_reference_mode", ")", ";", "break", ";", "default", ":", "abort", "(", ")", ";", "}", "fprintf", "(", "file", ",", "\"%d(%s)+\"", ",", "offset", ",", "reg_names", "[", "REGNO", "(", "address", ".", "base", ")", "]", ")", ";", "return", ";", "case", "CRX_SCALED_INDX", ":", "fprintf", "(", "file", ",", "\"%d(%s, %s, %d)\"", ",", "offset", ",", "reg_names", "[", "REGNO", "(", "address", ".", "base", ")", "]", ",", "reg_names", "[", "REGNO", "(", "address", ".", "index", ")", "]", ",", "address", ".", "scale", ")", ";", "return", ";", "case", "CRX_ABSOLUTE", ":", "output_addr_const", "(", "file", ",", "address", ".", "disp", ")", ";", "return", ";", "default", ":", "abort", "(", ")", ";", "}", "}", ""], "natrual_language": ["Implements", "the", "macro", "PRINT_OPERAND_ADDRESS", "defined", "in", "crx.h", "."], "TS_V_token": ["crx", "0", "\"%d(%s)\"", "\"%d(%s)+\"", "\"%d(%s, %s, %d)\""], "File": "crx", "Func": "crx_print_operand_address", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32352, "Length": 222}
{"ground_truth": ["", "enum", "reg_class", "crx_regno_reg_class", "(", "int", "regno", ")", "{", "if", "(", "regno", ">=", "0", "&&", "regno", "<", "SP_REGNUM", ")", "return", "NOSP_REGS", ";", "if", "(", "regno", "==", "SP_REGNUM", ")", "return", "GENERAL_REGS", ";", "if", "(", "regno", "==", "LO_REGNUM", ")", "return", "LO_REGS", ";", "if", "(", "regno", "==", "HI_REGNUM", ")", "return", "HI_REGS", ";", "return", "NO_REGS", ";", "}", ""], "natrual_language": ["Return", "the", "class", "number", "of", "the", "smallest", "class", "containing", "reg", "number", "REGNO", ".", "*", "This", "could", "be", "a", "conditional", "expression", "or", "could", "index", "an", "array", "."], "TS_V_token": ["crx", "0"], "File": "crx", "Func": "crx_regno_reg_class", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32353, "Length": 52}
{"ground_truth": ["", "static", "bool", "crx_return_in_memory", "(", "tree", "type", ",", "tree", "fntype", "ATTRIBUTE_UNUSED", ")", "{", "if", "(", "TYPE_MODE", "(", "type", ")", "==", "BLKmode", ")", "{", "HOST_WIDE_INT", "size", "=", "int_size_in_bytes", "(", "type", ")", ";", "return", "(", "size", "==", "-", "1", "||", "size", ">", "8", ")", ";", "}", "else", "return", "false", ";", "}", ""], "natrual_language": ["Implements", "hook", "TARGET_RETURN_IN_MEMORY", "."], "TS_V_token": ["crx", "1", "8"], "File": "crx", "Func": "crx_return_in_memory", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32354, "Length": 48}
{"ground_truth": ["", "enum", "reg_class", "crx_secondary_reload_class", "(", "enum", "reg_class", "class", ",", "enum", "machine_mode", "mode", "ATTRIBUTE_UNUSED", ",", "rtx", "x", "ATTRIBUTE_UNUSED", ")", "{", "if", "(", "reg_classes_intersect_p", "(", "class", ",", "HILO_REGS", ")", "&&", "true_regnum", "(", "x", ")", "==", "-", "1", ")", "return", "GENERAL_REGS", ";", "return", "NO_REGS", ";", "}", ""], "natrual_language": ["Transfer", "between", "HILO_REGS", "and", "memory", "via", "secondary", "reloading", "."], "TS_V_token": ["crx", "1"], "File": "crx", "Func": "crx_secondary_reload_class", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32355, "Length": 42}
{"ground_truth": ["", "static", "rtx", "crx_struct_value_rtx", "(", "tree", "fntype", "ATTRIBUTE_UNUSED", ",", "int", "incoming", "ATTRIBUTE_UNUSED", ")", "{", "return", "gen_rtx_REG", "(", "Pmode", ",", "CRX_STRUCT_VALUE_REGNUM", ")", ";", "}", ""], "natrual_language": ["Implements", "hook", "TARGET_STRUCT_VALUE_RTX", "."], "TS_V_token": ["crx"], "File": "crx", "Func": "crx_struct_value_rtx", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32356, "Length": 22}
{"ground_truth": ["", "static", "int", "enough_regs_for_param", "(", "CUMULATIVE_ARGS", "*", "cum", ",", "tree", "type", ",", "enum", "machine_mode", "mode", ")", "{", "int", "type_size", ";", "int", "remaining_size", ";", "if", "(", "mode", "!=", "BLKmode", ")", "type_size", "=", "GET_MODE_BITSIZE", "(", "mode", ")", ";", "else", "type_size", "=", "int_size_in_bytes", "(", "type", ")", "*", "BITS_PER_UNIT", ";", "remaining_size", "=", "BITS_PER_WORD", "*", "(", "MAX_REG_FOR_PASSING_ARGS", "-", "(", "MIN_REG_FOR_PASSING_ARGS", "+", "cum", "->", "ints", ")", "+", "1", ")", ";", "if", "(", "(", "remaining_size", ">=", "type_size", ")", "&&", "(", "type_size", "<=", "2", "*", "BITS_PER_WORD", ")", ")", "return", "(", "type_size", "+", "BITS_PER_WORD", "-", "1", ")", "/", "BITS_PER_WORD", ";", "return", "0", ";", "}", ""], "natrual_language": ["If", "enough", "param", "regs", "are", "available", "for", "passing", "the", "param", "of", "type", "TYPE", "return", "*", "the", "number", "of", "registers", "needed", "else", "0", "."], "TS_V_token": ["crx", "1", "2", "1", "0"], "File": "crx", "Func": "enough_regs_for_param", "Target": "crx", "Target_Clf": "CPU", "Compiler_Type": "GCC", "Idx": 32357, "Length": 94}