Ton

Форк
0
/
allow_post_modification.fc 
78 строк · 2.5 Кб
1
#pragma allow-post-modification;
2

3
forall X -> tuple unsafe_tuple(X x) asm "NOP";
4

5
(int, int) inc(int x, int y) {
6
  return (x + y, y * 10);
7
}
8

9
(int, int, int, int, int, int, int) test_return(int x) method_id(11) {
10
  return (x, x~inc(x / 20), x, x = x * 2, x, x += 1, x);
11
}
12

13
(int, int, int, int, int, int, int) test_assign(int x) method_id(12) {
14
  (int x1, int x2, int x3, int x4, int x5, int x6, int x7) = (x, x~inc(x / 20), x, x = x * 2, x, x += 1, x);
15
  return (x1, x2, x3, x4, x5, x6, x7);
16
}
17

18
tuple test_tuple(int x) method_id(13) {
19
  tuple t = unsafe_tuple([x, x~inc(x / 20), x, x = x * 2, x, x += 1, x]);
20
  return t;
21
}
22

23
(int, int, int, int, int, int, int) test_tuple_assign(int x) method_id(14) {
24
  [int x1, int x2, int x3, int x4, int x5, int x6, int x7] = [x, x~inc(x / 20), x, x = x * 2, x, x += 1, x];
25
  return (x1, x2, x3, x4, x5, x6, x7);
26
}
27

28
(int, int, int, int, int, int, int) foo1(int x1, int x2, int x3, int x4, int x5, int x6, int x7) {
29
  return (x1, x2, x3, x4, x5, x6, x7);
30
}
31

32
(int, int, int, int, int, int, int) test_call_1(int x) method_id(15) {
33
  return foo1(x, x~inc(x / 20), x, x = x * 2, x, x += 1, x);
34
}
35

36
(int, int, int, int, int, int, int) foo2(int x1, int x2, (int, int, int, int) x3456, int x7) {
37
  (int x3, int x4, int x5, int x6) = x3456;
38
  return (x1, x2, x3, x4, x5, x6, x7);
39
}
40

41
(int, int, int, int, int, int, int) test_call_2(int x) method_id(16) {
42
  return foo2(x, x~inc(x / 20), (x, x = x * 2, x, x += 1), x);
43
}
44

45
(int, int, int, int, int, int, int) asm_func(int x1, int x2, int x3, int x4, int x5, int x6, int x7) asm
46
        (x4 x5 x6 x7 x1 x2 x3 -> 0 1 2 3 4 5 6) "NOP";
47

48
(int, int, int, int, int, int, int) test_call_asm_old(int x) method_id(17) {
49
  return asm_func(x, x += 1, x, x, x~inc(x / 20), x, x = x * 2);
50
}
51

52
#pragma compute-asm-ltr;
53

54
(int, int, int, int, int, int, int) test_call_asm_new(int x) method_id(18) {
55
  return asm_func(x, x~inc(x / 20), x, x = x * 2, x, x += 1, x);
56
}
57

58
global int xx;
59
(int, int, int, int, int, int, int) test_global(int x) method_id(19) {
60
  xx = x;
61
  return (xx, xx~inc(xx / 20), xx, xx = xx * 2, xx, xx += 1, xx);
62
}
63

64
() main() {
65
}
66

67
{-
68
    method_id | in  | out
69
TESTCASE | 11 | 100 | 100 50 105 210 210 211 211
70
TESTCASE | 12 | 100 | 100 50 105 210 210 211 211
71
TESTCASE | 13 | 100 | [ 100 50 105 210 210 211 211 ]
72
TESTCASE | 14 | 100 | 100 50 105 210 210 211 211
73
TESTCASE | 15 | 100 | 100 50 105 210 210 211 211
74
TESTCASE | 16 | 100 | 100 50 105 210 210 211 211
75
TESTCASE | 17 | 100 | 100 50 105 210 210 211 211
76
TESTCASE | 18 | 100 | 210 210 211 211 100 50 105
77
TESTCASE | 19 | 100 | 100 50 105 210 210 211 211
78
-}
79

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.