gnu/gcc/72cedd48e12af8cd500622b487de4354d61aeb24 x86: Remove *fix_trunc<mode>si_sse_[2_]zext
Remove *fix_trunc<mode>si_sse_zext and *fix_trunc<mode>si_sse_2_zext
since they do not zero-extend SImode to DImode, as CVTTSD2SI does
IF 64-Bit Mode and OperandSize = 64
THEN
DEST[63:0] := Convert_Double_Precision_Floating_Point_To_Integer_Truncate(SRC[63:0]);
ELSE
DEST[31:0] := Convert_Double_Precision_Floating_Point_To_Integer_Truncate(SRC[63:0]);
FI;
and CVTTSS2SI does
IF 64-Bit Mode and OperandSize = 64
THEN
DEST[63:0] := Convert_Single_Precision_Floating_Point_To_Integer_Truncate(SRC[31:0]);
ELSE
DEST[31:0] := Convert_Single_Precision_Floating_Point_To_Integer_Truncate(SRC[31:0]);
FI;
gcc/
PR target/127045
* config/i386/i386.md (*fix_trunc<mode>si_sse_zext): Removed.
(*fix_trunc<mode>si_sse_2_zext): Likewise.
gcc/testsuite/
PR target/127045
* gcc.target/i386/pr127045.c: New test.
* gcc.target/i386/zext-sse-1.c (func1): Adjust expected codegen.
(func2): Likewise.
* gcc.target/i386/zext-sse-2.c (func1): Likewise.
(func2): Likewise.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
4 files changed