From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x534.google.com (mail-pg1-x534.google.com [IPv6:2607:f8b0:4864:20::534]) by sourceware.org (Postfix) with ESMTPS id CC4493858C60 for ; Sat, 13 May 2023 08:44:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CC4493858C60 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=sifive.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=sifive.com Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-51452556acdso7315413a12.2 for ; Sat, 13 May 2023 01:44:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1683967493; x=1686559493; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=e80EDP8bVCf1ddx8flNrwou7G22iMEpDKgPsWurEgtA=; b=LR+7cXUVP3BXZmGQkORAVjnUouNGAQkmmnoqRdPBv540B8ICom4wh6i9gpbzq9Jf6r ZDv+pnqMhwB8gkPRR9Oo6k/DFHSRj46w2wZlAte2b2jYGrpLeGEYl9oa2y1IoMx4JSyC oFtOQtB35U4q/f4eDY5wJ9J0BSJq2J4fw8DNvPNcPS3GyP3idyHZx6c/cTOLLQbmya6d +fNLvN24HHxkcwg2gVhe7LPRWtlJOcbchqJ2f/2D8gccQfE0DcdYWVe2TOjKV8Ns4oAy KrdQmZmqOeQ+XUQASdL+2Wg54ZbgIb0gavmp0fuUA+RFdBzeANNnoAmckPArlnDRWyWB ZPlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683967493; x=1686559493; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=e80EDP8bVCf1ddx8flNrwou7G22iMEpDKgPsWurEgtA=; b=GWlvrRkmnOaRWAK+yP0PGNrChEhc03rv0ttNRPGK+u5BeqexjNFkY4j15U+M3655JC CBCo96bTYrJOCyvP7ra6IkHGrngbBAGRs5FEGVx7zbOL6dPT55M4Dbp3eIT66v4oL1Qy P0AZBDKxUHj/DfPIftp3oYhAaF8jNr/EzHFtKZsGKIwTNQVwyXEeJ5Xa6r+jiZHTh78S k0p7OMmcUogWpBu/uuABGXlyOAqp3RWdXg1dZpuGxGQNx+mkfYYDOick5mByqnrk4Q/w WnozJiTTlAzrdTa44XlKtR+Ku0sDKfcQaw0J2453lbCcwLVloe9YWTNcu8Dnu5U/Udu7 6r3g== X-Gm-Message-State: AC+VfDyqfN3uXJdpZoygEZMv1MLfZL/UQNHSREKGy8X8L1BPxo044iZS NZun/IJaKA4FJZXwVYVU8ax5H0hcQ7m2K4CQhD6ntQ== X-Google-Smtp-Source: ACHHUZ6fszYZDNvW0Ue1Y5tg/vJt1IMlEBsyqmo68f5kCmgxBbQ/DdL+/GIBjRAMDgvsiD4PWqK8HMgXBu233Ugek00= X-Received: by 2002:a17:90a:ea90:b0:24d:ee3f:b682 with SMTP id h16-20020a17090aea9000b0024dee3fb682mr26553131pjz.35.1683967492779; Sat, 13 May 2023 01:44:52 -0700 (PDT) MIME-Version: 1.0 References: <20230512050016.476110-1-pan2.li@intel.com> <2CEAD79B-D664-41B4-A337-5E77ECFB2F9D@gmail.com> In-Reply-To: <2CEAD79B-D664-41B4-A337-5E77ECFB2F9D@gmail.com> From: Kito Cheng Date: Sat, 13 May 2023 16:44:41 +0800 Message-ID: Subject: Re: [PATCH] Machine_Mode: Extend machine_mode from 8 to 16 bits To: Bernhard Reutner-Fischer Cc: Richard Biener , Richard Biener via Gcc-patches , pan2.li@intel.com, juzhe.zhong@rivai.ai, yanzhang.wang@intel.com, jeffreyalaw@gmail.com, richard.sandiford@arm.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Hi Pan: Tried this patch and I ran into some issues, some variables are using unsigned char to hold machine mode and will have problems when the number of modes is larger than 255... And here is the fix: diff --git a/gcc/genmodes.cc b/gcc/genmodes.cc index 715787b8f483..55ac2adb5596 100644 --- a/gcc/genmodes.cc +++ b/gcc/genmodes.cc @@ -1141,10 +1141,10 @@ inline __attribute__((__always_inline__))\n\ #else\n\ extern __inline__ __attribute__((__always_inline__, __gnu_inline__))\n\ #endif\n\ -unsigned char\n\ +unsigned short\n\ mode_inner_inline (machine_mode mode)\n\ {\n\ - extern const unsigned char mode_inner[NUM_MACHINE_MODES];\n\ + extern const unsigned short mode_inner[NUM_MACHINE_MODES];\n\ gcc_assert (mode >= 0 && mode < NUM_MACHINE_MODES);\n\ switch (mode)\n\ {"); @@ -1529,7 +1529,7 @@ emit_mode_wider (void) int c; struct mode_data *m; - print_decl ("unsigned char", "mode_next", "NUM_MACHINE_MODES"); + print_decl ("unsigned short", "mode_next", "NUM_MACHINE_MODES"); for_all_modes (c, m) tagged_printf ("E_%smode", @@ -1537,7 +1537,7 @@ emit_mode_wider (void) m->name); print_closer (); - print_decl ("unsigned char", "mode_wider", "NUM_MACHINE_MODES"); + print_decl ("unsigned short", "mode_wider", "NUM_MACHINE_MODES"); for_all_modes (c, m) { @@ -1568,7 +1568,7 @@ emit_mode_wider (void) } print_closer (); - print_decl ("unsigned char", "mode_2xwider", "NUM_MACHINE_MODES"); + print_decl ("unsigned short", "mode_2xwider", "NUM_MACHINE_MODES"); for_all_modes (c, m) { @@ -1625,7 +1625,7 @@ emit_mode_complex (void) int c; struct mode_data *m; - print_decl ("unsigned char", "mode_complex", "NUM_MACHINE_MODES"); + print_decl ("unsigned short", "mode_complex", "NUM_MACHINE_MODES"); for_all_modes (c, m) tagged_printf ("E_%smode", @@ -1665,7 +1665,7 @@ emit_mode_inner (void) int c; struct mode_data *m; - print_decl ("unsigned char", "mode_inner", "NUM_MACHINE_MODES"); + print_decl ("unsigned short", "mode_inner", "NUM_MACHINE_MODES"); for_all_modes (c, m) tagged_printf ("E_%smode", @@ -1738,7 +1738,7 @@ emit_class_narrowest_mode (void) { int c; - print_decl ("unsigned char", "class_narrowest_mode", "MAX_MODE_CLASS"); + print_decl ("unsigned short", "class_narrowest_mode", "MAX_MODE_CLASS"); for (c = 0; c < MAX_MODE_CLASS; c++) { diff --git a/gcc/machmode.h b/gcc/machmode.h index f1865c1ef425..a168d6f0da2e 100644 --- a/gcc/machmode.h +++ b/gcc/machmode.h @@ -24,13 +24,13 @@ typedef opt_mode opt_machine_mode; extern CONST_MODE_SIZE poly_uint16_pod mode_size[NUM_MACHINE_MODES]; extern CONST_MODE_PRECISION poly_uint16_pod mode_precision[NUM_MACHINE_MODES]; -extern const unsigned char mode_inner[NUM_MACHINE_MODES]; +extern const unsigned short mode_inner[NUM_MACHINE_MODES]; extern CONST_MODE_NUNITS poly_uint16_pod mode_nunits[NUM_MACHINE_MODES]; extern CONST_MODE_UNIT_SIZE unsigned char mode_unit_size[NUM_MACHINE_MODES]; extern const unsigned short mode_unit_precision[NUM_MACHINE_MODES]; -extern const unsigned char mode_next[NUM_MACHINE_MODES]; -extern const unsigned char mode_wider[NUM_MACHINE_MODES]; -extern const unsigned char mode_2xwider[NUM_MACHINE_MODES]; +extern const unsigned short mode_next[NUM_MACHINE_MODES]; +extern const unsigned short mode_wider[NUM_MACHINE_MODES]; +extern const unsigned short mode_2xwider[NUM_MACHINE_MODES]; template struct mode_traits @@ -797,7 +797,7 @@ GET_MODE_2XWIDER_MODE (const T &m) } /* Get the complex mode from the component mode. */ -extern const unsigned char mode_complex[NUM_MACHINE_MODES]; +extern const unsigned short mode_complex[NUM_MACHINE_MODES]; #define GET_MODE_COMPLEX_MODE(MODE) ((machine_mode) mode_complex[MODE]) /* Represents a machine mode that must have a fixed size. The main @@ -946,7 +946,7 @@ extern unsigned get_mode_alignment (machine_mode); /* For each class, get the narrowest mode in that class. */ -extern const unsigned char class_narrowest_mode[MAX_MODE_CLASS]; +extern const unsigned short class_narrowest_mode[MAX_MODE_CLASS]; #define GET_CLASS_NARROWEST_MODE(CLASS) \ ((machine_mode) class_narrowest_mode[CLASS]) -- 2.39.2