public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: 钟居哲 <juzhe.zhong@rivai.ai>
To: cooper.joshua <cooper.joshua@linux.alibaba.com>,
	 gcc-patches <gcc-patches@gcc.gnu.org>
Cc: "jim.wilson.gcc" <jim.wilson.gcc@gmail.com>,
	palmer <palmer@dabbelt.com>, andrew <andrew@sifive.com>,
	"philipp.tomsich" <philipp.tomsich@vrull.eu>,
	"Jeff Law" <jeffreyalaw@gmail.com>,
	"Christoph Müllner" <christoph.muellner@vrull.eu>,
	"cooper.joshua" <cooper.joshua@linux.alibaba.com>,
	jinma <jinma@linux.alibaba.com>,
	"Cooper Qu" <cooper.qu@linux.alibaba.com>
Subject: Re: [PATCH v4] RISC-V: Adds the prefix "th." for the instructions of XTheadVector.
Date: Tue, 9 Jan 2024 07:04:15 +0800	[thread overview]
Message-ID: <C7271006FABE792A+2024010907041473977146@rivai.ai> (raw)
In-Reply-To: <20240103060837.1684-1-cooper.joshua@linux.alibaba.com>

[-- Attachment #1: Type: text/plain, Size: 5164 bytes --]

This patch looks ok from myside.



juzhe.zhong@rivai.ai
 
From: Jun Sha (Joshua)
Date: 2024-01-03 14:08
To: gcc-patches
CC: jim.wilson.gcc; palmer; andrew; philipp.tomsich; jeffreyalaw; christoph.muellner; juzhe.zhong; Jun Sha (Joshua); Jin Ma; Xianmiao Qu
Subject: [PATCH v4] RISC-V: Adds the prefix "th." for the instructions of XTheadVector.
This patch adds th. prefix to all XTheadVector instructions by
implementing new assembly output functions. We only check the
prefix is 'v', so that no extra attribute is needed.
 
gcc/ChangeLog:
 
* config/riscv/riscv-protos.h (riscv_asm_output_opcode):
New function to add assembler insn code prefix/suffix.
(th_asm_output_opcode):
Thead function to add assembler insn code prefix/suffix.
* config/riscv/riscv.cc (riscv_asm_output_opcode): Likewise
* config/riscv/riscv.h (ASM_OUTPUT_OPCODE): Likewise.
* config/riscv/thead.cc (th_asm_output_opcode): Likewise
 
gcc/testsuite/ChangeLog:
 
* gcc.target/riscv/rvv/xtheadvector/prefix.c: New test.
 
Co-authored-by: Jin Ma <jinma@linux.alibaba.com>
Co-authored-by: Xianmiao Qu <cooper.qu@linux.alibaba.com>
Co-authored-by: Christoph Müllner <christoph.muellner@vrull.eu>
---
gcc/config/riscv/riscv-protos.h                     |  2 ++
gcc/config/riscv/riscv.cc                           | 11 +++++++++++
gcc/config/riscv/riscv.h                            |  4 ++++
gcc/config/riscv/thead.cc                           | 13 +++++++++++++
.../gcc.target/riscv/rvv/xtheadvector/prefix.c      | 12 ++++++++++++
5 files changed, 42 insertions(+)
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/prefix.c
 
diff --git a/gcc/config/riscv/riscv-protos.h b/gcc/config/riscv/riscv-protos.h
index 31049ef7523..71724dabdb5 100644
--- a/gcc/config/riscv/riscv-protos.h
+++ b/gcc/config/riscv/riscv-protos.h
@@ -102,6 +102,7 @@ struct riscv_address_info {
};
/* Routines implemented in riscv.cc.  */
+extern const char *riscv_asm_output_opcode (FILE *asm_out_file, const char *p);
extern enum riscv_symbol_type riscv_classify_symbolic_expression (rtx);
extern bool riscv_symbolic_constant_p (rtx, enum riscv_symbol_type *);
extern int riscv_float_const_rtx_index_for_fli (rtx);
@@ -717,6 +718,7 @@ extern void th_mempair_prepare_save_restore_operands (rtx[4], bool,
      int, HOST_WIDE_INT,
      int, HOST_WIDE_INT);
extern void th_mempair_save_restore_regs (rtx[4], bool, machine_mode);
+extern const char *th_asm_output_opcode (FILE *asm_out_file, const char *p);
#ifdef RTX_CODE
extern const char*
th_mempair_output_move (rtx[4], bool, machine_mode, RTX_CODE);
diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc
index 0d1cbc5cb5f..51878797287 100644
--- a/gcc/config/riscv/riscv.cc
+++ b/gcc/config/riscv/riscv.cc
@@ -5636,6 +5636,17 @@ riscv_get_v_regno_alignment (machine_mode mode)
   return lmul;
}
+/* Define ASM_OUTPUT_OPCODE to do anything special before
+   emitting an opcode.  */
+const char *
+riscv_asm_output_opcode (FILE *asm_out_file, const char *p)
+{
+  if (TARGET_XTHEADVECTOR)
+    return th_asm_output_opcode (asm_out_file, p);
+
+  return p;
+}
+
/* Implement TARGET_PRINT_OPERAND.  The RISCV-specific operand codes are:
    'h' Print the high-part relocation associated with OP, after stripping
diff --git a/gcc/config/riscv/riscv.h b/gcc/config/riscv/riscv.h
index 6df9ec73c5e..c33361a254d 100644
--- a/gcc/config/riscv/riscv.h
+++ b/gcc/config/riscv/riscv.h
@@ -826,6 +826,10 @@ extern enum riscv_cc get_riscv_cc (const rtx use);
       asm_fprintf ((FILE), "%U%s", (NAME)); \
   } while (0)
+#undef ASM_OUTPUT_OPCODE
+#define ASM_OUTPUT_OPCODE(STREAM, PTR) \
+  (PTR) = riscv_asm_output_opcode(STREAM, PTR)
+
#define JUMP_TABLES_IN_TEXT_SECTION 0
#define CASE_VECTOR_MODE SImode
#define CASE_VECTOR_PC_RELATIVE (riscv_cmodel != CM_MEDLOW)
diff --git a/gcc/config/riscv/thead.cc b/gcc/config/riscv/thead.cc
index 20353995931..dc3aed3904d 100644
--- a/gcc/config/riscv/thead.cc
+++ b/gcc/config/riscv/thead.cc
@@ -883,6 +883,19 @@ th_output_move (rtx dest, rtx src)
   return NULL;
}
+/* Define ASM_OUTPUT_OPCODE to do anything special before
+   emitting an opcode.  */
+const char *
+th_asm_output_opcode (FILE *asm_out_file, const char *p)
+{
+  /* We need to add th. prefix to all the xtheadvector
+     instructions here.*/
+  if (current_output_insn != NULL && p[0] == 'v')
+    fputs ("th.", asm_out_file);
+
+  return p;
+}
+
/* Implement TARGET_PRINT_OPERAND_ADDRESS for XTheadMemIdx.  */
bool
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/prefix.c b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/prefix.c
new file mode 100644
index 00000000000..eee727ef6b4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/prefix.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv32gc_xtheadvector -mabi=ilp32 -O0" } */
+
+#include "riscv_vector.h"
+
+vint32m1_t
+prefix (vint32m1_t vx, vint32m1_t vy, size_t vl)
+{
+  return __riscv_vadd_vv_i32m1 (vx, vy, vl);
+}
+
+/* { dg-final { scan-assembler {\mth\.v\M} } } */
-- 
2.17.1
 
 

  reply	other threads:[~2024-01-08 23:04 UTC|newest]

