#include <stdio.h>#include "sysdep.h"#include "opcode/sparc.h"

Go to the source code of this file.
Data Types | |
| type | arg |
Defines | |
| #define | MASK_V6 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V6) |
| #define | MASK_V7 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V7) |
| #define | MASK_V8 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V8) |
| #define | MASK_SPARCLET SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLET) |
| #define | MASK_SPARCLITE SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLITE) |
| #define | MASK_V9 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9) |
| #define | MASK_V9A SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9A) |
| #define | MASK_V9B SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9B) |
| #define | v6 |
| #define | v6notlet |
| #define | v7 |
| #define | v8 |
| #define | sparclet (MASK_SPARCLET) |
| #define | sparclite (MASK_SPARCLITE) |
| #define | v9 (MASK_V9 | MASK_V9A | MASK_V9B) |
| #define | v9a (MASK_V9A | MASK_V9B) |
| #define | v9b (MASK_V9B) |
| #define | v6notv9 |
| #define | v9notv9a (MASK_V9) |
| #define | COND(x) (((x)&0xf)<<25) |
| #define | MCOND(x, i_or_f) ((((i_or_f)&1)<<18)|(((x)>>11)&(0xf<<14))) |
| #define | RCOND(x) (((x)&0x7)<<10) |
| #define | CONDA (COND(0x8)) |
| #define | CONDCC (COND(0xd)) |
| #define | CONDCS (COND(0x5)) |
| #define | CONDE (COND(0x1)) |
| #define | CONDG (COND(0xa)) |
| #define | CONDGE (COND(0xb)) |
| #define | CONDGU (COND(0xc)) |
| #define | CONDL (COND(0x3)) |
| #define | CONDLE (COND(0x2)) |
| #define | CONDLEU (COND(0x4)) |
| #define | CONDN (COND(0x0)) |
| #define | CONDNE (COND(0x9)) |
| #define | CONDNEG (COND(0x6)) |
| #define | CONDPOS (COND(0xe)) |
| #define | CONDVC (COND(0xf)) |
| #define | CONDVS (COND(0x7)) |
| #define | CONDNZ CONDNE |
| #define | CONDZ CONDE |
| #define | CONDGEU CONDCC |
| #define | CONDLU CONDCS |
| #define | FCONDA (COND(0x8)) |
| #define | FCONDE (COND(0x9)) |
| #define | FCONDG (COND(0x6)) |
| #define | FCONDGE (COND(0xb)) |
| #define | FCONDL (COND(0x4)) |
| #define | FCONDLE (COND(0xd)) |
| #define | FCONDLG (COND(0x2)) |
| #define | FCONDN (COND(0x0)) |
| #define | FCONDNE (COND(0x1)) |
| #define | FCONDO (COND(0xf)) |
| #define | FCONDU (COND(0x7)) |
| #define | FCONDUE (COND(0xa)) |
| #define | FCONDUG (COND(0x5)) |
| #define | FCONDUGE (COND(0xc)) |
| #define | FCONDUL (COND(0x3)) |
| #define | FCONDULE (COND(0xe)) |
| #define | FCONDNZ FCONDNE |
| #define | FCONDZ FCONDE |
| #define | ICC (0) |
| #define | XCC (1<<12) |
| #define | FCC(x) (((x)&0x3)<<11) |
| #define | FBFCC(x) (((x)&0x3)<<20) |
| #define | COMMUTEOP(opcode, op3, arch_mask) |
| #define | br(opcode, mask, lose, flags) |
| #define | brx(opcode, mask, lose, flags) |
| #define | tr(opcode, mask, lose, flags) |
| #define | cond(bop, top, mask, flags) |
| #define | brr(opcode, mask, lose, flags) |
| #define | condr(bop, mask, flags) |
| #define | movr(opcode, mask, flags) |
| #define | fmrrs(opcode, mask, lose, flags) |
| #define | fmrrd(opcode, mask, lose, flags) |
| #define | fmrrq(opcode, mask, lose, flags) |
| #define | fmovrs(mop, mask, flags) |
| #define | fmovrd(mop, mask, flags) |
| #define | fmovrq(mop, mask, flags) |
| #define | movicc(opcode, cond, flags) |
| #define | movfcc(opcode, fcond, flags) |
| #define | movcc(opcode, cond, fcond, flags) |
| #define | FM_SF 1 |
| #define | FM_DF 2 |
| #define | FM_QF 3 |
| #define | fmoviccx(opcode, fpsize, args, cond, flags) |
| #define | fmovfccx(opcode, fpsize, args, fcond, flags) |
| #define | fmovccx(opcode, fpsize, args, cond, fcond, flags) |
| #define | fmovicc(suffix, cond, flags) |
| #define | fmovfcc(suffix, fcond, flags) |
| #define | fmovcc(suffix, cond, fcond, flags) |
| #define | CBR(opcode, mask, lose, flags, arch) |
| #define | FBR(opcode, mask, lose, flags) |
| #define | FBRX(opcode, mask, lose, flags) |
| #define | CONDFC(fop, cop, mask, flags) |
| #define | CONDFCL(fop, cop, mask, flags) |
| #define | CONDF(fop, mask, flags) |
| #define | CMPFCC(x) (((x)&0x3)<<25) |
| #define | EFPOP1_2(name, op, args) { name, F3F(2, 0x36, op), F3F(~2, ~0x36, ~op)|RS1_G0, args, 0, sparclite } |
| #define | EFPOP1_3(name, op, args) { name, F3F(2, 0x36, op), F3F(~2, ~0x36, ~op), args, 0, sparclite } |
| #define | EFPOP2_2(name, op, args) { name, F3F(2, 0x37, op), F3F(~2, ~0x37, ~op)|RD_G0, args, 0, sparclite } |
| #define | BIT5 (1<<5) |
| #define | SLCBCC2(opcode, mask, lose) |
| #define | SLCBCC(opcode, mask) SLCBCC2(opcode, F2(0, 7)|COND(mask), F2(~0, ~7)|COND(~(mask))) |
| #define | IMPDEP(name, code) |
Functions/Subroutines | |
| enum sparc_opcode_arch_val | sparc_opcode_lookup_arch (char *name) const |
| static int lookup_name | PARAMS ((const arg *, const char *)) |
| static const char *lookup_value | PARAMS ((const arg *, int)) |
| static int | lookup_name (arg *table, const char *name) const |
| static const char * | lookup_value (arg *table, int value) const |
| int | sparc_encode_asi (char *name) const |
| const char * | sparc_decode_asi (int value) |
| int | sparc_encode_membar (char *name) const |
| const char * | sparc_decode_membar (int value) |
| int | sparc_encode_prefetch (char *name) const |
| const char * | sparc_decode_prefetch (int value) |
| int | sparc_encode_sparclet_cpreg (char *name) const |
| const char * | sparc_decode_sparclet_cpreg (int value) |
Variables | |
| struct sparc_opcode_arch | sparc_opcode_archs [] |
| struct sparc_opcode | sparc_opcodes [] |
| const int | sparc_num_opcodes = ((sizeof sparc_opcodes)/(sizeof sparc_opcodes[0])) |
| static arg | asi_table [] |
| static arg | membar_table [] |
| static arg | prefetch_table [] |
| static arg | sparclet_cpreg_table [] |
| #define BIT5 (1<<5) |
Value:
{ opcode, (mask)|ANNUL, (lose), ",a l", (flags), v6 }, \
{ opcode, (mask) , (lose)|ANNUL, "l", (flags), v6 }
Referenced by REGIONAL_CFG::ARN_Is_Log_If(), DCE::BB_branch_live(), BB_kind(), REGIONAL_CFG::BB_Not_Suit_Duplicate(), BB_Remove_Branch(), DCE::Check_conditional_branches_dom(), DCE::Check_conditional_branches_pred(), Classify_BB(), IF_CONVERTOR::Classify_BB(), CNTL_DEP::CNTL_DEP(), compute_ebb_actions(), DCE::Compute_reaching_conditions(), IVR::Compute_trip_count(), cwh_addr_nonc_util(), cwh_expr_binop_shift(), cwh_expr_compare_bitwise(), do_simple(), OPT_FEEDBACK::Emit_feedback(), expand_complex_operations_1(), fei_abs(), fei_new_binop_cshift(), Find_BB_Predicates(), find_redundant_br(), fold_builtin_complex_div(), fold_builtin_complex_mul(), fold_complex_add(), fold_complex_div(), fold_complex_mult(), GCM_Fill_Branch_Delay_Slots(), CFG::LMV_eligible_for_multiversioning(), CFG::LMV_gen_precondioning_stuff(), CFG::LMV_update_internal_labels(), main(), IF_CONVERTOR::Merge_Area(), ppc64_elf_relocate_section(), Predicate_Of_Succ(), ret_cond_branch(), SCHEDULER::Schedule_Cycle(), SWP_Fixup(), Target_Simple_Fall_Through_BB(), and Unroll_Dowhile_Loop().
Value:
/* v9 */ \ { opcode, (mask)|BPRED, ANNUL|(lose), "1,k", F_DELAYED|(flags), v9 }, \ { opcode, (mask)|BPRED, ANNUL|(lose), ",T 1,k", F_DELAYED|(flags), v9 }, \ { opcode, (mask)|BPRED|ANNUL, (lose), ",a 1,k", F_DELAYED|(flags), v9 }, \ { opcode, (mask)|BPRED|ANNUL, (lose), ",a,T 1,k", F_DELAYED|(flags), v9 }, \ { opcode, (mask), ANNUL|BPRED|(lose), ",N 1,k", F_DELAYED|(flags), v9 }, \ { opcode, (mask)|ANNUL, BPRED|(lose), ",a,N 1,k", F_DELAYED|(flags), v9 }
Value:
/* v9 */ \ { opcode, (mask)|(2<<20)|BPRED, ANNUL|(lose), "Z,G", (flags), v9 }, \ { opcode, (mask)|(2<<20)|BPRED, ANNUL|(lose), ",T Z,G", (flags), v9 }, \ { opcode, (mask)|(2<<20)|BPRED|ANNUL, (lose), ",a Z,G", (flags), v9 }, \ { opcode, (mask)|(2<<20)|BPRED|ANNUL, (lose), ",a,T Z,G", (flags), v9 }, \ { opcode, (mask)|(2<<20), ANNUL|BPRED|(lose), ",N Z,G", (flags), v9 }, \ { opcode, (mask)|(2<<20)|ANNUL, BPRED|(lose), ",a,N Z,G", (flags), v9 }, \ { opcode, (mask)|BPRED, ANNUL|(lose)|(2<<20), "z,G", (flags), v9 }, \ { opcode, (mask)|BPRED, ANNUL|(lose)|(2<<20), ",T z,G", (flags), v9 }, \ { opcode, (mask)|BPRED|ANNUL, (lose)|(2<<20), ",a z,G", (flags), v9 }, \ { opcode, (mask)|BPRED|ANNUL, (lose)|(2<<20), ",a,T z,G", (flags), v9 }, \ { opcode, (mask), ANNUL|BPRED|(lose)|(2<<20), ",N z,G", (flags), v9 }, \ { opcode, (mask)|ANNUL, BPRED|(lose)|(2<<20), ",a,N z,G", (flags), v9 }
| #define CMPFCC | ( | x | ) | (((x)&0x3)<<25) |
| #define COMMUTEOP | ( | opcode, | |||
| op3, | |||||
| arch_mask | ) |
Value:
brx(bop, F2(0, 1)|(mask), F2(~0, ~1)|((~mask)&COND(~0)), F_DELAYED|(flags)), /* v9 */ \ br(bop, F2(0, 2)|(mask), F2(~0, ~2)|((~mask)&COND(~0)), F_DELAYED|(flags)), \ tr(top, F3(2, 0x3a, 0)|(mask), F3(~2, ~0x3a, 0)|((~mask)&COND(~0)), ((flags) & ~(F_UNBR|F_CONDBR)))
Referenced by abs_replacement(), add_to_predicate_list(), alpha_gimplify_va_arg_1(), alpha_split_atomic_op(), alpha_split_compare_and_swap(), alpha_split_lock_test_and_set(), alpha_va_arg(), analyze_scalar_evolution_for_all_loop_phi_nodes(), arm_split_constant(), associate_equivalences_with_edges(), bb_estimate_probability_locally(), build_modify_expr(), build_typeid(), c_parser_do_statement(), c_parser_for_statement(), c_parser_if_statement(), c_parser_omp_for_loop(), c_parser_paren_condition(), c_parser_while_statement(), can_count_iv_in_wider_type_bound(), canonicalize_comparison(), cfg_remove_useless_stmts_bb(), checkForZero(), combine_bnp(), combine_simplify_rtx(), compare_and_jump_seq(), compare_condition(), compare_diff_p(), compare_eq_p(), compare_sign_p(), Compute_Miss_Bytes(), IVR::Compute_trip_count(), cond_exec_get_condition(), conditional_replacement(), conditionalize_block(), copy_prop_visit_cond_stmt(), cp_parser_omp_for_loop(), create_canonical_iv(), cselib_record_sets(), dead_or_predicable(), Determine_Candidate_Blocks(), determine_exit_conditions(), IVR::Determine_trip_IV_and_exit_count(), determine_use_iv_cost_condition(), do_static_initialization_or_destruction(), dsmOneArcInst(), EKAPI_RegSubclassMember(), em_bclr(), em_bits(), em_bset(), em_btest(), em_complex_sqrt_preg(), em_exp_int(), em_preg_hypot(), em_shftc(), em_split_select(), errata_emit_nops(), estimate_probability(), Exp_Select_And_Condition(), Expand_64Bit_Branch(), Expand_Branch(), expand_compare(), expand_complex_div_wide(), expand_decl_cleanup(), expand_expr(), expand_parallel_call(), Expand_Vote(), expected_value_to_br_prob(), extract_cond(), extract_range_from_assert(), ffecom_subscript_check_(), find_implicit_sets(), finish_case_label(), finish_cond(), fold_cond_expr_cond(), forward_propagate_into_cond(), frv_registers_conflict_p_1(), genrtl_do_stmt(), genrtl_for_stmt(), genrtl_if_stmt(), genrtl_switch_stmt(), genrtl_while_stmt(), get_condition(), gimplify_exit_expr(), gimplify_if_stmt(), gimplify_modify_expr_rhs(), REGION_BOUND::grb(), handle_compare(), Handle_SELECT(), identify_jump_threads(), init_propagate_block_info(), WN_INSTRUMENT_WALKER::Instrument_Branch(), WN_INSTRUMENT_WALKER::Instrument_Circuit(), WN_INSTRUMENT_WALKER::Instrument_Compgoto(), WN_INSTRUMENT_WALKER::Instrument_Cselect(), WN_INSTRUMENT_WALKER::Instrument_Switch(), iv_number_of_iterations(), java_check_reference(), loop_niter_by_eval(), lower_bit_field_id(), lower_complex_expr(), lower_omp_for_lastprivate(), main(), make_canonical(), Mark_Scopes_And_Labels(), mark_set_regs(), mf_build_check_statement_for(), minmax_replacement(), mips_expand_builtin(), GOTO_TABLE::Move_Goto_Out(), n_of_executions_at_most(), noce_emit_store_flag(), noce_get_alt_condition(), noce_get_condition(), noce_init_if_info(), noce_try_abs(), noce_try_addcc(), noce_try_bitop(), noce_try_minmax(), noce_try_move(), noce_try_sign_mask(), number_of_iterations_exit(), number_of_iterations_for_all_loops(), print_insn_hppa(), process_assert_insertions_for(), process_phi_nodes(), propagate_one_insn(), push_base_cleanups(), Raise_whiledo_stmt_to_whileloop(), record_edge_info(), record_single_argument_cond_exprs(), record_temporary_equivalences_from_stmts_at_dest(), register_edge_assert_for(), remove_range_assertions(), remove_useless_stmts_cond(), GOTO_TABLE::Replace_Goto_With_If(), GTABLE::Replace_Goto_With_If(), GTABLE::Replace_Goto_With_While(), GOTO_TABLE::Replace_Goto_With_While(), ret_cond_branch(), rewrite_use_compare(), rs6000_split_atomic_op(), rs6000_split_compare_and_swap(), rs6000_split_compare_and_swapqhi(), rs6000_split_lock_test_and_set(), rtx_needs_barrier(), sched_get_condition(), VN_TERNARY_EXPR::simplify(), simplify_cond(), simplify_cond_and_lookup_avail_expr(), simplify_cond_using_ranges(), simplify_control_stmt_condition(), simplify_if_then_else(), simplify_loop_decl_cond(), simplify_switch_expr(), simplify_using_initial_conditions(), simplify_using_initial_values(), simplify_with_current_value_aux(), slpeel_make_loop_iterate_ntimes(), start_static_initialization_or_destruction(), substitute_single_use_vars(), thread_across_edge(), tree_if_conversion(), tree_may_unswitch_on(), tree_predict_by_opcode(), tree_unswitch_single_loop(), try_unroll_loop_completely(), tsubst_expr(), unswitch_single_loop(), update_set_flags(), use_thunk(), value_replacement(), verify_cond_expr(), verify_if_statement(), verify_jvm_instructions(), verify_switch_statement(), verify_while_statement(), vr4130_avoid_branch_rt_conflict(), vrp_visit_cond_stmt(), WFE_Expand_Expr(), WFE_Expand_Loop(), and WGEN_Expand_Loop().
| #define COND | ( | x | ) | (((x)&0xf)<<25) |
Definition at line 110 of file sparc-opc.c.
| #define CONDA (COND(0x8)) |
Definition at line 118 of file sparc-opc.c.
| #define CONDCC (COND(0xd)) |
Definition at line 119 of file sparc-opc.c.
| #define CONDCS (COND(0x5)) |
Definition at line 120 of file sparc-opc.c.
| #define CONDE (COND(0x1)) |
Definition at line 121 of file sparc-opc.c.
| #define CONDF | ( | fop, | |||
| mask, | |||||
| flags | ) |
| #define CONDFC | ( | fop, | |||
| cop, | |||||
| mask, | |||||
| flags | ) |
| #define CONDFCL | ( | fop, | |||
| cop, | |||||
| mask, | |||||
| flags | ) |
| #define CONDG (COND(0xa)) |
Definition at line 122 of file sparc-opc.c.
| #define CONDGE (COND(0xb)) |
Definition at line 123 of file sparc-opc.c.
| #define CONDGEU CONDCC |
Definition at line 137 of file sparc-opc.c.
| #define CONDGU (COND(0xc)) |
Definition at line 124 of file sparc-opc.c.
| #define CONDL (COND(0x3)) |
Definition at line 125 of file sparc-opc.c.
| #define CONDLE (COND(0x2)) |
Definition at line 126 of file sparc-opc.c.
| #define CONDLEU (COND(0x4)) |
Definition at line 127 of file sparc-opc.c.
| #define CONDLU CONDCS |
Definition at line 138 of file sparc-opc.c.
| #define CONDN (COND(0x0)) |
Definition at line 128 of file sparc-opc.c.
| #define CONDNE (COND(0x9)) |
Definition at line 129 of file sparc-opc.c.
| #define CONDNEG (COND(0x6)) |
Definition at line 130 of file sparc-opc.c.
| #define CONDNZ CONDNE |
Definition at line 135 of file sparc-opc.c.
| #define CONDPOS (COND(0xe)) |
Definition at line 131 of file sparc-opc.c.
| #define condr | ( | bop, | |||
| mask, | |||||
| flags | ) |
| #define CONDVC (COND(0xf)) |
Definition at line 132 of file sparc-opc.c.
| #define CONDVS (COND(0x7)) |
Definition at line 133 of file sparc-opc.c.
| #define CONDZ CONDE |
Definition at line 136 of file sparc-opc.c.
| #define EFPOP1_2 | ( | name, | |||
| op, | |||||
| args | ) | { name, F3F(2, 0x36, op), F3F(~2, ~0x36, ~op)|RS1_G0, args, 0, sparclite } |
| #define EFPOP1_3 | ( | name, | |||
| op, | |||||
| args | ) | { name, F3F(2, 0x36, op), F3F(~2, ~0x36, ~op), args, 0, sparclite } |
| #define EFPOP2_2 | ( | name, | |||
| op, | |||||
| args | ) | { name, F3F(2, 0x37, op), F3F(~2, ~0x37, ~op)|RD_G0, args, 0, sparclite } |
| #define FBFCC | ( | x | ) | (((x)&0x3)<<20) |
Definition at line 163 of file sparc-opc.c.
Value:
/* v9 */ \ { opcode, FBFCC(0)|(mask)|BPRED, ANNUL|FBFCC(~0)|(lose), "6,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(0)|(mask)|BPRED, ANNUL|FBFCC(~0)|(lose), ",T 6,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(0)|(mask)|BPRED|ANNUL, FBFCC(~0)|(lose), ",a 6,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(0)|(mask)|BPRED|ANNUL, FBFCC(~0)|(lose), ",a,T 6,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(0)|(mask), ANNUL|BPRED|FBFCC(~0)|(lose), ",N 6,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(0)|(mask)|ANNUL, BPRED|FBFCC(~0)|(lose), ",a,N 6,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(1)|(mask)|BPRED, ANNUL|FBFCC(~1)|(lose), "7,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(1)|(mask)|BPRED, ANNUL|FBFCC(~1)|(lose), ",T 7,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(1)|(mask)|BPRED|ANNUL, FBFCC(~1)|(lose), ",a 7,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(1)|(mask)|BPRED|ANNUL, FBFCC(~1)|(lose), ",a,T 7,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(1)|(mask), ANNUL|BPRED|FBFCC(~1)|(lose), ",N 7,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(1)|(mask)|ANNUL, BPRED|FBFCC(~1)|(lose), ",a,N 7,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(2)|(mask)|BPRED, ANNUL|FBFCC(~2)|(lose), "8,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(2)|(mask)|BPRED, ANNUL|FBFCC(~2)|(lose), ",T 8,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(2)|(mask)|BPRED|ANNUL, FBFCC(~2)|(lose), ",a 8,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(2)|(mask)|BPRED|ANNUL, FBFCC(~2)|(lose), ",a,T 8,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(2)|(mask), ANNUL|BPRED|FBFCC(~2)|(lose), ",N 8,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(2)|(mask)|ANNUL, BPRED|FBFCC(~2)|(lose), ",a,N 8,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(3)|(mask)|BPRED, ANNUL|FBFCC(~3)|(lose), "9,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(3)|(mask)|BPRED, ANNUL|FBFCC(~3)|(lose), ",T 9,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(3)|(mask)|BPRED|ANNUL, FBFCC(~3)|(lose), ",a 9,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(3)|(mask)|BPRED|ANNUL, FBFCC(~3)|(lose), ",a,T 9,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(3)|(mask), ANNUL|BPRED|FBFCC(~3)|(lose), ",N 9,G", flags|F_DELAYED|F_FBR, v9 }, \ { opcode, FBFCC(3)|(mask)|ANNUL, BPRED|FBFCC(~3)|(lose), ",a,N 9,G", flags|F_DELAYED|F_FBR, v9 }
| #define FCC | ( | x | ) | (((x)&0x3)<<11) |
Definition at line 162 of file sparc-opc.c.
| #define FCONDA (COND(0x8)) |
Definition at line 140 of file sparc-opc.c.
| #define FCONDE (COND(0x9)) |
Definition at line 141 of file sparc-opc.c.
| #define FCONDG (COND(0x6)) |
Definition at line 142 of file sparc-opc.c.
| #define FCONDGE (COND(0xb)) |
Definition at line 143 of file sparc-opc.c.
| #define FCONDL (COND(0x4)) |
Definition at line 144 of file sparc-opc.c.
| #define FCONDLE (COND(0xd)) |
Definition at line 145 of file sparc-opc.c.
| #define FCONDLG (COND(0x2)) |
Definition at line 146 of file sparc-opc.c.
| #define FCONDN (COND(0x0)) |
Definition at line 147 of file sparc-opc.c.
| #define FCONDNE (COND(0x1)) |
Definition at line 148 of file sparc-opc.c.
| #define FCONDNZ FCONDNE |
Definition at line 157 of file sparc-opc.c.
| #define FCONDO (COND(0xf)) |
Definition at line 149 of file sparc-opc.c.
| #define FCONDU (COND(0x7)) |
Definition at line 150 of file sparc-opc.c.
| #define FCONDUE (COND(0xa)) |
Definition at line 151 of file sparc-opc.c.
| #define FCONDUG (COND(0x5)) |
Definition at line 152 of file sparc-opc.c.
| #define FCONDUGE (COND(0xc)) |
Definition at line 153 of file sparc-opc.c.
| #define FCONDUL (COND(0x3)) |
Definition at line 154 of file sparc-opc.c.
| #define FCONDULE (COND(0xe)) |
Definition at line 155 of file sparc-opc.c.
| #define FCONDZ FCONDE |
Definition at line 158 of file sparc-opc.c.
| #define FM_DF 2 |
| #define FM_QF 3 |
| #define FM_SF 1 |
Value:
/* v9 */ \ { opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z," args, flags | F_FLOAT, v9 }, \ { opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags | F_FLOAT, v9 }, \ { opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z," args, flags | F_FLOAT, v9 }, \ { opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags | F_FLOAT, v9 }, \ { opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags | F_FLOAT, v9 }, \ { opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags | F_FLOAT, v9 }
| #define fmovfcc | ( | suffix, | |||
| fcond, | |||||
| flags | ) |
Value:
/* v9 */ \ { opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags, v9 }, \ { opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags, v9 }, \ { opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags, v9 }, \ { opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags, v9 }
| #define fmovrd | ( | mop, | |||
| mask, | |||||
| flags | ) |
| #define fmovrq | ( | mop, | |||
| mask, | |||||
| flags | ) |
| #define fmovrs | ( | mop, | |||
| mask, | |||||
| flags | ) |
| #define ICC (0) |
Definition at line 160 of file sparc-opc.c.
| #define MASK_SPARCLET SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLET) |
| #define MASK_SPARCLITE SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLITE) |
| #define MASK_V6 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V6) |
Definition at line 36 of file sparc-opc.c.
| #define MASK_V7 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V7) |
Definition at line 37 of file sparc-opc.c.
| #define MASK_V8 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V8) |
| #define MASK_V9 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9) |
Definition at line 41 of file sparc-opc.c.
| #define MASK_V9A SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9A) |
Definition at line 42 of file sparc-opc.c.
| #define MASK_V9B SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9B) |
Definition at line 43 of file sparc-opc.c.
| #define MCOND | ( | x, | |||
| i_or_f | ) | ((((i_or_f)&1)<<18)|(((x)>>11)&(0xf<<14))) |
Definition at line 113 of file sparc-opc.c.
Value:
/* v9 */ \ { opcode, F3(2, 0x2c, 0)|FCC(0)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~0)|F3(~2, ~0x2c, ~0), "6,2,d", flags, v9 }, \ { opcode, F3(2, 0x2c, 1)|FCC(0)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~0)|F3(~2, ~0x2c, ~1), "6,I,d", flags, v9 }, \ { opcode, F3(2, 0x2c, 0)|FCC(1)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~1)|F3(~2, ~0x2c, ~0), "7,2,d", flags, v9 }, \ { opcode, F3(2, 0x2c, 1)|FCC(1)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~1)|F3(~2, ~0x2c, ~1), "7,I,d", flags, v9 }, \ { opcode, F3(2, 0x2c, 0)|FCC(2)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~2)|F3(~2, ~0x2c, ~0), "8,2,d", flags, v9 }, \ { opcode, F3(2, 0x2c, 1)|FCC(2)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~2)|F3(~2, ~0x2c, ~1), "8,I,d", flags, v9 }, \ { opcode, F3(2, 0x2c, 0)|FCC(3)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~3)|F3(~2, ~0x2c, ~0), "9,2,d", flags, v9 }, \ { opcode, F3(2, 0x2c, 1)|FCC(3)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~3)|F3(~2, ~0x2c, ~1), "9,I,d", flags, v9 }
Value:
/* v9 */ \ { opcode, F3(2, 0x2c, 0)|MCOND(cond,1)|ICC, F3(~2, ~0x2c, ~0)|MCOND(~cond,~1)|XCC|(1<<11), "z,2,d", flags, v9 }, \ { opcode, F3(2, 0x2c, 1)|MCOND(cond,1)|ICC, F3(~2, ~0x2c, ~1)|MCOND(~cond,~1)|XCC|(1<<11), "z,I,d", flags, v9 }, \ { opcode, F3(2, 0x2c, 0)|MCOND(cond,1)|XCC, F3(~2, ~0x2c, ~0)|MCOND(~cond,~1)|(1<<11), "Z,2,d", flags, v9 }, \ { opcode, F3(2, 0x2c, 1)|MCOND(cond,1)|XCC, F3(~2, ~0x2c, ~1)|MCOND(~cond,~1)|(1<<11), "Z,I,d", flags, v9 }
| #define RCOND | ( | x | ) | (((x)&0x7)<<10) |
Definition at line 116 of file sparc-opc.c.
| #define SLCBCC2 | ( | opcode, | |||
| mask, | |||||
| lose | ) |
| #define sparclet (MASK_SPARCLET) |
Definition at line 62 of file sparc-opc.c.
| #define sparclite (MASK_SPARCLITE) |
Definition at line 63 of file sparc-opc.c.
Value:
{ opcode, (mask)|(2<<11)|IMMED, (lose)|RS1_G0, "Z,i", (flags), v9 }, /* %g0 + imm */ \
{ opcode, (mask)|(2<<11)|IMMED, (lose), "Z,1+i", (flags), v9 }, /* rs1 + imm */ \
{ opcode, (mask)|(2<<11), IMMED|(lose), "Z,1+2", (flags), v9 }, /* rs1 + rs2 */ \
{ opcode, (mask)|(2<<11), IMMED|(lose)|RS2_G0, "Z,1", (flags), v9 }, /* rs1 + %g0 */ \
{ opcode, (mask)|IMMED, (lose)|RS1_G0, "z,i", (flags)|F_ALIAS, v9 }, /* %g0 + imm */ \
{ opcode, (mask)|IMMED, (lose), "z,1+i", (flags)|F_ALIAS, v9 }, /* rs1 + imm */ \
{ opcode, (mask), IMMED|(lose), "z,1+2", (flags)|F_ALIAS, v9 }, /* rs1 + rs2 */ \
{ opcode, (mask), IMMED|(lose)|RS2_G0, "z,1", (flags)|F_ALIAS, v9 }, /* rs1 + %g0 */ \
{ opcode, (mask)|IMMED, (lose)|RS1_G0, "i", (flags), v6 }, /* %g0 + imm */ \
{ opcode, (mask)|IMMED, (lose), "1+i", (flags), v6 }, /* rs1 + imm */ \
{ opcode, (mask), IMMED|(lose), "1+2", (flags), v6 }, /* rs1 + rs2 */ \
{ opcode, (mask), IMMED|(lose)|RS2_G0, "1", (flags), v6 }
Referenced by clipper_va_arg(), comp_target_types(), cwh_stab_altentry_TY(), cwh_stmt_call_helper(), cwh_types_form_misaligned_TY(), ML_WHIRL_EMITTER::Emit(), EMITTER::Emit(), expand_complex_div_wide(), sh_expand_prologue(), shmedia_prepare_call_address(), tr(), and update_path().
| #define v6 |
Value:
(MASK_V6 | MASK_V7 | MASK_V8 | MASK_SPARCLET \ | MASK_SPARCLITE | MASK_V9 | MASK_V9A | MASK_V9B)
Definition at line 47 of file sparc-opc.c.
| #define v6notlet |
Value:
Definition at line 50 of file sparc-opc.c.
| #define v6notv9 |
Value:
(MASK_V6 | MASK_V7 | MASK_V8 \ | MASK_SPARCLET | MASK_SPARCLITE)
Definition at line 68 of file sparc-opc.c.
| #define v7 |
Value:
(MASK_V7 | MASK_V8 | MASK_SPARCLET \ | MASK_SPARCLITE | MASK_V9 | MASK_V9A | MASK_V9B)
Definition at line 52 of file sparc-opc.c.
| #define v8 |
Value:
(MASK_V8 | MASK_SPARCLET | MASK_SPARCLITE \ | MASK_V9 | MASK_V9A | MASK_V9B)
Definition at line 60 of file sparc-opc.c.
Referenced by output_cbranch().
| #define v9 (MASK_V9 | MASK_V9A | MASK_V9B) |
Definition at line 64 of file sparc-opc.c.
| #define v9a (MASK_V9A | MASK_V9B) |
Definition at line 65 of file sparc-opc.c.
| #define v9b (MASK_V9B) |
Definition at line 66 of file sparc-opc.c.
| #define v9notv9a (MASK_V9) |
Definition at line 72 of file sparc-opc.c.
| #define XCC (1<<12) |
Definition at line 161 of file sparc-opc.c.
| static int lookup_name | ( | arg * | table, | |
| const char * | name | |||
| ) | const [static] |
| static const char* lookup_value | ( | arg * | table, | |
| int | value | |||
| ) | const [static] |
Definition at line 1856 of file sparc-opc.c.
References arg::name, p, and arg::value.
Referenced by sparc_decode_asi(), sparc_decode_membar(), sparc_decode_prefetch(), and sparc_decode_sparclet_cpreg().
| static const char* lookup_value PARAMS | ( | (const arg *, int) | ) | [static] |
| static int lookup_name PARAMS | ( | (const arg *, const char *) | ) | [static] |
| const char* sparc_decode_asi | ( | int | value | ) |
Definition at line 1923 of file sparc-opc.c.
References lookup_value().
Referenced by print_insn_sparc().
| const char* sparc_decode_membar | ( | int | value | ) |
Definition at line 1955 of file sparc-opc.c.
References lookup_value().
Referenced by print_insn_sparc().
| const char* sparc_decode_prefetch | ( | int | value | ) |
Definition at line 1986 of file sparc-opc.c.
References lookup_value().
Referenced by print_insn_sparc().
| const char* sparc_decode_sparclet_cpreg | ( | int | value | ) |
Definition at line 2018 of file sparc-opc.c.
References lookup_value().
Referenced by print_insn_sparc().
| int sparc_encode_asi | ( | char * | name | ) | const |
| int sparc_encode_membar | ( | char * | name | ) | const |
| int sparc_encode_prefetch | ( | char * | name | ) | const |
| int sparc_encode_sparclet_cpreg | ( | char * | name | ) | const |
| enum sparc_opcode_arch_val sparc_opcode_lookup_arch | ( | char * | name | ) | const |
Definition at line 95 of file sparc-opc.c.
References sparc_opcode_arch::name, p, SPARC_OPCODE_ARCH_BAD, and strcmp().
Definition at line 1871 of file sparc-opc.c.
arg membar_table[] [static] |
Initial value:
{
{ 0x40, "#Sync" },
{ 0x20, "#MemIssue" },
{ 0x10, "#Lookaside" },
{ 0x08, "#StoreStore" },
{ 0x04, "#LoadStore" },
{ 0x02, "#StoreLoad" },
{ 0x01, "#LoadLoad" },
{ 0, 0 }
}
Definition at line 1931 of file sparc-opc.c.
arg prefetch_table[] [static] |
Initial value:
{
{ 0, "#n_reads" },
{ 1, "#one_read" },
{ 2, "#n_writes" },
{ 3, "#one_write" },
{ 4, "#page" },
{ 16, "#invalidate" },
{ 0, 0 }
}
Definition at line 1963 of file sparc-opc.c.
| const int sparc_num_opcodes = ((sizeof sparc_opcodes)/(sizeof sparc_opcodes[0])) |
Initial value:
{
{ "v6", MASK_V6 },
{ "v7", MASK_V6 | MASK_V7 },
{ "v8", MASK_V6 | MASK_V7 | MASK_V8 },
{ "sparclet", MASK_V6 | MASK_V7 | MASK_V8 | MASK_SPARCLET },
{ "sparclite", MASK_V6 | MASK_V7 | MASK_V8 | MASK_SPARCLITE },
{ "v9", MASK_V6 | MASK_V7 | MASK_V8 | MASK_V9 },
{ "v9a", MASK_V6 | MASK_V7 | MASK_V8 | MASK_V9 | MASK_V9A },
{ "v9b", MASK_V6 | MASK_V7 | MASK_V8 | MASK_V9 | MASK_V9A | MASK_V9B },
{ NULL, 0 }
}
Definition at line 77 of file sparc-opc.c.
arg sparclet_cpreg_table[] [static] |
Initial value:
{
{ 0, "%ccsr" },
{ 1, "%ccfr" },
{ 2, "%cccrcr" },
{ 3, "%ccpr" },
{ 4, "%ccsr2" },
{ 5, "%cccrr" },
{ 6, "%ccrstr" },
{ 0, 0 }
}
Definition at line 1994 of file sparc-opc.c.
1.5.6