add_007.phpt 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. --TEST--
  2. JIT ADD: 007 Addition 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. $j = -31; // Cannot be encoded into imm12 field
  26. $a = $a + $b;
  27. $a = $a + $c;
  28. $a = $a + $d;
  29. $a = $a + $e;
  30. $a = $a + $f;
  31. $a = $a + $g;
  32. $a = $a + $h;
  33. $a = $a + $i;
  34. $a = $a + $j;
  35. var_dump($a);
  36. }
  37. function bar($a) {
  38. $b = 0;
  39. $c = 31;
  40. $d = 0xfff;
  41. $e = 0x1000;
  42. $f = 0xfff000;
  43. $g = 0xff001; // Cannot be encoded into imm12 field
  44. $h = 0x1000000; // Cannot be encoded into imm12 field
  45. $i = 0xf12345678; // Cannot be encoded into imm12 field
  46. $j = -31; // Cannot be encoded into imm12 field
  47. $a = $a - $b;
  48. $a = $a - $c;
  49. $a = $a - $d;
  50. $a = $a - $e;
  51. $a = $a - $f;
  52. $a = $a - $g;
  53. $a = $a - $h;
  54. $a = $a - $i;
  55. $a = $a - $j;
  56. var_dump($a);
  57. }
  58. foo(42);
  59. bar(0x1f12345678);
  60. ?>
  61. --EXPECT--
  62. int(64764532386)
  63. int(68684873728)