Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.target/i386/mv17.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | |
children |
line wrap: on
line source
// Test case to check if Multiversioning works for BMI and BMI2. // { dg-do run } // { dg-require-ifunc "" } // { dg-options "-O2" } #include <assert.h> // Check BMI feature selection works int foo () __attribute__((target("default"))); int foo () __attribute__((target("bmi"))); int foo () __attribute__((target("bmi2"))); // Check specialized versions for archs with BMI is chosen over generic BMI versions. int bar () __attribute__((target("default"))); int bar () __attribute__((target("bmi"))); int bar () __attribute__((target("bmi2"))); int bar () __attribute__((target("arch=btver2"))); int bar () __attribute__((target("arch=haswell"))); int main () { int val = foo (); if (__builtin_cpu_supports ("bmi2")) assert (val == 2); else if (__builtin_cpu_supports ("bmi")) assert (val == 1); else assert (val == 0); val = bar (); if (__builtin_cpu_is ("btver2")) assert (val == 5); else if (__builtin_cpu_is ("haswell")) assert (val == 6); else if (__builtin_cpu_supports ("bmi2")) assert (val == 2); else if (__builtin_cpu_supports ("bmi")) assert (val == 1); else assert (val == 0); return 0; } int __attribute__ ((target("default"))) foo () { return 0; } int __attribute__ ((target("bmi"))) foo () { return 1; } int __attribute__ ((target("bmi2"))) foo () { return 2; } int __attribute__ ((target("default"))) bar () { return 0; } int __attribute__ ((target("bmi"))) bar () { return 1; } int __attribute__ ((target("bmi2"))) bar () { return 2; } int __attribute__ ((target("arch=btver2"))) bar () { return 5; } int __attribute__ ((target("arch=haswell"))) bar () { return 6; }