diff options
| author | Andrew Lenharth <andrewl@lenharth.org> | 2005-02-01 01:37:24 +0000 |
|---|---|---|
| committer | Andrew Lenharth <andrewl@lenharth.org> | 2005-02-01 01:37:24 +0000 |
| commit | cdc9e33ae54fca6f16cfbf3e9ca8670ef1126bad (patch) | |
| tree | b8f27e8a57991b035f944315a412dd37835d0309 /llvm/lib/Target/Alpha/AlphaISelPattern.cpp | |
| parent | f87e05be26880d2d9c846835c26041ea5fa49ded (diff) | |
| download | bcm5719-llvm-cdc9e33ae54fca6f16cfbf3e9ca8670ef1126bad.tar.gz bcm5719-llvm-cdc9e33ae54fca6f16cfbf3e9ca8670ef1126bad.zip | |
pecimise loads, put indirect call addr in right register. still doesn't fix methcall
llvm-svn: 19963
Diffstat (limited to 'llvm/lib/Target/Alpha/AlphaISelPattern.cpp')
| -rw-r--r-- | llvm/lib/Target/Alpha/AlphaISelPattern.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/llvm/lib/Target/Alpha/AlphaISelPattern.cpp b/llvm/lib/Target/Alpha/AlphaISelPattern.cpp index 731f30337a9..ecd635f43a9 100644 --- a/llvm/lib/Target/Alpha/AlphaISelPattern.cpp +++ b/llvm/lib/Target/Alpha/AlphaISelPattern.cpp @@ -307,6 +307,12 @@ unsigned ISel::SelectExprFP(SDOperand N, unsigned Result) Node->dump(); assert(0 && "Node not handled!\n"); + case ISD::FP_ROUND: + assert (DestType == MVT::f32 && N.getOperand(0).getValueType() == MVT::f64 && "only f64 to f32 conversion supported here"); + Tmp1 = SelectExpr(N.getOperand(0)); + BuildMI(BB, Alpha::CVTTS, 1, Result).addReg(Tmp1); + return Result; + case ISD::FP_EXTEND: assert (DestType == MVT::f64 && N.getOperand(0).getValueType() == MVT::f32 && "only f32 to f64 conversion supported here"); Tmp1 = SelectExpr(N.getOperand(0)); @@ -660,7 +666,8 @@ unsigned ISel::SelectExpr(SDOperand N) { { //no need to restore GP as we are doing an indirect call Tmp1 = SelectExpr(N.getOperand(1)); - BuildMI(BB, Alpha::JSR, 2, Alpha::R26).addReg(Tmp1).addImm(1); + BuildMI(BB, Alpha::BIS, 2, Alpha::R27).addReg(Tmp1).addReg(Tmp1); + BuildMI(BB, Alpha::JSR, 2, Alpha::R26).addReg(Alpha::R27).addImm(0); } //push the result into a virtual register |

