1176 // Build mapping from ideal names to ideal indices
1177 fprintf(fp_cpp, "\n");
1178 fprintf(fp_cpp, "// Mapping from machine-independent opcode to boolean\n");
1179 fprintf(fp_cpp, "const char must_clone[] = {\n");
1180 for (int idealIndex = 0; idealIndex < _last_opcode; ++idealIndex) {
1181 int must_clone = 0;
1182 const char *idealName = NodeClassNames[idealIndex];
1183 // Previously selected constants for cloning
1184 // !!!!!
1185 // These are the current machine-dependent clones
1186 if ( strcmp(idealName,"CmpI") == 0
1187 || strcmp(idealName,"CmpU") == 0
1188 || strcmp(idealName,"CmpP") == 0
1189 || strcmp(idealName,"CmpN") == 0
1190 || strcmp(idealName,"CmpL") == 0
1191 || strcmp(idealName,"CmpD") == 0
1192 || strcmp(idealName,"CmpF") == 0
1193 || strcmp(idealName,"FastLock") == 0
1194 || strcmp(idealName,"FastUnlock") == 0
1195 || strcmp(idealName,"AddExactI") == 0
1196 || strcmp(idealName,"FlagsProj") == 0
1197 || strcmp(idealName,"Bool") == 0
1198 || strcmp(idealName,"Binary") == 0 ) {
1199 // Removed ConI from the must_clone list. CPUs that cannot use
1200 // large constants as immediates manifest the constant as an
1201 // instruction. The must_clone flag prevents the constant from
1202 // floating up out of loops.
1203 must_clone = 1;
1204 }
1205 fprintf(fp_cpp, " %d%s // %s: %d\n", must_clone,
1206 (idealIndex != (_last_opcode - 1)) ? "," : " // no trailing comma",
1207 idealName, idealIndex);
1208 }
1209 // Finish defining table
1210 fprintf(fp_cpp, "};\n");
1211 }
|
1176 // Build mapping from ideal names to ideal indices
1177 fprintf(fp_cpp, "\n");
1178 fprintf(fp_cpp, "// Mapping from machine-independent opcode to boolean\n");
1179 fprintf(fp_cpp, "const char must_clone[] = {\n");
1180 for (int idealIndex = 0; idealIndex < _last_opcode; ++idealIndex) {
1181 int must_clone = 0;
1182 const char *idealName = NodeClassNames[idealIndex];
1183 // Previously selected constants for cloning
1184 // !!!!!
1185 // These are the current machine-dependent clones
1186 if ( strcmp(idealName,"CmpI") == 0
1187 || strcmp(idealName,"CmpU") == 0
1188 || strcmp(idealName,"CmpP") == 0
1189 || strcmp(idealName,"CmpN") == 0
1190 || strcmp(idealName,"CmpL") == 0
1191 || strcmp(idealName,"CmpD") == 0
1192 || strcmp(idealName,"CmpF") == 0
1193 || strcmp(idealName,"FastLock") == 0
1194 || strcmp(idealName,"FastUnlock") == 0
1195 || strcmp(idealName,"AddExactI") == 0
1196 || strcmp(idealName,"AddExactL") == 0
1197 || strcmp(idealName,"SubExactI") == 0
1198 || strcmp(idealName,"SubExactL") == 0
1199 || strcmp(idealName,"MulExactI") == 0
1200 || strcmp(idealName,"MulExactL") == 0
1201 || strcmp(idealName,"NegExactI") == 0
1202 || strcmp(idealName,"NegExactL") == 0
1203 || strcmp(idealName,"FlagsProj") == 0
1204 || strcmp(idealName,"Bool") == 0
1205 || strcmp(idealName,"Binary") == 0 ) {
1206 // Removed ConI from the must_clone list. CPUs that cannot use
1207 // large constants as immediates manifest the constant as an
1208 // instruction. The must_clone flag prevents the constant from
1209 // floating up out of loops.
1210 must_clone = 1;
1211 }
1212 fprintf(fp_cpp, " %d%s // %s: %d\n", must_clone,
1213 (idealIndex != (_last_opcode - 1)) ? "," : " // no trailing comma",
1214 idealName, idealIndex);
1215 }
1216 // Finish defining table
1217 fprintf(fp_cpp, "};\n");
1218 }
|