annotate gcc/brig/brigfrontend/brig-util.h @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* brig-util.h -- gccbrig utility functions
kono
parents:
diff changeset
2 Copyright (C) 2016-2017 Free Software Foundation, Inc.
kono
parents:
diff changeset
3 Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
kono
parents:
diff changeset
4 for General Processor Tech.
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 This file is part of GCC.
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 GCC is free software; you can redistribute it and/or modify it under
kono
parents:
diff changeset
9 the terms of the GNU General Public License as published by the Free
kono
parents:
diff changeset
10 Software Foundation; either version 3, or (at your option) any later
kono
parents:
diff changeset
11 version.
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
kono
parents:
diff changeset
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or
kono
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
kono
parents:
diff changeset
16 for more details.
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
kono
parents:
diff changeset
19 along with GCC; see the file COPYING3. If not see
kono
parents:
diff changeset
20 <http://www.gnu.org/licenses/>. */
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 #ifndef GCC_BRIG_UTIL_H
kono
parents:
diff changeset
23 #define GCC_BRIG_UTIL_H
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 #include <map>
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 #include "config.h"
kono
parents:
diff changeset
28 #include "system.h"
kono
parents:
diff changeset
29 #include "ansidecl.h"
kono
parents:
diff changeset
30 #include "coretypes.h"
kono
parents:
diff changeset
31 #include "opts.h"
kono
parents:
diff changeset
32 #include "tree.h"
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 /* Helper class for keeping book of group variable offsets. */
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 class group_variable_offset_index
kono
parents:
diff changeset
37 {
kono
parents:
diff changeset
38 public:
kono
parents:
diff changeset
39 group_variable_offset_index () : m_next_group_offset (0) {}
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 typedef std::map<std::string, size_t> varname_offset_table;
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43 bool has_variable (const std::string &name) const;
kono
parents:
diff changeset
44 void add (const std::string &name, size_t size, size_t alignment);
kono
parents:
diff changeset
45 size_t segment_offset (const std::string &name) const;
kono
parents:
diff changeset
46 size_t size () const { return m_next_group_offset; }
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 private:
kono
parents:
diff changeset
49 size_t m_next_group_offset;
kono
parents:
diff changeset
50 varname_offset_table m_group_offsets;
kono
parents:
diff changeset
51 };
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 bool gccbrig_hsa_opcode_op_output_p (BrigOpcode16_t opcode, int opnum);
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 unsigned gccbrig_hsa_type_bit_size (BrigType16_t t);
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 uint64_t gccbrig_to_uint64_t (const BrigUInt64 &brig_type);
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 int gccbrig_reg_size (const BrigOperandRegister *brig_reg);
kono
parents:
diff changeset
60
kono
parents:
diff changeset
61 std::string gccbrig_reg_name (const BrigOperandRegister *reg);
kono
parents:
diff changeset
62
kono
parents:
diff changeset
63 std::string gccbrig_type_name (BrigType16_t type);
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 std::string gccbrig_segment_name (BrigSegment8_t segment);
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 bool gccbrig_is_float_type (BrigType16_t type);
kono
parents:
diff changeset
68
kono
parents:
diff changeset
69 bool gccbrig_is_bit_operation (BrigOpcode16_t opcode);
kono
parents:
diff changeset
70
kono
parents:
diff changeset
71 BrigType16_t gccbrig_tree_type_to_hsa_type (tree tree_type);
kono
parents:
diff changeset
72 tree gccbrig_tree_type_for_hsa_type (BrigType16_t brig_type);
kono
parents:
diff changeset
73
kono
parents:
diff changeset
74 bool gccbrig_might_be_host_defined_var_p (const BrigDirectiveVariable *brigVar);
kono
parents:
diff changeset
75
kono
parents:
diff changeset
76 /* From hsa.h. */
kono
parents:
diff changeset
77 bool hsa_type_packed_p (BrigType16_t type);
kono
parents:
diff changeset
78
kono
parents:
diff changeset
79 #endif