]> git.ipfire.org Git - thirdparty/gcc.git/commit
Match: Allow more types truncation for .SAT_TRUNC
authorPan Li <pan2.li@intel.com>
Tue, 2 Jul 2024 00:57:50 +0000 (08:57 +0800)
committerPan Li <pan2.li@intel.com>
Wed, 3 Jul 2024 13:22:40 +0000 (21:22 +0800)
commit44c767c06b6882d05fe56f4a3e03195101402fb0
treeaa4e325e3d6fa88a29b8983deaf74ab5d8f58afd
parent8d2c460e79aa013cc4eeb79bb45d18bd3d0aee58
Match: Allow more types truncation for .SAT_TRUNC

The .SAT_TRUNC has the input and output types,  aka cvt from
itype to otype and the sizeof (otype) < sizeof (itype).  The
previous patch only allows the sizeof (otype) == sizeof (itype) / 2.
But actually we have 1/4 and 1/8 truncation.

This patch would like to support more types trunction when
sizeof (otype) < sizeof (itype).  The below truncation will be
covered.

* uint64_t => uint8_t
* uint64_t => uint16_t
* uint64_t => uint32_t
* uint32_t => uint8_t
* uint32_t => uint16_t
* uint16_t => uint8_t

The below test suites are passed for this patch:
1. The rv64gcv fully regression tests.
2. The rv64gcv build with glibc.
3. The x86 bootstrap tests.
4. The x86 fully regression tests.

gcc/ChangeLog:

* match.pd: Allow any otype is less than itype truncation.

Signed-off-by: Pan Li <pan2.li@intel.com>
gcc/match.pd