osprey/cygnus/opcodes/sparc-opc.c File Reference

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

Include dependency graph for sparc-opc.c:

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 Documentation

#define BIT5   (1<<5)

#define br ( opcode,
mask,
lose,
flags   ) 

#define brr ( opcode,
mask,
lose,
flags   ) 

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 }

#define brx ( opcode,
mask,
lose,
flags   ) 

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 CBR ( opcode,
mask,
lose,
flags,
arch   ) 

Value:

{ opcode, (mask), ANNUL|(lose), "l",    flags|F_DELAYED, arch }, \
 { opcode, (mask)|ANNUL, (lose), ",a l", flags|F_DELAYED, arch }

#define CMPFCC (  )     (((x)&0x3)<<25)

#define COMMUTEOP ( opcode,
op3,
arch_mask   ) 

Value:

{ opcode, F3(2, op3, 0), F3(~2, ~op3, ~0)|ASI(~0),  "1,2,d", 0, arch_mask }, \
{ opcode, F3(2, op3, 1), F3(~2, ~op3, ~1),    "1,i,d", 0, arch_mask }, \
{ opcode, F3(2, op3, 1), F3(~2, ~op3, ~1),    "i,1,d", 0, arch_mask }

Definition at line 176 of file sparc-opc.c.

#define cond ( bop,
top,
mask,
flags   ) 

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)&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   ) 

Value:

FBRX(fop, F2(0, 5)|COND(mask), F2(~0, ~5)|COND(~(mask)), flags), /* v9 */ \
  FBR(fop, F2(0, 6)|COND(mask), F2(~0, ~6)|COND(~(mask)), flags)

#define CONDFC ( fop,
cop,
mask,
flags   ) 

Value:

FBRX(fop, F2(0, 5)|COND(mask), F2(~0, ~5)|COND(~(mask)), flags), /* v9 */ \
  FBR(fop, F2(0, 6)|COND(mask), F2(~0, ~6)|COND(~(mask)), flags), \
  CBR(cop, F2(0, 7)|COND(mask), F2(~0, ~7)|COND(~(mask)), flags, v6notlet)

#define CONDFCL ( fop,
cop,
mask,
flags   ) 

Value:

FBRX(fop, F2(0, 5)|COND(mask), F2(~0, ~5)|COND(~(mask)), flags), /* v9 */ \
  FBR(fop, F2(0, 6)|COND(mask), F2(~0, ~6)|COND(~(mask)), flags), \
  CBR(cop, F2(0, 7)|COND(mask), F2(~0, ~7)|COND(~(mask)), flags, v6)

#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   ) 

Value:

/* v9 */ \
  brr(bop, F2(0, 3)|COND(mask), F2(~0, ~3)|COND(~(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)&0x3)<<20)

Definition at line 163 of file sparc-opc.c.

#define FBR ( opcode,
mask,
lose,
flags   ) 

Value:

{ opcode, (mask), ANNUL|(lose), "l",    flags|F_DELAYED|F_FBR, v6 }, \
 { opcode, (mask)|ANNUL, (lose), ",a l", flags|F_DELAYED|F_FBR, v6 }

#define FBRX ( opcode,
mask,
lose,
flags   ) 

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)&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

#define fmovcc ( suffix,
cond,
fcond,
flags   ) 

Value:

/* v9 */ \
fmovccx("fmovd" suffix, FM_DF, "B,H", cond, fcond, flags),  \
fmovccx("fmovq" suffix, FM_QF, "R,J", cond, fcond, flags),  \
fmovccx("fmovs" suffix, FM_SF, "f,g", cond, fcond, flags)

#define fmovccx ( opcode,
fpsize,
args,
cond,
fcond,
flags   ) 

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 */ \
fmovfccx("fmovd" suffix, FM_DF, "B,H", fcond, flags),   \
fmovfccx("fmovq" suffix, FM_QF, "R,J", fcond, flags),   \
fmovfccx("fmovs" suffix, FM_SF, "f,g", fcond, flags)

#define fmovfccx ( opcode,
fpsize,
args,
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 fmovicc ( suffix,
cond,
flags   ) 

Value:

/* v9 */ \
fmoviccx("fmovd" suffix, FM_DF, "B,H", cond, flags),    \
fmoviccx("fmovq" suffix, FM_QF, "R,J", cond, flags),    \
fmoviccx("fmovs" suffix, FM_SF, "f,g", cond, flags)

#define fmoviccx ( opcode,
fpsize,
args,
cond,
flags   ) 

Value:

/* v9 */ \
{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z," args, flags, v9 }, \
{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z," args, flags, v9 }

#define fmovrd ( mop,
mask,
flags   ) 

Value:

/* v9 */ \
  fmrrd(mop, F3(2, 0x35, 0)|OPF_LOW5(6)|RCOND(mask), F3(~2, ~0x35, 0)|OPF_LOW5(~6)|RCOND(~(mask)), (flags))

#define fmovrq ( mop,
mask,
flags   ) 

Value:

