cmp_005.phpt 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. --TEST--
  2. JIT CMP: 005 Comparisons with immediate values
  3. --INI--
  4. opcache.enable=1
  5. opcache.enable_cli=1
  6. opcache.file_update_protection=0
  7. opcache.jit_buffer_size=1M
  8. opcache.protect_memory=1
  9. --EXTENSIONS--
  10. opcache
  11. --SKIPIF--
  12. <?php
  13. if (PHP_INT_SIZE != 8) die("skip: 64-bit only"); ?>
  14. --FILE--
  15. <?php
  16. function foo($a) {
  17. $b = 0;
  18. $c = 31;
  19. $d = 0xfff;
  20. $e = 0x1000;
  21. $f = 0xfff000;
  22. $g = 0xff001; // Cannot be encoded into imm12 field
  23. $h = 0x1000000; // Cannot be encoded into imm12 field
  24. $i = 0xf12345678; // Cannot be encoded into imm12 field
  25. var_dump($a > $b ? 1 : 0);
  26. var_dump($a > $c ? 1 : 0);
  27. var_dump($a > $d ? 1 : 0);
  28. var_dump($a > $e ? 1 : 0);
  29. var_dump($a > $f ? 1 : 0);
  30. var_dump($a > $g ? 1 : 0);
  31. var_dump($a > $h ? 1 : 0);
  32. var_dump($a > $i ? 1 : 0);
  33. }
  34. function bar($a) {
  35. $b = 0;
  36. $c = -31;
  37. $d = -4095; // negation of 0xfff
  38. $e = -4096; // negation of 0x1000
  39. $f = -16773120; // negation of 0xfff000
  40. $g = -1044481; // negation of 0xff001
  41. $h = -16777216; // negation of 0x1000000
  42. $i = -64729929336; // negation of 0xf12345678
  43. var_dump($a > $b ? 1 : 0);
  44. var_dump($a > $c ? 1 : 0);
  45. var_dump($a > $d ? 1 : 0);
  46. var_dump($a > $e ? 1 : 0);
  47. var_dump($a > $f ? 1 : 0);
  48. var_dump($a > $g ? 1 : 0);
  49. var_dump($a > $h ? 1 : 0);
  50. var_dump($a > $i ? 1 : 0);
  51. }
  52. foo(42);
  53. bar(42);
  54. ?>
  55. --EXPECT--
  56. int(1)
  57. int(1)
  58. int(0)
  59. int(0)
  60. int(0)
  61. int(0)
  62. int(0)
  63. int(0)
  64. int(1)
  65. int(1)
  66. int(1)
  67. int(1)
  68. int(1)
  69. int(1)
  70. int(1)
  71. int(1)