/*
 * Copyright (C) 2008 Advanced Micro Devices, Inc.  All Rights Reserved.
 */

/*
 *  Copyright (C) 2007, 2008 PathScale, LLC.  All Rights Reserved.
 */

/*
 *  Copyright (C) 2007 QLogic Corporation.  All Rights Reserved.
 */

/*
 * Copyright 2003, 2004, 2005, 2006 PathScale, Inc.  All Rights Reserved.
 */

/*

  Copyright (C) 2000, 2001 Silicon Graphics, Inc.  All Rights Reserved.

   Path64 is free software; you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   Path64 is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
   License for more details.

   You should have received a copy of the GNU General Public License
   along with Path64; see the file COPYING.  If not, write to the Free
   Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
   02110-1301, USA.

   Special thanks goes to SGI for their continued support to open source

*/


//  
//  Generate ISA properties information
///////////////////////////////////////
// The instructions are listed by category. The different categories of
// instructions are:
//
//   1. Operator attributes descriptors
//   2. Exception classification descriptors
//   3. Other operator descriptors (mostly for global optimization). 
//
// Within each ISA_PROPERTY instructions are listed in alphabetical order and
// as shown in the ISA manual
/////////////////////////////////////
//  $Revision: 1.178 $
//  $Date: 05/11/10 18:45:11-08:00 $
//  $Author: tkong@hyalite.keyresearch $
//  $Source: common/targ_info/isa/x8664/SCCS/s.isa_properties.cxx $


#include <stddef.h>
#include "topcode.h"
#include "isa_properties_gen.h"