Thread overview: 130+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-29  4:03 [PATCH v4] RISC-V: Support XTheadVector extension Jun Sha (Joshua)
2023-12-29  4:05 ` [PATCH v4] RISC-V: Refactor riscv-vector-builtins-bases.cc Jun Sha (Joshua)
2023-12-29  4:06 ` [PATCH v4] RISC-V: Change csr_operand into Jun Sha (Joshua)
2023-12-29  4:10   ` [PATCH v4] RISC-V: Change csr_operand into vector_length_operand for vsetvl patterns Jun Sha (Joshua)
2024-01-02  1:35     ` juzhe.zhong
2024-01-02 19:50       ` Christoph Müllner
2024-01-02  1:35   ` [PATCH v4] RISC-V: Change csr_operand into juzhe.zhong
2023-12-29  4:13 ` [PATCH v4] RISC-V: Introduce XTheadVector as a subset of V1.0.0 Jun Sha (Joshua)
2024-01-04  9:28   ` Jun Sha (Joshua)
2023-12-29  4:19 ` [PATCH v4] RISC-V: Adds the prefix "th." for the instructions of XTheadVector Jun Sha (Joshua)
2023-12-31 17:43   ` Jeff Law
2024-01-01 22:57     ` 钟居哲
2024-01-03  2:54       ` Andrew Pinski
2024-01-03  3:06         ` juzhe.zhong
2024-01-03  3:19           ` Andrew Pinski
2024-01-03  3:25             ` juzhe.zhong
2024-01-03  3:32               ` Andrew Pinski
2024-01-03  3:32               ` Kito Cheng
2024-01-04  9:15       ` Re:Re: " joshua
2024-01-04  9:18         ` juzhe.zhong
2024-01-04 10:04           ` Christoph Müllner
2024-01-08  2:11           ` Re:Re: " joshua
2024-01-08  3:06             ` Kito Cheng
2024-01-08  3:17               ` Re:Re: " joshua
2024-01-08  3:40                 ` Kito Cheng
2024-01-10  3:01                   ` Re:Re: " joshua
2024-01-03  6:08   ` Jun Sha (Joshua)
2024-01-08 23:04     ` 钟居哲 [this message]
2024-01-09 17:49       ` Jeff Law
2024-01-09 22:35         ` 钟居哲
2023-12-29  4:21 ` [PATCH v4] RISC-V: Handle differences between XTheadvector and Vector Jun Sha (Joshua)
2024-01-02  2:00   ` juzhe.zhong
2024-01-02  3:03     ` Re:[PATCH " joshua
2024-01-02  3:10       ` juzhe.zhong
2024-01-02  3:40         ` Re:Re:[PATCH " joshua
2024-01-02  3:41           ` Re:[PATCH " juzhe.zhong
2024-01-02  9:48     ` joshua
2024-01-02  9:52       ` juzhe.zhong
2024-01-02 12:39   ` [PATCH " Jun Sha (Joshua)
2024-01-03  3:11     ` Kito Cheng
2024-01-03  6:15     ` Jun Sha (Joshua)
2024-01-04  2:29       ` Jun Sha (Joshua)
2024-01-09  3:18         ` [PATCH v5] " Jun Sha (Joshua)
2024-01-09 22:33           ` 钟居哲
2024-01-10  2:22           ` Jun Sha (Joshua)
2024-01-10  2:34             ` juzhe.zhong
2024-01-10  2:57               ` Re:[PATCH " joshua
2024-01-10  3:02                 ` juzhe.zhong
2024-01-10  6:54                 ` juzhe.zhong
2024-01-10  7:01                 ` juzhe.zhong
2024-01-10  7:16                   ` Re:Re:[PATCH " joshua
2024-01-10  7:17                     ` Re:[PATCH " juzhe.zhong
2024-01-10  7:26                       ` 回复:Re:[PATCH " joshua
2024-01-10  7:31                         ` 回复:[PATCH " juzhe.zhong
2024-01-10  7:28                       ` Re:Re:[PATCH " joshua
2024-01-11 11:03             ` [PATCH " Jun Sha (Joshua)
2024-01-08 23:08       ` [PATCH v4] " 钟居哲
2024-01-09  2:12         ` Re:[PATCH " joshua
2024-01-09  3:23         ` joshua
2023-12-29  4:21 ` [PATCH v4 6/6] RISC-V: Add support for xtheadvector-specific intrinsics Jun Sha (Joshua)
2024-01-04  2:34   ` [PATCH v4] " Jun Sha (Joshua)
2024-01-10  9:27     ` [PATCH v5] " Jun Sha (Joshua)
2024-01-10  9:35       ` juzhe.zhong
2024-01-10  9:55         ` Re:[PATCH " joshua
2024-01-10 10:03           ` juzhe.zhong
2024-01-10 10:57             ` Re:Re:[PATCH " joshua
2024-01-10  9:31     ` [PATCH " Jun Sha (Joshua)
2024-01-11  8:46       ` Jun Sha (Joshua)
2024-01-11  9:07         ` juzhe.zhong
2024-01-11  9:11           ` Re:[PATCH " joshua
2024-01-11  9:14             ` joshua
2024-01-11  9:17               ` juzhe.zhong
2024-01-11  9:21                 ` Re:Re:[PATCH " joshua
2024-01-11  9:24                   ` Re:[PATCH " juzhe.zhong
2024-01-11  9:29                     ` Re:Re:[PATCH " joshua
2024-01-11  9:32                       ` Re:[PATCH " juzhe.zhong
2024-01-11  9:38                         ` Re:Re:[PATCH " joshua
2024-01-11 12:05                         ` joshua
2024-01-11 12:13                           ` Re:[PATCH " juzhe.zhong
2024-01-11 12:18                             ` Re:Re:[PATCH " joshua
2024-01-11 12:28                               ` Re:[PATCH " juzhe.zhong
2024-01-11 12:31                                 ` Re:Re:[PATCH " joshua
2024-01-11 12:33                                   ` Re:[PATCH " juzhe.zhong
2024-01-11 12:36                                     ` Re:Re:[PATCH " joshua
2024-01-11  9:26                 ` joshua
2024-01-11  9:28                   ` Re:[PATCH " juzhe.zhong
2024-01-11  9:35                     ` Re:Re:[PATCH " joshua
2024-01-11  9:54           ` Re:[PATCH " joshua
2024-01-11  9:52       ` [PATCH " Jun Sha (Joshua)
2024-01-11  9:57         ` juzhe.zhong
2024-01-11 10:54           ` Re:[PATCH " joshua
2024-01-11 10:55             ` juzhe.zhong
2024-01-11 14:11               ` Re:Re:[PATCH " joshua
2024-01-11 22:59                 ` Re:[PATCH " 钟居哲
2024-01-11 23:22                 ` 钟居哲
2024-01-12  0:49                   ` 回复:Re:[PATCH " joshua
2024-01-12  1:08                     ` 回复:[PATCH " juzhe.zhong
2024-01-12  1:14                     ` juzhe.zhong
2024-01-12  3:26                       ` Re:Re:[PATCH " joshua
2024-01-03  2:37 ` [PATCH v4] RISC-V: Fix register overlap issue for some xtheadvector instructions Jun Sha (Joshua)
2024-01-03  7:54   ` Jun Sha (Joshua)
2024-01-10  6:02     ` [PATCH v5] " Jun Sha (Joshua)
2024-01-10  6:37       ` juzhe.zhong
2024-01-10  6:51     ` Jun Sha (Joshua)
2024-01-10  6:53       ` juzhe.zhong
2024-01-10 13:36       ` Robin Dapp
2024-01-10 13:43         ` 钟居哲
2024-01-11  2:40           ` Re:Re: " joshua
2024-01-11  2:39       ` Jun Sha (Joshua)
2024-01-11  2:46         ` juzhe.zhong
2024-01-11  8:12           ` Robin Dapp
2024-01-03  2:39 ` [PATCH v4] RISC-V: Rewrite some instructions using ASM targethook Jun Sha (Joshua)
2024-01-03  3:05   ` Kito Cheng
2024-01-03  7:55   ` Jun Sha (Joshua)
2024-01-12  3:18 ` [PATCH v5] RISC-V: Support XTheadVector extension Jun Sha (Joshua)
2024-01-12  3:20   ` [PATCH v4] RISC-V: Introduce XTheadVector as a subset of V1.0.0 Jun Sha (Joshua)
2024-01-12  7:31     ` juzhe.zhong
2024-01-18  9:50       ` Kito Cheng
2024-01-12  3:21   ` [PATCH v5] RISC-V: Adds the prefix "th." for the instructions of XTheadVector Jun Sha (Joshua)
2024-01-12  7:31     ` juzhe.zhong
2024-01-12  3:22   ` [PATCH v6] RISC-V: Handle differences between XTheadvector and Vector Jun Sha (Joshua)
2024-01-12  7:31     ` juzhe.zhong
2024-01-12  3:22   ` [PATCH v6] RISC-V: Add support for xtheadvector-specific intrinsics Jun Sha (Joshua)
2024-01-12  7:32     ` juzhe.zhong
2024-01-12  3:23   ` [PATCH v6] RISC-V: Fix register overlap issue for some xtheadvector instructions Jun Sha (Joshua)
2024-01-12  7:32     ` juzhe.zhong
2024-01-12  3:24   ` [PATCH v5] RISC-V: Rewrite some instructions using ASM targethook Jun Sha (Joshua)
2024-01-12  7:32     ` juzhe.zhong
2024-01-18 14:43   ` [PATCH v5] RISC-V: Support XTheadVector extension Christoph Müllner
2024-01-19 20:03     ` Jeff Law

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=C7271006FABE792A+2024010907041473977146@rivai.ai \
    --to=juzhe.zhong@rivai.ai \
    --cc=andrew@sifive.com \
    --cc=christoph.muellner@vrull.eu \
    --cc=cooper.joshua@linux.alibaba.com \
    --cc=cooper.qu@linux.alibaba.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jeffreyalaw@gmail.com \
    --cc=jim.wilson.gcc@gmail.com \
    --cc=jinma@linux.alibaba.com \
    --cc=palmer@dabbelt.com \
    --cc=philipp.tomsich@vrull.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).