00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00039
00040
00041
00042 #include <stddef.h>
00043 #include "abi_properties_gen.h"
00044 #include "targ_isa_registers.h"
00045
00046 static ABI_PROPERTY
00047 allocatable,
00048 callee,
00049 caller,
00050 func_arg,
00051 func_val,
00052 frame_ptr,
00053 global_ptr,
00054 stack_ptr,
00055 entry_ptr,
00056 static_link,
00057 zero,
00058 ret_addr,
00059 prev_funcstate,
00060 loop_count,
00061 epilog_count,
00062 true_predicate,
00063 stacked,
00064 fzero,
00065 fone;
00066
00067 static void ia64_abi(void)
00068 {
00069 static const char *integer_names[128] = {
00070 NULL, "gp", NULL, NULL, NULL, NULL, NULL, NULL,
00071 NULL, NULL, NULL, NULL, "sp", NULL, NULL, NULL,
00072 };
00073
00074 static const char *branch_names[8] = {
00075 "rp", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
00076 };
00077
00078 Reg_Names(ISA_REGISTER_CLASS_integer, 0, 127, integer_names);
00079
00080 Reg_Property(allocatable, ISA_REGISTER_CLASS_integer,
00081 2, 3, 4, 5, 6, 7,
00082 8, 9, 10, 11, 14, 15,
00083 16, 17, 18, 19, 20, 21, 22, 23,
00084 24, 25, 26, 27, 28, 29, 30, 31,
00085 32, 33, 34, 35, 36, 37, 38, 39,
00086 40, 41, 42, 43, 44, 45, 46, 47,
00087 48, 49, 50, 51, 52, 53, 54, 55,
00088 56, 57, 58, 59, 60, 61, 62, 63,
00089 64, 65, 66, 67, 68, 69, 70, 71,
00090 72, 73, 74, 75, 76, 77, 78, 79,
00091 80, 81, 82, 83, 84, 85, 86, 87,
00092 88, 89, 90, 91, 92, 93, 94, 95,
00093 96, 97, 98, 99, 100, 101, 102, 103,
00094 104, 105, 106, 107, 108, 109, 110, 111,
00095 112, 113, 114, 115, 116, 117, 118, 119,
00096 120, 121, 122, 123, 124, 125, 126, 127,
00097 -1);
00098 Reg_Property(callee, ISA_REGISTER_CLASS_integer,
00099 4, 5, 6, 7,
00100 -1);
00101 Reg_Property(caller, ISA_REGISTER_CLASS_integer,
00102 2, 3, 8, 9, 10, 11, 14, 15,
00103 16, 17, 18, 19, 20, 21, 22, 23,
00104 24, 25, 26, 27, 28, 29, 30, 31,
00105 -1);
00106 Reg_Property(stacked, ISA_REGISTER_CLASS_integer,
00107 32, 33, 34, 35, 36, 37, 38, 39,
00108 40, 41, 42, 43, 44, 45, 46, 47,
00109 48, 49, 50, 51, 52, 53, 54, 55,
00110 56, 57, 58, 59, 60, 61, 62, 63,
00111 64, 65, 66, 67, 68, 69, 70, 71,
00112 72, 73, 74, 75, 76, 77, 78, 79,
00113 80, 81, 82, 83, 84, 85, 86, 87,
00114 88, 89, 90, 91, 92, 93, 94, 95,
00115 96, 97, 98, 99, 100, 101, 102, 103,
00116 104, 105, 106, 107, 108, 109, 110, 111,
00117 112, 113, 114, 115, 116, 117, 118, 119,
00118 120, 121, 122, 123, 124, 125, 126, 127,
00119 -1);
00120 Reg_Property(func_arg, ISA_REGISTER_CLASS_integer,
00121 32, 33, 34, 35, 36, 37, 38, 39,
00122 -1);
00123 Reg_Property(func_val, ISA_REGISTER_CLASS_integer,
00124 8, 9, 10, 11,
00125 -1);
00126 Reg_Property(static_link, ISA_REGISTER_CLASS_integer,
00127 14,
00128 -1);
00129 Reg_Property(global_ptr, ISA_REGISTER_CLASS_integer,
00130 1,
00131 -1);
00132 Reg_Property(frame_ptr, ISA_REGISTER_CLASS_integer,
00133 7,
00134 -1);
00135 Reg_Property(stack_ptr, ISA_REGISTER_CLASS_integer,
00136 12,
00137 -1);
00138 Reg_Property(zero, ISA_REGISTER_CLASS_integer,
00139 0,
00140 -1);
00141
00142
00143
00144 Reg_Property(allocatable, ISA_REGISTER_CLASS_float,
00145 2, 3, 4, 5, 6, 7,
00146 8, 9, 10, 11, 12, 13, 14, 15,
00147 16, 17, 18, 19, 20, 21, 22, 23,
00148 24, 25, 26, 27, 28, 29, 30, 31,
00149 32, 33, 34, 35, 36, 37, 38, 39,
00150 40, 41, 42, 43, 44, 45, 46, 47,
00151 48, 49, 50, 51, 52, 53, 54, 55,
00152 56, 57, 58, 59, 60, 61, 62, 63,
00153 64, 65, 66, 67, 68, 69, 70, 71,
00154 72, 73, 74, 75, 76, 77, 78, 79,
00155 80, 81, 82, 83, 84, 85, 86, 87,
00156 88, 89, 90, 91, 92, 93, 94, 95,
00157 96, 97, 98, 99, 100, 101, 102, 103,
00158 104, 105, 106, 107, 108, 109, 110, 111,
00159 112, 113, 114, 115, 116, 117, 118, 119,
00160 120, 121, 122, 123, 124, 125, 126, 127,
00161 -1);
00162 Reg_Property(callee, ISA_REGISTER_CLASS_float,
00163 2, 3, 4, 5, 16, 17, 18, 19,
00164 20, 21, 22, 23, 24, 25, 26, 27,
00165 28, 29, 30, 31,
00166 -1);
00167 Reg_Property(caller, ISA_REGISTER_CLASS_float,
00168 6, 7,
00169 8, 9, 10, 11, 12, 13, 14, 15,
00170 32, 33, 34, 35, 36, 37, 38, 39,
00171 40, 41, 42, 43, 44, 45, 46, 47,
00172 48, 49, 50, 51, 52, 53, 54, 55,
00173 56, 57, 58, 59, 60, 61, 62, 63,
00174 64, 65, 66, 67, 68, 69, 70, 71,
00175 72, 73, 74, 75, 76, 77, 78, 79,
00176 80, 81, 82, 83, 84, 85, 86, 87,
00177 88, 89, 90, 91, 92, 93, 94, 95,
00178 96, 97, 98, 99, 100, 101, 102, 103,
00179 104, 105, 106, 107, 108, 109, 110, 111,
00180 112, 113, 114, 115, 116, 117, 118, 119,
00181 120, 121, 122, 123, 124, 125, 126, 127,
00182 -1);
00183 Reg_Property(func_arg, ISA_REGISTER_CLASS_float,
00184 8, 9, 10, 11, 12, 13, 14, 15,
00185 -1);
00186 Reg_Property(func_val, ISA_REGISTER_CLASS_float,
00187 8, 9, 10, 11, 12, 13, 14, 15,
00188 -1);
00189 Reg_Property(fzero, ISA_REGISTER_CLASS_float,
00190 0,
00191 -1);
00192 Reg_Property(fone, ISA_REGISTER_CLASS_float,
00193 1,
00194 -1);
00195
00196
00197
00198 Reg_Property(allocatable, ISA_REGISTER_CLASS_predicate,
00199 1, 2, 3, 4, 5, 6, 7,
00200 8, 9, 10, 11, 12, 13, 14, 15,
00201 16, 17, 18, 19, 20, 21, 22, 23,
00202 24, 25, 26, 27, 28, 29, 30, 31,
00203 32, 33, 34, 35, 36, 37, 38, 39,
00204 40, 41, 42, 43, 44, 45, 46, 47,
00205 48, 49, 50, 51, 52, 53, 54, 55,
00206 56, 57, 58, 59, 60, 61, 62, 63,
00207 -1);
00208 Reg_Property(callee, ISA_REGISTER_CLASS_predicate,
00209 1, 2, 3, 4, 5,
00210 16, 17, 18, 19, 20, 21, 22, 23,
00211 24, 25, 26, 27, 28, 29, 30, 31,
00212 32, 33, 34, 35, 36, 37, 38, 39,
00213 40, 41, 42, 43, 44, 45, 46, 47,
00214 48, 49, 50, 51, 52, 53, 54, 55,
00215 56, 57, 58, 59, 60, 61, 62, 63,
00216 -1);
00217 Reg_Property(caller, ISA_REGISTER_CLASS_predicate,
00218 6, 7,
00219 8, 9, 10, 11, 12, 13, 14, 15,
00220 -1);
00221 Reg_Property(true_predicate, ISA_REGISTER_CLASS_predicate,
00222 0,
00223 -1);
00224
00225
00226
00227 Reg_Names(ISA_REGISTER_CLASS_branch, 0, 7, branch_names);
00228
00229 Reg_Property(allocatable, ISA_REGISTER_CLASS_branch,
00230 0, 1, 2, 3, 4, 5, 6, 7,
00231 -1);
00232 Reg_Property(callee, ISA_REGISTER_CLASS_branch,
00233 1, 2, 3, 4, 5,
00234 -1);
00235 Reg_Property(caller, ISA_REGISTER_CLASS_branch,
00236 0, 6, 7,
00237 -1);
00238 Reg_Property(ret_addr, ISA_REGISTER_CLASS_branch,
00239 0,
00240 -1);
00241
00242
00243
00244 Reg_Property(prev_funcstate, ISA_REGISTER_CLASS_application,
00245 64,
00246 -1);
00247 Reg_Property(caller, ISA_REGISTER_CLASS_application,
00248 32, 64,
00249 -1);
00250 Reg_Property(callee, ISA_REGISTER_CLASS_application,
00251 36, 65, 66,
00252 -1);
00253 Reg_Property(loop_count, ISA_REGISTER_CLASS_application,
00254 65,
00255 -1);
00256 Reg_Property(epilog_count, ISA_REGISTER_CLASS_application,
00257 66,
00258 -1);
00259
00260
00261
00262
00263 }
00264
00265 main()
00266 {
00267 ABI_Properties_Begin("ia64");
00268
00269 allocatable = Create_Reg_Property("allocatable");
00270 callee = Create_Reg_Property("callee");
00271 caller = Create_Reg_Property("caller");
00272 stacked = Create_Reg_Property("stacked");
00273 func_arg = Create_Reg_Property("func_arg");
00274 func_val = Create_Reg_Property("func_val");
00275 frame_ptr = Create_Reg_Property("frame_ptr");
00276 global_ptr = Create_Reg_Property("global_ptr");
00277 stack_ptr = Create_Reg_Property("stack_ptr");
00278 entry_ptr = Create_Reg_Property("entry_ptr");
00279 static_link = Create_Reg_Property("static_link");
00280 zero = Create_Reg_Property("zero");
00281 ret_addr = Create_Reg_Property("ret_addr");
00282 prev_funcstate = Create_Reg_Property("prev_funcstate");
00283 loop_count = Create_Reg_Property("loop_count");
00284 epilog_count = Create_Reg_Property("epilog_count");
00285 true_predicate = Create_Reg_Property("true_predicate");
00286 fzero = Create_Reg_Property("fzero");
00287 fone = Create_Reg_Property("fone");
00288
00290 Begin_ABI("i32");
00291 ia64_abi();
00292
00294 Begin_ABI("i64");
00295 ia64_abi();
00296
00297 ABI_Properties_End();
00298 }