diff options
author | Kewen Lin <linkw@linux.ibm.com> | 2024-11-15 03:46:32 +0000 |
---|---|---|
committer | Kewen Lin <linkw@gcc.gnu.org> | 2024-11-15 03:46:32 +0000 |
commit | 5210565ec17728eab289104aedd09d50731da8ec (patch) | |
tree | eef250387c1d056228f1a4b96716c214e1724e83 /gcc/fortran/trans-expr.cc | |
parent | a2da2fca004fd3002d45ba298f6203c7972f9eb6 (diff) | |
download | gcc-5210565ec17728eab289104aedd09d50731da8ec.zip gcc-5210565ec17728eab289104aedd09d50731da8ec.tar.gz gcc-5210565ec17728eab289104aedd09d50731da8ec.tar.bz2 |
rs6000: Rework vector float comparison in rs6000_emit_vector_compare - p2
All kinds of vector float comparison operators have been
supported in a rtl comparison pattern as vector.md, we can
just emit an rtx comparison insn with the given comparison
operator in function rs6000_emit_vector_compare instead of
checking and handling the reverse condition cases.
This is part 2, it further checks for comparison opeators
NE/UNLE/UNLT. In rs6000_emit_vector_compare, they are
handled with reversed code which is queried from function
reverse_condition_maybe_unordered and inverting with
one_cmpl_optab. It's the same as what we have in vector.md:
; ne(a,b) = ~eq(a,b)
; unle(a,b) = ~gt(a,b)
; unlt(a,b) = ~ge(a,b)
The operators on the right side have been supported in part 1.
This patch should not have any functionality change too.
gcc/ChangeLog:
* config/rs6000/rs6000.cc (rs6000_emit_vector_compare): Emit rtx
comparison for operators NE/UNLE/UNLT of MODE_VECTOR_FLOAT directly.
Diffstat (limited to 'gcc/fortran/trans-expr.cc')
0 files changed, 0 insertions, 0 deletions