int main()
{
  ISA_PROPERTY
    move,   		/* Move operator */
    load,   		/* Memory load operator */
    store, 		/* Memory store operator */
    nt_store, 		/* Non-temporal memory store operator */
    prefetch,		/* Prefetch operator */
    xfer, 		/* Control transfer operator */
    call, 		/* Subprogram call operator */
    cond, 		/* Call/xfer is conditional */
    likely, 		/* Cond call/xfer is likely */
    unalign_ld, 	/* Unaligned load operator */
    unalign_store,	/* Unaligned store operator */
    unknown_addr,	/* Memory operator potentially access any memory location */
    unknown_memdata,	/* Memory operator potentially alter data loaded/stored */
    cond_move, 		/* conditional move */
    cond_set, 		/* conditional set */
    uniq_res, 		/* Result must not be opnd */
    same_res,		/* Result must be same as opnd */
    noop, 		/* No-op operator */
    select, 		/* Operator is a machine level select */
    dummy, 		/* No-op doesn't get emitted */
    iadd, 		/* Integer add operator */
    isub, 		/* Integer subtract operator */
    imul, 		/* Integer multiply operator */
    idiv,		/* Integer divide operator */
    iop64,		/* 64-bit only integer operator */
    flop, 		/* Any proper floating point op */
    fadd, 		/* FP add operator */
    fsub,		/* FP subtract operator */
    fmul, 		/* FP multiply operator */
    fmisc,              /* FP miscellaneous class type */
    madd,		/* The kind that do two at once */
    mmalu,              /* Multimedia ALU operator */
    mmmul,              /* Multimedia multiply operator */
    mmshf,              /* Multimedia shift operator */
    itrap,		/* Integer trap potential */
    safe,		/* Never traps -- always safe */
    ftrap,		/* Floating point trap potential */
    fdiv,		/* Floating point divides */
    sqrt,		/* Square root operator */
    memtrap,		/* Memory trap potential */
    unsafe,		/* Unsafe always */
    defs_fp,		/* Operator defines FP reg */
    defs_fcc,		/* Operator defines FP CC reg */
    defs_fcr,		/* Operator defines FCR reg */
    refs_fcr,		/* Operator uses FCR reg */
    defs_fpu_int,	/* Operator defs int val in FP reg */
    ior,		/* Integer logical OR operator */
    jump,		/* Jump operator */
    ijump,		/* Indirect jump operator */
    ixor,		/* Integer logical exclusive OR operator */
    iand,		/* Integer logical AND operator */
    icmp,		/* Integer compare operator */
    f_group,            /* Instruction must be first in an instruction group */
    l_group,            /* Instruction must be last in an instruction group */
    privileged,         /* Instruction is a privileged instruction */
    simulated,		/* Instruction is simulated, i.e. a macro */
    predicated,		/* Instruction is predicated */
    access_reg_bank,	/* Instruction accesses rotating register banks */
    side_effects,	/* Instruction has side effects */
    branch_predict,	/* Branch prediction (but not actual xfer) */
    mem_fill_type,      /* Memory instructions which are fill/spill type */
    var_opnds,		/* Variable number of operands AND/OR results */
    base_update,	/* Instruction updates 'base' operand */
    loop_start,         /* Instruction marks the start of a zero-cost loop */
    change_rflags,      /* Instruction changes the value of rflags. */
    read_rflags,        /* Instruction reads the rflags. */
    change_x87_cw,      /* Instruction changes the x87 control-word. */
    read_x87_cw,        /* Instruction reads the x87 control-word. */
    x86_style,          /* The first operand is also the result. */
    prefix_lock,        /* Requires x86 "lock" instruction prefix. */
    vector_op,          /* Instruction is a vector or 128-bit operation */
    commutative,        /* The first and second opnds are commutative. */
    move_ext,           /* Move with sign/zero extension. */
    load_ext,           /* Load with sign/zero extension. */
    load_exe,           /* Load execution. */
    load_exe_store,     /* Load-execute-store. */
    x87,                /* x87 operations. */
    mmx,                /* MMX operations. */
    vector_lo_loadstore,   /* SSE movlpd/movlps */
    vector_high_loadstore, /* SSE movhpd/movhps */
    vector_packed_single,  /* SSE packed single-precision FPU op */
    vector_packed_double,  /* SSE packed double-precision FPU op */
    vector_avx,			  /*AVX vector  256-bit operation*/
    cast_vector,	    /*for cast from 256 vector to 128*/
    cfi;                /* CFI */
  

  ISA_Properties_Begin ("x8664");

  /* ====================================================================
   *              Operator attributes descriptors
   * ====================================================================
   */

  /* ===== Change x87 control-word ====== */
  change_x87_cw = ISA_Property_Create ("change_x87_cw");
  Instruction_Group( change_x87_cw,
		     TOP_fldcw,
		     TOP_fnstcw,
                     TOP_UNDEFINED );

  /* ===== Read x87 control-word ====== */
  read_x87_cw = ISA_Property_Create ("read_x87_cw");
  Instruction_Group( read_x87_cw,
		     TOP_fistps,
		     TOP_fistpl,
		     TOP_fists,
		     TOP_fistl,
		     TOP_fistpll,
		     TOP_frndint,
                     TOP_UNDEFINED );

  /* ===== Change rflags ====== */
  change_rflags = ISA_Property_Create ("change_rflags");
  Instruction_Group( change_rflags,
                     TOP_spadjust,
		     TOP_addxxx32,
		     TOP_addxxx64,
		     TOP_subxxx32,
		     TOP_subxxx64,
		     TOP_xorxxx8,
		     TOP_xorxxx16,
		     TOP_xorxxx32,
		     TOP_xorxxx64,
		     TOP_orxxx8,
		     TOP_orxxx16,
		     TOP_orxxx32,
		     TOP_orxxx64,
		     TOP_andxxx8,
		     TOP_andxxx16,
		     TOP_andxxx32,
		     TOP_andxxx64,
		     TOP_cmpxxx8,
		     TOP_cmpxxx16,
		     TOP_cmpxxx32,
		     TOP_cmpxxx64,
		     TOP_cmpxxxr8,
		     TOP_cmpxxxr16,
		     TOP_cmpxxxr32,
		     TOP_cmpxxxr64,
		     TOP_testxxx32,
		     TOP_testxxx64,
		     TOP_add32,
		     TOP_adc32,
		     TOP_add64,
		     TOP_addx32,
		     TOP_addx64,
		     TOP_addxx32,
		     TOP_addxx64,
		     TOP_addi32,
		     TOP_adci32,
		     TOP_addi64,
		     TOP_inc8,
		     TOP_inc16,
		     TOP_inc32,
		     TOP_inc64,
		     TOP_dec8,
		     TOP_dec16,
		     TOP_dec32,
		     TOP_dec64,
		     TOP_and8,
		     TOP_and16,
		     TOP_andx8,
		     TOP_andx16,
		     TOP_andx32,
		     TOP_andx64,
		     TOP_andxx8,
		     TOP_andxx16,
		     TOP_andxx32,
		     TOP_andxx64,
		     TOP_andxx32,
		     TOP_andxx64,
		     TOP_and32,
		     TOP_and64,
		     TOP_andi32,
		     TOP_andi64,
		     TOP_cmp8,
		     TOP_cmp16,
		     TOP_cmp32,
		     TOP_cmpx8,
		     TOP_cmpx16,
		     TOP_cmpx32,
		     TOP_cmpx64,
		     TOP_cmpxr8,
		     TOP_cmpxr16,
		     TOP_cmpxr32,
		     TOP_cmpxr64,
		     TOP_cmpxx8,
		     TOP_cmpxx16,
		     TOP_cmpxx32,
		     TOP_cmpxx64,
		     TOP_cmpxxr8,
		     TOP_cmpxxr16,
		     TOP_cmpxxr32,
		     TOP_cmpxxr64,
		     TOP_cmp64,
		     TOP_cmpi32,
		     TOP_cmpi64,
		     TOP_cmpi8,
		     TOP_cmpxi8,
		     TOP_cmpxxi8,
		     TOP_cmpxxxi8,
		     TOP_cmpi16,
		     TOP_cmpxi16,
		     TOP_cmpxxi16,
		     TOP_cmpxxxi16,
		     TOP_cmpxi32,
		     TOP_cmpxxi32,
		     TOP_cmpxxxi32,
		     TOP_cmpxi64,
		     TOP_cmpxxi64,
		     TOP_cmpxxxi64,
		     TOP_div32,
		     TOP_div64,
		     TOP_idiv32,
		     TOP_idiv64,
		     TOP_imul32,
		     TOP_imul64,
		     TOP_imuli32,
		     TOP_imuli64,
		     TOP_imulx64,
		     TOP_imulx32,
		     TOP_mul32,
		     TOP_mulx64,
		     TOP_neg32,
		     TOP_neg64,
		     TOP_or8,
		     TOP_or16,
		     TOP_orx8,
		     TOP_orxx8,
		     TOP_orx16,
		     TOP_orx32,
		     TOP_orx64,
		     TOP_orxx16,
		     TOP_orxx32,
		     TOP_orxx64,
		     TOP_or32,
		     TOP_or64,
		     TOP_ori32,
		     TOP_ori64,
		     TOP_ror8,
		     TOP_ror16,
		     TOP_ror32,
		     TOP_ror64,
		     TOP_rori8,
		     TOP_rori16,
		     TOP_rori32,
		     TOP_rori64,
		     TOP_rol8,
		     TOP_rol16,
		     TOP_rol32,
		     TOP_rol64,
		     TOP_roli8,
		     TOP_roli16,
		     TOP_roli32,
		     TOP_roli64,
		     TOP_sar32,
		     TOP_sar64,
		     TOP_sari32,
		     TOP_sari64,
		     TOP_shr32,
		     TOP_shr64,
		     TOP_shri32,
		     TOP_shri64,
		     TOP_shl32,
		     TOP_shld32,
		     TOP_shldi32,
		     TOP_shrd32,
		     TOP_shrdi32,
		     TOP_shl64,
		     TOP_shli32,
		     TOP_shli64,
		     TOP_sub32,
		     TOP_sbb32,
		     TOP_sub64,
		     TOP_subx32,
		     TOP_subx64,
		     TOP_subxx32,
		     TOP_subxx64,
		     TOP_subi32,
		     TOP_sbbi32,
		     TOP_subi64,
		     TOP_test32,
		     TOP_testx32,
		     TOP_testxx32,
		     TOP_test64,
		     TOP_testx64,
		     TOP_testxx64,
		     TOP_testi32,
		     TOP_testi64,
		     TOP_comisd,
		     TOP_comixsd,
		     TOP_comixxsd,
		     TOP_comixxxsd,
		     TOP_comiss,
		     TOP_comixss,
		     TOP_comixxss,
		     TOP_comixxxss,
		     TOP_xor8,
		     TOP_xor16,
		     TOP_xorx8,
		     TOP_xorx16,
		     TOP_xorx32,
		     TOP_xorx64,
		     TOP_xorxx8,
		     TOP_xorxx16,
		     TOP_xorxx32,
		     TOP_xorxx64,
		     TOP_xor32,
		     TOP_xor64,
		     TOP_xori32,
		     TOP_xori64,
		     TOP_zero32,
		     TOP_zero64,
		     TOP_fucomi,
		     TOP_fucomip,
		     TOP_lock_add8,
		     TOP_lock_add16,
		     TOP_lock_add32,
		     TOP_lock_adc32,
		     TOP_lock_add64,
		     TOP_lock_and8,
		     TOP_lock_and16,
		     TOP_lock_and32,
		     TOP_lock_and64,
		     TOP_lock_or8,
		     TOP_lock_or16,
		     TOP_lock_or32,
		     TOP_lock_or64,
		     TOP_lock_xor8,
		     TOP_lock_xor16,
		     TOP_lock_xor32,
		     TOP_lock_xor64,
		     TOP_lock_sub8,
		     TOP_lock_sub16,
		     TOP_lock_sub32,
		     TOP_lock_sub64,
		     TOP_lock_cmpxchg8,
		     TOP_lock_cmpxchg16,
		     TOP_lock_cmpxchg32,
		     TOP_lock_cmpxchg64,
		     TOP_lock_xadd8,
		     TOP_lock_xadd16,
		     TOP_lock_xadd32,
		     TOP_lock_xadd64,
		     TOP_asm,
		     TOP_bsf32,
		     TOP_bsf64,
		     TOP_bsr32,
		     TOP_bsr64,
#include "isa_avx_properties_change_rflags.cxx"
                     TOP_UNDEFINED);

  /* ===== Move operator ====== */
  move = ISA_Property_Create ("move");
  Instruction_Group (move,
		     TOP_mov32,
		     TOP_mov64,
		     TOP_ldc32,
		     TOP_ldc64,
		     TOP_movg2x,
		     TOP_movg2x64,
		     TOP_movx2g,
		     TOP_movx2g64,
		     TOP_movss,
		     TOP_movsd,
		     TOP_movdq,
				 TOP_movntdqa,
		     TOP_movapd,
		     TOP_movaps,
		     TOP_fmov,
		     TOP_movabsq,
		     TOP_mov64_m,
		     TOP_movi32_2m,
		     TOP_movi64_2m,
		     TOP_movm_2i32,
		     TOP_movm_2i64,
		     TOP_movq2dq,
		     TOP_movdq2q,
				 TOP_pmovsxbw,
				 TOP_pmovsxbd,
				 TOP_pmovsxbq,
				 TOP_pmovsxwd,
				 TOP_pmovsxwq,
				 TOP_pmovsxdq,
				 TOP_pmovzxbw,
				 TOP_pmovzxbd,
				 TOP_pmovzxbq,
				 TOP_pmovzxwd,
				 TOP_pmovzxwq,
				 TOP_pmovzxdq,
#include "isa_avx_properties_move_prop.cxx"
		     TOP_UNDEFINED);

  /* ===== Move ext operator ====== */
  move_ext = ISA_Property_Create ("move_ext");
  Instruction_Group( move_ext,
		     TOP_movsbl,
		     TOP_movzbl,
		     TOP_movswl,
		     TOP_movzwl,
		     TOP_movsbq,
		     TOP_movzbq,
		     TOP_movswq,
		     TOP_movzwq,
		     TOP_movslq,
		     TOP_movzlq,
                     TOP_UNDEFINED );

  /* ===== Memory load operator ====== */
  load = ISA_Property_Create ("load");
  Instruction_Group (load,
		     TOP_ld8_abs,
		     TOP_ld16_abs,
		     TOP_ld32_abs,
		     TOP_ld64_abs,
		     TOP_ld8_32_n32,
		     TOP_ldu8_32_n32,
		     TOP_ld16_32_n32,
		     TOP_ldu16_32_n32,
		     TOP_ld32_n32,
		     TOP_ld8_64_off,
		     TOP_ldu8_64_off,
		     TOP_ld16_64_off,
		     TOP_ldu16_64_off,
		     TOP_ld32_64_off,
		     TOP_ld64_off,
		     TOP_ldxx32,
		     TOP_ldxx64,
		     TOP_ldxx8_32,
		     TOP_ldxxu8_32,
		     TOP_ldxx16_32,
		     TOP_ldxxu16_32,
		     TOP_ld8_32,
		     TOP_ldx8_32,
		     TOP_ldxx8_32,
		     TOP_ldu8_32,
		     TOP_ldxu8_32,
		     TOP_ldxxu8_32,
		     TOP_ld16_32,
		     TOP_ldx16_32,
		     TOP_ldxx16_32,
		     TOP_ldu16_32,
		     TOP_ldxu16_32,
		     TOP_ldxxu16_32,
		     TOP_ld8_64,
		     TOP_ldx8_64,
		     TOP_ldxx8_64,
		     TOP_ldu8_64,
		     TOP_ldxu8_64,
		     TOP_ldxxu8_64,
		     TOP_ld16_64,
		     TOP_ldx16_64,
		     TOP_ldxx16_64,
		     TOP_ldu16_64,
		     TOP_ldxu16_64,
		     TOP_ldxxu16_64,
		     TOP_ld32,
		     TOP_ldx32,
		     TOP_ld32_64,
		     TOP_ldx32_64,
		     TOP_ldxx32_64,
		     TOP_ld64,
		     TOP_ldx64,
		     TOP_ldsd,
		     TOP_ldsd_n32,
		     TOP_ldss,
		     TOP_ldss_n32,
		     TOP_ldsdx,
		     TOP_ldssx,
		     TOP_ldssxx,
		     TOP_ldsdxx,
		     TOP_lddqa,
		     TOP_lddqa_n32,
		     TOP_lddqu,
		     TOP_lddqu_n32,
		     TOP_ldlps,
		     TOP_ldlps_n32,
		     TOP_ldhps,
		     TOP_ldhps_n32,
		     TOP_ldlpd,
		     TOP_ldlpd_n32,
		     TOP_ldhpd,
		     TOP_ldhpd_n32,
		     TOP_ldapd,
		     TOP_ldapd_n32,
		     TOP_ldaps,
		     TOP_ldaps_n32,
		     TOP_ldupd,
		     TOP_ldupd_n32,
		     TOP_ldups,
		     TOP_ldups_n32,
		     TOP_lddqax,
		     TOP_lddqux,
		     TOP_ldlpsx,
		     TOP_ldhpsx,
		     TOP_ldlpdx,
		     TOP_ldhpdx,
		     TOP_ldapdx,
		     TOP_ldapsx,
		     TOP_lddqaxx,
		     TOP_lddquxx,
		     TOP_ldlpsxx,
		     TOP_ldhpsxx,
		     TOP_ldlpdxx,
		     TOP_ldhpdxx,
		     TOP_ldapdxx,
		     TOP_ldapsxx,
		     TOP_flds,
		     TOP_flds_n32,
		     TOP_fldl,
		     TOP_fldl_n32,
		     TOP_fldt,
		     TOP_fldt_n32,
		     TOP_fldcw,
		     TOP_filds,
		     TOP_fildl,
		     TOP_fildll,
		     TOP_ld64_2m,
		     TOP_ld64_2m_n32,
		     TOP_ld64_2sse,
		     TOP_ld64_2sse_n32,
		     TOP_fmovsldupx,
		     TOP_fmovshdupx,
		     TOP_fmovddupx,
		     TOP_fmovsldupxx,
		     TOP_fmovshdupxx,
		     TOP_fmovddupxx,
		     TOP_fmovsldupxxx,
		     TOP_fmovshdupxxx,
		     TOP_fmovddupxxx,
		     /*AVX instructions*/
		     TOP_vlddqa_n32,
                     TOP_vldapd_n32,
                     TOP_vldaps_n32,
		     TOP_vlddqa,
                     TOP_vlddqax,
                     TOP_vlddqaxx,
		     TOP_vldapd,
                     TOP_vldapdx,
                     TOP_vldapdxx,
                     TOP_vldaps,
                     TOP_vldapsx,
                     TOP_vldapsxx,
#include "isa_avx_properties_load_only.cxx";
                     TOP_UNDEFINED);

  /* ===== Memory load and extend operator ====== */
  load_ext = ISA_Property_Create ("load_ext");
  Instruction_Group (load_ext,
		     TOP_ld8_32_n32,
		     TOP_ldu8_32_n32,
		     TOP_ld16_32_n32,
		     TOP_ldu16_32_n32,
		     TOP_ld8_32,
		     TOP_ldx8_32,
		     TOP_ldxx8_32,
		     TOP_ldu8_32,
		     TOP_ldxu8_32,
		     TOP_ldxxu8_32,
		     TOP_ld16_32,
		     TOP_ldx16_32,
		     TOP_ldxx16_32,
		     TOP_ldu16_32,
		     TOP_ldxu16_32,
		     TOP_ldxxu16_32,
		     TOP_ld8_64,
		     TOP_ldx8_64,
		     TOP_ldxx8_64,
		     TOP_ldu8_64,
		     TOP_ldxu8_64,
		     TOP_ldxxu8_64,
		     TOP_ld16_64,
		     TOP_ldx16_64,
		     TOP_ldxx16_64,
		     TOP_ldu16_64,
		     TOP_ldxu16_64,
		     TOP_ldxxu16_64,
		     TOP_ld32_64,
		     TOP_ldx32_64,
		     TOP_ldxx32_64,
		     TOP_fmovsldupx,
		     TOP_fmovshdupx,
		     TOP_fmovddupx,
		     TOP_fmovsldupxx,
		     TOP_fmovshdupxx,
		     TOP_fmovddupxx,
		     TOP_fmovsldupxxx,
		     TOP_fmovshdupxxx,
		     TOP_fmovddupxxx,
                     TOP_UNDEFINED);

  /* x87 operations that use stack */
  x87 = ISA_Property_Create ("x87");
  Instruction_Group( x87,
		     TOP_fadd,
		     TOP_faddp,
		     TOP_fsub,
		     TOP_fsubp,
		     TOP_fsubr,
		     TOP_fsubrp,
		     TOP_fld,
		     TOP_flds,
		     TOP_flds_n32,
		     TOP_fldl,
		     TOP_fldl_n32,
		     TOP_fldt,
		     TOP_fldt_n32,
		     TOP_fstp,
		     TOP_fstps,
		     TOP_fstps_n32,
		     TOP_fstpl,
		     TOP_fstpl_n32,
		     TOP_fstpt,
		     TOP_fstpt_n32,
		     TOP_fsts,
		     TOP_fsts_n32,
		     TOP_fstl,
		     TOP_fstl_n32,
		     TOP_fst,
		     TOP_fxch,
		     TOP_fmov,
		     TOP_fmul,
		     TOP_fmulp,
		     TOP_fdiv,
		     TOP_fdivp,
		     TOP_fdivr,
		     TOP_fdivrp,
		     TOP_fucomi,
		     TOP_fucomip,
		     TOP_fchs,
		     TOP_frndint,
		     TOP_fnstcw,
		     TOP_fldcw,
		     TOP_fistps,
		     TOP_fistpl,
		     TOP_fists,
		     TOP_fistl,
		     TOP_fistpll,
		     TOP_filds,
		     TOP_fildl,
		     TOP_fildll,
		     TOP_fisttps,
		     TOP_fisttpl,
		     TOP_fisttpll,
		     TOP_fabs,
		     TOP_fsqrt,
		     TOP_fcmovb,
		     TOP_fcmovbe,
		     TOP_fcmovnb,
		     TOP_fcmovnbe,
		     TOP_fcmove,
		     TOP_fcmovne,
		     TOP_fcmovu,
		     TOP_fcmovnu,
		     TOP_fldz,
		     TOP_fcos,
		     TOP_fsin,
                     TOP_UNDEFINED );

  /* MMX operations */
  mmx = ISA_Property_Create ("mmx");
  Instruction_Group( mmx,
		     TOP_ld64_2m,
		     TOP_ld64_2m_n32,
		     TOP_store64_fm,
		     TOP_store64_fm_n32,
		     TOP_storent64_fm,
		     TOP_mov64_m,
		     TOP_pmovmskb,
		     TOP_pextrw64,
		     TOP_pextrw128,
		     TOP_pinsrw64,
		     TOP_pinsrw128,
		     TOP_add64v8,
		     TOP_add64v16,
		     TOP_add64v32,
		     TOP_sub64v8,
		     TOP_sub64v16,
		     TOP_sub64v32,
		     TOP_paddsb,
		     TOP_paddsw,
		     TOP_paddq,
		     TOP_psubsb,
		     TOP_psubsw,
		     TOP_paddusb,
		     TOP_paddusw,
		     TOP_psubusb,
		     TOP_psubusw,
		     TOP_pmullw,
		     TOP_pmulhw,
		     TOP_pmuludq,
		     TOP_pcmpeqb,
		     TOP_pcmpeqw,
		     TOP_pcmpeqd,
		     TOP_pcmpgtb,
		     TOP_pcmpgtw,
		     TOP_pcmpgtd,
		     TOP_punpckhbw,
		     TOP_punpckhwd,
		     TOP_punpckhdq,
		     TOP_punpckl64v8,
		     TOP_punpckl64v16,
		     TOP_punpckl64v32,
		     TOP_packsswb,
		     TOP_packssdw,
		     TOP_packuswb,
				 TOP_packusdw,
		     TOP_pmulhuw,
		     TOP_pmaddwd,
  		     TOP_psllw_mmx,
  		     TOP_pslld_mmx,
  		     TOP_psrlw_mmx,
  		     TOP_psrld_mmx,
  		     TOP_psraw_mmx,
  		     TOP_psrad_mmx,
  		     TOP_pand_mmx,
  		     TOP_pandn_mmx,
  		     TOP_por_mmx,
  		     TOP_pxor_mmx,
		     TOP_pavgb,
		     TOP_pavgw,
		     TOP_psadbw,
		     TOP_max64v8,
		     TOP_max64v16,
		     TOP_min64v8,
		     TOP_min64v16,
		     TOP_pshufw64v16,
		     TOP_movi32_2m,
		     TOP_movi64_2m,
		     TOP_movm_2i32,
		     TOP_movm_2i64,
		     TOP_emms,	// not really MMX but has the effect of
				// clobbering x87 registers
		     TOP_movq2dq,
		     TOP_movdq2q,
		     TOP_maskmovq,
		     TOP_UNDEFINED );

  /* ===== arith. operations with memory operand ====== */
  load_exe = ISA_Property_Create ("load_exe");
  Instruction_Group( load_exe,
		     TOP_faddsubx128v32,
		     TOP_fhaddx128v32,
		     TOP_fhsubx128v32,
		     TOP_faddsubx128v64,
		     TOP_fhaddx128v64,
		     TOP_fhsubx128v64,
		     TOP_faddsubxx128v32,
		     TOP_fhaddxx128v32,
		     TOP_fhsubxx128v32,
		     TOP_faddsubxx128v64,
		     TOP_fhaddxx128v64,
		     TOP_fhsubxx128v64,
		     TOP_faddsubxxx128v32,
		     TOP_fhaddxxx128v32,
		     TOP_fhsubxxx128v32,
		     TOP_faddsubxxx128v64,
		     TOP_fhaddxxx128v64,
		     TOP_fhsubxxx128v64,
		     TOP_ijmpx,
		     TOP_ijmpxx,
		     TOP_ijmpxxx,
		     TOP_icallx,
		     TOP_icallxx,
		     TOP_icallxxx,
		     TOP_addxxx32,
		     TOP_addxxx64,
		     TOP_subxxx32,
		     TOP_subxxx64,
		     TOP_xorxxx8,
		     TOP_xorxxx16,
		     TOP_xorxxx32,
		     TOP_xorxxx64,
		     TOP_orxxx8,
		     TOP_orxxx16,
		     TOP_orxxx32,
		     TOP_orxxx64,
		     TOP_andxxx8,
		     TOP_andxxx16,
		     TOP_andxxx32,
		     TOP_andxxx64,
		     TOP_divxxxss,
		     TOP_divxxxsd,
		     TOP_addxxxss,
		     TOP_addxxxsd,
		     TOP_subxxxss,
		     TOP_subxxxsd,
		     TOP_mulxxxsd,
		     TOP_mulxxxss,
		     TOP_cmpxi8,
		     TOP_cmpxxi8,
		     TOP_cmpxxxi8,
		     TOP_cmpxi16,
		     TOP_cmpxxi16,
		     TOP_cmpxxxi16,
		     TOP_cmpxi32,
		     TOP_cmpxxi32,
		     TOP_cmpxxxi32,
		     TOP_cmpxi64,
		     TOP_cmpxxi64,
		     TOP_cmpxxxi64,
		     TOP_cmpxr8,
		     TOP_cmpxxr8,
		     TOP_cmpxxxr8,
		     TOP_cmpxr16,
		     TOP_cmpxxr16,
		     TOP_cmpxxxr16,
		     TOP_cmpxr32,
		     TOP_cmpxxr32,
		     TOP_cmpxxxr32,
		     TOP_cmpxr64,
		     TOP_cmpxxr64,
		     TOP_cmpxxxr64,
		     TOP_cmpxxx8,
		     TOP_cmpxxx16,
		     TOP_cmpxxx32,
		     TOP_cmpxxx64,
		     TOP_testxxx32,
		     TOP_testxxx64,
		     TOP_andx8,
		     TOP_andx16,
		     TOP_andx32,
		     TOP_andx64,
		     TOP_orx8,
		     TOP_orx16,
		     TOP_orx32,
		     TOP_orx64,
		     TOP_xorx8,
		     TOP_xorx16,
		     TOP_xorx32,
		     TOP_xorx64,
		     TOP_xorxx8,
		     TOP_xorxx16,
		     TOP_xorxx32,
		     TOP_xorxx64,
		     TOP_orxx8,
		     TOP_orxx16,
		     TOP_orxx32,
		     TOP_orxx64,
		     TOP_andxx8,
		     TOP_andxx16,
		     TOP_andxx32,
		     TOP_andxx64,
		     TOP_cmpx8,
		     TOP_cmpx16,
		     TOP_cmpx32,
		     TOP_cmpx64,
		     TOP_cmpxx8,
		     TOP_cmpxx16,
		     TOP_cmpxx32,
		     TOP_cmpxx64,
		     TOP_testx32,
		     TOP_testxx32,
		     TOP_testx64,
		     TOP_testxx64,
		     TOP_comixss,
		     TOP_comixxss,
		     TOP_comixxxss,
		     TOP_comixsd,
		     TOP_comixxsd,
		     TOP_comixxxsd,
		     TOP_divxsd,
		     TOP_divxxsd,
		     TOP_divxss,
		     TOP_divxxss,
		     TOP_addx32,
		     TOP_addx64,
		     TOP_subx32,
		     TOP_subx64,
		     TOP_addxx32,
		     TOP_addxx64,
		     TOP_subxx32,
		     TOP_subxx64,
		     TOP_addxss,
		     TOP_addxsd,
		     TOP_subxss,
		     TOP_subxsd,
		     TOP_mulxss,
		     TOP_mulxsd,
		     TOP_addxxss,
		     TOP_addxxsd,
		     TOP_subxxss,
		     TOP_subxxsd,
		     TOP_mulxxsd,
		     TOP_mulxxss,
		     TOP_addx128v8,
		     TOP_addx128v16,
		     TOP_addx128v32,
		     TOP_addx128v64,
		     TOP_faddx128v32,
		     TOP_faddx128v64,
		     TOP_andx128v8,
		     TOP_andx128v16,
		     TOP_andx128v32,
		     TOP_andx128v64,
		     TOP_andnx128v8,
		     TOP_andnx128v16,
		     TOP_andnx128v32,
		     TOP_andnx128v64,
		     TOP_fandx128v32,
		     TOP_fandx128v64,
		     TOP_fandnx128v64,
		     TOP_orx128v8,
		     TOP_orx128v16,
		     TOP_orx128v32,
		     TOP_orx128v64,
		     TOP_forx128v32,
		     TOP_forx128v64,
		     TOP_xorx128v8,
		     TOP_xorx128v16,
		     TOP_xorx128v32,
		     TOP_xorx128v64,
		     TOP_fxorx128v32,
		     TOP_fxorx128v64,
		     TOP_fmaxx128v32,
		     TOP_fmaxx128v64,
		     TOP_fminx128v32,
		     TOP_fminx128v64,
		     TOP_fdivx128v32,
		     TOP_fdivx128v64,
		     TOP_fmulx128v32,
		     TOP_fmulx128v64,
		     TOP_cmpgtx128v8,
		     TOP_cmpgtx128v16,
		     TOP_cmpgtx128v32,
		     TOP_cmpeqx128v8,
		     TOP_cmpeqx128v16,
		     TOP_cmpeqx128v32,
		     TOP_maxx128v8,
		     TOP_maxx128v16,
		     TOP_minx128v8,
		     TOP_minx128v16,
		     TOP_subx128v8,
		     TOP_subx128v16,
		     TOP_subx128v32,
		     TOP_subx128v64,
		     TOP_fsubx128v32,
		     TOP_fsubx128v64,
		     TOP_addxx128v8,
		     TOP_addxx128v16,
		     TOP_addxx128v32,
		     TOP_addxx128v64,
		     TOP_faddxx128v32,
		     TOP_faddxx128v64,
		     TOP_andxx128v8,
		     TOP_andxx128v16,
		     TOP_andxx128v32,
		     TOP_andxx128v64,
		     TOP_andnxx128v8,
		     TOP_andnxx128v16,
		     TOP_andnxx128v32,
		     TOP_andnxx128v64,
		     TOP_fandxx128v32,
		     TOP_fandxx128v64,
		     TOP_fandnxx128v64,
		     TOP_orxx128v8,
		     TOP_orxx128v16,
		     TOP_orxx128v32,
		     TOP_orxx128v64,
		     TOP_forxx128v32,
		     TOP_forxx128v64,
		     TOP_xorxx128v8,
		     TOP_xorxx128v16,
		     TOP_xorxx128v32,
		     TOP_xorxx128v64,
		     TOP_fxorxx128v32,
		     TOP_fxorxx128v64,
		     TOP_fmaxxx128v32,
		     TOP_fmaxxx128v64,
		     TOP_fminxx128v32,
		     TOP_fminxx128v64,
		     TOP_fdivxx128v32,
		     TOP_fdivxx128v64,
		     TOP_fmulxx128v32,
		     TOP_fmulxx128v64,
		     TOP_cmpgtxx128v8,
		     TOP_cmpgtxx128v16,
		     TOP_cmpgtxx128v32,
		     TOP_cmpeqxx128v8,
		     TOP_cmpeqxx128v16,
		     TOP_cmpeqxx128v32,
		     TOP_maxxx128v8,
		     TOP_maxxx128v16,
		     TOP_minxx128v8,
		     TOP_minxx128v16,
		     TOP_subxx128v8,
		     TOP_subxx128v16,
		     TOP_subxx128v32,
		     TOP_subxx128v64,
		     TOP_fsubxx128v32,
		     TOP_fsubxx128v64,
		     TOP_addxxx128v8,
		     TOP_addxxx128v16,
		     TOP_addxxx128v32,
		     TOP_addxxx128v64,
		     TOP_faddxxx128v32,
		     TOP_faddxxx128v64,
		     TOP_andxxx128v8,
		     TOP_andxxx128v16,
		     TOP_andxxx128v32,
		     TOP_andxxx128v64,
		     TOP_andnxxx128v8,
		     TOP_andnxxx128v16,
		     TOP_andnxxx128v32,
		     TOP_andnxxx128v64,
		     TOP_fandxxx128v32,
		     TOP_fandxxx128v64,
		     TOP_fandnxxx128v64,
		     TOP_orxxx128v8,
		     TOP_orxxx128v16,
		     TOP_orxxx128v32,
		     TOP_orxxx128v64,
		     TOP_forxxx128v32,
		     TOP_forxxx128v64,
		     TOP_xorxxx128v8,
		     TOP_xorxxx128v16,
		     TOP_xorxxx128v32,
		     TOP_xorxxx128v64,
		     TOP_fxorxxx128v32,
		     TOP_fxorxxx128v64,
		     TOP_fmaxxxx128v32,
		     TOP_fmaxxxx128v64,
		     TOP_fminxxx128v32,
		     TOP_fminxxx128v64,
		     TOP_fdivxxx128v32,
		     TOP_fdivxxx128v64,
		     TOP_fmulxxx128v32,
		     TOP_fmulxxx128v64,
		     TOP_cmpgtxxx128v8,
		     TOP_cmpgtxxx128v16,
		     TOP_cmpgtxxx128v32,
		     TOP_cmpeqxxx128v8,
		     TOP_cmpeqxxx128v16,
		     TOP_cmpeqxxx128v32,
		     TOP_maxxxx128v8,
		     TOP_maxxxx128v16,
		     TOP_minxxx128v8,
		     TOP_minxxx128v16,
		     TOP_subxxx128v8,
		     TOP_subxxx128v16,
		     TOP_subxxx128v32,
		     TOP_subxxx128v64,
		     TOP_fsubxxx128v32,
		     TOP_fsubxxx128v64,
		     TOP_cvtsd2ss_x,
		     TOP_cvtsd2ss_xx,
		     TOP_cvtsd2ss_xxx,
		     TOP_cvtsi2sd_x,
		     TOP_cvtsi2sd_xx,
		     TOP_cvtsi2sd_xxx,
		     TOP_cvtsi2ss_x,
		     TOP_cvtsi2ss_xx,
		     TOP_cvtsi2ss_xxx,
		     TOP_cvtsi2sdq_x,
		     TOP_cvtsi2sdq_xx,
		     TOP_cvtsi2sdq_xxx,
		     TOP_cvtsi2ssq_x,
		     TOP_cvtsi2ssq_xx,
		     TOP_cvtsi2ssq_xxx,
		     TOP_cvtdq2pd_x,
		     TOP_cvtdq2ps_x,
		     TOP_cvtps2pd_x,
		     TOP_cvtpd2ps_x,
		     TOP_cvtps2dq_x,
		     TOP_cvttps2dq_x,
		     TOP_cvttpd2dq_x,
		     TOP_cvtdq2pd_xx,
		     TOP_cvtdq2ps_xx,
		     TOP_cvtps2pd_xx,
		     TOP_cvtpd2ps_xx,
		     TOP_cvtps2dq_xx,
		     TOP_cvttps2dq_xx,
		     TOP_cvttpd2dq_xx,
		     TOP_cvtdq2pd_xxx,
		     TOP_cvtdq2ps_xxx,
		     TOP_cvtps2pd_xxx,
		     TOP_cvtpd2ps_xxx,
		     TOP_cvtps2dq_xxx,
		     TOP_cvttps2dq_xxx,
		     TOP_cvttpd2dq_xxx,
		     TOP_lock_add8,
		     TOP_lock_and8,
		     TOP_lock_or8,
		     TOP_lock_xor8,
		     TOP_lock_sub8,
		     TOP_lock_add16,
		     TOP_lock_and16,
		     TOP_lock_or16,
		     TOP_lock_xor16,
		     TOP_lock_sub16,
		     TOP_lock_add32,
		     TOP_lock_adc32,
		     TOP_lock_and32,
		     TOP_lock_or32,
		     TOP_lock_xor32,
		     TOP_lock_sub32,
		     TOP_lock_add64,
		     TOP_lock_and64,
		     TOP_lock_or64,
		     TOP_lock_xor64,
		     TOP_lock_sub64,
		     TOP_lock_xadd8,
		     TOP_lock_xadd16,
		     TOP_lock_xadd32,
		     TOP_lock_xadd64,
             TOP_xchgx8,
             TOP_xchgx16,
             TOP_xchgx32,
             TOP_xchgx64,
#include "isa_avx_properties_load_exe.cxx"
                     TOP_UNDEFINED);

  /* ===== arith. operations with memory src and dest operand ====== */
  load_exe_store = ISA_Property_Create ("load_exe_store");
  Instruction_Group( load_exe_store,
		     TOP_lock_add8,
		     TOP_lock_and8,
		     TOP_lock_or8,
		     TOP_lock_xor8,
		     TOP_lock_sub8,
		     TOP_lock_add16,
		     TOP_lock_and16,
		     TOP_lock_or16,
		     TOP_lock_xor16,
		     TOP_lock_sub16,
		     TOP_lock_add32,
		     TOP_lock_adc32,
		     TOP_lock_and32,
		     TOP_lock_or32,
		     TOP_lock_xor32,
		     TOP_lock_sub32,
		     TOP_lock_add64,
		     TOP_lock_and64,
		     TOP_lock_or64,
		     TOP_lock_xor64,
		     TOP_lock_sub64,
		     TOP_lock_xadd8,
		     TOP_lock_xadd16,
		     TOP_lock_xadd32,
		     TOP_lock_xadd64,
             TOP_xchgx8,
             TOP_xchgx16,
             TOP_xchgx32,
             TOP_xchgx64,
#include "isa_avx_properties_store_only.cxx"
                     TOP_UNDEFINED);

  /* ===== Non-temporal memory store operator ====== */
  nt_store = ISA_Property_Create ("nt_store");
  Instruction_Group( nt_store,
		     TOP_storenti32,
		     TOP_storentix32,
		     TOP_storentixx32,
		     TOP_storenti64,
		     TOP_storentix64,
		     TOP_storentixx64,
		     TOP_stntss,
		     TOP_stntssx,
		     TOP_stntssxx,
		     TOP_stntsd,
		     TOP_stntsdx,
		     TOP_stntsdxx,
		     TOP_stntpd,
		     TOP_stntpdx,
		     TOP_stntpdxx,
		     TOP_stntps,
		     TOP_stntpsx,
		     TOP_stntpsxx,
		     TOP_storenti128,
		     TOP_storent64_fm,
                     TOP_UNDEFINED );

  /* ===== Memory store operator ====== */
  store = ISA_Property_Create ("store");
  Instruction_Group (store,
		     TOP_store8_abs,
		     TOP_store16_abs,
		     TOP_store32_abs,
		     TOP_store64_abs,
		     TOP_store8_n32,
		     TOP_store16_n32,
		     TOP_store32_n32,
		     TOP_store64_off,
		     TOP_storexx32,
		     TOP_storexx64,
		     TOP_stssxx,
		     TOP_stsdxx,
		     TOP_stntssxx,
		     TOP_stntsdxx,
		     TOP_store8,
		     TOP_storex8,
		     TOP_storexx8,
		     TOP_store16,
		     TOP_storex16,
		     TOP_storexx16,
		     TOP_store32,
		     TOP_storex32,
		     TOP_store64,
		     TOP_storex64,
		     TOP_storenti32,
		     TOP_storentix32,
		     TOP_storentixx32,
		     TOP_storenti64,
		     TOP_storentix64,
		     TOP_storentixx64,
		     TOP_stsd,
		     TOP_stsd_n32,
		     TOP_stntsd,
		     TOP_stss,
		     TOP_stss_n32,
		     TOP_stntss,
		     TOP_stsdx,
		     TOP_stssx,
		     TOP_stntsdx,
		     TOP_stntssx,
		     TOP_stdqa,
		     TOP_stdqa_n32,
		     TOP_stntpd,
		     TOP_stntps,
		     TOP_stdqu,
		     TOP_stdqu_n32,
		     TOP_stlps,
		     TOP_sthps,
		     TOP_stlpd,
		     TOP_sthpd,
		     TOP_stlps_n32,
		     TOP_sthps_n32,
		     TOP_stlpd_n32,
		     TOP_sthpd_n32,
		     TOP_stdqax,
		     TOP_stntpdx,
		     TOP_stntpsx,
		     TOP_stdqux,
		     TOP_stlpdx,
		     TOP_sthpdx,
		     TOP_stlpsx,
		     TOP_sthpsx,
		     TOP_stdqaxx,
		     TOP_stntpdxx,
		     TOP_stntpsxx,
		     TOP_stdquxx,
		     TOP_stlpdxx,
		     TOP_sthpdxx,
		     TOP_stlpsxx,
		     TOP_sthpsxx,
		     TOP_staps,
		     TOP_staps_n32,
		     TOP_stupd,
		     TOP_stups,
		     TOP_stapd,
		     TOP_stapd_n32,
		     TOP_stapsx,
		     TOP_stapdx,
		     TOP_stapsxx,
		     TOP_stapdxx,
		     TOP_fstps,
		     TOP_fstps_n32,
		     TOP_fstpl,
		     TOP_fstpl_n32,
		     TOP_fstpt,
		     TOP_fstpt_n32,
		     TOP_fsts,
		     TOP_fsts_n32,
		     TOP_fstl,
		     TOP_fstl_n32,
		     TOP_fnstcw,
		     TOP_fistps,
		     TOP_fistpl,
		     TOP_fists,
		     TOP_fistl,
		     TOP_fistpll,
		     TOP_fisttps,
		     TOP_fisttpl,
		     TOP_fisttpll,
		     TOP_store64_fm,
		     TOP_store64_fm_n32,
		     TOP_store64_fsse,
		     TOP_store64_fsse_n32,
		     TOP_storenti128,
		     TOP_storelpd,
		     TOP_storent64_fm,
		     /* AVX instructions */
                     TOP_vstdqa,
                     TOP_vstdqax,
                     TOP_vstdqaxx,
                     TOP_vstdqa_n32,
                     TOP_vstapd,
                     TOP_vstapdx,
                     TOP_vstapdxx,
                     TOP_vstaps,
                     TOP_vstapsx,
                     TOP_vstapsxx,
		     TOP_vstapd_n32,
                     TOP_vstaps_n32,
#include "isa_avx_properties_store_only.cxx"                     
                     TOP_UNDEFINED);

  /* ===== Prefetch operator ====== */
  prefetch = ISA_Property_Create ("prefetch");
  Instruction_Group (prefetch,
		     TOP_prefetch,
		     TOP_prefetchw,
		     TOP_prefetcht0,
		     TOP_prefetcht1,
		     TOP_prefetchnta,
		     TOP_prefetchx,
		     TOP_prefetchwx,
		     TOP_prefetcht0x,
		     TOP_prefetcht1x,
		     TOP_prefetchntax,
		     TOP_prefetchxx,
		     TOP_prefetchwxx,
		     TOP_prefetcht0xx,
		     TOP_prefetcht1xx,
		     TOP_prefetchntaxx,
                     TOP_UNDEFINED);

  /* ===== Memory fill/spill type instructions ====== */
  mem_fill_type = ISA_Property_Create ("mem_fill_type");
  Instruction_Group (mem_fill_type,
		     TOP_UNDEFINED);

  /* ===== Control transfer operator ====== */
  xfer = ISA_Property_Create ("xfer");
  Instruction_Group (xfer,
		     TOP_jb,
		     TOP_jae,
		     TOP_jp,
		     TOP_jnp,
		     TOP_je,
		     TOP_jne,
		     TOP_jbe,
		     TOP_ja,
		     TOP_jge,
		     TOP_jl,
		     TOP_jle,
		     TOP_jg,
		     TOP_jcxz,
		     TOP_jecxz,
		     TOP_jrcxz,
		     TOP_js,
		     TOP_jns,
		     TOP_jmp,
		     TOP_ijmp,
		     TOP_ijmp,
		     TOP_ijmpx,
		     TOP_ijmpxx,
		     TOP_ijmpxxx,
		     TOP_ret,
		     TOP_reti,
		     TOP_call,
		     TOP_icall,
		     TOP_icallx,
		     TOP_icallxx,
		     TOP_icallxxx,
		     TOP_tls_get_addr_64,
		     TOP_tls_get_addr_32,
                     TOP_UNDEFINED);

  /* ===== Subprogram call operator ====== */
  call = ISA_Property_Create ("call");
  Instruction_Group (call,
		     TOP_call,
		     TOP_icall,
		     TOP_icallx,
		     TOP_icallxx,
		     TOP_icallxxx,
		     TOP_tls_get_addr_64,
		     TOP_tls_get_addr_32,
                     TOP_UNDEFINED);

  /* ===== Call/xfer is conditional ====== */
  cond = ISA_Property_Create ("cond");
  Instruction_Group (cond,
		     TOP_jb,
		     TOP_jae,
		     TOP_jp,
		     TOP_jnp,
		     TOP_je,
		     TOP_jne,
		     TOP_jbe,
		     TOP_ja,
		     TOP_jl,
		     TOP_jge,
		     TOP_jle,
		     TOP_jg,
		     TOP_jcxz,
		     TOP_jecxz,
		     TOP_jrcxz,
		     TOP_js,
		     TOP_jns,
                     TOP_UNDEFINED);

  /* ===== Cond call/xfer is likely ====== */
  likely = ISA_Property_Create ("likely");
  Instruction_Group (likely,
                     TOP_UNDEFINED);

  /* ===== Result def is conditional ====== */
  cond_set = ISA_Property_Create ("cond_set");
  Instruction_Group (cond_set,
		     TOP_setb,
		     TOP_setae,
		     TOP_setp,
		     TOP_setnp,
		     TOP_sete,
		     TOP_setne,
		     TOP_setbe,
		     TOP_seta,
		     TOP_setl,
		     TOP_setge,
		     TOP_setle,
		     TOP_setg,
                     TOP_UNDEFINED);

  /* ===== Result def is conditional ====== */
  cond_move = ISA_Property_Create ("cond_move");
  Instruction_Group (cond_move,
		     TOP_cmovb,
		     TOP_cmovae,
		     TOP_cmovp,
		     TOP_cmovnp,
		     TOP_cmove,
		     TOP_cmovne,
		     TOP_cmovbe,
		     TOP_cmova,
		     TOP_cmovl,
		     TOP_cmovge,
		     TOP_cmovle,
		     TOP_cmovg,
		     TOP_cmovs,
		     TOP_cmovns,
		     TOP_fcmovb,
		     TOP_fcmovbe,
		     TOP_fcmovnb,
		     TOP_fcmovnbe,
		     TOP_fcmove,
		     TOP_fcmovne,
		     TOP_fcmovu,
		     TOP_fcmovnu,
                     TOP_UNDEFINED);

  /* ===== Result must not be opnd ====== */
  uniq_res = ISA_Property_Create ("uniq_res");
  Instruction_Group (uniq_res,
                     TOP_UNDEFINED);

  /* ===== Result must be same as opnd ====== */
  same_res = ISA_Property_Create ("same_res");
  Instruction_Group (same_res,
		     /* Because asm macros can share the same operand between
		        inputs and outputs, we conservatively mark this 
			property so that the compiler doesn't try to separate
			any common operands. */
                     TOP_asm,
                     TOP_UNDEFINED);

  /* ===== Operator is a machine level select ====== */
  select = ISA_Property_Create ("select");
  Instruction_Group (select,
                     TOP_UNDEFINED);

  /* ===== Unaligned load operator ====== */
  unalign_ld = ISA_Property_Create ("unalign_ld");
  Instruction_Group (unalign_ld,
		     TOP_lddqu,
		     TOP_lddqu_n32,
		     TOP_lddqux,
		     TOP_lddquxx,
		     TOP_ldlps,
		     TOP_ldhps,
		     TOP_ldlpd,
		     TOP_ldhpd,
		     TOP_ldlpsx,
		     TOP_ldhpsx,
		     TOP_ldlpdx,
		     TOP_ldhpdx,
		     TOP_ldlpsxx,
		     TOP_ldhpsxx,
		     TOP_ldlpdxx,
		     TOP_ldhpdxx,
		     TOP_ldupd,
		     TOP_ldups,
                     TOP_UNDEFINED);

  /* ===== Unaligned store operator ====== */
  unalign_store = ISA_Property_Create ("unalign_store");
  Instruction_Group (unalign_store,
		     TOP_stdqu,
		     TOP_stdqu_n32,
		     TOP_stdqux,
		     TOP_stdquxx,
		     TOP_stlps,
		     TOP_sthps,
		     TOP_stlpd,
		     TOP_sthpd,
		     TOP_stlpsx,
		     TOP_sthpsx,
		     TOP_stlpdx,
		     TOP_sthpdx,
		     TOP_stlpsxx,
		     TOP_sthpsxx,
		     TOP_stlpdxx,
		     TOP_sthpdxx,
		     TOP_storelpd,
		     TOP_stupd,
		     TOP_stups,
		     TOP_UNDEFINED);

  /* ===== Unknown addr operator ====== */
  unknown_memdata = ISA_Property_Create ("unknown_memdata");
  Instruction_Group (unknown_memdata,
		     TOP_mfence,
		     TOP_lfence,
		     TOP_sfence,
		     TOP_UNDEFINED);

  /* ===== Unknown addr operator ====== */
  unknown_addr = ISA_Property_Create ("unknown_addr");
  Instruction_Group (unknown_addr,
		     TOP_mfence,
		     TOP_lfence,
		     TOP_sfence,
		     TOP_UNDEFINED);

  /* ===== Integer add operator ====== */
  iadd = ISA_Property_Create ("iadd");
  Instruction_Group (iadd,
		     TOP_add32,
		     TOP_add64,
		     TOP_addx32,
		     TOP_addx64,
		     TOP_addxx32,
		     TOP_addxxx32,
		     TOP_addxx64,
		     TOP_addxxx64,
		     TOP_addi32,
		     TOP_addi64,
		     TOP_paddsb,
		     TOP_paddsw,
		     TOP_paddq,
		     TOP_paddusb,
		     TOP_paddusw,
				 TOP_paddusb128,
				 TOP_paddusw128,
             TOP_paddsb128,
             TOP_paddsw128,
		     TOP_lea32,
		     TOP_lea64,
		     TOP_inc8,
		     TOP_inc16,
		     TOP_inc32,
		     TOP_inc64,
                     TOP_UNDEFINED);

  /* ===== Integer subtract operator ====== */
  isub = ISA_Property_Create ("isub");
  Instruction_Group (isub,
		     TOP_sub32,
		     TOP_sub64,
		     TOP_subx32,
		     TOP_subx64,
		     TOP_subxx32,
		     TOP_subxx64,
		     TOP_subxxx32,
		     TOP_subxxx64,
		     TOP_subi32,
		     TOP_subi64,
		     TOP_psubsb,
		     TOP_psubsw,
		     TOP_psubusb,
		     TOP_psubusw,
		     TOP_psubsb128,
		     TOP_psubsw128,
		     TOP_dec8,
		     TOP_dec16,
		     TOP_dec32,
		     TOP_dec64,
                     TOP_UNDEFINED);

  /* ===== Integer multiply operator ====== */
  imul = ISA_Property_Create ("imul");
  Instruction_Group (imul,
		     TOP_imul32,
		     TOP_imul64,
		     TOP_imuli32,
		     TOP_imuli64,
		     TOP_imulx64,
		     TOP_imulx32,
		     TOP_mul32,
		     TOP_mulx64,
		     TOP_pmuludq,
		     TOP_pmuludq128,
		     TOP_pmullw,
		     TOP_pmulhw,
		     TOP_pmulhuw,
		     TOP_pmulhuw128,
		     TOP_pmaddwd,
                     TOP_UNDEFINED);

  /* ===== Integer divide operator ====== */
  idiv = ISA_Property_Create ("idiv");
  Instruction_Group (idiv,
		     TOP_div32,
		     TOP_div64,
		     TOP_idiv32,
		     TOP_idiv64,
                     TOP_UNDEFINED);

  /* ===== 64-bit-only integer operator ====== */
  iop64 = ISA_Property_Create ("iop64");
  Instruction_Group (iop64,
                     TOP_UNDEFINED);

  /* ===== Any proper floating point op ====== */
  flop = ISA_Property_Create ("flop");
  Instruction_Group (flop,
		     TOP_faddsub128v32,
				 TOP_pavgb128,
				 TOP_pavgw128,
				 TOP_psadbw128,
		     TOP_fhadd128v32,
		     TOP_fhsub128v32,
		     TOP_faddsub128v64,
		     TOP_fhadd128v64,
		     TOP_fhsub128v64,
		     TOP_faddsubx128v32,
		     TOP_fhaddx128v32,
		     TOP_fhsubx128v32,
		     TOP_faddsubx128v64,
		     TOP_fhaddx128v64,
		     TOP_fhsubx128v64,
		     TOP_faddsubxx128v32,
		     TOP_fhaddxx128v32,
		     TOP_fhsubxx128v32,
		     TOP_faddsubxx128v64,
		     TOP_fhaddxx128v64,
		     TOP_fhsubxx128v64,
		     TOP_faddsubxxx128v32,
		     TOP_fhaddxxx128v32,
		     TOP_fhsubxxx128v32,
		     TOP_faddsubxxx128v64,
		     TOP_fhaddxxx128v64,
		     TOP_fhsubxxx128v64,
		     TOP_addx128v8,
		     TOP_addx128v16,
		     TOP_addx128v32,
		     TOP_addx128v64,
		     TOP_faddx128v32,
		     TOP_faddx128v64,
		     TOP_andx128v8,
		     TOP_andx128v16,
		     TOP_andx128v32,
		     TOP_andx128v64,
		     TOP_andnx128v8,
		     TOP_andnx128v16,
		     TOP_andnx128v32,
		     TOP_andnx128v64,
		     TOP_fandx128v32,
		     TOP_fandx128v64,
		     TOP_fandnx128v64,
		     TOP_orx128v8,
		     TOP_orx128v16,
		     TOP_orx128v32,
		     TOP_orx128v64,
		     TOP_forx128v32,
		     TOP_forx128v64,
		     TOP_xorx128v8,
		     TOP_xorx128v16,
		     TOP_xorx128v32,
		     TOP_xorx128v64,
		     TOP_fxorx128v32,
		     TOP_fxorx128v64,
		     TOP_fmaxx128v32,
		     TOP_fmaxx128v64,
		     TOP_fminx128v32,
		     TOP_fminx128v64,
		     TOP_fdivx128v32,
		     TOP_fdivx128v64,
		     TOP_fmulx128v32,
		     TOP_fmulx128v64,
		     TOP_cmpgtx128v8,
		     TOP_cmpgtx128v16,
		     TOP_cmpgtx128v32,
		     TOP_cmpeqx128v8,
		     TOP_cmpeqx128v16,
		     TOP_cmpeqx128v32,
		     TOP_maxx128v8,
		     TOP_maxx128v16,
		     TOP_minx128v8,
		     TOP_minx128v16,
		     TOP_subx128v8,
		     TOP_subx128v16,
		     TOP_subx128v32,
		     TOP_subx128v64,
		     TOP_fsubx128v32,
		     TOP_fsubx128v64,
		     TOP_addxx128v8,
		     TOP_addxx128v16,
		     TOP_addxx128v32,
		     TOP_addxx128v64,
		     TOP_faddxx128v32,
		     TOP_faddxx128v64,
		     TOP_andxx128v8,
		     TOP_andxx128v16,
		     TOP_andxx128v32,
		     TOP_andxx128v64,
		     TOP_andnxx128v8,
		     TOP_andnxx128v16,
		     TOP_andnxx128v32,
		     TOP_andnxx128v64,
		     TOP_fandxx128v32,
		     TOP_fandxx128v64,
		     TOP_fandnxx128v64,
		     TOP_orxx128v8,
		     TOP_orxx128v16,
		     TOP_orxx128v32,
		     TOP_orxx128v64,
		     TOP_forxx128v32,
		     TOP_forxx128v64,
		     TOP_xorxx128v8,
		     TOP_xorxx128v16,
		     TOP_xorxx128v32,
		     TOP_xorxx128v64,
		     TOP_fxorxx128v32,
		     TOP_fxorxx128v64,
		     TOP_fmaxxx128v32,
		     TOP_fmaxxx128v64,
		     TOP_fminxx128v32,
		     TOP_fminxx128v64,
		     TOP_fdivxx128v32,
		     TOP_fdivxx128v64,
		     TOP_fmulxx128v32,
		     TOP_fmulxx128v64,
		     TOP_cmpgtxx128v8,
		     TOP_cmpgtxx128v16,
		     TOP_cmpgtxx128v32,
		     TOP_cmpeqxx128v8,
		     TOP_cmpeqxx128v16,
		     TOP_cmpeqxx128v32,
		     TOP_maxxx128v8,
		     TOP_maxxx128v16,
		     TOP_minxx128v8,
		     TOP_minxx128v16,
		     TOP_subxx128v8,
		     TOP_subxx128v16,
		     TOP_subxx128v32,
		     TOP_subxx128v64,
		     TOP_fsubxx128v32,
		     TOP_fsubxx128v64,
		     TOP_addxxx128v8,
		     TOP_addxxx128v16,
		     TOP_addxxx128v32,
		     TOP_addxxx128v64,
		     TOP_faddxxx128v32,
		     TOP_faddxxx128v64,
		     TOP_andxxx128v8,
		     TOP_andxxx128v16,
		     TOP_andxxx128v32,
		     TOP_andxxx128v64,
		     TOP_andnxxx128v8,
		     TOP_andnxxx128v16,
		     TOP_andnxxx128v32,
		     TOP_andnxxx128v64,
		     TOP_fandxxx128v32,
		     TOP_fandxxx128v64,
		     TOP_fandnxxx128v64,
		     TOP_orxxx128v8,
		     TOP_orxxx128v16,
		     TOP_orxxx128v32,
		     TOP_orxxx128v64,
		     TOP_forxxx128v32,
		     TOP_forxxx128v64,
		     TOP_xorxxx128v8,
		     TOP_xorxxx128v16,
		     TOP_xorxxx128v32,
		     TOP_xorxxx128v64,
		     TOP_fxorxxx128v32,
		     TOP_fxorxxx128v64,
		     TOP_fmaxxxx128v32,
		     TOP_fmaxxxx128v64,
		     TOP_fminxxx128v32,
		     TOP_fminxxx128v64,
		     TOP_fdivxxx128v32,
		     TOP_fdivxxx128v64,
		     TOP_fmulxxx128v32,
		     TOP_fmulxxx128v64,
		     TOP_cmpgtxxx128v8,
		     TOP_cmpgtxxx128v16,
		     TOP_cmpgtxxx128v32,
		     TOP_cmpeqxxx128v8,
		     TOP_cmpeqxxx128v16,
		     TOP_cmpeqxxx128v32,
		     TOP_maxxxx128v8,
		     TOP_maxxxx128v16,
		     TOP_minxxx128v8,
		     TOP_minxxx128v16,
		     TOP_subxxx128v8,
		     TOP_subxxx128v16,
		     TOP_subxxx128v32,
		     TOP_subxxx128v64,
		     TOP_fsubxxx128v32,
		     TOP_fsubxxx128v64,
		     TOP_mul128v16,
		     TOP_mulhw128v16,
		     TOP_add128v8,
		     TOP_add128v16,
		     TOP_add128v32,
		     TOP_add128v64,
		     TOP_add64v8,
		     TOP_add64v16,
		     TOP_add64v32,
		     TOP_fadd128v32,
		     TOP_fadd128v64,
		     TOP_and128v8,
		     TOP_and128v16,
		     TOP_and128v32,
		     TOP_and128v64,
		     TOP_andn128v8,
		     TOP_andn128v16,
		     TOP_andn128v32,
		     TOP_andn128v64,
		     TOP_fand128v32,
		     TOP_fand128v64,
		     TOP_fandn128v64,
		     TOP_or128v8,
		     TOP_or128v16,
		     TOP_or128v32,
		     TOP_or128v64,
		     TOP_for128v32,
		     TOP_for128v64,
		     TOP_xor128v8,
		     TOP_xor128v16,
		     TOP_xor128v32,
		     TOP_xor128v64,
		     TOP_fxor128v32,
		     TOP_fxor128v64,
		     TOP_andps,
		     TOP_andpd,
		     TOP_xorps,
		     TOP_xorpd,
		     TOP_orps,
		     TOP_orpd,
		     TOP_fmax128v32,
		     TOP_fmax128v64,
		     TOP_fmin128v32,
		     TOP_fmin128v64,
		     TOP_fdiv128v32,
		     TOP_fdiv128v64,
		     TOP_fmul128v32,
		     TOP_fmul128v64,
		     TOP_cmpgt128v8,
		     TOP_cmpgt128v16,
		     TOP_cmpgt128v32,
		     TOP_cmpeq128v8,
		     TOP_cmpeq128v16,
		     TOP_cmpeq128v32,
		     TOP_pcmpeqb,
		     TOP_pcmpeqw,
		     TOP_pcmpeqd,
		     TOP_pcmpgtb,
		     TOP_pcmpgtw,
		     TOP_pcmpgtd,
		     TOP_max128v8,
		     TOP_max128v16,
		     TOP_max64v8,
		     TOP_max64v16,
		     TOP_min128v8,
		     TOP_min128v16,
		     TOP_min64v8,
		     TOP_min64v16,
		     TOP_frcp128v32,
		     TOP_fsqrt128v32,
		     TOP_frsqrt128v32,
		     TOP_fsqrt128v64,
		     TOP_addsd,
		     TOP_addss,
		     TOP_addxsd,
		     TOP_addxss,
		     TOP_addxxsd,
		     TOP_addxxss,
		     TOP_addxxxsd,
		     TOP_addxxxss,
		     TOP_comisd,
		     TOP_comixsd,
		     TOP_comixxsd,
		     TOP_comixxxsd,
		     TOP_comiss,
		     TOP_comixss,
		     TOP_comixxss,
		     TOP_comixxxss,
		     TOP_cvtdq2pd,
		     TOP_cvtdq2ps,
		     TOP_cvtps2pd,
		     TOP_cvtpd2ps,
		     TOP_cvtss2si,
		     TOP_cvtsd2si,
		     TOP_cvtss2siq,
		     TOP_cvtsd2siq,
		     TOP_cvttss2si,
		     TOP_cvttsd2si,
		     TOP_cvttss2siq,
		     TOP_cvttsd2siq,
		     TOP_cvtps2dq,
		     TOP_cvttps2dq,
		     TOP_cvtpd2dq,
		     TOP_cvttpd2dq,
		     TOP_cvtsi2sd,
		     TOP_cvtsi2ss,
		     TOP_cvtsi2sdq,
		     TOP_cvtsi2ssq,
		     TOP_cvtss2sd,
		     TOP_cvtsd2ss,
		     TOP_cvtsd2ss_x,
		     TOP_cvtsd2ss_xx,
		     TOP_cvtsd2ss_xxx,
		     TOP_cvtsi2sd_x,
		     TOP_cvtsi2sd_xx,
		     TOP_cvtsi2sd_xxx,
		     TOP_cvtsi2ss_x,
		     TOP_cvtsi2ss_xx,
		     TOP_cvtsi2ss_xxx,
		     TOP_cvtsi2sdq_x,
		     TOP_cvtsi2sdq_xx,
		     TOP_cvtsi2sdq_xxx,
		     TOP_cvtsi2ssq_x,
		     TOP_cvtsi2ssq_xx,
		     TOP_cvtsi2ssq_xxx,
		     TOP_cvtdq2pd_x,
		     TOP_cvtdq2ps_x,
		     TOP_cvtps2pd_x,
		     TOP_cvtpd2ps_x,
		     TOP_cvtps2dq_x,
		     TOP_cvttps2dq_x,
		     TOP_cvttpd2dq_x,
		     TOP_cvtdq2pd_xx,
		     TOP_cvtdq2ps_xx,
		     TOP_cvtps2pd_xx,
		     TOP_cvtpd2ps_xx,
		     TOP_cvtps2dq_xx,
		     TOP_cvttps2dq_xx,
		     TOP_cvttpd2dq_xx,
		     TOP_cvtdq2pd_xxx,
		     TOP_cvtdq2ps_xxx,
		     TOP_cvtps2pd_xxx,
		     TOP_cvtpd2ps_xxx,
		     TOP_cvtps2dq_xxx,
		     TOP_cvttps2dq_xxx,
		     TOP_cvttpd2dq_xxx,
		     TOP_cvtpi2ps,
		     TOP_cvtps2pi,
		     TOP_cvttps2pi,
		     TOP_cvtpi2pd,
		     TOP_cvtpd2pi,
		     TOP_cvttpd2pi,
		     TOP_divsd,
		     TOP_divxsd,
		     TOP_divxxsd,
		     TOP_divxxxsd,
		     TOP_divss,
		     TOP_divxss,
		     TOP_divxxss,
		     TOP_divxxxss,
		     TOP_sub128v8,
		     TOP_sub128v16,
		     TOP_sub128v32,
		     TOP_sub128v64,
		     TOP_sub64v8,
		     TOP_sub64v16,
		     TOP_sub64v32,
		     TOP_fsub128v32,
		     TOP_fsub128v64,
		     TOP_subsd,
		     TOP_subss,
		     TOP_subxsd,
		     TOP_subxss,
		     TOP_subxxsd,
		     TOP_subxxss,
		     TOP_subxxxsd,
		     TOP_subxxxss,
		     TOP_mulsd,
		     TOP_mulss,
		     TOP_mulxsd,
		     TOP_mulxss,
		     TOP_mulxxsd,
		     TOP_mulxxss,
		     TOP_mulxxxsd,
		     TOP_mulxxxss,
		     TOP_movsd,
		     TOP_movss,
		     TOP_movdq, 
		     TOP_movapd,
		     TOP_movaps,
		     TOP_movg2x64,
		     TOP_movg2x,
		     TOP_movx2g64,
		     TOP_movx2g,
		     TOP_ldsd,
		     TOP_ldsdx,
		     TOP_ldsdxx,
		     TOP_ldsd_n32,
		     TOP_ldss,
		     TOP_ldssx,
		     TOP_ldssxx,
		     TOP_ldss_n32,
		     TOP_lddqa,
		     TOP_lddqa_n32,
		     TOP_stdqa,		     
		     TOP_stdqa_n32,
		     TOP_stntpd,
		     TOP_stntps,
		     TOP_lddqu,
		     TOP_lddqu_n32,
		     TOP_ldlps,
		     TOP_ldlps_n32,
		     TOP_ldhps,
		     TOP_ldhps_n32,
		     TOP_ldlpd,
		     TOP_ldlpd_n32,
		     TOP_ldhpd,
		     TOP_ldhpd_n32,
		     TOP_ldapd,
		     TOP_ldapd_n32,
		     TOP_ldaps,
		     TOP_ldaps_n32,
		     TOP_ldupd,
		     TOP_ldupd_n32,
		     TOP_ldups,
		     TOP_ldups_n32,
		     TOP_stdqu,		     
		     TOP_stdqu_n32,
		     TOP_stlps,
		     TOP_sthps,
		     TOP_stlpd,
		     TOP_sthpd,
		     TOP_stlps_n32,
		     TOP_sthps_n32,
		     TOP_stlpd_n32,
		     TOP_sthpd_n32,
		     TOP_lddqax,
		     TOP_stdqax,		     
		     TOP_stntpdx,
		     TOP_stntpsx,
		     TOP_lddqux,
		     TOP_ldlpsx,
		     TOP_ldhpsx,
		     TOP_ldlpdx,
		     TOP_ldhpdx,
		     TOP_ldapdx,
		     TOP_ldapsx,
		     TOP_stdqux,		     
		     TOP_stlpdx,
		     TOP_sthpdx,
		     TOP_stlpsx,
		     TOP_sthpsx,
		     TOP_lddqaxx,
		     TOP_stdqaxx,		     
		     TOP_stntpdxx,
		     TOP_stntpsxx,
		     TOP_lddquxx,
		     TOP_ldlpsxx,
		     TOP_ldhpsxx,
		     TOP_ldlpdxx,
		     TOP_ldhpdxx,
		     TOP_ldapdxx,
		     TOP_ldapsxx,
		     TOP_stdquxx,		     
		     TOP_stlpdxx,
		     TOP_sthpdxx,
		     TOP_stlpsxx,
		     TOP_sthpsxx,
		     TOP_staps,		     
		     TOP_staps_n32,
		     TOP_stupd,
		     TOP_stups,
		     TOP_stapd,
		     TOP_stapd_n32,
		     TOP_stapsx,
		     TOP_stapdx,
		     TOP_stapsxx,
		     TOP_stapdxx,
		     TOP_stss,
		     TOP_stss_n32,
		     TOP_stssx,
		     TOP_stssxx,
		     TOP_stntss,
		     TOP_stntssx,
		     TOP_stntssxx,
		     TOP_stsd,
		     TOP_stsd_n32,
		     TOP_stsdx,
		     TOP_stsdxx,
		     TOP_stntsd,
		     TOP_stntsdx,
		     TOP_stntsdxx,
		     TOP_maxss,
		     TOP_maxsd,
		     TOP_minss,
		     TOP_minsd,
		     TOP_rcpss,
		     TOP_rsqrtss,
		     TOP_sqrtss,
		     TOP_sqrtsd,
		     TOP_andnps,
		     TOP_andnpd,
		     TOP_cmpss,
		     TOP_cmpsd,
		     TOP_cmpps,
		     TOP_cmppd,
		     TOP_cmpeqps,
		     TOP_cmpeqpd,
		     TOP_cmpltpd,
		     TOP_cmplepd,
		     TOP_cmpgtpd,
		     TOP_cmpgepd,
		     TOP_cmpneqpd,
		     TOP_cmpnltpd,
		     TOP_cmpnlepd,
		     TOP_cmpngtpd,
		     TOP_cmpngepd,
		     TOP_cmpordpd,
		     TOP_cmpunordpd,
		     TOP_cmpltps,
		     TOP_cmpleps,
		     TOP_cmpunordps,
		     TOP_cmpneqps,
		     TOP_cmpnltps,
		     TOP_cmpnleps,
		     TOP_cmpordps,
		     TOP_cmpeqss,
		     TOP_cmpltss,
		     TOP_cmpless,
		     TOP_cmpunordss,
		     TOP_cmpneqss,
		     TOP_cmpnltss,
		     TOP_cmpnless,
		     TOP_cmpordss,
		     TOP_cmpeqsd,
		     TOP_cmpltsd,
		     TOP_cmplesd,
		     TOP_cmpunordsd,
		     TOP_cmpneqsd,
		     TOP_cmpnltsd,
		     TOP_cmpnlesd,
		     TOP_cmpordsd,
		     TOP_unpckhpd,
		     TOP_unpckhps,
		     TOP_unpcklpd,
		     TOP_unpcklps,
		     TOP_punpcklwd,
		     TOP_punpcklbw,
		     TOP_punpckldq,
		     TOP_punpckhbw,
		     TOP_punpckhwd,
		     TOP_punpckhdq,
		     TOP_punpckl64v8,
		     TOP_punpckl64v16,
		     TOP_punpckl64v32,
		     TOP_packsswb,
		     TOP_packssdw,
		     TOP_packuswb,
		     TOP_packsswb128,
				 TOP_packssdw128,
				 TOP_packuswb128,
				 TOP_punpckhbw128,
				 TOP_punpckhwd128,
				 TOP_punpckhdq128,
				 TOP_punpckhqdq,
				 TOP_punpcklbw128,
				 TOP_punpcklwd128,
				 TOP_punpckldq128,
				 TOP_punpcklqdq,
		     TOP_pshufd,
		     TOP_pshufw,
		     TOP_pshuflw,
		     TOP_pshufhw,
		     TOP_shufpd,
		     TOP_shufps,
		     TOP_movhlps,
		     TOP_movlhps,
		     TOP_psrldq,
		     TOP_psrlq128v64,
		     TOP_pslldq,
		     TOP_psllw,
		     TOP_pslld,
		     TOP_psllq,
		     TOP_psrlw,
		     TOP_psrld,
		     TOP_psrlq,
		     TOP_psraw,
		     TOP_psrad,
  		     TOP_psllw_mmx,
  		     TOP_pslld_mmx,
  		     TOP_psrlw_mmx,
  		     TOP_psrld_mmx,
  		     TOP_psraw_mmx,
  		     TOP_psrad_mmx,
  		     TOP_pand_mmx,
  		     TOP_pandn_mmx,
             TOP_pand128,
             TOP_pandn128,
						 TOP_por128,
  		     TOP_por_mmx,
  		     TOP_pxor_mmx,
		     TOP_xzero32,
		     TOP_xzero64,
		     TOP_xzero128v32,
		     TOP_xzero128v64,
		     TOP_fadd,
		     TOP_faddp,
		     TOP_fsub,
		     TOP_fsubp,
		     TOP_fsubr,
		     TOP_fsubrp,
		     TOP_flds,
		     TOP_flds_n32,
		     TOP_fldl,
		     TOP_fldl_n32,
		     TOP_fldt,
		     TOP_fldt_n32,
		     TOP_fstp,
		     TOP_fstps,
		     TOP_fstps_n32,
		     TOP_fstpl,
		     TOP_fstpl_n32,
		     TOP_fstpt,
		     TOP_fstpt_n32,
		     TOP_fsts,
		     TOP_fsts_n32,
		     TOP_fstl,
		     TOP_fstl_n32,
		     TOP_fst,
		     TOP_fmul,
		     TOP_fmulp,
		     TOP_fdiv,
		     TOP_fdivp,
		     TOP_fdivr,
		     TOP_fdivrp,
		     TOP_fucomi,
		     TOP_fucomip,
		     TOP_fchs,
		     TOP_frndint,
		     TOP_fnstcw,
		     TOP_fldcw,
		     TOP_fistps,
		     TOP_fistpl,
		     TOP_fists,
		     TOP_fistl,
		     TOP_fistpll,
		     TOP_fisttps,
		     TOP_fisttpl,
		     TOP_fisttpll,
		     TOP_filds,
		     TOP_fildl,
		     TOP_fildll,
		     TOP_fmov,
		     TOP_fabs,
		     TOP_fsqrt,
		     TOP_fcmovb,
		     TOP_fcmovbe,
		     TOP_fcmovnb,
		     TOP_fcmovnbe,
		     TOP_fcmove,
		     TOP_fcmovne,
		     TOP_fcmovu,
		     TOP_fcmovnu,
		     TOP_fldz,
		     TOP_fcos,
		     TOP_fsin,
		     TOP_subus128v16,
		     TOP_pavgb,
		     TOP_pavgw,
		     TOP_psadbw,
		     TOP_storenti128,
		     TOP_storelpd,
		     TOP_pshufw64v16,
		     TOP_pmovmskb128,
		    /*AVX instructions*/
		     TOP_vstapd_n32,
                     TOP_vstaps_n32,
                     TOP_vldapd_n32,
                     TOP_vldaps_n32,
#include "isa_avx_properties_flop_prop.cxx" 
                     TOP_UNDEFINED);

  /* ===== FP add operator ====== */
  fadd = ISA_Property_Create ("fadd");
  Instruction_Group (fadd,
		     TOP_add128v8,
		     TOP_add128v16,
		     TOP_add128v32,
		     TOP_add64v8,
		     TOP_add64v16,
		     TOP_add64v32,
		     TOP_add128v64,
		     TOP_fadd128v32,
		     TOP_fadd128v64,
		     TOP_addx128v8,
		     TOP_addx128v16,
		     TOP_addx128v32,
		     TOP_addx128v64,
		     TOP_faddx128v32,
		     TOP_faddx128v64,
		     TOP_addxx128v8,
		     TOP_addxx128v16,
		     TOP_addxx128v32,
		     TOP_addxx128v64,
		     TOP_faddxx128v32,
		     TOP_faddxx128v64,
		     TOP_addxxx128v8,
		     TOP_addxxx128v16,
		     TOP_addxxx128v32,
		     TOP_addxxx128v64,
		     TOP_faddxxx128v32,
		     TOP_faddxxx128v64,
		     TOP_addsd,
		     TOP_addss,
		     TOP_addxsd,
		     TOP_addxss,
		     TOP_addxxsd,
		     TOP_addxxss,
		     TOP_fadd,
		     TOP_faddp,
#include "isa_avx_properties_fadd_prop.cxx"
                     TOP_UNDEFINED);

  /* ===== FP subtract operator ====== */
  fsub = ISA_Property_Create ("fsub");
  Instruction_Group (fsub,
		     TOP_sub128v8,
		     TOP_sub128v16,
		     TOP_sub128v32,
		     TOP_sub128v64,
		     TOP_sub64v8,
		     TOP_sub64v16,
		     TOP_sub64v32,
		     TOP_fsub128v32,
		     TOP_fsub128v64,
		     TOP_subx128v8,
		     TOP_subx128v16,
		     TOP_subx128v32,
		     TOP_subx128v64,
		     TOP_fsubx128v32,
		     TOP_fsubx128v64,
		     TOP_subxx128v8,
		     TOP_subxx128v16,
		     TOP_subxx128v32,
		     TOP_subxx128v64,
		     TOP_fsubxx128v32,
		     TOP_fsubxx128v64,
		     TOP_subxxx128v8,
		     TOP_subxxx128v16,
		     TOP_subxxx128v32,
		     TOP_subxxx128v64,
		     TOP_fsubxxx128v32,
		     TOP_fsubxxx128v64,
		     TOP_subsd,
		     TOP_subss,
		     TOP_subxsd,
		     TOP_subxss,
		     TOP_subxxsd,
		     TOP_subxxss,
		     TOP_fsub,
		     TOP_fsubp,		     
		     TOP_fsubr,
		     TOP_fsubrp,		     
#include "isa_avx_properties_fsub_prop.cxx"
                     TOP_UNDEFINED);

  /* ===== FP multiply operator ====== */
  fmul = ISA_Property_Create ("fmul");
  Instruction_Group (fmul,
		     TOP_mul128v16,
		     TOP_mulhw128v16,
		     TOP_mulsd,
		     TOP_mulss,
		     TOP_mulxsd,
		     TOP_mulxss,
		     TOP_mulxxsd,
		     TOP_mulxxss,
		     TOP_fmul128v32,
		     TOP_fmul128v64,
		     TOP_fmulx128v32,
		     TOP_fmulx128v64,
		     TOP_fmulxx128v32,
		     TOP_fmulxx128v64,
		     TOP_fmulxxx128v32,
		     TOP_fmulxxx128v64,
		     TOP_fmul,
		     TOP_fmulp,
#include "isa_avx_properties_fmul_prop.cxx"
                     TOP_UNDEFINED);

  /* ===== FP miscellaneous operator ====== */
  fmisc = ISA_Property_Create ("fmisc");
  Instruction_Group (fmisc,
		     TOP_UNDEFINED);

  /* ===== The kind that do two at once ====== */
  // Used in isa/expand.cxx only and not for any purpose we could use.
  madd = ISA_Property_Create ("madd");
  Instruction_Group (madd,
                     TOP_UNDEFINED);

  /* ===== Instructions belonging to Multimedia ALU type ====== */
  mmalu = ISA_Property_Create ("mmalu");
  Instruction_Group (mmalu,
		     TOP_UNDEFINED);

  /* ===== Instructions belonging to Multimedia shift (MMSHF) type ====== */
  mmshf = ISA_Property_Create ("mmshf");
  Instruction_Group (mmshf,
		     TOP_UNDEFINED);

  /* ===== Instructions belonging to Multimedia multiply (MMMUL) type ====== */
  mmmul = ISA_Property_Create ("mmmul");
  Instruction_Group (mmmul,
		     TOP_UNDEFINED);

  noop = ISA_Property_Create ("noop");
  Instruction_Group (noop,
                     TOP_nop,
                     TOP_noop,
                     TOP_UNDEFINED);

  dummy = ISA_Property_Create ("dummy");
  Instruction_Group (dummy,
		     TOP_begin_pregtn,
		     TOP_end_pregtn,
		     TOP_noop,
		     TOP_label,
		     TOP_fwd_bar,
		     TOP_bwd_bar,
                     TOP_swp_start,
                     TOP_swp_stop,
		     TOP_UNDEFINED);

/* ====================================================================
 *              Exception classification descriptors
 * ====================================================================
 */

  /* ===== Integer trap potential ====== */
  itrap = ISA_Property_Create ("itrap");
  Instruction_Group (itrap,
                     TOP_UNDEFINED);

  /* ===== Never traps -- always safe ====== */
  safe = ISA_Property_Create ("safe");
  Instruction_Group (safe,
                     TOP_UNDEFINED);

  /* ===== Unsafe always ====== */
  unsafe = ISA_Property_Create ("unsafe");
  Instruction_Group (unsafe,
                     TOP_UNDEFINED);

  /* ===== Floating point trap potential ====== */
  ftrap = ISA_Property_Create ("ftrap");
  Instruction_Group (ftrap,
                     TOP_UNDEFINED);

  /* ===== Floating point divides ====== */
  fdiv = ISA_Property_Create ("fdiv");
  Instruction_Group (fdiv,
		     TOP_divsd,
		     TOP_divxsd,
		     TOP_divxxsd,
		     TOP_divss,
		     TOP_divxss,
		     TOP_divxxss,
		     TOP_fdiv128v32,
		     TOP_fdiv128v64,
		     TOP_fdivx128v32,
		     TOP_fdivx128v64,
		     TOP_fdivxx128v32,
		     TOP_fdivxx128v64,
		     TOP_fdivxxx128v32,
		     TOP_fdivxxx128v64,
		     TOP_fdiv,
		     TOP_fdivp,
		     TOP_fdivr,
		     TOP_fdivrp,
                     TOP_UNDEFINED);

  /* ===== Square roots ====== */
  sqrt = ISA_Property_Create ("sqrt");
  Instruction_Group (sqrt,
		     TOP_sqrtss,
		     TOP_rsqrtss,
		     TOP_sqrtsd,
		     TOP_fsqrt128v32,
		     TOP_frsqrt128v32,
		     TOP_fsqrt128v64,
                     TOP_UNDEFINED);

  /* ===== Memory trap potential ====== */
  memtrap = ISA_Property_Create ("memtrap");
  Instruction_Group (memtrap,
                     TOP_UNDEFINED);

  /* ===== Instruction must be first in an instruction group ====== */
  f_group = ISA_Property_Create ("f_group");
  Instruction_Group (f_group,
		     TOP_UNDEFINED);

  /* ===== Instruction must be last in an instruction group ====== */
  l_group = ISA_Property_Create ("l_group");
  Instruction_Group (l_group,
		     TOP_UNDEFINED);

  /* ===== Instruction is a privileged instruction ====== */
  privileged = ISA_Property_Create ("privileged");
  Instruction_Group (privileged,
		     TOP_UNDEFINED);

  /* ===== Operator defines FP CC reg ====== */
  defs_fcc = ISA_Property_Create ("defs_fcc");
  Instruction_Group (defs_fcc,
                     TOP_UNDEFINED);

  /* ===== Operator defines FCR reg ====== */
  defs_fcr = ISA_Property_Create ("defs_fcr");
  Instruction_Group (defs_fcr,
                     TOP_UNDEFINED);

  /* ===== Operator uses FCR reg ====== */
  refs_fcr = ISA_Property_Create ("refs_fcr");
  Instruction_Group (refs_fcr,
                     TOP_UNDEFINED);

  /* ===== Operator defs int val in FP reg ====== */
  defs_fpu_int = ISA_Property_Create ("defs_fpu_int");
  Instruction_Group (defs_fpu_int,
                     TOP_UNDEFINED);

  /* ===== Operator defines FP reg ====== */
  defs_fp = ISA_Property_Create ("defs_fp");
  Instruction_Group (defs_fp,
                     TOP_UNDEFINED);

  /* ===== Logical OR operator ====== */
  ior = ISA_Property_Create ("ior");
  Instruction_Group (ior,
		     TOP_or8,
		     TOP_or16,
		     TOP_orx8,
		     TOP_orx16,
		     TOP_orx32,
		     TOP_orx64,
		     TOP_orxx8,
		     TOP_orxx16,
		     TOP_orxx32,
		     TOP_orxx64,
		     TOP_orxxx8,
		     TOP_orxxx16,
		     TOP_orxxx32,
		     TOP_orxxx64,
		     TOP_or32,
		     TOP_or64,
		     TOP_ori32,
		     TOP_ori64,
                     TOP_UNDEFINED);

  /* ===== Jump operator ====== */
  jump = ISA_Property_Create ("jump");
  Instruction_Group (jump,
                     TOP_jmp,
		     TOP_call,
		     TOP_tls_get_addr_64,
		     TOP_tls_get_addr_32,
                     TOP_UNDEFINED);

  /* ===== Indirect jump operator ====== */
  ijump = ISA_Property_Create ("ijump");
  Instruction_Group (ijump,
		     TOP_ijmp,
		     TOP_ijmpx,
		     TOP_ijmpxx,
		     TOP_ijmpxxx,
		     TOP_icall,
		     TOP_icallx,
		     TOP_icallxx,
		     TOP_icallxxx,
		     TOP_ret,
		     TOP_reti,
                     TOP_UNDEFINED);

  /* ===== Logical exclusive OR operator ====== */
  ixor = ISA_Property_Create ("ixor");
  Instruction_Group (ixor,
		     TOP_xor8,
		     TOP_xor16,
		     TOP_xorx8,
		     TOP_xorx16,
		     TOP_xorx32,
		     TOP_xorx64,
		     TOP_xorxx8,
		     TOP_xorxx16,
		     TOP_xorxx32,
		     TOP_xorxx64,
		     TOP_xorxxx8,
		     TOP_xorxxx16,
		     TOP_xorxxx32,
		     TOP_xorxxx64,
		     TOP_xor32,
		     TOP_xor64,
		     TOP_xori32,
		     TOP_xori64,
                     TOP_UNDEFINED);

  /* ===== Logical AND operator ====== */
  iand = ISA_Property_Create ("iand");
  Instruction_Group (iand,
		     TOP_and8,
		     TOP_and16,
		     TOP_andx8,
		     TOP_andx16,
		     TOP_andx32,
		     TOP_andx64,
		     TOP_andxx8,
		     TOP_andxx16,
		     TOP_andxx32,
		     TOP_andxx64,
		     TOP_andxxx8,
		     TOP_andxxx16,
		     TOP_andxxx32,
		     TOP_andxxx64,
		     TOP_and32,
		     TOP_and64,
		     TOP_andi32,
		     TOP_andi64,
                     TOP_UNDEFINED);

  /* ===== Integer compare operator ====== */
  icmp = ISA_Property_Create ("icmp");
  Instruction_Group (icmp,
		     TOP_test32,
		     TOP_testx32,
		     TOP_testxx32,
		     TOP_testxxx32,
		     TOP_test64,
		     TOP_testx64,
		     TOP_testxx64,
		     TOP_testxxx64,
		     TOP_testi32,
		     TOP_testi64,
		     TOP_cmp8,
		     TOP_cmp16,
		     TOP_cmp32,
		     TOP_cmpx8,
		     TOP_cmpx16,
		     TOP_cmpx32,
		     TOP_cmpxx8,
		     TOP_cmpxx16,
		     TOP_cmpxx32,
		     TOP_cmpxxx8,
		     TOP_cmpxxx16,
		     TOP_cmpxxx32,
		     TOP_cmp64,
		     TOP_cmpx64,
		     TOP_cmpxx64,
		     TOP_cmpxxx64,
		     TOP_cmpi32,
		     TOP_cmpi64,
		     TOP_cmpi8,
		     TOP_cmpxi8,
		     TOP_cmpxxi8,
		     TOP_cmpxxxi8,
		     TOP_cmpi16,
		     TOP_cmpxi16,
		     TOP_cmpxxi16,
		     TOP_cmpxxxi16,
		     TOP_cmpxi32,
		     TOP_cmpxxi32,
		     TOP_cmpxxxi32,
		     TOP_cmpxi64,
		     TOP_cmpxxi64,
		     TOP_cmpxxxi64,
		     TOP_cmpxr8,
		     TOP_cmpxxr8,
		     TOP_cmpxxxr8,
		     TOP_cmpxr16,
		     TOP_cmpxxr16,
		     TOP_cmpxxxr16,
		     TOP_cmpxr32,
		     TOP_cmpxxr32,
		     TOP_cmpxxxr32,
		     TOP_cmpxr64,
		     TOP_cmpxxr64,
		     TOP_cmpxxxr64,
		     TOP_comisd,
		     TOP_comixsd,
		     TOP_comixxsd,
		     TOP_comixxxsd,
		     TOP_comiss,
		     TOP_comixss,
		     TOP_comixxss,
		     TOP_comixxxss,
		     TOP_fucomi,
		     TOP_fucomip,
                     TOP_UNDEFINED);

  /* ===== Simulated instructions ====== */
  simulated = ISA_Property_Create ("simulated");
  Instruction_Group (simulated,
                     TOP_asm,
                     TOP_spadjust,
		     TOP_savexmms,
                     TOP_intrncall,
                     TOP_UNDEFINED);

  /* ==== commutative x86-style instructions ==== */
  commutative = ISA_Property_Create ("commutative");
  Instruction_Group( commutative,
		     TOP_test32,
		     TOP_test64,
				 TOP_psadbw128,
		     TOP_add32,
		     TOP_adc32,
		     TOP_add64,
		     TOP_paddsb,
		     TOP_paddsw,
		     TOP_paddq,
		     TOP_paddusb,
		     TOP_paddusw,
		     TOP_and8,
		     TOP_and16,
		     TOP_and32,
		     TOP_and64,
		     TOP_imul32,
		     TOP_imul64,
		     TOP_or8,
		     TOP_or16,
		     TOP_or32,
		     TOP_or64,
		     TOP_xor8,
		     TOP_xor16,
		     TOP_xor32,
		     TOP_xor64,
		     TOP_mul128v16,
		     TOP_mulhw128v16,
		     TOP_pmuludq,
		     TOP_pmuludq128,
		     TOP_pmullw,
		     TOP_pmulhw,
		     TOP_pmulhuw,
		     TOP_pmulhuw128,
		     TOP_pmaddwd,
		     TOP_add128v8,
		     TOP_add128v16,
		     TOP_add128v32,
				 TOP_paddusb128,
				 TOP_paddusw128,
             TOP_paddsb128,
		     TOP_add64v8,
		     TOP_add64v16,
		     TOP_add64v32,
		     TOP_add128v64,
				 TOP_paddsw128,
		     TOP_fadd128v32,
		     TOP_fadd128v64,
		     TOP_and128v8,
		     TOP_and128v16,
		     TOP_and128v32,
		     TOP_and128v64,
		     TOP_andn128v8,
		     TOP_andn128v16,
		     TOP_andn128v32,
		     TOP_andn128v64,
		     TOP_fand128v32,
		     TOP_fand128v64,
		     TOP_fandn128v64,
		     TOP_or128v8,
		     TOP_or128v16,
		     TOP_or128v32,
		     TOP_or128v64,
		     TOP_for128v32,
		     TOP_for128v64,
		     TOP_xor128v8,
		     TOP_xor128v16,
		     TOP_xor128v32,
		     TOP_xor128v64,
		     TOP_fxor128v32,
		     TOP_fxor128v64,
		     TOP_andps,
		     TOP_andpd,
		     TOP_xorps,
		     TOP_xorpd,
		     TOP_orps,
		     TOP_orpd,
		     TOP_fmax128v32,
		     TOP_fmax128v64,
		     TOP_fmin128v32,
		     TOP_fmin128v64,
		     TOP_fmul128v32,
		     TOP_fmul128v64,
		     TOP_addsd,
		     TOP_addss,
		     TOP_mulsd,
		     TOP_mulss,
		     TOP_minss,
		     TOP_minsd,
		     TOP_min64v8,
		     TOP_min64v16,
		     TOP_maxss,
		     TOP_maxsd,
		     TOP_max64v8,
		     TOP_max64v16,
		     TOP_fadd,
		     TOP_faddp,
		     TOP_fmul,
		     TOP_fmulp,
		     TOP_pavgb,
		     TOP_pavgw,
				 TOP_pavgb128,
				 TOP_pavgw128,
		     TOP_psadbw,
                     TOP_UNDEFINED);

  /* ==== vector ops ================ */
  vector_op = ISA_Property_Create ("vector_op");
  Instruction_Group( vector_op,
		     TOP_faddsub128v32,
				 TOP_psadbw128,
		     TOP_fhadd128v32,
		     TOP_fhsub128v32,
		     TOP_faddsub128v64,
		     TOP_fhadd128v64,
		     TOP_fhsub128v64,
		     TOP_faddsubx128v32,
		     TOP_fhaddx128v32,
		     TOP_fhsubx128v32,
		     TOP_faddsubx128v64,
		     TOP_fhaddx128v64,
		     TOP_fhsubx128v64,
		     TOP_faddsubxx128v32,
		     TOP_fhaddxx128v32,
		     TOP_fhsubxx128v32,
		     TOP_faddsubxx128v64,
		     TOP_fhaddxx128v64,
		     TOP_fhsubxx128v64,
		     TOP_faddsubxxx128v32,
		     TOP_fhaddxxx128v32,
		     TOP_fhsubxxx128v32,
		     TOP_faddsubxxx128v64,
		     TOP_fhaddxxx128v64,
		     TOP_fhsubxxx128v64,
		     TOP_cvtdq2pd,
		     TOP_cvtdq2ps,
		     TOP_cvtps2pd,
		     TOP_cvtpd2ps,
		     TOP_cvtdq2pd_x,
		     TOP_cvtdq2ps_x,
		     TOP_cvtps2pd_x,
		     TOP_cvtpd2ps_x,
		     TOP_cvtps2dq_x,
		     TOP_cvttps2dq_x,
		     TOP_cvttpd2dq_x,
		     TOP_cvtdq2pd_xx,
		     TOP_cvtdq2ps_xx,
		     TOP_cvtps2pd_xx,
		     TOP_cvtpd2ps_xx,
		     TOP_cvtps2dq_xx,
		     TOP_cvttps2dq_xx,
		     TOP_cvttpd2dq_xx,
		     TOP_cvtdq2pd_xxx,
		     TOP_cvtdq2ps_xxx,
		     TOP_cvtps2pd_xxx,
		     TOP_cvtpd2ps_xxx,
		     TOP_cvtps2dq_xxx,
		     TOP_cvttps2dq_xxx,
		     TOP_cvttpd2dq_xxx,
		     TOP_cvtpi2ps,
		     TOP_cvtps2pi,
		     TOP_cvttps2pi,
		     TOP_cvtpi2pd,
		     TOP_cvtpd2pi,
		     TOP_cvttpd2pi,
  		     TOP_lddqa,
		     TOP_lddqa_n32,
  		     TOP_lddqax,
  		     TOP_lddqaxx,
  		     TOP_lddqu,
  		     TOP_lddqu_n32,
		     TOP_ldlps,
		     TOP_ldlps_n32,
		     TOP_ldhps,
		     TOP_ldhps_n32,
		     TOP_ldlpd,
		     TOP_ldlpd_n32,
		     TOP_ldhpd,
		     TOP_ldhpd_n32,
		     TOP_ldapd,
		     TOP_ldapd_n32,
		     TOP_ldaps,
		     TOP_ldaps_n32,
		     TOP_ldupd,
		     TOP_ldupd_n32,
		     TOP_ldups,
		     TOP_ldups_n32,
		     TOP_ld64_2sse,
		     TOP_ld64_2sse_n32,
  		     TOP_lddqux,
		     TOP_ldlpsx,
		     TOP_ldhpsx,
		     TOP_ldlpdx,
		     TOP_ldhpdx,
		     TOP_ldapdx,
		     TOP_ldapsx,
  		     TOP_lddquxx,
		     TOP_ldlpsxx,
		     TOP_ldhpsxx,
		     TOP_ldlpdxx,
		     TOP_ldhpdxx,
		     TOP_ldapdxx,
		     TOP_ldapsxx,
  		     TOP_stdqa,
		     TOP_stdqa_n32,
  		     TOP_stdqax,
  		     TOP_stdqaxx,
		     TOP_stntpd,
		     TOP_stntpdx,
		     TOP_stntpdxx,
		     TOP_stntps,
		     TOP_stntpsx,
		     TOP_stntpsxx,
  		     TOP_stdqu,
  		     TOP_stdqu_n32,
		     TOP_stlps,
		     TOP_sthps,
		     TOP_stlpd,
		     TOP_sthpd,
		     TOP_stlps_n32,
		     TOP_sthps_n32,
		     TOP_stlpd_n32,
		     TOP_sthpd_n32,
		     TOP_stapd,
		     TOP_stapd_n32,
		     TOP_staps,
		     TOP_staps_n32,
		     TOP_stupd,
		     TOP_stups,
		     TOP_store64_fsse,
		     TOP_store64_fsse_n32,
  		     TOP_stdqux,
		     TOP_stlpdx,
		     TOP_sthpdx,
		     TOP_stlpsx,
		     TOP_sthpsx,
		     TOP_stapdx,
		     TOP_stapsx,
  		     TOP_stdquxx,
		     TOP_stlpdxx,
		     TOP_sthpdxx,
		     TOP_stlpsxx,
		     TOP_sthpsxx,
		     TOP_stapdxx,
		     TOP_stapsxx,
		     TOP_addx128v8,
		     TOP_addx128v16,
		     TOP_addx128v32,
		     TOP_addx128v64,
		     TOP_faddx128v32,
		     TOP_faddx128v64,
		     TOP_andx128v8,
		     TOP_andx128v16,
		     TOP_andx128v32,
		     TOP_andx128v64,
		     TOP_andnx128v8,
		     TOP_andnx128v16,
		     TOP_andnx128v32,
		     TOP_andnx128v64,
		     TOP_fandx128v32,
		     TOP_fandx128v64,
		     TOP_fandnx128v64,
		     TOP_orx128v8,
		     TOP_orx128v16,
		     TOP_orx128v32,
		     TOP_orx128v64,
		     TOP_forx128v32,
		     TOP_forx128v64,
		     TOP_xorx128v8,
		     TOP_xorx128v16,
		     TOP_xorx128v32,
		     TOP_xorx128v64,
		     TOP_fxorx128v32,
		     TOP_fxorx128v64,
		     TOP_fmaxx128v32,
		     TOP_fmaxx128v64,
		     TOP_fminx128v32,
		     TOP_fminx128v64,
		     TOP_fdivx128v32,
		     TOP_fdivx128v64,
		     TOP_fmulx128v32,
		     TOP_fmulx128v64,
		     TOP_cmpgtx128v8,
		     TOP_cmpgtx128v16,
		     TOP_cmpgtx128v32,
		     TOP_cmpeqx128v8,
		     TOP_cmpeqx128v16,
		     TOP_cmpeqx128v32,
		     TOP_pcmpeqb,
		     TOP_pcmpeqw,
		     TOP_pcmpeqd,
		     TOP_pcmpgtb,
		     TOP_pcmpgtw,
		     TOP_pcmpgtd,
		     TOP_maxx128v8,
		     TOP_maxx128v16,
		     TOP_minx128v8,
		     TOP_minx128v16,
		     TOP_subx128v8,
		     TOP_subx128v16,
		     TOP_subx128v32,
		     TOP_subx128v64,
		     TOP_fsubx128v32,
		     TOP_fsubx128v64,
		     TOP_addxx128v8,
		     TOP_addxx128v16,
		     TOP_addxx128v32,
		     TOP_addxx128v64,
		     TOP_faddxx128v32,
		     TOP_faddxx128v64,
		     TOP_andxx128v8,
		     TOP_andxx128v16,
		     TOP_andxx128v32,
		     TOP_andxx128v64,
		     TOP_andnxx128v8,
		     TOP_andnxx128v16,
		     TOP_andnxx128v32,
		     TOP_andnxx128v64,
		     TOP_fandxx128v32,
		     TOP_fandxx128v64,
		     TOP_fandnxx128v64,
		     TOP_orxx128v8,
		     TOP_orxx128v16,
		     TOP_orxx128v32,
		     TOP_orxx128v64,
		     TOP_forxx128v32,
		     TOP_forxx128v64,
		     TOP_xorxx128v8,
		     TOP_xorxx128v16,
		     TOP_xorxx128v32,
		     TOP_xorxx128v64,
		     TOP_fxorxx128v32,
		     TOP_fxorxx128v64,
		     TOP_fmaxxx128v32,
		     TOP_fmaxxx128v64,
		     TOP_fminxx128v32,
		     TOP_fminxx128v64,
		     TOP_fdivxx128v32,
		     TOP_fdivxx128v64,
		     TOP_fmulxx128v32,
		     TOP_fmulxx128v64,
		     TOP_cmpgtxx128v8,
		     TOP_cmpgtxx128v16,
		     TOP_cmpgtxx128v32,
		     TOP_cmpeqxx128v8,
		     TOP_cmpeqxx128v16,
		     TOP_cmpeqxx128v32,
		     TOP_maxx128v8,
		     TOP_maxx128v16,
		     TOP_max64v8,
		     TOP_max64v16,
		     TOP_minx128v8,
		     TOP_minx128v16,
		     TOP_subxx128v8,
		     TOP_subxx128v16,
		     TOP_subxx128v32,
		     TOP_subxx128v64,
		     TOP_fsubxx128v32,
		     TOP_fsubxx128v64,
		     TOP_addxxx128v8,
		     TOP_addxxx128v16,
		     TOP_addxxx128v32,
		     TOP_addxxx128v64,
		     TOP_faddxxx128v32,
		     TOP_faddxxx128v64,
		     TOP_andxxx128v8,
		     TOP_andxxx128v16,
		     TOP_andxxx128v32,
		     TOP_andxxx128v64,
		     TOP_andnxxx128v8,
		     TOP_andnxxx128v16,
		     TOP_andnxxx128v32,
		     TOP_andnxxx128v64,
		     TOP_fandxxx128v32,
		     TOP_fandxxx128v64,
		     TOP_fandnxxx128v64,
		     TOP_orxxx128v8,
		     TOP_orxxx128v16,
		     TOP_orxxx128v32,
		     TOP_orxxx128v64,
		     TOP_forxxx128v32,
		     TOP_forxxx128v64,
		     TOP_xorxxx128v8,
		     TOP_xorxxx128v16,
		     TOP_xorxxx128v32,
		     TOP_xorxxx128v64,
		     TOP_fxorxxx128v32,
		     TOP_fxorxxx128v64,
		     TOP_fmaxxxx128v32,
		     TOP_fmaxxxx128v64,
		     TOP_fminxxx128v32,
		     TOP_fminxxx128v64,
		     TOP_fdivxxx128v32,
		     TOP_fdivxxx128v64,
		     TOP_fmulxxx128v32,
		     TOP_fmulxxx128v64,
		     TOP_cmpgtxxx128v8,
		     TOP_cmpgtxxx128v16,
		     TOP_cmpgtxxx128v32,
		     TOP_cmpeqxxx128v8,
		     TOP_cmpeqxxx128v16,
		     TOP_cmpeqxxx128v32,
		     TOP_maxx128v8,
		     TOP_maxx128v16,
		     TOP_minx128v8,
		     TOP_minx128v16,
		     TOP_subxxx128v8,
		     TOP_subxxx128v16,
		     TOP_subxxx128v32,
		     TOP_subxxx128v64,
		     TOP_fsubxxx128v32,
		     TOP_fsubxxx128v64,
		     TOP_mul128v16,
		     TOP_mulhw128v16,
		     TOP_pmuludq,
		     TOP_pmuludq128,
		     TOP_pmullw,
		     TOP_pmulhw,
		     TOP_pmulhuw,
		     TOP_pmulhuw128,
				 TOP_pmuldq,
				 TOP_pmulld,
				 TOP_pextrb,
				 TOP_pextrd,
				 TOP_pextrq,
				 TOP_extractps,
		     TOP_pmaddwd,
		     TOP_add128v8,
		     TOP_add128v16,
		     TOP_add128v32,
		     TOP_add128v64,
				 TOP_paddusb128,
				 TOP_paddusw128,
             TOP_paddsb128,
             TOP_paddsw128,
		     TOP_add64v8,
		     TOP_add64v16,
		     TOP_add64v32,
		     TOP_paddsb,
		     TOP_paddsw,
		     TOP_paddusb,
		     TOP_paddusw,
		     TOP_psubsb,
		     TOP_psubsw,
		     TOP_psubusb,
		     TOP_psubusw,
		     TOP_fadd128v32,
		     TOP_fadd128v64,
		     TOP_cmpps,
		     TOP_cmppd,
		     TOP_sub128v8,
		     TOP_sub128v16,
		     TOP_sub128v32,
		     TOP_sub128v64,
		     TOP_psubsb128,
		     TOP_psubsw128,
		     TOP_sub64v8,
		     TOP_sub64v16,
		     TOP_sub64v32,
		     TOP_fsub128v32,
		     TOP_fsub128v64,
		     TOP_and128v8,
		     TOP_and128v16,
		     TOP_and128v32,
		     TOP_and128v64,
		     TOP_andn128v8,
		     TOP_andn128v16,
		     TOP_andn128v32,
		     TOP_andn128v64,
		     TOP_fand128v32,
		     TOP_fand128v64,
		     TOP_fandn128v64,
		     TOP_or128v8,
		     TOP_or128v16,
		     TOP_or128v32,
		     TOP_or128v64,
		     TOP_for128v32,
		     TOP_for128v64,
		     TOP_xor128v8,
		     TOP_xor128v16,
		     TOP_xor128v32,
		     TOP_xor128v64,
		     TOP_fxor128v32,
		     TOP_fxor128v64,
		     TOP_fmax128v32,
		     TOP_fmax128v64,
		     TOP_fmin128v32,
		     TOP_fmin128v64,
		     TOP_fdiv128v32,
		     TOP_fdiv128v64,
		     TOP_fmul128v32,
		     TOP_fmul128v64,
		     TOP_cmpgt128v8,
		     TOP_cmpgt128v16,
		     TOP_cmpgt128v32,
		     TOP_cmpeq128v8,
		     TOP_cmpeq128v16,
		     TOP_cmpeq128v32,
		     TOP_max128v8,
		     TOP_max128v16,
		     TOP_min128v8,
		     TOP_min128v16,
		     TOP_min64v8,
		     TOP_min64v16,
		     TOP_frsqrt128v32,
		     TOP_fsqrt128v32,
		     TOP_fsqrt128v64,
		     TOP_frcp128v32,
		     TOP_andps,
		     TOP_andpd,
		     TOP_xorps,
		     TOP_xorpd,
		     TOP_orps,
		     TOP_orpd,
				TOP_ptest,
		     TOP_unpckhpd,
		     TOP_unpckhps,
		     TOP_unpcklpd,
		     TOP_unpcklps,
		     TOP_punpcklwd,
		     TOP_punpcklbw,
		     TOP_punpckldq,
		     TOP_punpckhbw,
		     TOP_punpckhwd,
		     TOP_punpckhdq,
		     TOP_punpckl64v8,
		     TOP_punpckl64v16,
		     TOP_punpckl64v32,
		     TOP_packsswb,
		     TOP_packssdw,
		     TOP_packuswb,
		     TOP_packsswb128,
				 TOP_packssdw128,
				 TOP_packuswb128,
				 TOP_punpckhbw128,
				 TOP_punpckhwd128,
				 TOP_punpckhdq128,
				 TOP_punpckhqdq,
				 TOP_punpcklbw128,
				 TOP_punpcklwd128,
				 TOP_punpckldq128,
				 TOP_punpcklqdq,
		     TOP_pshufd,
		     TOP_pshufw,
		     TOP_pshuflw,
		     TOP_pshufhw,
		     TOP_shufpd,
		     TOP_shufps,
		     TOP_movhlps,
		     TOP_movlhps,
		     TOP_psrldq,
		     TOP_psrlq128v64,
		     TOP_pslldq,
		     TOP_psllw,
		     TOP_pslld,
		     TOP_psllq,
		     TOP_psrlw,
		     TOP_psrld,
		     TOP_psrlq,
		     TOP_psraw,
		     TOP_psrad,
  		     TOP_psllw_mmx,
  		     TOP_pslld_mmx,
  		     TOP_psrlw_mmx,
  		     TOP_psrld_mmx,
  		     TOP_psraw_mmx,
  		     TOP_psrad_mmx,
  		     TOP_pand_mmx,
  		     TOP_pandn_mmx,
             TOP_pand128,
             TOP_pandn128,
						 TOP_por128,
  		     TOP_por_mmx,
  		     TOP_pxor_mmx,
		     TOP_subus128v16,
		     TOP_xzero128v32,
		     TOP_xzero128v64,
		     TOP_pavgb,
		     TOP_pavgw,
				 TOP_pavgb128,
				 TOP_pavgw128,
		     TOP_psadbw,
		     TOP_pmovmskb,
		     TOP_movi32_2m,
		     TOP_movi64_2m,
		     TOP_movm_2i32,
		     TOP_movm_2i64,
		     TOP_movq2dq,
		     TOP_movdq2q,
		     TOP_storenti128,
		     TOP_storelpd,
		     TOP_pshufw64v16,
		     TOP_movmskpd,
		     TOP_movmskps,
		     TOP_maskmovdqu,
		     TOP_maskmovq,
		     TOP_storent64_fm,
                     TOP_extrq,
                     TOP_insertq,
                     TOP_insertps,
										 TOP_pinsrb,
										 TOP_pinsrd,
										 TOP_pinsrq,
										 TOP_pblendw,
										 TOP_blendpd,
										 TOP_blendps,
										 TOP_pblendvb,
										 TOP_blendvpd,
										 TOP_blendvps,
                     TOP_pcmpistri,
                     TOP_pcmpistrm,
                     TOP_pcmpestri,
                     TOP_pcmpestrm,
						 TOP_roundpd,
				 TOP_pcmpeqq,
                     TOP_pcmpgtq,
             TOP_pand128,
             TOP_pandn128,
						 TOP_por128,
				TOP_pabsb128,
				TOP_pabsw128,
				TOP_pabsd128,
				TOP_pabsb,
				TOP_pabsw,
				TOP_pabsd,
				 TOP_palignr128,
				 TOP_palignr,
		     /*AVX instructions*/
		     TOP_vstdqa,
                     TOP_vstdqax,
                     TOP_vstdqaxx,
                     TOP_vstapd,
                     TOP_vstapdx,
                     TOP_vstapdxx,
                     TOP_vstaps,
                     TOP_vstapsx,
                     TOP_vstapsxx,
		     TOP_vstapd_n32,
                     TOP_vstaps_n32,
		     TOP_vlddqa_n32,
                     TOP_vldapd_n32,
                     TOP_vldaps_n32,
		     TOP_vlddqa,
		     TOP_vlddqax,
		     TOP_vlddqaxx,
		     TOP_vldapd,
                     TOP_vldapdx,
                     TOP_vldapdxx,
                     TOP_vldaps,
                     TOP_vldapsx,
                     TOP_vldapsxx,
#include "isa_avx_properties.cxx"
		     TOP_UNDEFINED );

  /* ==== x86 style instructions ==== */
  x86_style = ISA_Property_Create ("x86_style");
  Instruction_Group( x86_style,
		     TOP_faddsub128v32,
				 TOP_psadbw128,
		     TOP_fhadd128v32,
		     TOP_fhsub128v32,
		     TOP_faddsub128v64,
		     TOP_fhadd128v64,
		     TOP_fhsub128v64,
		     TOP_faddsubx128v32,
		     TOP_fhaddx128v32,
		     TOP_fhsubx128v32,
		     TOP_faddsubx128v64,
		     TOP_fhaddx128v64,
		     TOP_fhsubx128v64,
		     TOP_faddsubxx128v32,
		     TOP_fhaddxx128v32,
		     TOP_fhsubxx128v32,
		     TOP_faddsubxx128v64,
		     TOP_fhaddxx128v64,
		     TOP_fhsubxx128v64,
		     TOP_faddsubxxx128v32,
		     TOP_fhaddxxx128v32,
		     TOP_fhsubxxx128v32,
		     TOP_faddsubxxx128v64,
		     TOP_fhaddxxx128v64,
		     TOP_fhsubxxx128v64,
		     TOP_pand128,
		     TOP_addx128v8,
		     TOP_addx128v16,
		     TOP_addx128v32,
		     TOP_addx128v64,
		     TOP_faddx128v32,
		     TOP_faddx128v64,
		     TOP_andx128v8,
		     TOP_andx128v16,
		     TOP_andx128v32,
		     TOP_andx128v64,
		     TOP_andnx128v8,
		     TOP_andnx128v16,
		     TOP_andnx128v32,
		     TOP_andnx128v64,
		     TOP_fandx128v32,
		     TOP_fandx128v64,
		     TOP_fandnx128v64,
		     TOP_por128,
		     TOP_orx128v8,
		     TOP_orx128v16,
		     TOP_orx128v32,
		     TOP_orx128v64,
		     TOP_forx128v32,
		     TOP_forx128v64,
		     TOP_xorx128v8,
		     TOP_xorx128v16,
		     TOP_xorx128v32,
		     TOP_xorx128v64,
		     TOP_fxorx128v32,
		     TOP_fxorx128v64,
		     TOP_fmaxx128v32,
		     TOP_fmaxx128v64,
		     TOP_fminx128v32,
		     TOP_fminx128v64,
		     TOP_fdivx128v32,
		     TOP_fdivx128v64,
		     TOP_fmulx128v32,
		     TOP_fmulx128v64,
		     TOP_cmpgtx128v8,
		     TOP_cmpgtx128v16,
		     TOP_cmpgtx128v32,
		     TOP_cmpeqx128v8,
		     TOP_cmpeqx128v16,
		     TOP_cmpeqx128v32,
		     TOP_pcmpeqb,
		     TOP_pcmpeqw,
		     TOP_pcmpeqd,
		     TOP_pcmpgtb,
		     TOP_pcmpgtw,
		     TOP_pcmpgtd,
		     TOP_maxx128v8,
		     TOP_maxx128v16,
		     TOP_minx128v8,
		     TOP_minx128v16,
		     TOP_subx128v8,
		     TOP_subx128v16,
		     TOP_subx128v32,
		     TOP_subx128v64,
		     TOP_fsubx128v32,
		     TOP_fsubx128v64,
		     TOP_addxx128v8,
		     TOP_addxx128v16,
		     TOP_addxx128v32,
		     TOP_addxx128v64,
		     TOP_faddxx128v32,
		     TOP_faddxx128v64,
		     TOP_andxx128v8,
		     TOP_andxx128v16,
		     TOP_andxx128v32,
		     TOP_andxx128v64,
		     TOP_andnxx128v8,
		     TOP_andnxx128v16,
		     TOP_andnxx128v32,
		     TOP_andnxx128v64,
		     TOP_fandxx128v32,
		     TOP_fandxx128v64,
		     TOP_fandnxx128v64,
		     TOP_orxx128v8,
		     TOP_orxx128v16,
		     TOP_orxx128v32,
		     TOP_orxx128v64,
		     TOP_forxx128v32,
		     TOP_forxx128v64,
		     TOP_xorxx128v8,
		     TOP_xorxx128v16,
		     TOP_xorxx128v32,
		     TOP_xorxx128v64,
		     TOP_fxorxx128v32,
		     TOP_fxorxx128v64,
		     TOP_fmaxxx128v32,
		     TOP_fmaxxx128v64,
		     TOP_fminxx128v32,
		     TOP_fminxx128v64,
		     TOP_fdivxx128v32,
		     TOP_fdivxx128v64,
		     TOP_fmulxx128v32,
		     TOP_fmulxx128v64,
		     TOP_cmpgtx128v8,
		     TOP_cmpgtx128v16,
		     TOP_cmpgtx128v32,
		     TOP_cmpeqx128v8,
		     TOP_cmpeqx128v16,
		     TOP_cmpeqx128v32,
		     TOP_maxx128v8,
		     TOP_maxx128v16,
		     TOP_minx128v8,
		     TOP_minx128v16,
		     TOP_subxx128v8,
		     TOP_subxx128v16,
		     TOP_subxx128v32,
		     TOP_subxx128v64,
		     TOP_fsubxx128v32,
		     TOP_fsubxx128v64,
		     TOP_addxxx128v8,
		     TOP_addxxx128v16,
		     TOP_addxxx128v32,
		     TOP_addxxx128v64,
		     TOP_faddxxx128v32,
		     TOP_faddxxx128v64,
		     TOP_andxxx128v8,
		     TOP_andxxx128v16,
		     TOP_andxxx128v32,
		     TOP_andxxx128v64,
		     TOP_andnxxx128v8,
		     TOP_andnxxx128v16,
		     TOP_andnxxx128v32,
		     TOP_andnxxx128v64,
		     TOP_fandxxx128v32,
		     TOP_fandxxx128v64,
		     TOP_fandnxxx128v64,
		     TOP_orxxx128v8,
		     TOP_orxxx128v16,
		     TOP_orxxx128v32,
		     TOP_orxxx128v64,
		     TOP_forxxx128v32,
		     TOP_forxxx128v64,
		     TOP_xorxxx128v8,
		     TOP_xorxxx128v16,
		     TOP_xorxxx128v32,
		     TOP_xorxxx128v64,
		     TOP_fxorxxx128v32,
		     TOP_fxorxxx128v64,
		     TOP_fmaxxxx128v32,
		     TOP_fmaxxxx128v64,
		     TOP_fminxxx128v32,
		     TOP_fminxxx128v64,
		     TOP_fdivxxx128v32,
		     TOP_fdivxxx128v64,
		     TOP_fmulxxx128v32,
		     TOP_fmulxxx128v64,
		     TOP_cmpgtx128v8,
		     TOP_cmpgtx128v16,
		     TOP_cmpgtx128v32,
		     TOP_cmpeqx128v8,
		     TOP_cmpeqx128v16,
		     TOP_cmpeqx128v32,
		     TOP_maxx128v8,
		     TOP_maxx128v16,
		     TOP_minx128v8,
		     TOP_minx128v16,
		     TOP_subxxx128v8,
		     TOP_subxxx128v16,
		     TOP_subxxx128v32,
		     TOP_subxxx128v64,
		     TOP_fsubxxx128v32,
		     TOP_fsubxxx128v64,
		     TOP_mul128v16,
		     TOP_mulhw128v16,
		     TOP_pmuludq,
	             TOP_pmuludq128,
		     TOP_pmullw,
		     TOP_pmulhw,
		     TOP_pmulhuw,
		     TOP_pmulhuw128,
		     TOP_add128v8,
		     TOP_add128v16,
		     TOP_add128v32,
		     TOP_add128v64,
				 TOP_paddusb128,
				 TOP_paddusw128,
             TOP_paddsb128,
             TOP_paddsw128,
		     TOP_add64v8,
		     TOP_add64v16,
		     TOP_add64v32,
		     TOP_fadd128v32,
		     TOP_fadd128v64,
		     TOP_add32,
		     TOP_adc32,
		     TOP_add64,
		     TOP_paddsb,
		     TOP_paddsw,
		     TOP_paddq,
		     TOP_paddusb,
		     TOP_paddusw,
		     TOP_addx32,
		     TOP_addx64,
		     TOP_addxx32,
		     TOP_addxx64,
		     TOP_addxxx32,
		     TOP_addxxx64,
		     TOP_addi32,
		     TOP_adci32,
		     TOP_addi64,
		     TOP_inc8,
		     TOP_inc16,
		     TOP_inc32,
		     TOP_inc64,
		     TOP_dec8,
		     TOP_dec16,
		     TOP_dec32,
		     TOP_dec64,
		     TOP_and8,
		     TOP_and16,
		     TOP_andx8,
		     TOP_andx16,
		     TOP_andx32,
		     TOP_andx64,
		     TOP_andxx8,
		     TOP_andxx16,
		     TOP_andxx32,
		     TOP_andxx64,
		     TOP_andxxx8,
		     TOP_andxxx16,
		     TOP_andxxx32,
		     TOP_andxxx64,
		     TOP_and32,
		     TOP_and64,
		     TOP_andi32,
		     TOP_andi64,
		     TOP_imul32,
		     TOP_imul64,
		     TOP_imuli32,
		     TOP_imuli64,
		     TOP_neg32,
		     TOP_neg64,
		     TOP_or8,
		     TOP_or16,
		     TOP_orx8,
		     TOP_orx16,
		     TOP_orx32,
		     TOP_orx64,
		     TOP_orxx8,
		     TOP_orxx16,
		     TOP_orxx32,
		     TOP_orxx64,
		     TOP_orxxx8,
		     TOP_orxxx16,
		     TOP_orxxx32,
		     TOP_orxxx64,
		     TOP_or32,
		     TOP_or64,
		     TOP_ori32,
		     TOP_ori64,
		     TOP_ror8,
		     TOP_ror16,
		     TOP_ror32,
		     TOP_ror64,
		     TOP_rori8,
		     TOP_rori16,
		     TOP_rori32,
		     TOP_rori64,
		     TOP_rol8,
		     TOP_rol16,
		     TOP_rol32,
		     TOP_rol64,
		     TOP_roli8,
		     TOP_roli16,
		     TOP_roli32,
		     TOP_roli64,
		     TOP_sar32,
		     TOP_sar64,
		     TOP_sari32,
		     TOP_sari64,
		     TOP_shl32,
		     TOP_shld32,
		     TOP_shldi32,
		     TOP_shrd32,
		     TOP_shrdi32,
		     TOP_shl64,
		     TOP_shli32,
		     TOP_shli64,
		     TOP_shr32,
		     TOP_shr64,
		     TOP_shri32,
		     TOP_shri64,
		     TOP_sub128v8,
		     TOP_sub128v16,
		     TOP_sub128v32,
		     TOP_sub128v64,
		     TOP_psubsb128,
		     TOP_psubsw128,
		     TOP_sub64v8,
		     TOP_sub64v16,
		     TOP_sub64v32,
		     TOP_psubsb,
		     TOP_psubsw,
		     TOP_psubusb,
		     TOP_psubusw,
		     TOP_fsub128v32,
		     TOP_fsub128v64,
		     TOP_sub32,
		     TOP_sbb32,
		     TOP_sub64,
		     TOP_subx32,
		     TOP_subx64,
		     TOP_subxx32,
		     TOP_subxx64,
		     TOP_subxxx32,
		     TOP_subxxx64,
		     TOP_subi32,
		     TOP_sbbi32,
		     TOP_subi64,
		     TOP_xor8,
		     TOP_xor16,
		     TOP_xorx8,
		     TOP_xorx16,
		     TOP_xorx32,
		     TOP_xorx64,
		     TOP_xorxx8,
		     TOP_xorxx16,
		     TOP_xorxx32,
		     TOP_xorxx64,
		     TOP_xorxxx8,
		     TOP_xorxxx16,
		     TOP_xorxxx32,
		     TOP_xorxxx64,
		     TOP_xor32,
		     TOP_xor64,
		     TOP_xori32,
		     TOP_xori64,
		     TOP_lock_xadd8,
		     TOP_lock_xadd16,
		     TOP_lock_xadd32,
		     TOP_lock_xadd64,
		     TOP_addsd,
		     TOP_addss,
		     TOP_addxsd,
		     TOP_addxss,
		     TOP_addxxsd,
		     TOP_addxxss,
		     TOP_addxxxsd,
		     TOP_addxxxss,
		     TOP_divsd,
		     TOP_divxsd,
		     TOP_divxxsd,
		     TOP_divxxxsd,
		     TOP_divss,
		     TOP_divxss,
		     TOP_divxxss,
		     TOP_divxxxss,
		     TOP_mulsd,
		     TOP_mulss,
		     TOP_mulxsd,
		     TOP_mulxss,
		     TOP_mulxxsd,
		     TOP_mulxxss,
		     TOP_mulxxxsd,
		     TOP_mulxxxss,
		     TOP_subsd,
		     TOP_subss,
		     TOP_subxsd,
		     TOP_subxss,
		     TOP_subxxsd,
		     TOP_subxxss,
		     TOP_subxxxsd,
		     TOP_subxxxss,
		     TOP_not32,
		     TOP_not64,
		     TOP_andnps,
		     TOP_andnpd,
		     TOP_cmpss,
		     TOP_cmpsd,
		     TOP_cmpps,
		     TOP_cmppd,
		     TOP_cmpeqps,
		     TOP_cmpeqpd,
		     TOP_cmpltpd,
		     TOP_cmplepd,
		     TOP_cmpgtpd,
		     TOP_cmpgepd,
		     TOP_cmpneqpd,
		     TOP_cmpnltpd,
		     TOP_cmpnlepd,
		     TOP_cmpngtpd,
		     TOP_cmpngepd,
		     TOP_cmpordpd,
		     TOP_cmpunordpd,
		     TOP_cmpltps,
		     TOP_cmpleps,
		     TOP_cmpunordps,
		     TOP_cmpneqps,
		     TOP_cmpnltps,
		     TOP_cmpnleps,
		     TOP_cmpordps,
		     TOP_cmpeqss,
		     TOP_cmpltss,
		     TOP_cmpless,
		     TOP_cmpunordss,
		     TOP_cmpneqss,
		     TOP_cmpnltss,
		     TOP_cmpnless,
		     TOP_cmpordss,
		     TOP_cmpeqsd,
		     TOP_cmpltsd,
		     TOP_cmplesd,
		     TOP_cmpunordsd,
		     TOP_cmpneqsd,
		     TOP_cmpnltsd,
		     TOP_cmpnlesd,
		     TOP_cmpordsd,
		     TOP_minss,
		     TOP_minsd,
		     TOP_maxss,
		     TOP_maxsd,
		     TOP_and128v8,
		     TOP_and128v16,
		     TOP_and128v32,
		     TOP_and128v64,
		     TOP_andn128v8,
		     TOP_andn128v16,
		     TOP_andn128v32,
		     TOP_andn128v64,
		     TOP_fand128v32,
		     TOP_fand128v64,
		     TOP_fandn128v64,
		     TOP_or128v8,
		     TOP_or128v16,
		     TOP_or128v32,
		     TOP_or128v64,
		     TOP_for128v32,
		     TOP_for128v64,
		     TOP_xor128v8,
		     TOP_xor128v16,
		     TOP_xor128v32,
		     TOP_xor128v64,
		     TOP_fxor128v32,
		     TOP_fxor128v64,
		     TOP_andps,
		     TOP_andpd,
		     TOP_xorps,
		     TOP_xorpd,
		     TOP_orps,
		     TOP_orpd,
		     TOP_fmax128v32,
		     TOP_fmax128v64,
		     TOP_fmin128v32,
		     TOP_fmin128v64,
		     TOP_fmul128v32,
		     TOP_fmul128v64,
		     TOP_cmpgt128v8,
		     TOP_cmpgt128v16,
		     TOP_cmpgt128v32,
		     TOP_cmpeq128v8,
		     TOP_cmpeq128v16,
		     TOP_cmpeq128v32,
		     TOP_max128v8,
		     TOP_max128v16,
		     TOP_max64v8,
		     TOP_max64v16,
		     TOP_min128v8,
		     TOP_min128v16,
		     TOP_min64v8,
		     TOP_min64v16,
		     TOP_fdiv128v32,
		     TOP_fdiv128v64,
		     TOP_unpckhpd,
		     TOP_unpckhps,
		     TOP_unpcklpd,
		     TOP_unpcklps,
		     TOP_punpcklwd,
		     TOP_punpcklbw,
		     TOP_punpckldq,
		     TOP_punpckhbw,
		     TOP_punpckhwd,
		     TOP_punpckhdq,
		     TOP_punpckl64v8,
		     TOP_punpckl64v16,
		     TOP_punpckl64v32,
		     TOP_packsswb,
		     TOP_packssdw,
		     TOP_packuswb,
		     TOP_packsswb128,
				 TOP_packssdw128,
				 TOP_packuswb128,
				 TOP_punpckhbw128,
				 TOP_punpckhwd128,
				 TOP_punpckhdq128,
				 TOP_punpckhqdq,
				 TOP_punpcklbw128,
				 TOP_punpcklwd128,
				 TOP_punpckldq128,
				 TOP_punpcklqdq,
		     TOP_pshufd,
		     TOP_pshufw,
		     TOP_pshuflw,
		     TOP_pshufhw,
		     TOP_shufpd,
		     TOP_shufps,
		     TOP_psrldq,
		     TOP_psrlq128v64,		     
		     TOP_pslldq,
		     TOP_psllw,
		     TOP_pslld,
		     TOP_psllq,
		     TOP_psrlw,
		     TOP_psrld,
		     TOP_psrlq,
		     TOP_psraw,
		     TOP_psrad,
  		     TOP_psllw_mmx,
  		     TOP_pslld_mmx,
  		     TOP_psrlw_mmx,
  		     TOP_psrld_mmx,
  		     TOP_psraw_mmx,
  		     TOP_psrad_mmx,
  		     TOP_pand_mmx,
  		     TOP_pandn_mmx,
  		     TOP_por_mmx,
  		     TOP_pxor_mmx,
					 TOP_pmaxsb,
					 TOP_pmaxsd,
					 TOP_pmaxuw,
					 TOP_pmaxud,
					 TOP_pminsb,
					 TOP_pminsd,
					 TOP_pminuw,
					 TOP_pminud,
					 TOP_phminposuw,
		     TOP_fadd,
		     TOP_faddp,
		     TOP_fsub,
		     TOP_fsubp,
		     TOP_fsubr,
		     TOP_fsubrp,
		     TOP_fmul,
		     TOP_fmulp,
		     TOP_fdiv,
		     TOP_fdivp,
		     TOP_fdivr,
		     TOP_fdivrp,
		     TOP_fchs,
		     TOP_frndint,
		     TOP_fabs,
		     TOP_fsqrt,
		     TOP_fcos,
		     TOP_fsin,
		     TOP_subus128v16,
		     TOP_pavgb,
		     TOP_pavgw,
		     TOP_pavgb128,
		     TOP_pavgw128,
		     TOP_psadbw,
		     TOP_pshufw,
             TOP_xchgx8,
             TOP_xchgx16,
             TOP_xchgx32,
             TOP_xchgx64,
			 TOP_crc32b,
			 TOP_crc32w,
			 TOP_crc32l,
			 TOP_crc32q,
						 TOP_phaddw128,
						 TOP_phaddd128,
						 TOP_phaddsw128,
						 TOP_phaddw,
						 TOP_phaddd,
						 TOP_phaddsw,
						 TOP_phsubw128,
						 TOP_phsubd128,
						 TOP_phsubsw128,
						 TOP_phsubw,
						 TOP_phsubd,
						 TOP_phsubsw,
				 TOP_pmaddubsw128,
				 TOP_pmaddubsw,
				 TOP_pmulhrsw128,
				 TOP_pmulhrsw,
				 TOP_pshufb128,
				 TOP_pshufb,
		     TOP_pblendw,
		     TOP_pblendvb,
		     TOP_blendpd,
		     TOP_blendps,
		     TOP_blendvpd,
		     TOP_blendvps,
                     TOP_UNDEFINED );

  /* ===== Predicated instructions ====== */
  read_rflags = ISA_Property_Create ("read_rflags");
  Instruction_Group( read_rflags,
		     TOP_jb,
		     TOP_jae,
		     TOP_jp,
		     TOP_jnp,
		     TOP_je,
		     TOP_jne,
		     TOP_jbe,
		     TOP_ja,
		     TOP_jl,
		     TOP_jge,
		     TOP_jle,
		     TOP_jg,
		     TOP_jcxz,
		     TOP_jecxz,
		     TOP_jrcxz,
		     TOP_js,
		     TOP_jns,
		     TOP_cmovb,
		     TOP_cmovae,
		     TOP_cmovp,
		     TOP_cmovnp,
		     TOP_cmove,
		     TOP_cmovne,
		     TOP_cmovbe,
		     TOP_cmova,
		     TOP_cmovl,
		     TOP_cmovge,
		     TOP_cmovle,
		     TOP_cmovg,
		     TOP_cmovs,
		     TOP_cmovns,
		     TOP_fcmovb,
		     TOP_fcmovbe,
		     TOP_fcmovnb,
		     TOP_fcmovnbe,
		     TOP_fcmove,
		     TOP_fcmovne,
		     TOP_fcmovu,
		     TOP_fcmovnu,
		     TOP_setb,
		     TOP_setae,
		     TOP_setp,
		     TOP_setnp,
		     TOP_sete,
		     TOP_setne,
		     TOP_setbe,
		     TOP_seta,
		     TOP_setl,
		     TOP_setge,
		     TOP_setle,
		     TOP_setg,
		     TOP_adc32,
		     TOP_adci32,
		     TOP_sbb32,
		     TOP_sbbi32,
                     TOP_UNDEFINED );

  /* ===== Predicated instructions ====== */
  predicated = ISA_Property_Create ("predicated");
  Instruction_Group (predicated,
                     TOP_UNDEFINED);

  /* ===== Instructions access rotating register banks ====== */
  access_reg_bank = ISA_Property_Create ("access_reg_bank");
  Instruction_Group (access_reg_bank,
		     TOP_UNDEFINED);

  /* ===== Instructions with side effects ====== */
  side_effects = ISA_Property_Create ("side_effects");
  Instruction_Group (side_effects,
		     /* Because asm macros can trash memory, we conservatively 
			mark this property so that the compiler doesn't move
			instructions around it. */
                     TOP_asm, 
                     TOP_savexmms, 
		     TOP_fstps,
		     TOP_fstps_n32,
		     TOP_fstpl,
		     TOP_fstpl_n32,
		     TOP_fstpt,
		     TOP_fstpt_n32,
		     TOP_fsts,
		     TOP_fsts_n32,
		     TOP_fstl,
		     TOP_fstl_n32,
		     TOP_popl,
		     TOP_popq,
		     TOP_stmxcsr,
		     TOP_ldmxcsr,
		     TOP_lock_cmpxchg8,
		     TOP_lock_cmpxchg16,
		     TOP_lock_cmpxchg32,
		     TOP_lock_cmpxchg64,
		     TOP_lock_xadd8,
		     TOP_lock_xadd16,
		     TOP_lock_xadd32,
		     TOP_lock_xadd64,
             TOP_xchgx8,
             TOP_xchgx16,
             TOP_xchgx32,
             TOP_xchgx64,
             TOP_vzeroall_null,
			 TOP_vzeroupper_null,
		     TOP_UNDEFINED);

  /* ===== Instructions with branch predictions ====== */
  branch_predict = ISA_Property_Create ("branch_predict");
  Instruction_Group (branch_predict,
		     TOP_UNDEFINED);

  /* ===== Instructions with variable number of operands/results ====== */
  var_opnds = ISA_Property_Create ("var_opnds");
  Instruction_Group (var_opnds,
                     TOP_asm,
		     TOP_UNDEFINED);

  /* ===== Instructions that update 'base' operand ====== */
  base_update = ISA_Property_Create ("base_update");
  Instruction_Group (base_update,
		     TOP_UNDEFINED);

  /* ===== Instructions that mark the head of a zero-cost loop ====== */
  loop_start = ISA_Property_Create ("loop_start");
  Instruction_Group (loop_start,
		     TOP_UNDEFINED);

  /* ===== Instructions that load and store the lower 64-bits of a xmm register */
  vector_lo_loadstore = ISA_Property_Create ("vector_lo_loadstore");
  Instruction_Group (vector_lo_loadstore,
		     TOP_ldlpd,
		     TOP_ldlps,
		     TOP_stlpd,
		     TOP_stlps,
		     TOP_ldlpdx,
		     TOP_ldlpsx,
		     TOP_stlpdx,
		     TOP_stlpsx,
		     TOP_ldlpdxx,
		     TOP_ldlpsxx,
		     TOP_stlpdxx,
		     TOP_stlpsxx,
		     TOP_storelpd,
		     TOP_UNDEFINED);

  /* ===== Instructions that load and store the higher 64-bits of a xmm register */
  vector_high_loadstore = ISA_Property_Create ("vector_high_loadstore");
  Instruction_Group (vector_high_loadstore,
		     TOP_ldhpd,
		     TOP_ldhps,
		     TOP_sthpd,
		     TOP_sthps,
		     TOP_ldhpdx,
		     TOP_ldhpsx,
		     TOP_sthpdx,
		     TOP_sthpsx,
		     TOP_ldhpdxx,
		     TOP_ldhpsxx,
		     TOP_sthpdxx,
		     TOP_sthpsxx,
		     TOP_movlhps,
		     TOP_UNDEFINED);

  vector_packed_single = ISA_Property_Create ("vector_packed_single");
  Instruction_Group (vector_packed_single,
		     TOP_faddsub128v32,
		     TOP_fhadd128v32,
		     TOP_fhsub128v32,
		     TOP_faddsubx128v32,
		     TOP_fhaddx128v32,
		     TOP_fhsubx128v32,
		     TOP_faddsubxx128v32,
		     TOP_fhaddxx128v32,
		     TOP_fhsubxx128v32,
		     TOP_faddsubxxx128v32,
		     TOP_fhaddxxx128v32,
		     TOP_fhsubxxx128v32,
		     TOP_cvtdq2ps,
		     TOP_cvtdq2ps_x,
		     TOP_cvtdq2ps_xx,
		     TOP_cvtdq2ps_xxx,
		     TOP_cvtps2dq,
		     TOP_cvtps2dq_x,
		     TOP_cvtps2dq_xx,
		     TOP_cvtps2dq_xxx,
		     TOP_cvttps2dq,
		     TOP_cvttps2dq_x,
		     TOP_cvttps2dq_xx,
		     TOP_cvttps2dq_xxx,
		     TOP_cvtpi2ps,
		     TOP_cvtps2pi,
		     TOP_cvttps2pi,
		     TOP_movaps,
		     TOP_ldaps,
		     TOP_ldaps_n32,
		     TOP_ldapsx,
		     TOP_ldapsxx,
		     TOP_ldups,
		     TOP_ldups_n32,
		     TOP_ldlps,
		     TOP_ldlps_n32,
		     TOP_ldlpsx,
		     TOP_ldlpsxx,
		     TOP_ldhps,
		     TOP_ldhps_n32,
		     TOP_ldhpsx,
		     TOP_ldhpsxx,
		     TOP_andps,
		     TOP_orps,
		     TOP_xorps, 
		     TOP_andnps,
		     TOP_unpcklps,
		     TOP_unpckhps,
		     TOP_punpcklwd,
		     TOP_punpcklbw,
		     TOP_punpckldq,
		     TOP_punpckhbw,
		     TOP_punpckhwd,
		     TOP_punpckhdq,
		     TOP_punpckl64v8,
		     TOP_punpckl64v16,
		     TOP_punpckl64v32,
		     TOP_pshufd,
		     TOP_pshufw,
		     TOP_pshuflw,
		     TOP_pshufhw,
		     TOP_shufps,
		     TOP_movhlps,
		     TOP_movlhps,
		     TOP_for128v32,
		     TOP_fxor128v32,
		     TOP_fand128v32,
		     TOP_fadd128v32,
		     TOP_fsub128v32,
		     TOP_fdiv128v32,
		     TOP_fmul128v32,
		     TOP_fmax128v32,
		     TOP_fmin128v32,
		     TOP_forx128v32,
		     TOP_fxorx128v32,
		     TOP_fandx128v32,
		     TOP_faddx128v32,
		     TOP_fsubx128v32,
		     TOP_fdivx128v32,
		     TOP_fmulx128v32,
		     TOP_fmaxx128v32,
		     TOP_fminx128v32,
		     TOP_forxx128v32,
		     TOP_fxorxx128v32,
		     TOP_fandxx128v32,
		     TOP_faddxx128v32,
		     TOP_fsubxx128v32,
		     TOP_fdivxx128v32,
		     TOP_fmulxx128v32,
		     TOP_fmaxxx128v32,
		     TOP_fminxx128v32,
		     TOP_forxxx128v32,
		     TOP_fxorxxx128v32,
		     TOP_fandxxx128v32,
		     TOP_faddxxx128v32,
		     TOP_fsubxxx128v32,
		     TOP_fdivxxx128v32,
		     TOP_fmulxxx128v32,
		     TOP_fmaxxxx128v32,
		     TOP_fminxxx128v32,
		     TOP_fsqrt128v32,
		     TOP_frsqrt128v32,
		     TOP_frcp128v32,
		     TOP_cmpps,
		     TOP_xzero128v32,
		     TOP_cmpgt128v32,
		     TOP_cmpeq128v32,
		     TOP_cmpgtx128v32,
		     TOP_cmpeqx128v32,
		     TOP_cmpgtxx128v32,
		     TOP_cmpeqxx128v32,
		     TOP_cmpgtxxx128v32,
		     TOP_cmpeqxxx128v32,
		     TOP_movmskps,
		     TOP_UNDEFINED);

  vector_packed_double = ISA_Property_Create ("vector_packed_double");
  Instruction_Group (vector_packed_double,
		     TOP_faddsub128v64,
		     TOP_fhadd128v64,
		     TOP_fhsub128v64,
		     TOP_faddsubx128v64,
		     TOP_fhaddx128v64,
		     TOP_fhsubx128v64,
		     TOP_faddsubxx128v64,
		     TOP_fhaddxx128v64,
		     TOP_fhsubxx128v64,
		     TOP_faddsubxxx128v64,
		     TOP_fhaddxxx128v64,
		     TOP_fhsubxxx128v64,
		     TOP_cvtdq2pd,
		     TOP_cvtdq2pd_x,
		     TOP_cvtdq2pd_xx,
		     TOP_cvtdq2pd_xxx,
		     TOP_cvtpd2dq,
		     TOP_cvttpd2dq,
		     TOP_cvttpd2dq_x,
		     TOP_cvttpd2dq_xx,
		     TOP_cvttpd2dq_xxx,
		     TOP_cvtpi2pd,
		     TOP_cvtpd2pi,
		     TOP_cvttpd2pi,
		     TOP_movapd,
		     TOP_ldapd,
		     TOP_ldapd_n32,
		     TOP_ldapdx,
		     TOP_ldapdxx,
		     TOP_ldupd,
		     TOP_ldupd_n32,
		     TOP_ldlpd,
		     TOP_ldlpd_n32,
		     TOP_ldlpdx,
		     TOP_ldlpdxx,
		     TOP_ldhpd,
		     TOP_ldhpd_n32,
		     TOP_ldhpdx,
		     TOP_ldhpdxx,
		     TOP_andpd,
		     TOP_orpd,
		     TOP_xorpd, 
		     TOP_andnpd,
		     TOP_unpcklpd,
		     TOP_unpckhpd,
		     TOP_punpcklwd,
		     TOP_punpcklbw,
		     TOP_punpckldq,
		     TOP_punpckhbw,
		     TOP_punpckhwd,
		     TOP_punpckhdq,
		     TOP_punpckl64v8,
		     TOP_punpckl64v16,
		     TOP_punpckl64v32,
		     TOP_pshufd,
		     TOP_pshufw,
		     TOP_pshuflw,
		     TOP_pshufhw,
		     TOP_shufpd,
		     TOP_for128v64,
		     TOP_fxor128v64,
		     TOP_fand128v64,
		     TOP_fandn128v64,
		     TOP_fadd128v64,
		     TOP_fsub128v64,
		     TOP_fdiv128v64,
		     TOP_fmul128v64,
		     TOP_fmax128v64,
		     TOP_fmin128v64,
		     TOP_forx128v64,
		     TOP_fxorx128v64,
		     TOP_fandx128v64,
		     TOP_fandnx128v64,
		     TOP_faddx128v64,
		     TOP_fsubx128v64,
		     TOP_fdivx128v64,
		     TOP_fmulx128v64,
		     TOP_fmaxx128v64,
		     TOP_fminx128v64,
		     TOP_forxx128v64,
		     TOP_fxorxx128v64,
		     TOP_fandxx128v64,
		     TOP_fandnxx128v64,
		     TOP_faddxx128v64,
		     TOP_fsubxx128v64,
		     TOP_fdivxx128v64,
		     TOP_fmulxx128v64,
		     TOP_fmaxxx128v64,
		     TOP_fminxx128v64,
		     TOP_forxxx128v64,
		     TOP_fxorxxx128v64,
		     TOP_fandxxx128v64,
		     TOP_fandnxxx128v64,
		     TOP_faddxxx128v64,
		     TOP_fsubxxx128v64,
		     TOP_fdivxxx128v64,
		     TOP_fmulxxx128v64,
		     TOP_fmaxxxx128v64,
		     TOP_fminxxx128v64,
		     TOP_fsqrt128v64,
		     TOP_cmppd,
		     TOP_xzero128v64,
		     TOP_movmskpd,
		     TOP_UNDEFINED);

  /* ===== Requires x86 "lock" instruction prefix. ====== */
  prefix_lock = ISA_Property_Create ("prefix_lock");
  Instruction_Group (prefix_lock,
		     TOP_lock_add8,
		     TOP_lock_add16,
		     TOP_lock_add32,
		     TOP_lock_adc32,
		     TOP_lock_add64,
		     TOP_lock_and8,
		     TOP_lock_and16,
		     TOP_lock_and32,
		     TOP_lock_and64,
		     TOP_lock_or8,
		     TOP_lock_or16,
		     TOP_lock_or32,
		     TOP_lock_or64,
		     TOP_lock_xor8,
		     TOP_lock_xor16,
		     TOP_lock_xor32,
		     TOP_lock_xor64,
		     TOP_lock_sub8,
		     TOP_lock_sub16,
		     TOP_lock_sub32,
		     TOP_lock_sub64,
		     TOP_lock_cmpxchg8,
		     TOP_lock_cmpxchg16,
		     TOP_lock_cmpxchg32,
		     TOP_lock_cmpxchg64,
		     TOP_lock_xadd8,
		     TOP_lock_xadd16,
		     TOP_lock_xadd32,
		     TOP_lock_xadd64,
		     TOP_UNDEFINED);
  
  /*cast 256/128 to 128/256 AVX*/
  cast_vector = ISA_Property_Create ("cast_vector");
  Instruction_Group (cast_vector,
  	         TOP_vmovdqa_f256_ofloat_float,
  	         TOP_vmovdqu_f256_ofloat_float,
  	         TOP_vmovups_f256_ofloat_float,
  	         TOP_vmovupd_f256_ofloat_float,
  	         TOP_vmovapd_f256_ofloat_float,
  			 TOP_UNDEFINED);

  vector_avx = ISA_Property_Create ("vector_avx"); 
  Instruction_Group (vector_avx,
                     TOP_vaddpd,
#include "isa_avx_properties_avx_vector.cxx"
		     TOP_UNDEFINED);

  cfi = ISA_Property_Create ("cfi");
  Instruction_Group (cfi,
                     TOP_cfi_def_cfa_offset,
                     TOP_cfi_def_cfa_register,
                     TOP_cfi_offset,
                     TOP_UNDEFINED);

  ISA_Properties_End();


  return 0;
}