/* v9 */ \
  fmrrq(mop, F3(2, 0x35, 0)|OPF_LOW5(7)|RCOND(mask), F3(~2, ~0x35, 0)|OPF_LOW5(~7)|RCOND(~(mask)), (flags))

#define fmovrs ( mop,
mask,
flags   ) 

Value:

/* v9 */ \
  fmrrs(mop, F3(2, 0x35, 0)|OPF_LOW5(5)|RCOND(mask), F3(~2, ~0x35, 0)|OPF_LOW5(~5)|RCOND(~(mask)), (flags))

#define fmrrd ( opcode,
mask,
lose,
flags   ) 

Value:

/* v9 */ \
 { opcode, (mask), (lose), "1,B,H", (flags) | F_FLOAT, v9 }

#define fmrrq ( opcode,
mask,
lose,
flags   ) 

Value:

/* v9 */ \
 { opcode, (mask), (lose), "1,R,J", (flags) | F_FLOAT, v9 }

#define fmrrs ( opcode,
mask,
lose,
flags   ) 

Value:

/* v9 */ \
 { opcode, (mask), (lose), "1,f,g", (flags) | F_FLOAT, v9 }

#define ICC   (0)

Definition at line 160 of file sparc-opc.c.

#define IMPDEP ( name,
code   ) 

Value:

{ name, F3(2, code, 0), F3(~2, ~code, ~0)|ASI(~0), "1,2,d", 0, v9notv9a }, \
{ name, F3(2, code, 1), F3(~2, ~code, ~1),     "1,i,d", 0, v9notv9a }, \
{ name, F3(2, code, 0), F3(~2, ~code, ~0),         "x,1,2,d", 0, v9notv9a }, \
{ name, F3(2, code, 0), F3(~2, ~code, ~0),         "x,e,f,g", 0, v9notv9a }

#define MASK_SPARCLET   SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLET)

Definition at line 39 of file sparc-opc.c.

Referenced by sparc_override_options().

#define MASK_SPARCLITE   SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLITE)

Definition at line 40 of file sparc-opc.c.

Referenced by sparc_override_options().

#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)

Definition at line 38 of file sparc-opc.c.

Referenced by sparc_override_options().

#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.

#define movcc ( opcode,
cond,
fcond,
flags   ) 

Value:

/* v9 */ \
  movfcc (opcode, fcond, flags), /* v9 */ \
  movicc (opcode, cond, flags)

#define movfcc ( opcode,
fcond,
flags   ) 

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 }

#define movicc ( opcode,
cond,
flags   ) 

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 movr ( opcode,
mask,
flags   ) 

Value:

/* v9 */ \
 { opcode, F3(2, 0x2f, 0)|RCOND(mask), F3(~2, ~0x2f, ~0)|RCOND(~(mask)), "1,2,d", (flags), v9 }, \
 { opcode, F3(2, 0x2f, 1)|RCOND(mask), F3(~2, ~0x2f, ~1)|RCOND(~(mask)), "1,j,d", (flags), v9 }

#define RCOND (  )     (((x)&0x7)<<10)

Definition at line 116 of file sparc-opc.c.

#define SLCBCC ( opcode,
mask   )     SLCBCC2(opcode, F2(0, 7)|COND(mask), F2(~0, ~7)|COND(~(mask)))

#define SLCBCC2 ( opcode,
mask,
lose   ) 

Value:

{ opcode, (mask), ANNUL|(lose), "l",    F_DELAYED|F_CONDBR, sparclet }, \
 { opcode, (mask)|ANNUL, (lose), ",a l", F_DELAYED|F_CONDBR, sparclet }

#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.

#define tr ( opcode,
mask,
lose,
flags   ) 

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:

Definition at line 47 of file sparc-opc.c.

#define v6notlet

Value:

Definition at line 50 of file sparc-opc.c.

#define v6notv9

Value:

Definition at line 68 of file sparc-opc.c.

#define v7

Value:

Definition at line 52 of file sparc-opc.c.

#define v8

Value:

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.


Function Documentation

static int lookup_name ( arg table,
const char *  name 
) const [static]

Definition at line 1840 of file sparc-opc.c.

References arg::name, p, strcmp(), and arg::value.

static const char* lookup_value ( arg table,
int  value 
) const [static]

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

Definition at line 1914 of file sparc-opc.c.

References lookup_name().

int sparc_encode_membar ( char *  name  )  const

Definition at line 1946 of file sparc-opc.c.

References lookup_name().

int sparc_encode_prefetch ( char *  name  )  const

Definition at line 1977 of file sparc-opc.c.

References lookup_name().

int sparc_encode_sparclet_cpreg ( char *  name  )  const

Definition at line 2009 of file sparc-opc.c.

References lookup_name().

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().


Variable Documentation

arg asi_table[] [static]

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]))

Definition at line 1824 of file sparc-opc.c.

Referenced by print_insn_sparc().

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.

Definition at line 181 of file sparc-opc.c.

Referenced by print_insn_sparc().

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.


Generated on Wed Apr 8 15:06:09 2009 for Open64 by  doxygen 1.5.6