--- trunk/src/cpus/generate_alpha_misc.c 2007/10/08 16:18:51 14 +++ trunk/src/cpus/generate_alpha_misc.c 2007/10/08 16:21:17 34 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005 Anders Gavare. All rights reserved. + * Copyright (C) 2005-2007 Anders Gavare. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -25,7 +25,7 @@ * SUCH DAMAGE. * * - * $Id: generate_alpha_misc.c,v 1.1 2005/08/29 14:36:41 debug Exp $ + * $Id: generate_alpha_misc.c,v 1.4 2006/12/30 13:30:55 debug Exp $ */ #include @@ -42,7 +42,7 @@ int main(int argc, char *argv[]) { - int load, size, zero, aligncheck, n, msk, llsc; + int load, size, zero, n, msk, llsc; int ra, rc, lo, scale, imm, not, op, quad; printf("\n/* AUTOMATICALLY GENERATED! Do not edit. */\n\n"); @@ -195,6 +195,21 @@ } printf("#undef ALU_CMOV\n"); + printf("#define ALU_CMPBGE\n"); + for (imm = 0; imm <= 1; imm ++) { + printf("#define ALU_N alpha_instr_cmpbge"); + if (imm) + printf("_imm"); + printf("\n"); + if (imm) + printf("#define ALU_IMM\n"); + printf("#include \"cpu_alpha_instr_alu.c\"\n"); + if (imm) + printf("#undef ALU_IMM\n"); + printf("#undef ALU_N\n"); + } + printf("#undef ALU_CMPBGE\n"); + for (imm = 0; imm <= 1; imm ++) for (lo = 0; lo <= 1; lo ++) for (msk = 0; msk <= 2; msk ++) @@ -252,14 +267,11 @@ * Normal load/store: */ for (llsc=0; llsc<=1; llsc++) - for (aligncheck=0; aligncheck<=1; aligncheck++) for (load=0; load<=1; load++) for (zero=0; zero<=1; zero++) for (size=0; size<4; size++) { if (llsc && size < 2) continue; - if (aligncheck) - printf("#define LS_ALIGN_CHECK\n"); if (zero) printf("#define LS_IGNORE_OFFSET\n"); if (load) @@ -289,8 +301,6 @@ printf("%s", sizechar[size]); if (zero) printf("_0"); - if (aligncheck) - printf("_aligncheck"); if (llsc) printf("_llsc"); printf("\n"); @@ -309,8 +319,6 @@ printf("#undef LS_LLSC\n"); if (zero) printf("#undef LS_IGNORE_OFFSET\n"); - if (aligncheck) - printf("#undef LS_ALIGN_CHECK\n"); } /* @@ -348,13 +356,12 @@ printf("#undef LS_UNALIGNED\n"); /* Lookup table for most normal loads/stores: */ - printf("\n\nvoid (*alpha_loadstore[64])(struct cpu *, struct " + printf("\n\nvoid (*alpha_loadstore[32])(struct cpu *, struct " "alpha_instr_call *) = {\n"); for (llsc = 0; llsc <= 1; llsc ++) - for (aligncheck=0; aligncheck<=1; aligncheck++) - for (load=0; load<=1; load++) - for (zero=0; zero<=1; zero++) + for (load=0; load<=1; load++) + for (zero=0; zero<=1; zero++) for (size=0; size<4; size++) { printf("\talpha_instr_"); if (llsc && (size != 2 && size != 3)) { @@ -367,8 +374,6 @@ printf("%s", sizechar[size]); if (zero) printf("_0"); - if (aligncheck) - printf("_aligncheck"); if (llsc) printf("_llsc"); }