Skip to content

Commit

Permalink
it can be bool type
Browse files Browse the repository at this point in the history
Addresses #647.
  • Loading branch information
PeiMu committed Mar 10, 2023
1 parent 3807003 commit dc24455
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 0 deletions.
46 changes: 46 additions & 0 deletions analysis/statistics/f883499252bf6ae9918b05319c0c7e5268821a1f.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@

changeset: 1448:f883499252bf6ae9918b05319c0c7e5268821a1f
char kNewtonVersion[] = "0.3-alpha-1448 (f883499252bf6ae9918b05319c0c7e5268821a1f) (build 03-10-2023-13:[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)




36 changes: 36 additions & 0 deletions src/newton/newton-irPass-LLVMIR-rangeAnalysis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1978,6 +1978,10 @@ rangeAnalysis(State * N, llvm::Function & llvmIrFunction, BoundInfo * boundInfo,
{
switch (bitWidth)
{
case 1:
lowerBound = static_cast<double>(static_cast<bool>(vrRangeIt->second.first));
upperBound = static_cast<double>(static_cast<bool>(vrRangeIt->second.second));
break;
case 8:
lowerBound = static_cast<double>(static_cast<uint8_t>(vrRangeIt->second.first));
upperBound = static_cast<double>(static_cast<uint8_t>(vrRangeIt->second.second));
Expand Down Expand Up @@ -2048,6 +2052,10 @@ rangeAnalysis(State * N, llvm::Function & llvmIrFunction, BoundInfo * boundInfo,
double lowerBound, upperBound;
switch (bitWidth)
{
case 1:
lowerBound = constValue << (static_cast<bool>(vrRangeIt->second.first));
upperBound = constValue << (static_cast<bool>(vrRangeIt->second.second));
break;
case 8:
lowerBound = constValue << (static_cast<uint8_t>(vrRangeIt->second.first));
upperBound = constValue << (static_cast<uint8_t>(vrRangeIt->second.second));
Expand Down Expand Up @@ -2092,6 +2100,10 @@ rangeAnalysis(State * N, llvm::Function & llvmIrFunction, BoundInfo * boundInfo,
double resMin = 0, resMax = 0;
switch (bitWidth)
{
case 1:
resMin = static_cast<bool>(vrRangeIt->second.first) << constValue;
resMax = static_cast<bool>(vrRangeIt->second.second) << constValue;
break;
case 8:
resMin = static_cast<uint8_t>(vrRangeIt->second.first) << constValue;
resMax = static_cast<uint8_t>(vrRangeIt->second.second) << constValue;
Expand Down Expand Up @@ -2210,6 +2222,10 @@ rangeAnalysis(State * N, llvm::Function & llvmIrFunction, BoundInfo * boundInfo,
double lowerBound, upperBound;
switch (bitWidth)
{
case 1:
lowerBound = constValue >> (static_cast<bool>(vrRangeIt->second.first));
upperBound = constValue >> (static_cast<bool>(vrRangeIt->second.second));
break;
case 8:
lowerBound = constValue >> (static_cast<uint8_t>(vrRangeIt->second.first));
upperBound = constValue >> (static_cast<uint8_t>(vrRangeIt->second.second));
Expand Down Expand Up @@ -2254,6 +2270,10 @@ rangeAnalysis(State * N, llvm::Function & llvmIrFunction, BoundInfo * boundInfo,
double resMin = 0, resMax = 0;
switch (bitWidth)
{
case 1:
resMin = static_cast<bool>(vrRangeIt->second.first) >> constValue;
resMax = static_cast<bool>(vrRangeIt->second.second) >> constValue;
break;
case 8:
resMin = static_cast<int8_t>(vrRangeIt->second.first) >> constValue;
resMax = static_cast<int8_t>(vrRangeIt->second.second) >> constValue;
Expand Down Expand Up @@ -2321,6 +2341,10 @@ rangeAnalysis(State * N, llvm::Function & llvmIrFunction, BoundInfo * boundInfo,
{
switch (bitWidth)
{
case 1:
leftMin = static_cast<double>(static_cast<bool>(vrRangeIt->second.first));
leftMax = static_cast<double>(static_cast<bool>(vrRangeIt->second.second));
break;
case 8:
leftMin = static_cast<double>(static_cast<uint8_t>(vrRangeIt->second.first));
leftMax = static_cast<double>(static_cast<uint8_t>(vrRangeIt->second.second));
Expand Down Expand Up @@ -2353,6 +2377,10 @@ rangeAnalysis(State * N, llvm::Function & llvmIrFunction, BoundInfo * boundInfo,
double rightMin = 0, rightMax = 0;
switch (bitWidth)
{
case 1:
rightMin = static_cast<bool>(vrRangeIt->second.first);
rightMax = static_cast<bool>(vrRangeIt->second.second);
break;
case 8:
rightMin = static_cast<uint8_t>(vrRangeIt->second.first);
rightMax = static_cast<uint8_t>(vrRangeIt->second.second);
Expand Down Expand Up @@ -2410,6 +2438,10 @@ rangeAnalysis(State * N, llvm::Function & llvmIrFunction, BoundInfo * boundInfo,
double lowerBound, upperBound;
switch (bitWidth)
{
case 1:
lowerBound = constValue >> (static_cast<bool>(vrRangeIt->second.first));
upperBound = constValue >> (static_cast<bool>(vrRangeIt->second.second));
break;
case 8:
lowerBound = constValue >> (static_cast<uint8_t>(vrRangeIt->second.first));
upperBound = constValue >> (static_cast<uint8_t>(vrRangeIt->second.second));
Expand Down Expand Up @@ -2454,6 +2486,10 @@ rangeAnalysis(State * N, llvm::Function & llvmIrFunction, BoundInfo * boundInfo,
double resMin = 0, resMax = 0;
switch (bitWidth)
{
case 1:
resMin = (static_cast<bool>(vrRangeIt->second.first)) >> constValue;
resMax = (static_cast<bool>(vrRangeIt->second.second)) >> constValue;
break;
case 8:
resMin = (static_cast<uint8_t>(vrRangeIt->second.first)) >> constValue;
resMax = (static_cast<uint8_t>(vrRangeIt->second.second)) >> constValue;
Expand Down

0 comments on commit dc24455

Please sign in to comment.