mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
Test: Add test case for bit_op convert folding
Add test cases of all possible types of bit_op convert folding. To check there is no tree dump like below: _5 = (uint8_t) _2; return _5; gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/bit_op_cvt.1.c: New test. * gcc.dg/tree-ssa/bit_op_cvt.2.c: New test. * gcc.dg/tree-ssa/bit_op_cvt.3.c: New test. * gcc.dg/tree-ssa/bit_op_cvt.4.c: New test. * gcc.dg/tree-ssa/bit_op_cvt.5.c: New test. * gcc.dg/tree-ssa/bit_op_cvt.6.c: New test. * gcc.dg/tree-ssa/bit_op_cvt.h: New test. Signed-off-by: Pan Li <pan2.li@intel.com>
This commit is contained in:
33
gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.1.c
Normal file
33
gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.1.c
Normal file
@@ -0,0 +1,33 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fdump-tree-optimized" } */
|
||||
|
||||
#include "bit_op_cvt.h"
|
||||
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, uint16_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, uint32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, uint64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, uint16_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, uint32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, uint64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, int16_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, int32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, int64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, int16_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, int32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, int64_t, |, bit_ior)
|
||||
|
||||
DEF_BIT_CVT_0(uint16_t, int16_t, uint32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint16_t, int16_t, uint64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint16_t, int16_t, int32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint16_t, int16_t, int64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint16_t, uint16_t, uint32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint16_t, uint16_t, uint64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint16_t, uint16_t, int32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint16_t, uint16_t, int64_t, |, bit_ior)
|
||||
|
||||
DEF_BIT_CVT_0(uint32_t, int32_t, uint64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint32_t, int32_t, int64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint32_t, uint32_t, uint64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(uint32_t, uint32_t, int64_t, |, bit_ior)
|
||||
|
||||
/* { dg-final { scan-tree-dump-not "_\[0-9]\+ = \\(u?int\[0-9]\+_t\\) _\[0-9]\+;\\s+return _\[0-9]\+;" "optimized" } } */
|
||||
33
gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.2.c
Normal file
33
gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.2.c
Normal file
@@ -0,0 +1,33 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fdump-tree-optimized" } */
|
||||
|
||||
#include "bit_op_cvt.h"
|
||||
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, uint16_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, uint32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, uint64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, uint16_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, uint32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, uint64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, int16_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, int32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, int64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, int16_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, int32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, int64_t, |, bit_ior)
|
||||
|
||||
DEF_BIT_CVT_0(int16_t, int16_t, uint32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int16_t, int16_t, uint64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int16_t, int16_t, int32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int16_t, int16_t, int64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int16_t, uint16_t, uint32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int16_t, uint16_t, uint64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int16_t, uint16_t, int32_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int16_t, uint16_t, int64_t, |, bit_ior)
|
||||
|
||||
DEF_BIT_CVT_0(int32_t, int32_t, uint64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int32_t, int32_t, int64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int32_t, uint32_t, uint64_t, |, bit_ior)
|
||||
DEF_BIT_CVT_0(int32_t, uint32_t, int64_t, |, bit_ior)
|
||||
|
||||
/* { dg-final { scan-tree-dump-not "_\[0-9]\+ = \\(u?int\[0-9]\+_t\\) _\[0-9]\+;\\s+return _\[0-9]\+;" "optimized" } } */
|
||||
33
gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.3.c
Normal file
33
gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.3.c
Normal file
@@ -0,0 +1,33 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fdump-tree-optimized" } */
|
||||
|
||||
#include "bit_op_cvt.h"
|
||||
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, uint16_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, uint32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, uint64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, uint16_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, uint32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, uint64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, int16_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, int32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, int64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, int16_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, int32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, int64_t, &, bit_and)
|
||||
|
||||
DEF_BIT_CVT_0(uint16_t, int16_t, uint32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint16_t, int16_t, uint64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint16_t, int16_t, int32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint16_t, int16_t, int64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint16_t, uint16_t, uint32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint16_t, uint16_t, uint64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint16_t, uint16_t, int32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint16_t, uint16_t, int64_t, &, bit_and)
|
||||
|
||||
DEF_BIT_CVT_0(uint32_t, int32_t, uint64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint32_t, int32_t, int64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint32_t, uint32_t, uint64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(uint32_t, uint32_t, int64_t, &, bit_and)
|
||||
|
||||
/* { dg-final { scan-tree-dump-not "_\[0-9]\+ = \\(u?int\[0-9]\+_t\\) _\[0-9]\+;\\s+return _\[0-9]\+;" "optimized" } } */
|
||||
33
gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.4.c
Normal file
33
gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.4.c
Normal file
@@ -0,0 +1,33 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fdump-tree-optimized" } */
|
||||
|
||||
#include "bit_op_cvt.h"
|
||||
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, uint16_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, uint32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, uint64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, uint16_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, uint32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, uint64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, int16_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, int32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, int64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, int16_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, int32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, int64_t, &, bit_and)
|
||||
|
||||
DEF_BIT_CVT_0(int16_t, int16_t, uint32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int16_t, int16_t, uint64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int16_t, int16_t, int32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int16_t, int16_t, int64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int16_t, uint16_t, uint32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int16_t, uint16_t, uint64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int16_t, uint16_t, int32_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int16_t, uint16_t, int64_t, &, bit_and)
|
||||
|
||||
DEF_BIT_CVT_0(int32_t, int32_t, uint64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int32_t, int32_t, int64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int32_t, uint32_t, uint64_t, &, bit_and)
|
||||
DEF_BIT_CVT_0(int32_t, uint32_t, int64_t, &, bit_and)
|
||||
|
||||
/* { dg-final { scan-tree-dump-not "_\[0-9]\+ = \\(u?int\[0-9]\+_t\\) _\[0-9]\+;\\s+return _\[0-9]\+;" "optimized" } } */
|
||||
33
gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.5.c
Normal file
33
gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.5.c
Normal file
@@ -0,0 +1,33 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fdump-tree-optimized" } */
|
||||
|
||||
#include "bit_op_cvt.h"
|
||||
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, uint16_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, uint32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, uint64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, uint16_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, uint32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, uint64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, int16_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, int32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint8_t, uint8_t, int64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, int16_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, int32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint8_t, int8_t, int64_t, ^, bit_xor)
|
||||
|
||||
DEF_BIT_CVT_0(uint16_t, int16_t, uint32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint16_t, int16_t, uint64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint16_t, int16_t, int32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint16_t, int16_t, int64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint16_t, uint16_t, uint32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint16_t, uint16_t, uint64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint16_t, uint16_t, int32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint16_t, uint16_t, int64_t, ^, bit_xor)
|
||||
|
||||
DEF_BIT_CVT_0(uint32_t, int32_t, uint64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint32_t, int32_t, int64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint32_t, uint32_t, uint64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(uint32_t, uint32_t, int64_t, ^, bit_xor)
|
||||
|
||||
/* { dg-final { scan-tree-dump-not "_\[0-9]\+ = \\(u?int\[0-9]\+_t\\) _\[0-9]\+;\\s+return _\[0-9]\+;" "optimized" } } */
|
||||
33
gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.6.c
Normal file
33
gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.6.c
Normal file
@@ -0,0 +1,33 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fdump-tree-optimized" } */
|
||||
|
||||
#include "bit_op_cvt.h"
|
||||
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, uint16_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, uint32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, uint64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, uint16_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, uint32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, uint64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, int16_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, int32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int8_t, uint8_t, int64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, int16_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, int32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int8_t, int8_t, int64_t, ^, bit_xor)
|
||||
|
||||
DEF_BIT_CVT_0(int16_t, int16_t, uint32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int16_t, int16_t, uint64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int16_t, int16_t, int32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int16_t, int16_t, int64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int16_t, uint16_t, uint32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int16_t, uint16_t, uint64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int16_t, uint16_t, int32_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int16_t, uint16_t, int64_t, ^, bit_xor)
|
||||
|
||||
DEF_BIT_CVT_0(int32_t, int32_t, uint64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int32_t, int32_t, int64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int32_t, uint32_t, uint64_t, ^, bit_xor)
|
||||
DEF_BIT_CVT_0(int32_t, uint32_t, int64_t, ^, bit_xor)
|
||||
|
||||
/* { dg-final { scan-tree-dump-not "_\[0-9]\+ = \\(u?int\[0-9]\+_t\\) _\[0-9]\+;\\s+return _\[0-9]\+;" "optimized" } } */
|
||||
13
gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.h
Normal file
13
gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef HAVE_DEFINED_BIT_OP_CVT
|
||||
#define HAVE_DEFINED_BIT_OP_CVT
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define DEF_BIT_CVT_0(T1, T2, T3, OP, NAME) \
|
||||
T1 test_bit_##NAME##_##T1##_##T2##_##T3##_0(T2 a, \
|
||||
T3 b) \
|
||||
{ \
|
||||
return (T1)(a OP (T3)b); \
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user