mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-30 17:33:24 +00:00
update the tutorial to use CreateFAdd to create fp operations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112733 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1f758831cb
commit
f57fcf7844
@ -222,7 +222,7 @@ code, we do a simple switch on the opcode to create the right LLVM instruction.
|
|||||||
|
|
||||||
<p>In the example above, the LLVM builder class is starting to show its value.
|
<p>In the example above, the LLVM builder class is starting to show its value.
|
||||||
IRBuilder knows where to insert the newly created instruction, all you have to
|
IRBuilder knows where to insert the newly created instruction, all you have to
|
||||||
do is specify what instruction to create (e.g. with <tt>CreateAdd</tt>), which
|
do is specify what instruction to create (e.g. with <tt>CreateFAdd</tt>), which
|
||||||
operands to use (<tt>L</tt> and <tt>R</tt> here) and optionally provide a name
|
operands to use (<tt>L</tt> and <tt>R</tt> here) and optionally provide a name
|
||||||
for the generated instruction.</p>
|
for the generated instruction.</p>
|
||||||
|
|
||||||
@ -1054,9 +1054,9 @@ Value *BinaryExprAST::Codegen() {
|
|||||||
if (L == 0 || R == 0) return 0;
|
if (L == 0 || R == 0) return 0;
|
||||||
|
|
||||||
switch (Op) {
|
switch (Op) {
|
||||||
case '+': return Builder.CreateAdd(L, R, "addtmp");
|
case '+': return Builder.CreateFAdd(L, R, "addtmp");
|
||||||
case '-': return Builder.CreateSub(L, R, "subtmp");
|
case '-': return Builder.CreateFSub(L, R, "subtmp");
|
||||||
case '*': return Builder.CreateMul(L, R, "multmp");
|
case '*': return Builder.CreateFMul(L, R, "multmp");
|
||||||
case '<':
|
case '<':
|
||||||
L = Builder.CreateFCmpULT(L, R, "cmptmp");
|
L = Builder.CreateFCmpULT(L, R, "cmptmp");
|
||||||
// Convert bool 0/1 to double 0.0 or 1.0
|
// Convert bool 0/1 to double 0.0 or 1.0
|
||||||
|
@ -800,7 +800,7 @@ references to it will naturally find it in the symbol table.</p>
|
|||||||
StepVal = ConstantFP::get(getGlobalContext(), APFloat(1.0));
|
StepVal = ConstantFP::get(getGlobalContext(), APFloat(1.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
Value *NextVar = Builder.CreateAdd(Variable, StepVal, "nextvar");
|
Value *NextVar = Builder.CreateFAdd(Variable, StepVal, "nextvar");
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -1517,7 +1517,7 @@ Value *ForExprAST::Codegen() {
|
|||||||
StepVal = ConstantFP::get(getGlobalContext(), APFloat(1.0));
|
StepVal = ConstantFP::get(getGlobalContext(), APFloat(1.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
Value *NextVar = Builder.CreateAdd(Variable, StepVal, "nextvar");
|
Value *NextVar = Builder.CreateFAdd(Variable, StepVal, "nextvar");
|
||||||
|
|
||||||
// Compute the end condition.
|
// Compute the end condition.
|
||||||
Value *EndCond = End->Codegen();
|
Value *EndCond = End->Codegen();
|
||||||
|
@ -1540,7 +1540,7 @@ Value *ForExprAST::Codegen() {
|
|||||||
StepVal = ConstantFP::get(getGlobalContext(), APFloat(1.0));
|
StepVal = ConstantFP::get(getGlobalContext(), APFloat(1.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
Value *NextVar = Builder.CreateAdd(Variable, StepVal, "nextvar");
|
Value *NextVar = Builder.CreateFAdd(Variable, StepVal, "nextvar");
|
||||||
|
|
||||||
// Compute the end condition.
|
// Compute the end condition.
|
||||||
Value *EndCond = End->Codegen();
|
Value *EndCond = End->Codegen();
|
||||||
|
@ -480,7 +480,7 @@ the unabridged code):</p>
|
|||||||
<b>// Reload, increment, and restore the alloca. This handles the case where
|
<b>// Reload, increment, and restore the alloca. This handles the case where
|
||||||
// the body of the loop mutates the variable.
|
// the body of the loop mutates the variable.
|
||||||
Value *CurVar = Builder.CreateLoad(Alloca);
|
Value *CurVar = Builder.CreateLoad(Alloca);
|
||||||
Value *NextVar = Builder.CreateAdd(CurVar, StepVal, "nextvar");
|
Value *NextVar = Builder.CreateFAdd(CurVar, StepVal, "nextvar");
|
||||||
Builder.CreateStore(NextVar, Alloca);</b>
|
Builder.CreateStore(NextVar, Alloca);</b>
|
||||||
...
|
...
|
||||||
</pre>
|
</pre>
|
||||||
@ -1833,7 +1833,7 @@ Value *ForExprAST::Codegen() {
|
|||||||
// Reload, increment, and restore the alloca. This handles the case where
|
// Reload, increment, and restore the alloca. This handles the case where
|
||||||
// the body of the loop mutates the variable.
|
// the body of the loop mutates the variable.
|
||||||
Value *CurVar = Builder.CreateLoad(Alloca, VarName.c_str());
|
Value *CurVar = Builder.CreateLoad(Alloca, VarName.c_str());
|
||||||
Value *NextVar = Builder.CreateAdd(CurVar, StepVal, "nextvar");
|
Value *NextVar = Builder.CreateFAdd(CurVar, StepVal, "nextvar");
|
||||||
Builder.CreateStore(NextVar, Alloca);
|
Builder.CreateStore(NextVar, Alloca);
|
||||||
|
|
||||||
// Convert condition to a bool by comparing equal to 0.0.
|
// Convert condition to a bool by comparing equal to 0.0.
|
||||||
|
Loading…
Reference in New Issue
Block a user