[llvm-commits] CVS: llvm/lib/Reoptimizer/BinInterface/sparcdis.cpp binproc.cpp
Misha Brukman
brukman at neo.cs.uiuc.edu
Tue Nov 12 20:46:01 PST 2002
Changes in directory llvm/lib/Reoptimizer/BinInterface:
sparcdis.cpp updated: 1.1 -> 1.2
binproc.cpp updated: 1.2 -> 1.3
---
Log message:
Tabs to spaces, fixed code layout, comment header at top of file.
---
Diffs of the changes:
Index: llvm/lib/Reoptimizer/BinInterface/sparcdis.cpp
diff -u llvm/lib/Reoptimizer/BinInterface/sparcdis.cpp:1.1 llvm/lib/Reoptimizer/BinInterface/sparcdis.cpp:1.2
--- llvm/lib/Reoptimizer/BinInterface/sparcdis.cpp:1.1 Fri Nov 8 04:38:14 2002
+++ llvm/lib/Reoptimizer/BinInterface/sparcdis.cpp Tue Nov 12 20:47:14 2002
@@ -1,452 +1,481 @@
-//*****************************************************************************
+//===-----------------------------------------------------------*- C++ -*--===//
// SPARC Disassembler
//
//
//
// 2002 Cameron Buschardt
-//*****************************************************************************
+//===----------------------------------------------------------------------===//
#include <stdio.h>
#include <stdlib.h>
-#include "sparc9.hp" // include the preprocessed header
+#include "sparc9.h"
void sparc_printbr(unsigned instr)
{
- // look at the OP2 field
- if (RD_FLD(instr,INSTR_OP2)==OP2_ILLTRAP)
- printf("ILLTRAP .. ");
- else if (RD_FLD(instr, INSTR_OP2)==OP2_SETHI)
- {
- if (RD_FLD(instr, INSTR_RD) == 0)
- printf("NOP");
- else
- printf("SETHI %%hi(%08X), r%d", RD_FLD(instr, INSTR_IMM22) << 10, RD_FLD(instr, INSTR_RD));
- }
- else if (RD_FLD(instr, INSTR_OP2)==OP2_BICC)
- {
- printf("%s disp:%08X",icond_names[RD_FLD(instr, INSTR_COND_H)], SIGN_EXTEND(RD_FLD(instr,INSTR_DISP22),22));
- }
- else if (RD_FLD(instr, INSTR_OP2)==OP2_BPR)
- {
- //A, RCOND_H, D16HI, P, RS1, D16LO
- printf("P%s%s%s r%d, %06X " , rcond_names[RD_FLD(instr, INSTR_RCOND_H)],
- RD_FLD(instr, INSTR_A) ? ",a" : "",
- RD_FLD(instr, INSTR_P) ? ",pt" : ",pn",
- RD_FLD(instr, INSTR_RS1),
- RD_D16(instr)
- );
- }
- else if (RD_FLD(instr, INSTR_OP2)==OP2_FB)
- {
- // cond, A, disp22
- printf("%s%s %08X", fcond_names[RD_FLD(instr, INSTR_COND_H)],
- RD_FLD(instr, INSTR_A) ? ",a" : "",
- RD_FLD(instr, INSTR_DISP22));
- }
- else if (RD_FLD(instr, INSTR_OP2)==OP2_FBP)
- {
- //
- }
- else{
- printf("Unknown:OP=0b00 OP2 = 0x%04X", RD_FLD(instr, INSTR_OP2));
- }
+ // look at the OP2 field
+ if (RD_FLD(instr,INSTR_OP2)==OP2_ILLTRAP) {
+ printf("ILLTRAP .. ");
+ } else if (RD_FLD(instr, INSTR_OP2)==OP2_SETHI) {
+ if (RD_FLD(instr, INSTR_RD) == 0)
+ printf("NOP");
+ else
+ printf("SETHI %%hi(%08X), r%d",
+ RD_FLD(instr, INSTR_IMM22) << 10, RD_FLD(instr, INSTR_RD));
+ } else if (RD_FLD(instr, INSTR_OP2) == OP2_BICC) {
+ printf("%s disp:%08X",icond_names[RD_FLD(instr, INSTR_COND_H)],
+ SIGN_EXTEND(RD_FLD(instr,INSTR_DISP22),22));
+ } else if (RD_FLD(instr, INSTR_OP2)==OP2_BPR) {
+ //A, RCOND_H, D16HI, P, RS1, D16LO
+ printf("P%s%s%s r%d, %06X " , rcond_names[RD_FLD(instr, INSTR_RCOND_H)],
+ RD_FLD(instr, INSTR_A) ? ",a" : "",
+ RD_FLD(instr, INSTR_P) ? ",pt" : ",pn",
+ RD_FLD(instr, INSTR_RS1),
+ RD_D16(instr)
+ );
+ } else if (RD_FLD(instr, INSTR_OP2)==OP2_FB) {
+ // cond, A, disp22
+ printf("%s%s %08X", fcond_names[RD_FLD(instr, INSTR_COND_H)],
+ RD_FLD(instr, INSTR_A) ? ",a" : "",
+ RD_FLD(instr, INSTR_DISP22));
+ } else if (RD_FLD(instr, INSTR_OP2)==OP2_FBP) {
+ //
+ } else{
+ printf("Unknown:OP=0b00 OP2 = 0x%04X", RD_FLD(instr, INSTR_OP2));
+ }
}
void sparc_printalu(char * basename , unsigned instr)
{
- // OP=OP_2 : RD, OP3, RS1: {I=0 -> RS2 I=1->SIMM13}
- if (RD_FLD(instr, INSTR_I)==0)
- printf("%s r%d <- r%d ,r%d",basename, RD_FLD(instr, INSTR_RD),RD_FLD(instr, INSTR_RS1), RD_FLD(instr, INSTR_RS2));
- else
- printf("%s r%d <- r%d ,%d",basename, RD_FLD(instr, INSTR_RD),RD_FLD(instr, INSTR_RS1), SIGN_EXTEND13(RD_FLD(instr, INSTR_SIMM13)));
+ // OP=OP_2 : RD, OP3, RS1: {I=0 -> RS2 I=1->SIMM13}
+ if (RD_FLD(instr, INSTR_I)==0) {
+ printf("%s r%d <- r%d ,r%d",basename, RD_FLD(instr, INSTR_RD),
+ RD_FLD(instr, INSTR_RS1), RD_FLD(instr, INSTR_RS2));
+ } else {
+ printf("%s r%d <- r%d ,%d",basename, RD_FLD(instr, INSTR_RD),
+ RD_FLD(instr, INSTR_RS1),
+ SIGN_EXTEND13(RD_FLD(instr, INSTR_SIMM13)));
+ }
}
void sparc_printshf(char * basename, unsigned instr)
{
- //OP=OP_2: RD, OP_3 RS1: {I=0 -> X & RS2 ,I=1 -> {X=0 -> SHCNT32 X=1->SHCNT64 }}
- if (RD_FLD(instr, INSTR_I)==0)
- printf("%s%d r%d <- r%d, by r%d ",(RD_FLD(instr, INSTR_X)==0 ? 32 : 64), basename, RD_FLD(instr, INSTR_RD), RD_FLD(instr, INSTR_RS1), RD_FLD(instr, INSTR_RS2));
- else
- printf("%s%d r%d <- r%d, by 0x%04X ", basename,(RD_FLD(instr, INSTR_X)==0 ? 32 : 64), RD_FLD(instr, INSTR_RD), RD_FLD(instr, INSTR_RS1), (RD_FLD(instr, INSTR_X)==0 ? RD_FLD(instr, INSTR_SHCNT32) : RD_FLD(instr, INSTR_SHCNT64)) );
-
+ // OP=OP_2: RD, OP_3 RS1:
+ // {I=0 -> X & RS2 ,I=1 -> {X=0 -> SHCNT32 X=1->SHCNT64 }}
+ if (RD_FLD(instr, INSTR_I)==0) {
+ printf("%s%d r%d <- r%d, by r%d ", (RD_FLD(instr, INSTR_X)==0 ? 32 : 64),
+ basename, RD_FLD(instr, INSTR_RD), RD_FLD(instr, INSTR_RS1),
+ RD_FLD(instr, INSTR_RS2));
+ } else {
+ printf("%s%d r%d <- r%d, by 0x%04X ", basename,
+ (RD_FLD(instr, INSTR_X)==0 ? 32 : 64),
+ RD_FLD(instr, INSTR_RD), RD_FLD(instr, INSTR_RS1),
+ (RD_FLD(instr, INSTR_X)==0 ? RD_FLD(instr, INSTR_SHCNT32)
+ : RD_FLD(instr, INSTR_SHCNT64)) );
+ }
}
// Op2 class instructions
void sparc_printfpu(unsigned instr)
{
- switch(RD_FLD(instr, INSTR_OPF) &~ OPF_MASK_ON)
- {
- case OPF_FADDn:
- printf("FADDn");
- return;
- case OPF_FSUBn:
- printf("FSUBn");
- return;
- case OPF_FMOVn:
- printf("FMOVn");
- return;
- case OPF_FNEGn:
- printf("FNEGn");
- return;
- case OPF_FABSn:
- printf("FABSn");
- return;
- case OPF_FMULn:
- printf("FMULn");
- return;
- case OPF_FDIVn:
- printf("FDIVn");
- return;
- case OPF_FSQRTn:
- printf("FSQRTn");
- return;
- }
- switch (RD_FLD(instr, INSTR_OPF) &~OPF_MASK_TO)
- {
- case OPF_FxTOt:
- printf("FxTOt");
- return;
- case OPF_FiTOt:
- printf("FiTOt");
- return;
- }
-
- switch(RD_FLD(instr, INSTR_OPF))
- {
- case OPF_FsTOx:
- printf("OPF_FsTOx");
- return;
- case OPF_FsTOi:
- printf("OPF_FsTOi");
- return;
- case OPF_FsTOd:
- printf("OPF_FsTOd");
- return;
- case OPF_FsTOq:
- printf("OPF_FsTOq");
- return;
- case OPF_FdTOx:
- printf("OPF_FdTOx");
- return;
- case OPF_FdTOi:
- printf("OPF_FdTOi");
- return;
- case OPF_FqTOx:
- printf("OPF_FqTOx");
- return;
- case OPF_FdTOs:
- printf("OPF_FdTOs");
- return;
- case OPF_FdTOq:
- printf("OPF_FdTOq");
- return;
- case OPF_FqTOi:
- printf("OPF_FqTOi");
- return;
- case OPF_FqTOs:
- printf("OPF_FqTOs");
- return;
- case OPF_FqTOd:
- printf("OPF_FqTOd");
- return;
- case OPF_FsMULd:
- printf("OPF_FsMULd");
- return;
- case OPF_FdMULq:
- printf("OPF_FdMULq");
- return;
- }
+ switch(RD_FLD(instr, INSTR_OPF) &~ OPF_MASK_ON)
+ {
+ case OPF_FADDn:
+ printf("FADDn");
+ return;
+ case OPF_FSUBn:
+ printf("FSUBn");
+ return;
+ case OPF_FMOVn:
+ printf("FMOVn");
+ return;
+ case OPF_FNEGn:
+ printf("FNEGn");
+ return;
+ case OPF_FABSn:
+ printf("FABSn");
+ return;
+ case OPF_FMULn:
+ printf("FMULn");
+ return;
+ case OPF_FDIVn:
+ printf("FDIVn");
+ return;
+ case OPF_FSQRTn:
+ printf("FSQRTn");
+ return;
+ }
+ switch (RD_FLD(instr, INSTR_OPF) &~OPF_MASK_TO)
+ {
+ case OPF_FxTOt:
+ printf("FxTOt");
+ return;
+ case OPF_FiTOt:
+ printf("FiTOt");
+ return;
+ }
+
+ switch(RD_FLD(instr, INSTR_OPF))
+ {
+ case OPF_FsTOx:
+ printf("OPF_FsTOx");
+ return;
+ case OPF_FsTOi:
+ printf("OPF_FsTOi");
+ return;
+ case OPF_FsTOd:
+ printf("OPF_FsTOd");
+ return;
+ case OPF_FsTOq:
+ printf("OPF_FsTOq");
+ return;
+ case OPF_FdTOx:
+ printf("OPF_FdTOx");
+ return;
+ case OPF_FdTOi:
+ printf("OPF_FdTOi");
+ return;
+ case OPF_FqTOx:
+ printf("OPF_FqTOx");
+ return;
+ case OPF_FdTOs:
+ printf("OPF_FdTOs");
+ return;
+ case OPF_FdTOq:
+ printf("OPF_FdTOq");
+ return;
+ case OPF_FqTOi:
+ printf("OPF_FqTOi");
+ return;
+ case OPF_FqTOs:
+ printf("OPF_FqTOs");
+ return;
+ case OPF_FqTOd:
+ printf("OPF_FqTOd");
+ return;
+ case OPF_FsMULd:
+ printf("OPF_FsMULd");
+ return;
+ case OPF_FdMULq:
+ printf("OPF_FdMULq");
+ return;
+ }
}
void sparc_print2(unsigned instr)
{
- switch(RD_FLD(instr, INSTR_OP3))
- {
- case OP3_ADD:
- sparc_printalu("ADD", instr);
- return;
-
- case OP3_ADDcc:
- sparc_printalu("ADDcc", instr);
- return;
-
- case OP3_ADDC:
- sparc_printalu("ADDC", instr);
- return;
-
- case OP3_ADDCcc:
- sparc_printalu("ADDCcc", instr);
- return;
-
- case OP3_AND:
- sparc_printalu("AND", instr);
- return;
-
- case OP3_ANDcc:
- sparc_printalu("ANDcc", instr);
- return;
-
- case OP3_OR:
- sparc_printalu("OR", instr);
- return;
-
- case OP3_ORcc:
- sparc_printalu("ORcc", instr);
- return;
-
- case OP3_XOR:
- sparc_printalu("XOR", instr);
- return;
-
- case OP3_XORcc:
- sparc_printalu("XORcc", instr);
- return;
-
- case OP3_SUB:
- sparc_printalu("SUB", instr);
- return;
-
- case OP3_SUBcc:
- sparc_printalu("SUBcc", instr);
- return;
-
- case OP3_ANDN:
- sparc_printalu("ANDN", instr);
- return;
-
- case OP3_ANDNcc:
- sparc_printalu("ANDNcc", instr);
- return;
-
- case OP3_ORN:
- sparc_printalu("ORN", instr);
- return;
-
- case OP3_ORNcc:
- sparc_printalu("ORNcc", instr);
- return;
-
- case OP3_XNOR:
- sparc_printalu("XNOR", instr);
- return;
-
- case OP3_XNORcc:
- sparc_printalu("XNORcc", instr);
- return;
-
- case OP3_SUBC:
- sparc_printalu("SUBC", instr);
- return;
-
- case OP3_SUBCcc:
- sparc_printalu("SUBCcc", instr);
- return;
-
- case OP3_MULX:
- sparc_printalu("MULX", instr);
- return;
-
- case OP3_SDIVX:
- sparc_printalu("SDIVX", instr);
- return;
-
- case OP3_UDIVX:
- sparc_printalu("UDIVX", instr);
- return;
-
- case OP3_SLL:
- sparc_printshf("SLL",instr);
- return;
- case OP3_SRL:
- sparc_printshf("SRL",instr);
- return;
- case OP3_SRA:
- sparc_printshf("SRA",instr);
- return;
-
- case OP3_DONERETRY:
- {
- if (RD_FLD(instr, INSTR_FCN)==FCN_DONE)
- printf("DONE");
- else if (RD_FLD(instr, INSTR_FCN)==FCN_RETRY)
- printf("RETRY");
- else
- printf("DOH!");
- return;
- }
-
- case OP3_FCMP:
- {
- unsigned fop_n =RD_FLD(instr, INSTR_OPF) &~ OPF_MASK_ON;
- if (fop_n==OPF_FCMPn)
- printf("FCMP");
- else if (fop_n==OPF_FCMPEn)
- printf("FCMPE");
- else
- printf("DOH!");
- return;
- }
-
- case OP3_FPU:
- sparc_printfpu(instr);
- return;
-
- case OP3_FLUSH: //OP=OP_2 RS1 {I=0 -> rs2, I=1->simm13}
- printf("OP3_FLUSH");
- return;
- case OP3_FLUSHW: //OP=OP_2 I = 0
- printf("OP3_FLUSHW");
- return;
- case OP3_JMPL: //OP=OP_2 RD, RS1 {I=0-> RS2, I=1->SIMM13}
- if (RD_FLD(instr, INSTR_I)==0)
- printf("JMPL link:r%d, to: r%d+r%d", RD_FLD(instr, INSTR_RD),RD_FLD(instr, INSTR_RS1),RD_FLD(instr, INSTR_RS2) );
- else
- printf("JMPL link:r%d, to: r%d+%d", RD_FLD(instr, INSTR_RD),RD_FLD(instr, INSTR_RS1),SIGN_EXTEND13(RD_FLD(instr, INSTR_SIMM13)) );
- return;
-
- case OP3_POPC:
- printf("POPC ????");
- return;
-
- case OP3_RETURN:
- if (RD_FLD(instr, INSTR_I) == 0)
- printf("RETURN r%d + r%d", RD_FLD(instr, INSTR_RS1), RD_FLD(instr, INSTR_RS2));
- else
- printf("RETURN r%d + %d", RD_FLD(instr, INSTR_RS1), SIGN_EXTEND13(RD_FLD(instr, INSTR_SIMM13)));
- return;
-
- case OP3_SAVE:
- if (RD_FLD(instr, INSTR_I) == 0)
- printf("save r%d , r%d, r%d", RD_FLD(instr, INSTR_RS1), RD_FLD(instr, INSTR_RS2), RD_FLD(instr, INSTR_RD));
- else
- printf("save r%d , %d, r%d", RD_FLD(instr, INSTR_RS1), SIGN_EXTEND13(RD_FLD(instr, INSTR_SIMM13)), RD_FLD(instr, INSTR_RD));
- return;
-
- case OP3_RESTORE:
- if (RD_FLD(instr, INSTR_I) == 0)
- printf("RESTORE r%d , r%d, r%d", RD_FLD(instr, INSTR_RS1), RD_FLD(instr, INSTR_RS2), RD_FLD(instr, INSTR_RD));
- else
- printf("RESTORE r%d , %d, r%d", RD_FLD(instr, INSTR_RS1), SIGN_EXTEND13(RD_FLD(instr, INSTR_SIMM13)), RD_FLD(instr, INSTR_RD));
- return;
+ switch(RD_FLD(instr, INSTR_OP3))
+ {
+ case OP3_ADD:
+ sparc_printalu("ADD", instr);
+ return;
+
+ case OP3_ADDcc:
+ sparc_printalu("ADDcc", instr);
+ return;
+
+ case OP3_ADDC:
+ sparc_printalu("ADDC", instr);
+ return;
+
+ case OP3_ADDCcc:
+ sparc_printalu("ADDCcc", instr);
+ return;
+
+ case OP3_AND:
+ sparc_printalu("AND", instr);
+ return;
+
+ case OP3_ANDcc:
+ sparc_printalu("ANDcc", instr);
+ return;
+
+ case OP3_OR:
+ sparc_printalu("OR", instr);
+ return;
+
+ case OP3_ORcc:
+ sparc_printalu("ORcc", instr);
+ return;
+
+ case OP3_XOR:
+ sparc_printalu("XOR", instr);
+ return;
+
+ case OP3_XORcc:
+ sparc_printalu("XORcc", instr);
+ return;
+
+ case OP3_SUB:
+ sparc_printalu("SUB", instr);
+ return;
+
+ case OP3_SUBcc:
+ sparc_printalu("SUBcc", instr);
+ return;
+
+ case OP3_ANDN:
+ sparc_printalu("ANDN", instr);
+ return;
+
+ case OP3_ANDNcc:
+ sparc_printalu("ANDNcc", instr);
+ return;
+
+ case OP3_ORN:
+ sparc_printalu("ORN", instr);
+ return;
+
+ case OP3_ORNcc:
+ sparc_printalu("ORNcc", instr);
+ return;
+
+ case OP3_XNOR:
+ sparc_printalu("XNOR", instr);
+ return;
+
+ case OP3_XNORcc:
+ sparc_printalu("XNORcc", instr);
+ return;
+
+ case OP3_SUBC:
+ sparc_printalu("SUBC", instr);
+ return;
+
+ case OP3_SUBCcc:
+ sparc_printalu("SUBCcc", instr);
+ return;
+
+ case OP3_MULX:
+ sparc_printalu("MULX", instr);
+ return;
+
+ case OP3_SDIVX:
+ sparc_printalu("SDIVX", instr);
+ return;
+
+ case OP3_UDIVX:
+ sparc_printalu("UDIVX", instr);
+ return;
+
+ case OP3_SLL:
+ sparc_printshf("SLL",instr);
+ return;
+ case OP3_SRL:
+ sparc_printshf("SRL",instr);
+ return;
+ case OP3_SRA:
+ sparc_printshf("SRA",instr);
+ return;
+
+ case OP3_DONERETRY:
+ {
+ if (RD_FLD(instr, INSTR_FCN)==FCN_DONE)
+ printf("DONE");
+ else if (RD_FLD(instr, INSTR_FCN)==FCN_RETRY)
+ printf("RETRY");
+ else
+ printf("DOH!");
+ return;
+ }
+
+ case OP3_FCMP:
+ {
+ unsigned fop_n =RD_FLD(instr, INSTR_OPF) &~ OPF_MASK_ON;
+ if (fop_n==OPF_FCMPn)
+ printf("FCMP");
+ else if (fop_n==OPF_FCMPEn)
+ printf("FCMPE");
+ else
+ printf("DOH!");
+ return;
+ }
+
+ case OP3_FPU:
+ sparc_printfpu(instr);
+ return;
+
+ case OP3_FLUSH: //OP=OP_2 RS1 {I=0 -> rs2, I=1->simm13}
+ printf("OP3_FLUSH");
+ return;
+ case OP3_FLUSHW: //OP=OP_2 I = 0
+ printf("OP3_FLUSHW");
+ return;
+ case OP3_JMPL: //OP=OP_2 RD, RS1 {I=0-> RS2, I=1->SIMM13}
+ if (RD_FLD(instr, INSTR_I)==0)
+ printf("JMPL link:r%d, to: r%d+r%d", RD_FLD(instr, INSTR_RD),
+ RD_FLD(instr, INSTR_RS1),RD_FLD(instr, INSTR_RS2) );
+ else
+ printf("JMPL link:r%d, to: r%d+%d", RD_FLD(instr, INSTR_RD),
+ RD_FLD(instr, INSTR_RS1),
+ SIGN_EXTEND13(RD_FLD(instr, INSTR_SIMM13)) );
+ return;
+
+ case OP3_POPC:
+ printf("POPC ????");
+ return;
+
+ case OP3_RETURN:
+ if (RD_FLD(instr, INSTR_I) == 0)
+ printf("RETURN r%d + r%d", RD_FLD(instr, INSTR_RS1),
+ RD_FLD(instr, INSTR_RS2));
+ else
+ printf("RETURN r%d + %d", RD_FLD(instr, INSTR_RS1),
+ SIGN_EXTEND13(RD_FLD(instr, INSTR_SIMM13)));
+ return;
+
+ case OP3_SAVE:
+ if (RD_FLD(instr, INSTR_I) == 0)
+ printf("save r%d , r%d, r%d", RD_FLD(instr, INSTR_RS1),
+ RD_FLD(instr, INSTR_RS2), RD_FLD(instr, INSTR_RD));
+ else
+ printf("save r%d , %d, r%d", RD_FLD(instr, INSTR_RS1),
+ SIGN_EXTEND13(RD_FLD(instr, INSTR_SIMM13)),
+ RD_FLD(instr, INSTR_RD));
+ return;
+
+ case OP3_RESTORE:
+ if (RD_FLD(instr, INSTR_I) == 0)
+ printf("RESTORE r%d , r%d, r%d", RD_FLD(instr, INSTR_RS1),
+ RD_FLD(instr, INSTR_RS2), RD_FLD(instr, INSTR_RD));
+ else
+ printf("RESTORE r%d , %d, r%d", RD_FLD(instr, INSTR_RS1),
+ SIGN_EXTEND13(RD_FLD(instr, INSTR_SIMM13)),
+ RD_FLD(instr, INSTR_RD));
+ return;
- }
+ }
- printf("Unknown:OP=0b10 OP3 = 0x%04X", RD_FLD(instr, INSTR_OP3));
+ printf("Unknown:OP=0b10 OP3 = 0x%04X", RD_FLD(instr, INSTR_OP3));
}
void sparc_printldst(char * basename, unsigned instr)
-{
- if (RD_FLD(instr, INSTR_I)==0)
- printf("%s r%d <- r%d , r%d", basename,RD_FLD(instr, INSTR_RD), RD_FLD(instr, INSTR_RS1), RD_FLD(instr, INSTR_RS2));
- else
- printf("%s r%d <- r%d , %d",basename, RD_FLD(instr, INSTR_RD), RD_FLD(instr, INSTR_RS1), SIGN_EXTEND13(RD_FLD(instr, INSTR_SIMM13)));
+{
+ if (RD_FLD(instr, INSTR_I)==0)
+ printf("%s r%d <- r%d , r%d", basename, RD_FLD(instr, INSTR_RD),
+ RD_FLD(instr, INSTR_RS1), RD_FLD(instr, INSTR_RS2));
+ else
+ printf("%s r%d <- r%d , %d",basename, RD_FLD(instr, INSTR_RD),
+ RD_FLD(instr, INSTR_RS1),
+ SIGN_EXTEND13(RD_FLD(instr, INSTR_SIMM13)));
}
void sparc_print3(unsigned instr)
{
-//#define OP3_LDFA 0b110000 //OP=OP_3 RD, Rs1, {I=0->IMM_ASI, RS2 I=1->SIMM13}
-//#define OP3_LDDFA 0b110011 //OP=OP_3 RD, Rs1, {I=0->IMM_ASI, RS2 I=1->SIMM13}
-//#define OP3_LDQFA 0b110010 //OP=OP_3 RD, Rs1, {I=0->IMM_ASI, RS2 I=1->SIMM13}
-//#define OP3_LDSTUB 0b001101 //OP=OP_3 RD, Rs1 {I=0->RS2, I=1->SIMM13}
-//#define OP3_LDSTUBA 0b011101 //OP=OP_3 RD, RS1 {I=0->RS2, IMM_ASI, I=1->SIMM13}
- switch(RD_FLD(instr, INSTR_OP3))
- {
- //OP=OP_3 RD, Rs1 {I=0->RS2, I=1->SIMM13}
- case OP3_LDSTUB:
- sparc_printldst("LDSTUB", instr);
- return;
-
- case OP3_STB:
- sparc_printldst("STB", instr);
- return;
-
- case OP3_STH:
- sparc_printldst("STH", instr);
- return;
-
- case OP3_STW:
- sparc_printldst("STW", instr);
- return;
-
- case OP3_STX:
- sparc_printldst("STX", instr);
- return;
-
- case OP3_LDSB:
- sparc_printldst("LDSB", instr);
- return;
-
- case OP3_LDSH:
- sparc_printldst("LDSH", instr);
- return;
-
- case OP3_LDSW:
- sparc_printldst("LDSW", instr);
- return;
-
- case OP3_LDUB:
- sparc_printldst("LDUB", instr);
- return;
-
- case OP3_LDUH:
- sparc_printldst("LDUH", instr);
- return;
-
- case OP3_LDUW:
- sparc_printldst("LDUW", instr);
- return;
-
- case OP3_LDX:
- sparc_printldst("LDX", instr);
- return;
-
- case OP3_CASA:
- if (RD_FLD(instr, INSTR_I)==0)
- printf("CASA [r%d] %%%d, r%d, r%d", RD_FLD(instr, INSTR_RS1),RD_FLD(instr, INSTR_IMMASI), RD_FLD(instr, INSTR_RS2), RD_FLD(instr, INSTR_RD));
- else
- printf("CASA [r%d] , r%d, r%d", RD_FLD(instr, INSTR_RS1), RD_FLD(instr, INSTR_RS2), RD_FLD(instr, INSTR_RD));
-
- sparc_printalu("CASA", instr);
-
- return;
-
- case OP3_CASXA:
- sparc_printalu("CASXA", instr);
- return;
- case OP3_STFA:
- sparc_printalu("STFA",instr);
- return;
- case OP3_STDFA:
- sparc_printalu("STDFA",instr);
- return;
- case OP3_STQFA:
- sparc_printalu("STQFA",instr);
- return;
-
- case OP3_PREFETCH:
- printf("PREFETCH ??? ");
- return;
-
- case OP3_PREFETCHA:
- printf("PREFETCHA ??? ");
- return;
- }
+ //#define OP3_LDFA 0b110000
+ //OP=OP_3 RD, Rs1, {I=0->IMM_ASI, RS2 I=1->SIMM13}
+
+ //#define OP3_LDDFA 0b110011
+ //OP=OP_3 RD, Rs1, {I=0->IMM_ASI, RS2 I=1->SIMM13}
+
+ //#define OP3_LDQFA 0b110010
+ //OP=OP_3 RD, Rs1, {I=0->IMM_ASI, RS2 I=1->SIMM13}
+
+ //#define OP3_LDSTUB 0b001101
+ //OP=OP_3 RD, Rs1 {I=0->RS2, I=1->SIMM13}
+
+ //#define OP3_LDSTUBA 0b011101
+ //OP=OP_3 RD, RS1 {I=0->RS2, IMM_ASI, I=1->SIMM13}
+
+ switch(RD_FLD(instr, INSTR_OP3))
+ {
+ //OP=OP_3 RD, Rs1 {I=0->RS2, I=1->SIMM13}
+ case OP3_LDSTUB:
+ sparc_printldst("LDSTUB", instr);
+ return;
+
+ case OP3_STB:
+ sparc_printldst("STB", instr);
+ return;
+
+ case OP3_STH:
+ sparc_printldst("STH", instr);
+ return;
+
+ case OP3_STW:
+ sparc_printldst("STW", instr);
+ return;
+
+ case OP3_STX:
+ sparc_printldst("STX", instr);
+ return;
+
+ case OP3_LDSB:
+ sparc_printldst("LDSB", instr);
+ return;
+
+ case OP3_LDSH:
+ sparc_printldst("LDSH", instr);
+ return;
+
+ case OP3_LDSW:
+ sparc_printldst("LDSW", instr);
+ return;
+
+ case OP3_LDUB:
+ sparc_printldst("LDUB", instr);
+ return;
+
+ case OP3_LDUH:
+ sparc_printldst("LDUH", instr);
+ return;
+
+ case OP3_LDUW:
+ sparc_printldst("LDUW", instr);
+ return;
+
+ case OP3_LDX:
+ sparc_printldst("LDX", instr);
+ return;
+
+ case OP3_CASA:
+ if (RD_FLD(instr, INSTR_I)==0)
+ printf("CASA [r%d] %%%d, r%d, r%d", RD_FLD(instr, INSTR_RS1),
+ RD_FLD(instr, INSTR_IMMASI), RD_FLD(instr, INSTR_RS2),
+ RD_FLD(instr, INSTR_RD));
+ else
+ printf("CASA [r%d] , r%d, r%d", RD_FLD(instr, INSTR_RS1),
+ RD_FLD(instr, INSTR_RS2), RD_FLD(instr, INSTR_RD));
+
+ sparc_printalu("CASA", instr);
+
+ return;
+
+ case OP3_CASXA:
+ sparc_printalu("CASXA", instr);
+ return;
+ case OP3_STFA:
+ sparc_printalu("STFA",instr);
+ return;
+ case OP3_STDFA:
+ sparc_printalu("STDFA",instr);
+ return;
+ case OP3_STQFA:
+ sparc_printalu("STQFA",instr);
+ return;
+
+ case OP3_PREFETCH:
+ printf("PREFETCH ??? ");
+ return;
+
+ case OP3_PREFETCHA:
+ printf("PREFETCHA ??? ");
+ return;
+ }
- printf("Unknown OP_3: OP3 = %08X", RD_FLD(instr, INSTR_OP3));
+ printf("Unknown OP_3: OP3 = %08X", RD_FLD(instr, INSTR_OP3));
}
void sparc_print(unsigned instr)
{
- printf("(%08X) ", instr);
- if (RD_FLD(instr,INSTR_OP)==OP_CALL)
- printf("CALL disp:+%08X", instr & 0x3FFFFFFF);
- else if (RD_FLD(instr,INSTR_OP)==OP_BRANCH)
- sparc_printbr(instr);
- else if (RD_FLD(instr,INSTR_OP)==OP_2)
- sparc_print2(instr);
- else if (RD_FLD(instr,INSTR_OP)==OP_3)
- sparc_print3(instr);
+ printf("(%08X) ", instr);
+ if (RD_FLD(instr,INSTR_OP)==OP_CALL)
+ printf("CALL disp:+%08X", instr & 0x3FFFFFFF);
+ else if (RD_FLD(instr,INSTR_OP)==OP_BRANCH)
+ sparc_printbr(instr);
+ else if (RD_FLD(instr,INSTR_OP)==OP_2)
+ sparc_print2(instr);
+ else if (RD_FLD(instr,INSTR_OP)==OP_3)
+ sparc_print3(instr);
}
-
Index: llvm/lib/Reoptimizer/BinInterface/binproc.cpp
diff -u llvm/lib/Reoptimizer/BinInterface/binproc.cpp:1.2 llvm/lib/Reoptimizer/BinInterface/binproc.cpp:1.3
--- llvm/lib/Reoptimizer/BinInterface/binproc.cpp:1.2 Fri Nov 8 04:38:13 2002
+++ llvm/lib/Reoptimizer/BinInterface/binproc.cpp Tue Nov 12 20:47:14 2002
@@ -1,113 +1,117 @@
+//===-----------------------------------------------------------*- C++ -*--===//
+//
+//===----------------------------------------------------------------------===//
+
#include <stdio.h>
#include <stdlib.h>
-char * LoadFile(const char * fname)
+char* LoadFile(const char * fname)
{
- unsigned size;
- char * buffer;
- FILE * file = fopen(fname, "rb");
- if (!file)
- return NULL;
-
- fseek(file, 0, SEEK_END);
- size = ftell(file);
- fseek(file, 0, SEEK_SET);
-
-
- buffer = new char[size + 1];
- fread(buffer, 1, size, file);
- buffer[size] = 0;
+ unsigned size;
+ char * buffer;
+ FILE * file = fopen(fname, "rb");
+ if (!file)
+ return NULL;
+
+ fseek(file, 0, SEEK_END);
+ size = ftell(file);
+ fseek(file, 0, SEEK_SET);
+
+
+ buffer = new char[size + 1];
+ fread(buffer, 1, size, file);
+ buffer[size] = 0;
- fclose(file);
- return buffer;
+ fclose(file);
+ return buffer;
}
#define IS_TOK(x) ((x >= '0' && x <= '9') || \
- (x >= 'A' && x <= 'Z') || \
- (x >= 'a' && x <= 'z') || \
- (x == '_'))
+ (x >= 'A' && x <= 'Z') || \
+ (x >= 'a' && x <= 'z') || \
+ (x == '_'))
void process_token (char * begin, char * end, FILE * file)
{
- unsigned u = 0;
- char * i = begin;
+ unsigned u = 0;
+ char * i = begin;
- if (i==end || *i++ != '0')
- goto not_binary;
+ if (i==end || *i++ != '0')
+ goto not_binary;
- if (i== end || *i++ != 'b')
- goto not_binary;
+ if (i== end || *i++ != 'b')
+ goto not_binary;
- while (i!=end && (*i == '0' || *i == '1'))
- {
- u = (u << 1) | (*i - '0');
- i++;
- }
-
- fprintf(file, "0x%08X", u);
- return;
-
-not_binary:
- //just output the thing, it wasn't it
- while (begin!=end)
- fputc(*begin++, file);
+ while (i!=end && (*i == '0' || *i == '1'))
+ {
+ u = (u << 1) | (*i - '0');
+ i++;
+ }
+
+ fprintf(file, "0x%08X", u);
+ return;
+
+ not_binary:
+ //just output the thing, it wasn't it
+ while (begin!=end)
+ fputc(*begin++, file);
}
void process(char * buffer, FILE * file)
{
- while (*buffer)
- {
- if (IS_TOK(*buffer))
- {
- char * begin = buffer;
- char * end = buffer;
-
- while (IS_TOK(*end))
- end++;
-
- process_token(begin, end, file);
- buffer = end;
- }
- else
- fputc(*buffer++, file);
- }
+ while (*buffer)
+ {
+ if (IS_TOK(*buffer))
+ {
+ char * begin = buffer;
+ char * end = buffer;
+
+ while (IS_TOK(*end))
+ end++;
+
+ process_token(begin, end, file);
+ buffer = end;
+ }
+ else
+ fputc(*buffer++, file);
+ }
}
int main(int argc, char ** argv)
{
- FILE * file = NULL;
- char * buffer = NULL;
- if (argc!=3)
- {
- printf("Usage: \n"
- " binproc [infile] [outfile]\n");
- goto failure;
- }
- buffer = LoadFile(argv[1]);
-
- if (!buffer)
- {
- printf("Failed to open input file\n");
- goto failure;
- }
-
- file = fopen(argv[2],"wb");
- if (!file)
- {
- printf("Failed to open output file\n");
- goto failure;
- }
- fprintf(file, "#line 1 \"%s\"\n", argv[1]);
- process(buffer, file);
-
- delete buffer;
- fclose(file);
-
- return 0;
-
-failure:
- if (file)
- fclose(file);
- if (buffer)
- delete buffer;
- return 1;
+ FILE * file = NULL;
+ char * buffer = NULL;
+ if (argc!=3)
+ {
+ printf("Usage: \n"
+ " binproc [infile] [outfile]\n");
+ goto failure;
+ }
+ buffer = LoadFile(argv[1]);
+
+ if (!buffer)
+ {
+ printf("Failed to open input file\n");
+ goto failure;
+ }
+
+ file = fopen(argv[2],"wb");
+ if (!file)
+ {
+ printf("Failed to open output file\n");
+ goto failure;
+ }
+ fprintf(file, "#line 1 \"%s\"\n", argv[1]);
+ process(buffer, file);
+
+ delete buffer;
+ fclose(file);
+
+ return 0;
+
+ failure:
+ if (file)
+ fclose(file);
+ if (buffer)
+ delete buffer;
+ return 1;
}
More information about the llvm-commits
mailing list