Skip to content
This repository was archived by the owner on May 7, 2024. It is now read-only.

Commit 7eeadf6

Browse files
committed
rvp: update to spec 0.9.11
0. update impl according to the change in 0.9.11 1. fix add/sub crash in rv32g 2. use standard name for saturation insn, e.g. kaddw and kaddh
1 parent 418ddbd commit 7eeadf6

File tree

6 files changed

+177
-206
lines changed

6 files changed

+177
-206
lines changed

gcc/config/riscv/riscv-builtins-rvp.def

Lines changed: 58 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ DIRECT_BUILTIN_NO_PREFIX (kaddv2hi3, kadd16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, z
101101
DIRECT_BUILTIN_NO_PREFIX (kaddv2hi3, v_kadd16, RISCV_V2HI_FTYPE_V2HI_V2HI, zpn32),
102102
DIRECT_BUILTIN_NO_PREFIX (kaddv4hi3, kadd16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
103103
DIRECT_BUILTIN_NO_PREFIX (kaddv4hi3, v64_kadd16, RISCV_V4HI_FTYPE_V4HI_V4HI, zpn64),
104-
DIRECT_BUILTIN_NO_PREFIX (kaddh, kaddh, RISCV_SI_FTYPE_SI_SI, zpn),
104+
DIRECT_BUILTIN_NO_PREFIX (ssaddhi3, kaddh, RISCV_HI_FTYPE_HI_HI, zpn),
105105
DIRECT_BUILTIN_NO_PREFIX (kcrasv2hi, kcras16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn32),
106106
DIRECT_BUILTIN_NO_PREFIX (kcrasv2hi, v_kcras16, RISCV_V2HI_FTYPE_V2HI_V2HI, zpn32),
107107
DIRECT_BUILTIN_NO_PREFIX (kcras16_64, kcras16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
@@ -297,8 +297,8 @@ DIRECT_BUILTIN_NO_PREFIX (ksubv2hi3, ksub16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, z
297297
DIRECT_BUILTIN_NO_PREFIX (ksubv2hi3, v_ksub16, RISCV_V2HI_FTYPE_V2HI_V2HI, zpn32),
298298
DIRECT_BUILTIN_NO_PREFIX (ksubv4hi3, ksub16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
299299
DIRECT_BUILTIN_NO_PREFIX (ksubv4hi3, v64_ksub16, RISCV_V4HI_FTYPE_V4HI_V4HI, zpn64),
300-
DIRECT_BUILTIN_NO_PREFIX (ksubh, ksubh, RISCV_SI_FTYPE_SI_SI, zpn),
301-
DIRECT_BUILTIN_NO_PREFIX (ksubw, ksubw, RISCV_SI_FTYPE_SI_SI, zpn),
300+
DIRECT_BUILTIN_NO_PREFIX (sssubhi3, ksubh, RISCV_HI_FTYPE_HI_HI, zpn),
301+
DIRECT_BUILTIN_NO_PREFIX (sssubsi3, ksubw, RISCV_SI_FTYPE_SI_SI, zpn),
302302
DIRECT_BUILTIN_NO_PREFIX (kwmmul, kwmmul, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn32),
303303
DIRECT_BUILTIN_NO_PREFIX (kwmmul_round, kwmmul_u, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn32),
304304
DIRECT_BUILTIN_NO_PREFIX (kwmmul_64, kwmmul, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
@@ -589,9 +589,9 @@ DIRECT_BUILTIN_NO_PREFIX (ukaddv2hi3, ukadd16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN,
589589
DIRECT_BUILTIN_NO_PREFIX (ukaddv2hi3, v_ukadd16, RISCV_UV2HI_FTYPE_UV2HI_UV2HI, zpn32),
590590
DIRECT_BUILTIN_NO_PREFIX (ukaddv4hi3, ukadd16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
591591
DIRECT_BUILTIN_NO_PREFIX (ukaddv4hi3, v64_ukadd16, RISCV_UV4HI_FTYPE_UV4HI_UV4HI, zpn64),
592-
DIRECT_BUILTIN_NO_PREFIX (ukaddh, ukaddh, RISCV_USI_FTYPE_USI_USI, zpn),
593-
DIRECT_BUILTIN_NO_PREFIX (ukaddw, ukaddw, RISCV_USI_FTYPE_USI_USI, zpn),
594-
DIRECT_BUILTIN_NO_PREFIX (kaddw, kaddw, RISCV_SI_FTYPE_SI_SI, zpn),
592+
DIRECT_BUILTIN_NO_PREFIX (usaddhi3, ukaddh, RISCV_UHI_FTYPE_UHI_UHI, zpn),
593+
DIRECT_BUILTIN_NO_PREFIX (usaddsi3, ukaddw, RISCV_USI_FTYPE_USI_USI, zpn),
594+
DIRECT_BUILTIN_NO_PREFIX (ssaddsi3, kaddw, RISCV_SI_FTYPE_SI_SI, zpn),
595595
DIRECT_BUILTIN_NO_PREFIX (ukcrasv2hi, ukcras16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn32),
596596
DIRECT_BUILTIN_NO_PREFIX (ukcrasv2hi, v_ukcras16, RISCV_UV2HI_FTYPE_UV2HI_UV2HI, zpn32),
597597
DIRECT_BUILTIN_NO_PREFIX (ukcras16_64, ukcras16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
@@ -616,8 +616,8 @@ DIRECT_BUILTIN_NO_PREFIX (uksubv2hi3, uksub16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN,
616616
DIRECT_BUILTIN_NO_PREFIX (uksubv2hi3, v_uksub16, RISCV_UV2HI_FTYPE_UV2HI_UV2HI, zpn32),
617617
DIRECT_BUILTIN_NO_PREFIX (uksubv4hi3, uksub16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
618618
DIRECT_BUILTIN_NO_PREFIX (uksubv4hi3, v64_uksub16, RISCV_UV4HI_FTYPE_UV4HI_UV4HI, zpn64),
619-
DIRECT_BUILTIN_NO_PREFIX (uksubh, uksubh, RISCV_USI_FTYPE_USI_USI, zpn),
620-
DIRECT_BUILTIN_NO_PREFIX (uksubw, uksubw, RISCV_USI_FTYPE_USI_USI, zpn),
619+
DIRECT_BUILTIN_NO_PREFIX (ussubhi3, uksubh, RISCV_UHI_FTYPE_UHI_UHI, zpn),
620+
DIRECT_BUILTIN_NO_PREFIX (ussubsi3, uksubw, RISCV_USI_FTYPE_USI_USI, zpn),
621621
DIRECT_BUILTIN_NO_PREFIX (umaqa, umaqa, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN_UIXLEN, zpn32),
622622
DIRECT_BUILTIN_NO_PREFIX (umaqa, v_umaqa, RISCV_USI_FTYPE_USI_UV4QI_UV4QI, zpn32),
623623
DIRECT_BUILTIN_NO_PREFIX (umaqa64, umaqa, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN_UIXLEN, zpn64),
@@ -701,20 +701,20 @@ DIRECT_BUILTIN_NO_PREFIX (crasv2si, v_scras32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64
701701
DIRECT_BUILTIN_NO_PREFIX (crsav2si, crsa32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
702702
DIRECT_BUILTIN_NO_PREFIX (crsav2si, v_ucrsa32, RISCV_UV2SI_FTYPE_UV2SI_UV2SI, zpn64),
703703
DIRECT_BUILTIN_NO_PREFIX (crsav2si, v_scrsa32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
704-
DIRECT_BUILTIN_NO_PREFIX (kabsv2si2, kabs32, RISCV_UIXLEN_FTYPE_UIXLEN, zpn64),
704+
DIRECT_BUILTIN_NO_PREFIX (kabsv2si2, kabs32, RISCV_DI_FTYPE_DI, zpn64),
705705
DIRECT_BUILTIN_NO_PREFIX (kabsv2si2, v_kabs32, RISCV_V2SI_FTYPE_V2SI, zpn64),
706-
DIRECT_BUILTIN_NO_PREFIX (kaddv2si3, kadd32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
706+
DIRECT_BUILTIN_NO_PREFIX (kaddv2si3, kadd32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
707707
DIRECT_BUILTIN_NO_PREFIX (kaddv2si3, v_kadd32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
708-
DIRECT_BUILTIN_NO_PREFIX (kcrasv2si, kcras32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
708+
DIRECT_BUILTIN_NO_PREFIX (kcrasv2si, kcras32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
709709
DIRECT_BUILTIN_NO_PREFIX (kcrasv2si, v_kcras32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
710-
DIRECT_BUILTIN_NO_PREFIX (kcrsav2si, kcrsa32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
710+
DIRECT_BUILTIN_NO_PREFIX (kcrsav2si, kcrsa32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
711711
DIRECT_BUILTIN_NO_PREFIX (kcrsav2si, v_kcrsa32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
712-
DIRECT_BUILTIN_NO_PREFIX (khmbb16, khmbb16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
713-
DIRECT_BUILTIN_NO_PREFIX (khmbt16, khmbt16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
714-
DIRECT_BUILTIN_NO_PREFIX (khmtt16, khmtt16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
715-
DIRECT_BUILTIN_NO_PREFIX (kdmbb16, kdmbb16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
716-
DIRECT_BUILTIN_NO_PREFIX (kdmbt16, kdmbt16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
717-
DIRECT_BUILTIN_NO_PREFIX (kdmtt16, kdmtt16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
712+
DIRECT_BUILTIN_NO_PREFIX (khmbb16, khmbb16, RISCV_IXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
713+
DIRECT_BUILTIN_NO_PREFIX (khmbt16, khmbt16, RISCV_IXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
714+
DIRECT_BUILTIN_NO_PREFIX (khmtt16, khmtt16, RISCV_IXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
715+
DIRECT_BUILTIN_NO_PREFIX (kdmbb16, kdmbb16, RISCV_IXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
716+
DIRECT_BUILTIN_NO_PREFIX (kdmbt16, kdmbt16, RISCV_IXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
717+
DIRECT_BUILTIN_NO_PREFIX (kdmtt16, kdmtt16, RISCV_IXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
718718
DIRECT_BUILTIN_NO_PREFIX (kdmabb16, kdmabb16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN_UIXLEN, zpn64),
719719
DIRECT_BUILTIN_NO_PREFIX (kdmabt16, kdmabt16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN_UIXLEN, zpn64),
720720
DIRECT_BUILTIN_NO_PREFIX (kdmatt16, kdmatt16, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN_UIXLEN, zpn64),
@@ -727,39 +727,39 @@ DIRECT_BUILTIN_NO_PREFIX (kdmtt16, v_kdmtt16, RISCV_V2SI_FTYPE_V4HI_V4HI, zpn64)
727727
DIRECT_BUILTIN_NO_PREFIX (kdmabb16, v_kdmabb16, RISCV_V2SI_FTYPE_V2SI_V4HI_V4HI, zpn64),
728728
DIRECT_BUILTIN_NO_PREFIX (kdmabt16, v_kdmabt16, RISCV_V2SI_FTYPE_V2SI_V4HI_V4HI, zpn64),
729729
DIRECT_BUILTIN_NO_PREFIX (kdmatt16, v_kdmatt16, RISCV_V2SI_FTYPE_V2SI_V4HI_V4HI, zpn64),
730-
DIRECT_BUILTIN_NO_PREFIX (kmabb32, kmabb32, RISCV_IXLEN_FTYPE_IXLEN_UIXLEN_UIXLEN, zpn64),
731-
DIRECT_BUILTIN_NO_PREFIX (kmabt32, kmabt32, RISCV_IXLEN_FTYPE_IXLEN_UIXLEN_UIXLEN, zpn64),
732-
DIRECT_BUILTIN_NO_PREFIX (kmatt32, kmatt32, RISCV_IXLEN_FTYPE_IXLEN_UIXLEN_UIXLEN, zpn64),
730+
DIRECT_BUILTIN_NO_PREFIX (kmabb32, kmabb32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN_IXLEN, zpn64),
731+
DIRECT_BUILTIN_NO_PREFIX (kmabt32, kmabt32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN_IXLEN, zpn64),
732+
DIRECT_BUILTIN_NO_PREFIX (kmatt32, kmatt32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN_IXLEN, zpn64),
733733
DIRECT_BUILTIN_NO_PREFIX (kmabb32, v_kmabb32, RISCV_IXLEN_FTYPE_IXLEN_V2SI_V2SI, zpn64),
734734
DIRECT_BUILTIN_NO_PREFIX (kmabt32, v_kmabt32, RISCV_IXLEN_FTYPE_IXLEN_V2SI_V2SI, zpn64),
735735
DIRECT_BUILTIN_NO_PREFIX (kmatt32, v_kmatt32, RISCV_IXLEN_FTYPE_IXLEN_V2SI_V2SI, zpn64),
736-
DIRECT_BUILTIN_NO_PREFIX (kmaxda32, kmaxda32, RISCV_IXLEN_FTYPE_IXLEN_UIXLEN_UIXLEN, zpn64),
736+
DIRECT_BUILTIN_NO_PREFIX (kmaxda32, kmaxda32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN_IXLEN, zpn64),
737737
DIRECT_BUILTIN_NO_PREFIX (kmaxda32, v_kmaxda32, RISCV_IXLEN_FTYPE_IXLEN_V2SI_V2SI, zpn64),
738-
DIRECT_BUILTIN_NO_PREFIX (kmda32, kmda32, RISCV_IXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
739-
DIRECT_BUILTIN_NO_PREFIX (kmxda32, kmxda32, RISCV_IXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
738+
DIRECT_BUILTIN_NO_PREFIX (kmda32, kmda32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
739+
DIRECT_BUILTIN_NO_PREFIX (kmxda32, kmxda32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
740740
DIRECT_BUILTIN_NO_PREFIX (kmda32, v_kmda32, RISCV_IXLEN_FTYPE_V2SI_V2SI, zpn64),
741741
DIRECT_BUILTIN_NO_PREFIX (kmxda32, v_kmxda32, RISCV_IXLEN_FTYPE_V2SI_V2SI, zpn64),
742-
DIRECT_BUILTIN_NO_PREFIX (kmads32, kmads32, RISCV_IXLEN_FTYPE_IXLEN_UIXLEN_UIXLEN, zpn64),
743-
DIRECT_BUILTIN_NO_PREFIX (kmadrs32, kmadrs32, RISCV_IXLEN_FTYPE_IXLEN_UIXLEN_UIXLEN, zpn64),
744-
DIRECT_BUILTIN_NO_PREFIX (kmaxds32, kmaxds32, RISCV_IXLEN_FTYPE_IXLEN_UIXLEN_UIXLEN, zpn64),
742+
DIRECT_BUILTIN_NO_PREFIX (kmads32, kmads32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN_IXLEN, zpn64),
743+
DIRECT_BUILTIN_NO_PREFIX (kmadrs32, kmadrs32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN_IXLEN, zpn64),
744+
DIRECT_BUILTIN_NO_PREFIX (kmaxds32, kmaxds32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN_IXLEN, zpn64),
745745
DIRECT_BUILTIN_NO_PREFIX (kmads32, v_kmads32, RISCV_IXLEN_FTYPE_IXLEN_V2SI_V2SI, zpn64),
746746
DIRECT_BUILTIN_NO_PREFIX (kmadrs32, v_kmadrs32, RISCV_IXLEN_FTYPE_IXLEN_V2SI_V2SI, zpn64),
747747
DIRECT_BUILTIN_NO_PREFIX (kmaxds32, v_kmaxds32, RISCV_IXLEN_FTYPE_IXLEN_V2SI_V2SI, zpn64),
748-
DIRECT_BUILTIN_NO_PREFIX (kmsda32, kmsda32, RISCV_IXLEN_FTYPE_IXLEN_UIXLEN_UIXLEN, zpn64),
749-
DIRECT_BUILTIN_NO_PREFIX (kmsxda32, kmsxda32, RISCV_IXLEN_FTYPE_IXLEN_UIXLEN_UIXLEN, zpn64),
748+
DIRECT_BUILTIN_NO_PREFIX (kmsda32, kmsda32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN_IXLEN, zpn64),
749+
DIRECT_BUILTIN_NO_PREFIX (kmsxda32, kmsxda32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN_IXLEN, zpn64),
750750
DIRECT_BUILTIN_NO_PREFIX (kmsda32, v_kmsda32, RISCV_IXLEN_FTYPE_IXLEN_V2SI_V2SI, zpn64),
751751
DIRECT_BUILTIN_NO_PREFIX (kmsxda32, v_kmsxda32, RISCV_IXLEN_FTYPE_IXLEN_V2SI_V2SI, zpn64),
752-
DIRECT_BUILTIN_NO_PREFIX (ksll32, ksll32, RISCV_UIXLEN_FTYPE_UIXLEN_USI, zpn64),
752+
DIRECT_BUILTIN_NO_PREFIX (ksll32, ksll32, RISCV_IXLEN_FTYPE_IXLEN_USI, zpn64),
753753
DIRECT_BUILTIN_NO_PREFIX (ksll32, v_ksll32, RISCV_V2SI_FTYPE_V2SI_USI, zpn64),
754-
DIRECT_BUILTIN_NO_PREFIX (kslrav2si, kslra32, RISCV_UIXLEN_FTYPE_UIXLEN_SI, zpn64),
755-
DIRECT_BUILTIN_NO_PREFIX (kslrav2si_round, kslra32_u, RISCV_UIXLEN_FTYPE_UIXLEN_SI, zpn64),
754+
DIRECT_BUILTIN_NO_PREFIX (kslrav2si, kslra32, RISCV_DI_FTYPE_DI_SI, zpn64),
755+
DIRECT_BUILTIN_NO_PREFIX (kslrav2si_round, kslra32_u, RISCV_DI_FTYPE_DI_SI, zpn64),
756756
DIRECT_BUILTIN_NO_PREFIX (kslrav2si, v_kslra32, RISCV_V2SI_FTYPE_V2SI_SI, zpn64),
757757
DIRECT_BUILTIN_NO_PREFIX (kslrav2si_round, v_kslra32_u, RISCV_V2SI_FTYPE_V2SI_SI, zpn64),
758758
DIRECT_BUILTIN_NO_PREFIX (kstasv2si, kstas32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
759759
DIRECT_BUILTIN_NO_PREFIX (kstasv2si, v_kstas32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
760-
DIRECT_BUILTIN_NO_PREFIX (kstsav2si, kstsa32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
760+
DIRECT_BUILTIN_NO_PREFIX (kstsav2si, kstsa32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
761761
DIRECT_BUILTIN_NO_PREFIX (kstsav2si, v_kstsa32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
762-
DIRECT_BUILTIN_NO_PREFIX (ksubv2si3, ksub32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
762+
DIRECT_BUILTIN_NO_PREFIX (ksubv2si3, ksub32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
763763
DIRECT_BUILTIN_NO_PREFIX (ksubv2si3, v_ksub32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
764764
DIRECT_BUILTIN_NO_PREFIX (pkbbv2si, pkbb32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
765765
DIRECT_BUILTIN_NO_PREFIX (pkbtv2si, pkbt32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
@@ -769,40 +769,40 @@ DIRECT_BUILTIN_NO_PREFIX (pkbbv2si, v_pkbb32, RISCV_UV2SI_FTYPE_UV2SI_UV2SI, zpn
769769
DIRECT_BUILTIN_NO_PREFIX (pkbtv2si, v_pkbt32, RISCV_UV2SI_FTYPE_UV2SI_UV2SI, zpn64),
770770
DIRECT_BUILTIN_NO_PREFIX (pktbv2si, v_pktb32, RISCV_UV2SI_FTYPE_UV2SI_UV2SI, zpn64),
771771
DIRECT_BUILTIN_NO_PREFIX (pkttv2si, v_pktt32, RISCV_UV2SI_FTYPE_UV2SI_UV2SI, zpn64),
772-
DIRECT_BUILTIN_NO_PREFIX (raddv2si3, radd32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
772+
DIRECT_BUILTIN_NO_PREFIX (raddv2si3, radd32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
773773
DIRECT_BUILTIN_NO_PREFIX (raddv2si3, v_radd32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
774-
DIRECT_BUILTIN_NO_PREFIX (rcrasv2si, rcras32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
774+
DIRECT_BUILTIN_NO_PREFIX (rcrasv2si, rcras32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
775775
DIRECT_BUILTIN_NO_PREFIX (rcrasv2si, v_rcras32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
776776
DIRECT_BUILTIN_NO_PREFIX (rcrsav2si, v_rcrsa32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
777-
DIRECT_BUILTIN_NO_PREFIX (rcrsav2si, rcrsa32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
778-
DIRECT_BUILTIN_NO_PREFIX (rstasv2si, rstas32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
777+
DIRECT_BUILTIN_NO_PREFIX (rcrsav2si, rcrsa32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
778+
DIRECT_BUILTIN_NO_PREFIX (rstasv2si, rstas32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
779779
DIRECT_BUILTIN_NO_PREFIX (rstasv2si, v_rstas32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
780-
DIRECT_BUILTIN_NO_PREFIX (rstsav2si, rstsa32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
780+
DIRECT_BUILTIN_NO_PREFIX (rstsav2si, rstsa32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
781781
DIRECT_BUILTIN_NO_PREFIX (rstsav2si, v_rstsa32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
782-
DIRECT_BUILTIN_NO_PREFIX (rsubv2si3, rsub32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
782+
DIRECT_BUILTIN_NO_PREFIX (rsubv2si3, rsub32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
783783
DIRECT_BUILTIN_NO_PREFIX (rsubv2si3, v_rsub32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
784784
DIRECT_BUILTIN_NO_PREFIX (ashlv2si3, sll32, RISCV_UIXLEN_FTYPE_UIXLEN_USI, zpn64),
785785
DIRECT_BUILTIN_NO_PREFIX (ashlv2si3, v_sll32, RISCV_UV2SI_FTYPE_UV2SI_USI, zpn64),
786-
DIRECT_BUILTIN_NO_PREFIX (smaxv2si3, smax32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
786+
DIRECT_BUILTIN_NO_PREFIX (smaxv2si3, smax32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
787787
DIRECT_BUILTIN_NO_PREFIX (smaxv2si3, v_smax32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
788-
DIRECT_BUILTIN_NO_PREFIX (smbb32, smbb32, RISCV_IXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
789-
DIRECT_BUILTIN_NO_PREFIX (smbt32, smbt32, RISCV_IXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
790-
DIRECT_BUILTIN_NO_PREFIX (smtt32, smtt32, RISCV_IXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
788+
DIRECT_BUILTIN_NO_PREFIX (smbb32, smbb32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
789+
DIRECT_BUILTIN_NO_PREFIX (smbt32, smbt32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
790+
DIRECT_BUILTIN_NO_PREFIX (smtt32, smtt32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
791791
DIRECT_BUILTIN_NO_PREFIX (smbb32, v_smbb32, RISCV_IXLEN_FTYPE_V2SI_V2SI, zpn64),
792792
DIRECT_BUILTIN_NO_PREFIX (smbt32, v_smbt32, RISCV_IXLEN_FTYPE_V2SI_V2SI, zpn64),
793793
DIRECT_BUILTIN_NO_PREFIX (smtt32, v_smtt32, RISCV_IXLEN_FTYPE_V2SI_V2SI, zpn64),
794-
DIRECT_BUILTIN_NO_PREFIX (smds32, smds32, RISCV_IXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
795-
DIRECT_BUILTIN_NO_PREFIX (smdrs32, smdrs32, RISCV_IXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
796-
DIRECT_BUILTIN_NO_PREFIX (smxds32, smxds32, RISCV_IXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
794+
DIRECT_BUILTIN_NO_PREFIX (smds32, smds32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
795+
DIRECT_BUILTIN_NO_PREFIX (smdrs32, smdrs32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
796+
DIRECT_BUILTIN_NO_PREFIX (smxds32, smxds32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
797797
DIRECT_BUILTIN_NO_PREFIX (smds32, v_smds32, RISCV_IXLEN_FTYPE_V2SI_V2SI, zpn64),
798798
DIRECT_BUILTIN_NO_PREFIX (smdrs32, v_smdrs32, RISCV_IXLEN_FTYPE_V2SI_V2SI, zpn64),
799799
DIRECT_BUILTIN_NO_PREFIX (smxds32, v_smxds32, RISCV_IXLEN_FTYPE_V2SI_V2SI, zpn64),
800-
DIRECT_BUILTIN_NO_PREFIX (sminv2si3, smin32, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN, zpn64),
800+
DIRECT_BUILTIN_NO_PREFIX (sminv2si3, smin32, RISCV_IXLEN_FTYPE_IXLEN_IXLEN, zpn64),
801801
DIRECT_BUILTIN_NO_PREFIX (sminv2si3, v_smin32, RISCV_V2SI_FTYPE_V2SI_V2SI, zpn64),
802802
DIRECT_BUILTIN_NO_PREFIX (ashrv2si3, v_sra32, RISCV_V2SI_FTYPE_V2SI_USI, zpn64),
803803
DIRECT_BUILTIN_NO_PREFIX (sra32_round, v_sra32_u, RISCV_V2SI_FTYPE_V2SI_USI, zpn64),
804-
DIRECT_BUILTIN_NO_PREFIX (ashrv2si3, sra32, RISCV_UIXLEN_FTYPE_UIXLEN_USI, zpn64),
805-
DIRECT_BUILTIN_NO_PREFIX (sra32_round, sra32_u, RISCV_UIXLEN_FTYPE_UIXLEN_USI, zpn64),
804+
DIRECT_BUILTIN_NO_PREFIX (ashrv2si3, sra32, RISCV_IXLEN_FTYPE_IXLEN_USI, zpn64),
805+
DIRECT_BUILTIN_NO_PREFIX (sra32_round, sra32_u, RISCV_IXLEN_FTYPE_IXLEN_USI, zpn64),
806806
DIRECT_BUILTIN_NO_PREFIX (sraiw_u, sraw_u, RISCV_SI_FTYPE_SI_USI, zpn64),
807807
DIRECT_BUILTIN_NO_PREFIX (lshrv2si3, srl32, RISCV_UIXLEN_FTYPE_UIXLEN_USI, zpn64),
808808
DIRECT_BUILTIN_NO_PREFIX (srl32_round, srl32_u, RISCV_UIXLEN_FTYPE_UIXLEN_USI, zpn64),
@@ -945,12 +945,12 @@ DIRECT_BUILTIN_NO_PREFIX (smul8, smul8, RISCV_UDI_FTYPE_USI_USI, zpsf),
945945
DIRECT_BUILTIN_NO_PREFIX (smul8, v_smul8, RISCV_V4HI_FTYPE_V4QI_V4QI, zpsf),
946946
DIRECT_BUILTIN_NO_PREFIX (smulx8, smulx8, RISCV_UDI_FTYPE_USI_USI, zpsf),
947947
DIRECT_BUILTIN_NO_PREFIX (smulx8, v_smulx8, RISCV_V4HI_FTYPE_V4QI_V4QI, zpsf),
948-
DIRECT_BUILTIN_NO_PREFIX (smul16, smul16, RISCV_UDI_FTYPE_USI_USI, zpsf32),
949-
DIRECT_BUILTIN_NO_PREFIX (smul16_64, smul16, RISCV_UDI_FTYPE_USI_USI, zpsf64),
948+
DIRECT_BUILTIN_NO_PREFIX (smul16, smul16, RISCV_DI_FTYPE_USI_USI, zpsf32),
949+
DIRECT_BUILTIN_NO_PREFIX (smul16_64, smul16, RISCV_DI_FTYPE_USI_USI, zpsf64),
950950
DIRECT_BUILTIN_NO_PREFIX (smul16, v_smul16, RISCV_V2SI_FTYPE_V2HI_V2HI, zpsf32),
951951
DIRECT_BUILTIN_NO_PREFIX (smul16_64, v64_smul16, RISCV_V2SI_FTYPE_V2HI_V2HI, zpsf64),
952-
DIRECT_BUILTIN_NO_PREFIX (smulx16, smulx16, RISCV_UDI_FTYPE_USI_USI, zpsf32),
953-
DIRECT_BUILTIN_NO_PREFIX (smulx16_64, smulx16, RISCV_UDI_FTYPE_USI_USI, zpsf64),
952+
DIRECT_BUILTIN_NO_PREFIX (smulx16, smulx16, RISCV_DI_FTYPE_USI_USI, zpsf32),
953+
DIRECT_BUILTIN_NO_PREFIX (smulx16_64, smulx16, RISCV_DI_FTYPE_USI_USI, zpsf64),
954954
DIRECT_BUILTIN_NO_PREFIX (smulx16, v_smulx16, RISCV_V2SI_FTYPE_V2HI_V2HI, zpsf32),
955955
DIRECT_BUILTIN_NO_PREFIX (smulx16_64, v_smulx16, RISCV_V2SI_FTYPE_V2HI_V2HI, zpsf64),
956956
DIRECT_BUILTIN_NO_PREFIX (wext, wext, RISCV_IXLEN_FTYPE_UDI_USI, zpsf32),
@@ -961,5 +961,7 @@ DIRECT_BUILTIN_NO_PREFIX (fsrw, fsrw, RISCV_USI_FTYPE_USI_USI_USI, zbpbo64),
961961
DIRECT_BUILTIN_NO_PREFIX (fsr, fsr, RISCV_USI_FTYPE_USI_USI_USI, zbpbo32),
962962
DIRECT_BUILTIN_NO_PREFIX (cmixsi, cmix, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN_UIXLEN, zbpbo32),
963963
DIRECT_BUILTIN_NO_PREFIX (cmixdi, cmix, RISCV_UIXLEN_FTYPE_UIXLEN_UIXLEN_UIXLEN, zbpbo64),
964-
DIRECT_BUILTIN_NO_PREFIX (smaxsi3, max, RISCV_SI_FTYPE_SI_SI, zbpbo),
965-
DIRECT_BUILTIN_NO_PREFIX (sminsi3, min, RISCV_SI_FTYPE_SI_SI, zbpbo),
964+
DIRECT_BUILTIN_NO_PREFIX (smaxsi3, max, RISCV_SI_FTYPE_SI_SI, zbpbo32),
965+
DIRECT_BUILTIN_NO_PREFIX (sminsi3, min, RISCV_SI_FTYPE_SI_SI, zbpbo32),
966+
DIRECT_BUILTIN_NO_PREFIX (smaxdi3, max, RISCV_DI_FTYPE_DI_DI, zbpbo64),
967+
DIRECT_BUILTIN_NO_PREFIX (smindi3, min, RISCV_DI_FTYPE_DI_DI, zbpbo64),

gcc/config/riscv/riscv-builtins.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@ AVAIL (zpsf, TARGET_ZPSF)
124124
AVAIL (zpsf32, TARGET_ZPSF && !TARGET_64BIT)
125125
AVAIL (zpsf64, TARGET_ZPSF && TARGET_64BIT)
126126

127-
AVAIL (zbpbo, TARGET_ZBPBO)
128127
AVAIL (zbpbo32, TARGET_ZBPBO && !TARGET_64BIT)
129128
AVAIL (zbpbo64, TARGET_ZBPBO && TARGET_64BIT)
130129

@@ -177,6 +176,8 @@ tree int_xlen_node;
177176

178177
/* Argument types. */
179178
#define RISCV_ATYPE_VOID void_type_node
179+
#define RISCV_ATYPE_UHI unsigned_intHI_type_node
180+
#define RISCV_ATYPE_HI intHI_type_node
180181
#define RISCV_ATYPE_USI unsigned_intSI_type_node
181182
#define RISCV_ATYPE_SI intSI_type_node
182183
#define RISCV_ATYPE_DI intDI_type_node

gcc/config/riscv/riscv-ftypes.def

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ DEF_RISCV_FTYPE (2, (DI, DI, UIXLEN))
6161
DEF_RISCV_FTYPE (2, (DI, DI, USI))
6262
DEF_RISCV_FTYPE (2, (DI, DI, V2HI))
6363
DEF_RISCV_FTYPE (2, (DI, DI, V4HI))
64+
DEF_RISCV_FTYPE (2, (DI, USI, USI))
6465
DEF_RISCV_FTYPE (2, (DI, SI, SI))
6566
DEF_RISCV_FTYPE (2, (IXLEN, IXLEN, IXLEN))
6667
DEF_RISCV_FTYPE (2, (IXLEN, IXLEN, UIXLEN))
@@ -125,6 +126,8 @@ DEF_RISCV_FTYPE (2, (V4QI, V4QI, V4QI))
125126
DEF_RISCV_FTYPE (2, (V8QI, V8QI, SI))
126127
DEF_RISCV_FTYPE (2, (V8QI, V8QI, USI))
127128
DEF_RISCV_FTYPE (2, (V8QI, V8QI, V8QI))
129+
DEF_RISCV_FTYPE (2, (HI, HI, HI))
130+
DEF_RISCV_FTYPE (2, (UHI, UHI, UHI))
128131
DEF_RISCV_FTYPE (3, (DI, DI, IXLEN, IXLEN))
129132
DEF_RISCV_FTYPE (3, (DI, DI, UIXLEN, UIXLEN))
130133
DEF_RISCV_FTYPE (3, (DI, DI, V2HI, V2HI))

0 commit comments

Comments
 (0)