1/* 2 Copyright (c) 2024 Shenzhen Kaihong Digital Industry Development Co., Ltd. 3 Licensed under the Apache License, Version 2.0 (the "License"); 4 you may not use this file except in compliance with the License. 5 You may obtain a copy of the License at 6 * 7 http://www.apache.org/licenses/LICENSE-2.0 8 * 9 Unless required by applicable law or agreed to in writing, software 10 distributed under the License is distributed on an "AS IS" BASIS, 11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 See the License for the specific language governing permissions and 13 limitations under the License. 14 * 15 Copyright (c) 2024 Huawei Device Co., Ltd. 16 Licensed under the Apache License, Version 2.0 (the "License"); 17 you may not use this file except in compliance with the License. 18 You may obtain a copy of the License at 19 * 20 http://www.apache.org/licenses/LICENSE-2.0 21 * 22 Unless required by applicable law or agreed to in writing, software 23 distributed under the License is distributed on an "AS IS" BASIS, 24 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 25 See the License for the specific language governing permissions and 26 limitations under the License. 27 */ 28 29function sccpFoldGreater() 30{ 31 let a = 2; 32 let b = 1; 33 let intMaxVal = 2147483647; 34 print(a > b); 35 a = intMaxVal; 36 print(a > b); 37 38 a = true; 39 b = false; 40 print(a > b); 41 42 a = 2.1; 43 b = 2.2; 44 print(a > b); 45} 46 47function sccpFoldGreaterNoEffect() 48{ 49 let a = 2; 50 let b = 1.1; 51 let intMaxVal = 2147483647; 52 print(a > b); 53 b = false; 54 print(a > b); 55 56 a = 1.1; 57 b = 1; 58 print(a > b); 59 60 b = true; 61 print(a > b); 62 b = intMaxVal; 63 print(a > b); 64 65 a = true; 66 print(a > b); 67 b = 1.1; 68 print(a > b); 69 b = 1; 70 print(a > b); 71} 72 73function sccpFoldGreaterEq() 74{ 75 let a = 2; 76 let b = 1; 77 let intMaxVal = 2147483647; 78 print(a >= b); 79 a = intMaxVal; 80 print(a >= b); 81 a = 1; 82 print(a >= b); 83 84 a = true; 85 b = false; 86 print(a >= b); 87 b = true; 88 print(a >= b); 89 90 a = 2.1; 91 b = 2.2; 92 print(a >= b); 93 b = 2.1; 94 print(a >= b); 95} 96 97function sccpFoldGreaterEqNoEffect() 98{ 99 let a = 2; 100 let b = 1.1; 101 let intMaxVal = 2147483647; 102 print(a >= b); 103 b = false; 104 print(a >= b); 105 106 a = 1.1; 107 b = 1; 108 print(a >= b); 109 b = true; 110 print(a >= b); 111 b = intMaxVal; 112 print(a >= b); 113 114 a = true; 115 print(a >= b); 116 b = 1.1; 117 print(a >= b); 118 b = 1; 119 print(a >= b); 120} 121 122function sccpFoldLess() 123{ 124 let a = 2; 125 let b = 1; 126 let intMaxVal = 2147483647; 127 print(a < b); 128 a = intMaxVal; 129 print(a < b); 130 131 a = true; 132 b = false; 133 print(a < b); 134 135 a = 2.1; 136 b = 2.2; 137 print(a < b); 138} 139 140function sccpFoldLessNoEffect() 141{ 142 let a = 2; 143 let b = 1.1; 144 let intMaxVal = 2147483647; 145 print(a < b); 146 b = false; 147 print(a < b); 148 149 a = 1.1; 150 b = 1; 151 print(a < b); 152 b = true; 153 print(a < b); 154 b = intMaxVal; 155 print(a < b); 156 157 a = true; 158 print(a < b); 159 b = 1.1; 160 print(a < b); 161 b = 1; 162 print(a < b); 163} 164 165function sccpFoldLessEq() 166{ 167 let a = 2; 168 let b = 1; 169 let intMaxVal = 2147483647; 170 print(a <= b); 171 a = intMaxVal; 172 print(a <= b); 173 a = 1; 174 print(a <= b); 175 176 a = false; 177 b = true; 178 print(a <= b); 179 b = false; 180 print(a <= b); 181 182 a = 3.1; 183 b = 3.2; 184 print(a <= b); 185 b = 3.1; 186 print(a <= b); 187} 188 189function sccpFoldLessEqNoEffect() 190{ 191 let a = 2; 192 let b = 1.1; 193 let intMaxVal = 2147483647; 194 print(a <= b); 195 b = false; 196 print(a <= b); 197 198 a = 1.1; 199 b = 1; 200 print(a <= b); 201 b = true; 202 print(a <= b); 203 b = intMaxVal; 204 print(a <= b); 205 206 a = true; 207 print(a <= b); 208 b = 1.1; 209 print(a <= b); 210 b = 1; 211 print(a < b); 212} 213 214function sccpFoldEq() 215{ 216 let a = 1; 217 let b = 1; 218 let intMaxVal = 2147483647; 219 print(a == b); 220 print(a == intMaxVal); 221 222 a = true; 223 b = true; 224 print(a == b); 225 226 a = 3.2; 227 b = 3.3; 228 print(a == b); 229} 230 231function sccpFoldEqNoEffect() 232{ 233 let a = 2; 234 let b = 1.1; 235 let intMaxVal = 2147483647; 236 print(a == b); 237 b = false; 238 print(a == b); 239 240 a = 1.1; 241 b = 1; 242 print(a == b); 243 b = true; 244 print(a == b); 245 b = intMaxVal; 246 print(a == b); 247 248 a = true; 249 print(a == b); 250 b = 1.1; 251 print(a == b); 252 b = 1; 253 print(a == b); 254} 255 256function sccpFoldStrictEq() 257{ 258 let a = 1; 259 let b = 1; 260 let intMaxVal = 2147483647; 261 print(a === b); 262 print(a === intMaxVal); 263 264 a = true; 265 b = true; 266 print(a === b); 267 268 a = 3.2; 269 b = 3.3; 270 print(a === b); 271} 272 273function sccpFoldStrictEqNoEffect() 274{ 275 let a = 2; 276 let b = 1.1; 277 let intMaxVal = 2147483647; 278 print(a === b); 279 b = false; 280 print(a === b); 281 282 a = 1.1; 283 b = 1; 284 print(a === b); 285 b = true; 286 print(a === b); 287 b = intMaxVal; 288 print(a === b); 289 290 a = true; 291 print(a === b); 292 b = 1.1; 293 print(a === b); 294 b = 1; 295 print(a === b); 296} 297 298function sccpFoldNotEq() 299{ 300 let a = 1; 301 let b = 1; 302 let intMaxVal = 2147483647; 303 print(a != b); 304 print(a != intMaxVal); 305 306 a = true; 307 b = true; 308 print(a != b); 309 310 a = 3.2; 311 b = 3.3; 312 print(a != b); 313} 314 315function sccpFoldNotEqNoEffect() 316{ 317 let a = 2; 318 let b = 1.1; 319 let intMaxVal = 2147483647; 320 print(a != b); 321 b = false; 322 print(a != b); 323 324 a = 1.1; 325 b = 1; 326 print(a != b); 327 b = true; 328 print(a != b); 329 b = intMaxVal; 330 print(a != b); 331 332 a = true; 333 print(a != b); 334 b = 1.1; 335 print(a != b); 336 b = 1; 337 print(a != b); 338} 339 340function sccpFoldStrictNotEq() 341{ 342 let a = 1; 343 let b = 1; 344 let intMaxVal = 2147483647; 345 print(a !== b); 346 print(a !== intMaxVal); 347 348 a = true; 349 b = true; 350 print(a !== b); 351 352 a = 3.2; 353 b = 3.3; 354 print(a !== b); 355 356} 357 358function sccpFoldStrictNotEqNoEffect() 359{ 360 let a = 2; 361 let b = 1.1; 362 let intMaxVal = 2147483647; 363 print(a !== b); 364 b = false; 365 print(a !== b); 366 367 a = 1.1; 368 b = 1; 369 print(a !== b); 370 b = true; 371 print(a !== b); 372 b = intMaxVal; 373 print(a !== b); 374 375 a = true; 376 print(a !== b); 377 b = 1.1; 378 print(a !== b); 379 b = 1; 380 print(a !== b); 381} 382 383function sccpNoEffectNanWithInt() { 384 let a = NaN; 385 let intVal = 1; 386 let intMaxVal = 2147483647; 387 let intMinVal = -2147483648; 388 print(a === intVal); 389 print(a != intVal); 390 print(a !== intVal); 391 print(a > intVal); 392 print(a >= intVal); 393 print(b >= intVal); 394 print(b > intVal); 395 396 // Check NAN with int min. 397 print(a === intMinVal); 398 print(a !== intMinVal); 399 print(a > intMinVal); 400 print(a >= intMinVal); 401 print(a < intMinVal); 402 print(a <= intMinVal); 403 print(a == intMinVal); 404 print(a != intMinVal); 405 406 // Check NAN with int maxVal. 407 print(a === intMaxVal); 408 print(a !== intMaxVal); 409 print(a > intMaxVal); 410 print(a >= intMaxVal); 411 print(a < intMaxVal); 412 print(a <= intMaxVal); 413 print(a == intMaxVal); 414 print(a != intMaxVal); 415} 416 417function sccpNoEffectNanWithBoolAndDouble() { 418 let a = NaN; 419 let doubleVal = 1.1; 420 let trueVal = true; 421 let falseVal = false; 422 423 // Check NAN with double val. 424 print(a === doubleVal); 425 print(a !== doubleVal); 426 print(a > doubleVal); 427 print(a >= doubleVal); 428 print(a < doubleVal); 429 print(a <= doubleVal); 430 print(a == doubleVal); 431 print(a != doubleVal); 432 433 // Check NAN with true. 434 print(a === trueVal); 435 print(a !== trueVal); 436 print(a > trueVal); 437 print(a >= trueVal); 438 print(a < trueVal); 439 print(a <= trueVal); 440 print(a == trueVal); 441 print(a != trueVal); 442 443 // Check NAN with false. 444 print(a === falseVal); 445 print(a !== falseVal); 446 print(a > falseVal); 447 print(a >= falseVal); 448 print(a < falseVal); 449 print(a <= falseVal); 450 print(a == falseVal); 451 print(a != falseVal); 452} 453 454function sccpNoEffectInfinityWithInt() { 455 let a = Infinity; 456 let intVal = 1; 457 let intMaxVal = 2147483647; 458 let intMinVal = -2147483648; 459 460 print(a === intVal); 461 print(a != intVal); 462 print(a !== intVal); 463 print(a > intVal); 464 print(a >= intVal); 465 print(b >= intVal); 466 print(b > intVal); 467 468 // Check Infinity with int min. 469 print(a === intMinVal); 470 print(a !== intMinVal); 471 print(a > intMinVal); 472 print(a >= intMinVal); 473 print(a < intMinVal); 474 print(a <= intMinVal); 475 print(a == intMinVal); 476 print(a != intMinVal); 477 478 // Check Infinity with int maxVal. 479 print(a === intMaxVal); 480 print(a !== intMaxVal); 481 print(a > intMaxVal); 482 print(a >= intMaxVal); 483 print(a < intMaxVal); 484 print(a <= intMaxVal); 485 print(a == intMaxVal); 486 print(a != intMaxVal); 487} 488 489function sccpNoEffectInfinityWithBoolAndDouble() { 490 let doubleVal = 1.1; 491 let trueVal = true; 492 let falseVal = false; 493 494 // Check Infinity with double val. 495 print(a === doubleVal); 496 print(a !== doubleVal); 497 print(a > doubleVal); 498 print(a >= doubleVal); 499 print(a < doubleVal); 500 print(a <= doubleVal); 501 print(a == doubleVal); 502 print(a != doubleVal); 503 504 // Check Infinity with true. 505 print(a === trueVal); 506 print(a !== trueVal); 507 print(a > trueVal); 508 print(a >= trueVal); 509 print(a < trueVal); 510 print(a <= trueVal); 511 print(a == trueVal); 512 print(a != trueVal); 513 514 // Check Infinity with false. 515 print(a === falseVal); 516 print(a !== falseVal); 517 print(a > falseVal); 518 print(a >= falseVal); 519 print(a < falseVal); 520 print(a <= falseVal); 521 print(a == falseVal); 522 print(a != falseVal); 523} 524 525function sccpNoEffectArithmetic() { 526 let a = 1; 527 let b = 2; 528 print(a * b); 529 print(a + b); 530 print(a - b); 531 print(a / b); 532 print(a >> b); 533 print(a << b); 534 print(a >>> b); 535 536 a = 1.2; 537 b = 2.2; 538 print(a * b); 539 print(a + b); 540 print(a - b); 541 print(a / b); 542 print(a >> b); 543 print(a << b); 544 print(a >>> b); 545} 546 547function sccpIfCheck() { 548 if (true) { 549 print(true); 550 } 551 552 if (false) { 553 print(false); 554 } 555 let a = 1; 556 let b = 2; 557 if (a < b) { 558 print(true); 559 } 560 561 if (a > b) { 562 print(true); 563 } 564} 565 566function sccpPhi(a) { 567 let b = a; 568 if (a) { 569 b = true; 570 } else { 571 b = true; 572 } 573 print(b); 574} 575 576function sccpPhi2() 577{ 578 let a = 1; 579 if (true) { 580 a = 2; 581 } else { 582 a = 1; 583 } 584 print(a); 585} 586 587function sccpPhiNoEffect(a) { 588 let b = a; 589 if (a){ 590 b = true; 591 } else { 592 b = false; 593 } 594 print(b); 595}