# Copyright 2017 Rene Rivera
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)

import feature ;

#| tag::doc[]

[[bbv2.builtin.features.instruction-set]]`instruction-set`::
*Allowed values:* depends on the used toolset.
+
Specifies for which specific instruction set the code should be generated. The
code in general might not run on processors with older/different instruction
sets.
+
While B2 allows a large set of possible values for this features,
whether a given value works depends on which compiler you use. Please see
the section <<C++ Compilers>> for details.

|# # end::doc[]

feature.feature instruction-set
    :
        # x86 and x86-64
        native i486 i586 i686 pentium pentium-mmx pentiumpro pentium2 pentium3
        pentium3m pentium-m pentium4 pentium4m prescott nocona core2 corei7 corei7-avx core-avx-i
        conroe conroe-xe conroe-l allendale merom merom-xe kentsfield kentsfield-xe penryn wolfdale
        yorksfield nehalem sandy-bridge ivy-bridge haswell broadwell skylake skylake-avx512 cannonlake
        icelake-client icelake-server cascadelake cooperlake tigerlake
        atom
        k6 k6-2 k6-3 athlon athlon-tbird athlon-4 athlon-xp athlon-mp k8 opteron athlon64 athlon-fx
        k8-sse3 opteron-sse3 athlon64-sse3 amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 btver1
        btver2 znver1 znver2
        winchip-c6 winchip2
        c3 c3-2 c7

        # ia64
        itanium itanium1 merced itanium2 mckinley

        # Sparc
        v7 cypress v8 supersparc sparclite hypersparc sparclite86x f930 f934
        sparclet tsc701 v9 ultrasparc ultrasparc3

        # RS/6000 & PowerPC
        401 403 405 405fp 440 440fp 505 601 602 603 603e 604 604e 620 630 740 7400
        7450 750 801 821 823 860 970 8540 power-common ec603e g3 g4 g5 power power2
        power3 power4 power5 powerpc powerpc64 rios rios1 rsc rios2 rs64a

        # MIPS
        4kc 4kp 5kc 20kc m4k r2000 r3000 r3900 r4000 r4100 r4300 r4400 r4600 r4650
        r6000 r8000 rm7000 rm9000 orion sb1 vr4100 vr4111 vr4120 vr4130 vr4300
        vr5000 vr5400 vr5500

        # HP/PA-RISC
        700 7100 7100lc 7200 7300 8000

        # Advanced RISC Machines
        armv2 armv2a armv3 armv3m armv4 armv4t armv5 armv5t armv5te armv6 armv6j iwmmxt ep9312
        armv7 armv7s

        # z Systems (aka s390x)
        z196 zEC12 z13 z14 z15

    :
        propagated optional
    ;
