summaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386-opts.h
Commit message (Collapse)AuthorAgeFilesLines
* Update copyright years.Jakub Jelinek2023-01-161-1/+1
|
* Implement hwasan target_hook.liuhongt2022-12-091-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ChangeLog: * doc/invoke.texi (x86 options): Document -mlam={none,u48,u57}. * config/i386/i386-opts.h (enum lam_type): New enum. * config/i386/i386.cc (ix86_memtag_can_tag_addresses): New. (ix86_memtag_set_tag): Ditto. (ix86_memtag_extract_tag): Ditto. (ix86_memtag_add_tag): Ditto. (ix86_memtag_tag_size): Ditto. (ix86_memtag_untagged_pointer): Ditto. (TARGET_MEMTAG_CAN_TAG_ADDRESSES): New. (TARGET_MEMTAG_ADD_TAG): Ditto. (TARGET_MEMTAG_SET_TAG): Ditto. (TARGET_MEMTAG_EXTRACT_TAG): Ditto. (TARGET_MEMTAG_UNTAGGED_POINTER): Ditto. (TARGET_MEMTAG_TAG_SIZE): Ditto. (IX86_HWASAN_SHIFT): Ditto. (IX86_HWASAN_TAG_SIZE): Ditto. * config/i386/i386-expand.cc (ix86_expand_call): Untag code pointer. * config/i386/i386-options.cc (ix86_option_override_internal): Error when enable -mlam=[u48|u57] for 32-bit code. * config/i386/i386.opt: Add -mlam=[none|u48|u57]. * config/i386/i386-protos.h (ix86_memtag_untagged_pointer): Declare. (ix86_memtag_can_tag_addresses): Ditto.
* x86: Rename -harden-sls=indirect-branch to -harden-sls=indirect-jmpH.J. Lu2022-01-061-2/+2
| | | | | | | | | | | | | | | | | | | Indirect branch also includes indirect call instructions. Rename -harden-sls=indirect-branch to -harden-sls=indirect-jmp to match its intended behavior. PR target/102952 * config/i386/i386-opts.h (harden_sls): Replace harden_sls_indirect_branch with harden_sls_indirect_jmp. * config/i386/i386.c (ix86_output_jmp_thunk_or_indirect): Likewise. (ix86_output_indirect_jmp): Likewise. (ix86_output_call_insn): Likewise. * config/i386/i386.opt: Replace indirect-branch with indirect-jmp. Replace harden_sls_indirect_branch with harden_sls_indirect_jmp. * doc/invoke.texi (-harden-sls=): Replace indirect-branch with indirect-jmp.
* Update copyright years.Jakub Jelinek2022-01-031-1/+1
|
* x86: Add -mharden-sls=[none|all|return|indirect-branch]H.J. Lu2021-11-171-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add -mharden-sls= to mitigate against straight line speculation (SLS) for function return and indirect branch by adding an INT3 instruction after function return and indirect branch. gcc/ PR target/102952 * config/i386/i386-opts.h (harden_sls): New enum. * config/i386/i386.c (output_indirect_thunk): Mitigate against SLS for function return. (ix86_output_function_return): Likewise. (ix86_output_jmp_thunk_or_indirect): Mitigate against indirect branch. (ix86_output_indirect_jmp): Likewise. (ix86_output_call_insn): Likewise. * config/i386/i386.opt: Add -mharden-sls=. * doc/invoke.texi: Document -mharden-sls=. gcc/testsuite/ PR target/102952 * gcc.target/i386/harden-sls-1.c: New test. * gcc.target/i386/harden-sls-2.c: Likewise. * gcc.target/i386/harden-sls-3.c: Likewise. * gcc.target/i386/harden-sls-4.c: Likewise. * gcc.target/i386/harden-sls-5.c: Likewise.
* Remove DEF_ENUM from stringop.def.Martin Liska2021-04-211-4/+0
| | | | | | | | gcc/ChangeLog: * config/i386/i386-options.c (DEF_ENUM): Remove it. * config/i386/i386-opts.h (DEF_ENUM): Likewise. * config/i386/stringop.def (DEF_ENUM): Likewise.
* Update copyright years.Jakub Jelinek2021-01-041-1/+1
|
* Update copyright years.Jakub Jelinek2020-01-011-1/+1
| | | | From-SVN: r279813
* Update copyright years.Jakub Jelinek2019-01-011-1/+1
| | | | From-SVN: r267494
* Support instrumenting returns of instrumented functionsAndi Kleen2018-11-291-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When instrumenting programs using __fentry__ it is often useful to instrument the function return too. Traditionally this has been done by patching the return address on the stack frame on entry. However this is fairly complicated (trace function has to emulate a stack) and also slow because it causes a branch misprediction on every return. Add an option to generate call or nop instrumentation for every return instead, including patch sections. This will increase the program size slightly, but can be a lot faster and simpler. This version only instruments true returns, not sibling calls or tail recursion. This matches the semantics of the original stack. gcc/: 2018-11-29 Andi Kleen <ak@linux.intel.com> * config/i386/i386-opts.h (enum instrument_return): Add. * config/i386/i386.c (output_return_instrumentation): Add. (ix86_output_function_return): Call output_return_instrumentation. (ix86_output_call_insn): Call output_return_instrumentation. * config/i386/i386.opt: Add -minstrument-return=. * doc/invoke.texi (-minstrument-return): Document. gcc/testsuite/: 2018-11-29 Andi Kleen <ak@linux.intel.com> * gcc.target/i386/returninst1.c: New test. * gcc.target/i386/returninst2.c: New test. * gcc.target/i386/returninst3.c: New test. From-SVN: r266652
* x86: Add -mindirect-branch=H.J. Lu2018-01-141-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add -mindirect-branch= option to convert indirect call and jump to call and return thunks. The default is 'keep', which keeps indirect call and jump unmodified. 'thunk' converts indirect call and jump to call and return thunk. 'thunk-inline' converts indirect call and jump to inlined call and return thunk. 'thunk-extern' converts indirect call and jump to external call and return thunk provided in a separate object file. You can control this behavior for a specific function by using the function attribute indirect_branch. 2 kinds of thunks are geneated. Memory thunk where the function address is at the top of the stack: __x86_indirect_thunk: call L2 L1: pause lfence jmp L1 L2: lea 8(%rsp), %rsp|lea 4(%esp), %esp ret Indirect jmp via memory, "jmp mem", is converted to push memory jmp __x86_indirect_thunk Indirect call via memory, "call mem", is converted to jmp L2 L1: push [mem] jmp __x86_indirect_thunk L2: call L1 Register thunk where the function address is in a register, reg: __x86_indirect_thunk_reg: call L2 L1: pause lfence jmp L1 L2: movq %reg, (%rsp)|movl %reg, (%esp) ret where reg is one of (r|e)ax, (r|e)dx, (r|e)cx, (r|e)bx, (r|e)si, (r|e)di, (r|e)bp, r8, r9, r10, r11, r12, r13, r14 and r15. Indirect jmp via register, "jmp reg", is converted to jmp __x86_indirect_thunk_reg Indirect call via register, "call reg", is converted to call __x86_indirect_thunk_reg gcc/ * config/i386/i386-opts.h (indirect_branch): New. * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise. * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone with local indirect jump when converting indirect call and jump. (ix86_set_indirect_branch_type): New. (ix86_set_current_function): Call ix86_set_indirect_branch_type. (indirectlabelno): New. (indirect_thunk_needed): Likewise. (indirect_thunk_bnd_needed): Likewise. (indirect_thunks_used): Likewise. (indirect_thunks_bnd_used): Likewise. (INDIRECT_LABEL): Likewise. (indirect_thunk_name): Likewise. (output_indirect_thunk): Likewise. (output_indirect_thunk_function): Likewise. (ix86_output_indirect_branch): Likewise. (ix86_output_indirect_jmp): Likewise. (ix86_code_end): Call output_indirect_thunk_function if needed. (ix86_output_call_insn): Call ix86_output_indirect_branch if needed. (ix86_handle_fndecl_attribute): Handle indirect_branch. (ix86_attribute_table): Add indirect_branch. * config/i386/i386.h (machine_function): Add indirect_branch_type and has_local_indirect_jump. * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump to true. (tablejump): Likewise. (*indirect_jump): Use ix86_output_indirect_jmp. (*tablejump_1): Likewise. (simple_return_indirect_internal): Likewise. * config/i386/i386.opt (mindirect-branch=): New option. (indirect_branch): New. (keep): Likewise. (thunk): Likewise. (thunk-inline): Likewise. (thunk-extern): Likewise. * doc/extend.texi: Document indirect_branch function attribute. * doc/invoke.texi: Document -mindirect-branch= option. gcc/testsuite/ * gcc.target/i386/indirect-thunk-1.c: New test. * gcc.target/i386/indirect-thunk-2.c: Likewise. * gcc.target/i386/indirect-thunk-3.c: Likewise. * gcc.target/i386/indirect-thunk-4.c: Likewise. * gcc.target/i386/indirect-thunk-5.c: Likewise. * gcc.target/i386/indirect-thunk-6.c: Likewise. * gcc.target/i386/indirect-thunk-7.c: Likewise. * gcc.target/i386/indirect-thunk-attr-1.c: Likewise. * gcc.target/i386/indirect-thunk-attr-2.c: Likewise. * gcc.target/i386/indirect-thunk-attr-3.c: Likewise. * gcc.target/i386/indirect-thunk-attr-4.c: Likewise. * gcc.target/i386/indirect-thunk-attr-5.c: Likewise. * gcc.target/i386/indirect-thunk-attr-6.c: Likewise. * gcc.target/i386/indirect-thunk-attr-7.c: Likewise. * gcc.target/i386/indirect-thunk-attr-8.c: Likewise. * gcc.target/i386/indirect-thunk-bnd-1.c: Likewise. * gcc.target/i386/indirect-thunk-bnd-2.c: Likewise. * gcc.target/i386/indirect-thunk-bnd-3.c: Likewise. * gcc.target/i386/indirect-thunk-bnd-4.c: Likewise. * gcc.target/i386/indirect-thunk-extern-1.c: Likewise. * gcc.target/i386/indirect-thunk-extern-2.c: Likewise. * gcc.target/i386/indirect-thunk-extern-3.c: Likewise. * gcc.target/i386/indirect-thunk-extern-4.c: Likewise. * gcc.target/i386/indirect-thunk-extern-5.c: Likewise. * gcc.target/i386/indirect-thunk-extern-6.c: Likewise. * gcc.target/i386/indirect-thunk-extern-7.c: Likewise. * gcc.target/i386/indirect-thunk-inline-1.c: Likewise. * gcc.target/i386/indirect-thunk-inline-2.c: Likewise. * gcc.target/i386/indirect-thunk-inline-3.c: Likewise. * gcc.target/i386/indirect-thunk-inline-4.c: Likewise. * gcc.target/i386/indirect-thunk-inline-5.c: Likewise. * gcc.target/i386/indirect-thunk-inline-6.c: Likewise. * gcc.target/i386/indirect-thunk-inline-7.c: Likewise. From-SVN: r256660
* Update copyright years.Jakub Jelinek2018-01-031-1/+1
| | | | From-SVN: r256169
* i386-opts.h (enum prefer_vector_width): Added new enum for the new option ↵Sergey Shalnov2017-11-211-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | -mprefer-vector-width=[none|128|256|512]. * config/i386/i386-opts.h (enum prefer_vector_width): Added new enum for the new option -mprefer-vector-width=[none|128|256|512]. * config/i386/i386.c (ix86_target_string): remove old style options -mprefer-avx256 and make -mprefer-avx128 as alias. (ix86_option_override_internal): Apply defaults for the -mprefer-vector-width=[128|256] option. * config/i386/i386.h (TARGET_PREFER_AVX128, TARGET_PREFER_AVX256): Implement macros to work with -mprefer-vector-width=. * config/i386/i386.opt: Implemented option -mprefer-vector-width=[none|128|256|512]. * doc/invoke.texi: Documentation for -mprefer-vector-width=[none|128|256|512]. gcc/testsuite/ * g++.dg/ext/pr57362.C (__attribute__): Test prefer-vector-width=[128|256] target attribute. * gcc.target/i386/avx512f-constant-float-return.c (dg-optioins): Use -mprefer-vector-width=256 instead of -mprefer-avx256. * gcc.target/i386/avx512f-prefer.c: Ditto. * gcc.target/i386/pr82460-2.c: Ditto. From-SVN: r255030
* Update copyright years.Jakub Jelinek2017-01-011-1/+1
| | | | From-SVN: r243994
* Update copyright years.Jakub Jelinek2016-01-041-1/+1
| | | | From-SVN: r232055
* Update copyright years.Jakub Jelinek2015-01-051-1/+1
| | | | From-SVN: r219188
* Add -malign-data={abi|compat|cachineline}H.J. Lu2014-12-171-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add -malign-data={abi|compat,cachineline} to control how GCC aligns variables. "compat" uses increased alignment value compatible with GCC 4.8 and earlier, "abi" uses alignment value as specified by the psABI, and "cacheline" uses increased alignment value to match the cache line size. "compat" is the default. gcc/ PR target/61296 * config/i386/i386-opts.h (ix86_align_data): New enum. * config/i386/i386.c (ix86_data_alignment): Return the ABI alignment value for -malign-data=abi, the cachine line size for -malign-data=cachineline and the older GCC compatible alignment value for for -malign-data=compat. * config/i386/i386.opt (malign-data=): New. * doc/invoke.texi: Document -malign-data=. gcc/testsuite/ PR target/61296 * gcc.target/i386/pr61296-2.c: New. * gcc.target/i386/pr61296-2.c: Likewise. * gcc.target/i386/pr61296-3.c: Likewise. * gcc.target/i386/pr61296-4.c: Likewise. * gcc.target/i386/pr61296-5.c: Likewise. * gcc.target/i386/pr61296-6.c: Likewise. * gcc.target/i386/pr61296-7.c: Likewise. Co-Authored-By: Jakub Jelinek <jakub@redhat.com> Co-Authored-By: Uros Bizjak <ubizjak@gmail.com> From-SVN: r218818
* Update copyright years in gcc/Richard Sandiford2014-01-021-1/+1
| | | | From-SVN: r206289
* Implement -mmemcpy-strategy= and -mmemset-strategy= optionsXinliang David Li2013-08-101-9/+11
| | | | From-SVN: r201645
* i386-opts.h (enum stringop_alg): Add vector_loop.Michael Zolotukhin2013-07-081-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | ChangeLog: * config/i386/i386-opts.h (enum stringop_alg): Add vector_loop. * config/i386/i386.c (expand_set_or_movmem_via_loop): Use adjust_address instead of change_address to keep info about alignment. (emit_strmov): Remove. (emit_memmov): New function. (expand_movmem_epilogue): Refactor to properly handle bigger sizes. (expand_movmem_epilogue): Likewise and return updated rtx for destination. (expand_constant_movmem_prologue): Likewise and return updated rtx for destination and source. (decide_alignment): Refactor, handle vector_loop. (ix86_expand_movmem): Likewise. (ix86_expand_setmem): Likewise. * config/i386/i386.opt (Enum): Add vector_loop to option stringop_alg. testsuite/ChangeLog: * gcc.target/i386/memcpy-vector_loop-1.c: New. * gcc.target/i386/memcpy-vector_loop-2.c: New. From-SVN: r200751
* i386.opt: New option mstack-protector-guard=.Andrew Hsieh2013-04-151-0/+5
| | | | | | | | | | | | | | | | | * config/i386/i386.opt: New option mstack-protector-guard=. * config/i386/i386-opts.h: Add enum stack_protector_guard. * config/i386/i386.h: Define TARGET_SSP_GLOBAL_GUARD and TARGET_SSP_TLS_GUARD. * config/i386/i386.c (ix86_option_override_internal): Set ix86_stack_protector_guard. * config/i386/i386.md (stack_protect_set): Enable for TARGET_SSP_TLS_GUARD only. (stack_protect_set_<mode>): Ditto. (stack_protect_test): Ditto. (stack_protect_test_<mode>): Ditto. * doc/invoke.texi (i386 Option): Document. From-SVN: r197963
* Update copyright years in gcc/Richard Sandiford2013-01-101-3/+1
| | | | From-SVN: r195098
* Update Copyright years for files modified in 2011 and/or 2012.Jakub Jelinek2013-01-041-1/+1
| | | | From-SVN: r194903
* Add -maddress-mode=short|long for x86H.J. Lu2012-03-141-0/+5
| | | | | | | | | | | | | | | | | | | 2012-03-14 H.J. Lu <hongjiu.lu@intel.com> PR target/50797 * config/i386/i386-opts.h (pmode): New. * config/i386/i386.c (ix86_option_override_internal): Properly check and set ix86_pmode. * config/i386/i386.h (Pmode): Check ix86_pmode instead of TARGET_64BIT. * config/i386/i386.opt (maddress-mode=): New. * doc/invoke.texi: Document -maddress-mode=short|long for x86. From-SVN: r185396
* Revert revision 181357.H.J. Lu2011-11-241-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ 2011-11-24 H.J. Lu <hongjiu.lu@intel.com> PR target/51134 * config/i386/i386.h (processor_costs): Revert revision 181357. * config/i386/i386.c (cost models): Likewise. (core_cost): Likewise. (promote_duplicated_reg): Likewise. (promote_duplicated_reg_to_size): Likewise. (processor_target): Likewise. (expand_set_or_movmem_via_loop_with_iter): Likewise. (expand_set_or_movmem_via_loop): Likewise. (emit_strset): Likewise. (expand_movmem_epilogue): Likewise. (expand_setmem_epilogue): Likewise. (expand_movmem_prologue): Likewise. (expand_setmem_prologue): Likewise. (expand_constant_movmem_prologue): Likewise. (expand_constant_setmem_prologue): Likewise. (decide_alg): Likewise. (decide_alignment): Likewise. (ix86_expand_movmem): Likewise. (ix86_expand_setmem): Likewise. (ix86_slow_unaligned_access): Likewise. * config/i386/i386.md (strset): Likewise. * config/i386/sse.md (vec_dupv4si): Likewise. (vec_dupv2di): Likewise. gcc/testsuite/ 2011-11-24 H.J. Lu <hongjiu.lu@intel.com> PR target/51134 * gcc.target/i386/sw-1.c: Revert revision 181357. From-SVN: r181701
* sw-1.c: Force rep;movsb.Zolotukhin Michael2011-11-141-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gcc.target/i386/sw-1.c: Force rep;movsb. * config/i386/i386.h (processor_costs): Add second dimension to stringop_algs array. * config/i386/i386.c (cost models): Initialize second dimension of stringop_algs arrays. (core_cost): New costs based on generic64 costs with updated stringop values. (promote_duplicated_reg): Add support for vector modes, add declaration. (promote_duplicated_reg_to_size): Likewise. (processor_target): Set core costs for core variants. (expand_set_or_movmem_via_loop_with_iter): New function. (expand_set_or_movmem_via_loop): Enable reuse of the same iters in different loops, produced by this function. (emit_strset): New function. (expand_movmem_epilogue): Add epilogue generation for bigger sizes, use SSE-moves where possible. (expand_setmem_epilogue): Likewise. (expand_movmem_prologue): Likewise for prologue. (expand_setmem_prologue): Likewise. (expand_constant_movmem_prologue): Likewise. (expand_constant_setmem_prologue): Likewise. (decide_alg): Add new argument align_unknown. Fix algorithm of strategy selection if TARGET_INLINE_ALL_STRINGOPS is set; Skip sse_loop (decide_alignment): Update desired alignment according to chosen move mode. (ix86_expand_movmem): Change unrolled_loop strategy to use SSE-moves. (ix86_expand_setmem): Likewise. (ix86_slow_unaligned_access): Implementation of new hook slow_unaligned_access. * config/i386/i386.md (strset): Enable half-SSE moves. * config/i386/sse.md (vec_dupv4si): Add expand for vec_dupv4si. (vec_dupv2di): Add expand for vec_dupv2di. Co-Authored-By: Jan Hubicka <jh@suse.cz> From-SVN: r181357
* opts-common.c (opt_enum_arg_to_value): New.Joseph Myers2011-05-161-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * opts-common.c (opt_enum_arg_to_value): New. * opts.h (opt_enum_arg_to_value): Declare. * config/i386/i386.opt (fpmath): Remove. (mfpmath=): Use Enum, Init and Save. (fpmath_unit): New Enum and EnumValue entries. * config/i386/i386-c.c (ix86_pragma_target_parse): Update field name for function fpmath state. * config/i386/i386-opts.h (enum fpmath_unit): Move from i386.h. * config/i386/i386.c: Include diagnostic.h. (ix86_fpmath, IX86_FUNCTION_SPECIFIC_FPMATH): Remove. (ix86_target_string): Take enum fpmath_unit value instead of string. (ix86_debug_options): Update call to ix86_target_string. (ix86_option_override_internal): Don't process fpmath strings here. (x86_function_specific_save, ix86_function_specific_restore): Don't handle fpmath state specially. (ix86_function_specific_print): Pass fpmath state to ix86_target_string instead of printing in this function. (ix86_valid_target_attribute_inner_p): Take gcc_options pointer. Handle enum attributes. (IX86_ATTR_ENUM, ix86_opt_enum): New. (ix86_valid_target_attribute_tree): Update option_strings handling. Handle fpmath as enum option. (ix86_can_inline_p): Update field names for function fpmath state. (ix86_expand_builtin): Update call to ix86_target_string. * config/i386/i386.h (enum fpmath_unit): Move to i386-opts.h. (ix86_fpmath): Remove. * config/i386/t-i386 (i386.o): Update dependencies. From-SVN: r173809
* i386-opts.h: New.Joseph Myers2011-05-131-0/+79
* config/i386/i386-opts.h: New. * gcc/config/i386/i386.c (stringop_alg, ix86_cmodel, ix86_asm_dialect, ix86_regparm, ix86_abi, ix86_branch_cost, ix86_section_threshold): Remove. (ix86_handle_option): Move MAX_CODE_ALIGN define here. Handle OPT_malign_loops_, OPT_malign_jumps_, OPT_malign_functions_ and OPT_mbranch_cost_. (ix86_option_override_internal): Don't decode strings for options other than -march=, -mtune= and -mfpmath=. Don't allow for __attribute__ uses in remaining diagnostics for options with string arguments. Don't check for integer arguments being negative. * gcc/config/i386/i386.h (enum stringop_alg, enum calling_abi, enum tls_dialect, enum cmodel, enum asm_dialect): Move to i386-opts.h. (ix86_abi, ix86_tls_dialect, ix86_cmodel, ix86_asm_dialect, ix86_branch_cost, ix86_section_threshold): Remove. * gcc/config/i386/i386.opt (config/i386/i386-opts.h): New HeaderInclude. (malign-functions=, malign-jumps=, malign-loops=): Use UInteger but not Var. (masm=): Use Enum and Init. (asm_dialect): New Enum and EnumValue entries. (mbranch-cost=): Use UInteger. (mlarge-data-threshold=): Use UInteger and Init. (mcmodel=): Use Enum and Init. (cmodel): New Enum and EnumValue entries. (mpc): Replace with separate mpc32, mpc64 and mpc80 entries. (mpreferred-stack-boundary=, mincoming-stack-boundary=, mregparm=): Use UInteger. (mstringop-strategy=): Use Enum and Init. (stringop_alg): New Enum and EnumValue entries. (mtls-dialect=): Use Enum and Init. (tls_dialect): New Enum and EnumValue entries. (mabi=): Use Enum and Init. (calling_abi): New Enum and EnumValue entries. (mveclibabi=): Use Enum and Init. (ix86_veclibabi): New Enum and EnumValue entries. From-SVN: r173728