/* Functional tests for the "target" attribute and pragma. */ /* { dg-do compile { target { lp64 } } } */ /* { dg-require-effective-target dfp } */ /* { dg-require-effective-target target_attribute } */ /* { dg-options "-march=z13 -std=gnu99 -mno-hard-dfp" } */ #pragma GCC target("hard-dfp") _Decimal64 p1(_Decimal64 f, _Decimal64 g) { return f * g; /* { dg-final { scan-assembler-times "\tmdtr\t" 1 } } */ } #pragma GCC reset_options #pragma GCC target("no-hard-dfp") _Decimal64 p0(_Decimal64 f, _Decimal64 g) { return f / 2; /* { dg-final { scan-assembler-not "\tddtr\t" } } */ } #pragma GCC reset_options __attribute__ ((target("hard-dfp"))) _Decimal64 a1(_Decimal64 f, _Decimal64 g) { /* { dg-final { scan-assembler-times "\tadtr\t" 1 } } */ return f + g; } __attribute__ ((target("no-hard-dfp"))) _Decimal64 a0(_Decimal64 f, _Decimal64 g) { return f - g; /* { dg-final { scan-assembler-not "\tsdtr\t" } } */ } _Decimal64 d(_Decimal64 f, _Decimal64 g) { return f - g; /* { dg-final { scan-assembler-not "\tsdtr\t" } } */ }