2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-03-20 17:40:46 +08:00

rs6000: Tests for setbc

2020-05-07  Segher Boessenkool  <segher@kernel.crashing.org>

	* gcc.target/powerpc/setbc.h: New.
	* gcc.target/powerpc/setbceq.c: New.
	* gcc.target/powerpc/setbcge.c: New.
	* gcc.target/powerpc/setbcgt.c: New.
	* gcc.target/powerpc/setbcle.c: New.
	* gcc.target/powerpc/setbclt.c: New.
	* gcc.target/powerpc/setbcne.c: New.
This commit is contained in:
Segher Boessenkool 2020-05-07 18:28:58 -05:00 committed by Bill Schmidt
parent 98329e3f5b
commit e473a6df6d
8 changed files with 99 additions and 0 deletions

@ -1,3 +1,13 @@
2020-05-07 Segher Boessenkool <segher@kernel.crashing.org>
* gcc.target/powerpc/setbc.h: New.
* gcc.target/powerpc/setbceq.c: New.
* gcc.target/powerpc/setbcge.c: New.
* gcc.target/powerpc/setbcgt.c: New.
* gcc.target/powerpc/setbcle.c: New.
* gcc.target/powerpc/setbclt.c: New.
* gcc.target/powerpc/setbcne.c: New.
2020-05-07 Iain Sandoe <iain@sandoe.co.uk>
PR c++/94817

@ -0,0 +1,27 @@
#define XSTR(a,b) a ## b
#define T(a,b) XSTR(a,b)
int T(NAME,ii)(int a, int b) { return a CODE b; }
int T(NAME,il)(long a, long b) { return a CODE b; }
long T(NAME,li)(int a, int b) { return a CODE b; }
long T(NAME,ll)(long a, long b) { return a CODE b; }
int T(NAME,iin0)(int a) { return a CODE 0; }
int T(NAME,iln0)(long a) { return a CODE 0; }
long T(NAME,lin0)(int a) { return a CODE 0; }
long T(NAME,lln0)(long a) { return a CODE 0; }
int T(NAME,iin1)(int a) { return a CODE 1; }
int T(NAME,iln1)(long a) { return a CODE 1; }
long T(NAME,lin1)(int a) { return a CODE 1; }
long T(NAME,lln1)(long a) { return a CODE 1; }
int T(NAME,iinm1)(int a) { return a CODE -1; }
int T(NAME,ilnm1)(long a) { return a CODE -1; }
long T(NAME,linm1)(int a) { return a CODE -1; }
long T(NAME,llnm1)(long a) { return a CODE -1; }
int T(NAME,iin42)(int a) { return a CODE 42; }
int T(NAME,iln42)(long a) { return a CODE 42; }
long T(NAME,lin42)(int a) { return a CODE 42; }
long T(NAME,lln42)(long a) { return a CODE 42; }

@ -0,0 +1,9 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mcpu=future" } */
#define NAME eq
#define CODE ==
#include "setbc.h"
/* { dg-final { scan-assembler-times {\msetbc\M} 20 } } */

@ -0,0 +1,12 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mcpu=future" } */
#define NAME ge
#define CODE >=
#include "setbc.h"
/* "x >= 0" is done without setbc.
The generic code sometimes transforms "x >= A" to "x > A-1"; we allow
either here. */
/* { dg-final { scan-assembler-times {\msetbcr?\M} 16 } } */

@ -0,0 +1,10 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mcpu=future" } */
#define NAME gt
#define CODE >
#include "setbc.h"
/* "x > -1" is done without setbc. */
/* { dg-final { scan-assembler-times {\msetbc\M} 16 } } */

@ -0,0 +1,10 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mcpu=future" } */
#define NAME le
#define CODE <=
#include "setbc.h"
/* "x <= -1" is done without setbc. */
/* { dg-final { scan-assembler-times {\msetbcr\M} 16 } } */

@ -0,0 +1,12 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mcpu=future" } */
#define NAME lt
#define CODE <
#include "setbc.h"
/* "x < 0" is done without setbc.
The generic code sometimes transforms "x < A" to "x <= A-1"; we allow
either here. */
/* { dg-final { scan-assembler-times {\msetbcr?\M} 16 } } */

@ -0,0 +1,9 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mcpu=future" } */
#define NAME ne
#define CODE !=
#include "setbc.h"
/* { dg-final { scan-assembler-times {\msetbcr\M} 20 } } */