Skip to content

Commit

Permalink
implement fneg
Browse files Browse the repository at this point in the history
Addresses #653.
  • Loading branch information
PeiMu committed Jun 14, 2023
1 parent d2cf16c commit b57e501
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 8 deletions.
46 changes: 46 additions & 0 deletions analysis/statistics/49c88625fb70a04406eb65eaa2d91cc5be67ec18.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@

changeset: 1507:49c88625fb70a04406eb65eaa2d91cc5be67ec18
char kNewtonVersion[] = "0.3-alpha-1507 (49c88625fb70a04406eb65eaa2d91cc5be67ec18) (build 06-14-2023-16:[email protected]_64)";
\n./src/noisy/noisy-linux-EN -O0 applications/noisy/helloWorld.n -s
\n./src/newton/newton-linux-EN -v 0 -eP applications/newton/invariants/ViolinWithTemperatureDependence-pigroups.nt

Informational Report:
---------------------
Invariant "ViolinWithTemperatureDependenceForPiGroups" has 2 unique kernels, each with 2 column(s)...

Kernel 0 is a valid kernel:

1 1
-0.5 -0
1 0
0.5 0
0 -1
-0 -1


The ordering of parameters is: P1 P0 P3 P2 P4 P5

Pi group 0, Pi 0 is: P0^(-0.5) P1^( 1) P2^(0.5) P3^( 1) P4^( 0) P5^(-0)

Pi group 0, Pi 1 is: P0^(-0) P1^( 1) P2^( 0) P3^( 0) P4^(-1) P5^(-1)


Kernel 1 is a valid kernel:

1 0
-0.5 1
1 -2
0.5 -1
-0 -2
0 -2


The ordering of parameters is: P1 P0 P3 P2 P4 P5

Pi group 1, Pi 0 is: P0^(-0.5) P1^( 1) P2^(0.5) P3^( 1) P4^(-0) P5^( 0)

Pi group 1, Pi 1 is: P0^( 1) P1^( 0) P2^(-1) P3^(-2) P4^(-2) P5^(-2)




21 changes: 13 additions & 8 deletions src/newton/newton-irPass-LLVMIR-quantization.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,15 @@ void quantizeSimpleFPInstruction(Instruction * inInstruction, Type * quantizedTy
fcmp_inst->getOperand(0), fcmp_inst->getOperand(1));
break;
}
/*
* Change fneg(a) to `0-a`.
* */
case Instruction::FNeg:
{
auto constZero = ConstantInt::get(quantizedType, 0, true);;
newInst = Builder.CreateSub(constZero, inInstruction->getOperand(0));
break;
}
default:
break;
}
Expand Down Expand Up @@ -337,14 +346,8 @@ irPassLLVMIRAutoQuantization(State * N, llvm::Function & llvmIrFunction)
case Instruction::FDiv:
{
simplifyConstant(llvmIrInstruction, quantizedType);
}


/*
* Change fneg(a) to `0-a`.
* */
case Instruction::FNeg:
break;
}

/*
* If either one of the operands is a constant value, quantize it,
Expand All @@ -356,7 +359,9 @@ irPassLLVMIRAutoQuantization(State * N, llvm::Function & llvmIrFunction)
case Instruction::FRem:
{
quantizeConstant(llvmIrInstruction, quantizedType);
setQuantizedType(llvmIrInstruction, quantizedType);
}
case Instruction::FNeg:
{
quantizeSimpleFPInstruction(llvmIrInstruction, quantizedType);
break;
}
Expand Down

0 comments on commit b57e501

Please sign in to comment.