blob: 1a9d725f2755e42193ddf4cf5936284898522547 [file] [log] [blame]
John Stiles733fd742021-09-04 14:44:19 -04001uniform half4 colorRed, colorGreen;
2
Brian Osman3d81fdc2021-01-13 17:17:56 -05003// Should return 5
Brian Osman448b2d52021-09-23 11:36:15 -04004const int kZero = 0;
Brian Osman3d81fdc2021-01-13 17:17:56 -05005int return_loop() {
Brian Osman448b2d52021-09-23 11:36:15 -04006 for (int i = kZero; i < 10; ++i) {
Brian Osman3d81fdc2021-01-13 17:17:56 -05007 if (i == 5) { return i; }
8 }
9 return 0;
10}
11
12// Should return 35
Brian Osman448b2d52021-09-23 11:36:15 -040013const int kTen = kZero + 10;
Brian Osman3d81fdc2021-01-13 17:17:56 -050014int continue_loop() {
15 int sum = 0;
Brian Osman448b2d52021-09-23 11:36:15 -040016 for (int i = 0; i < kTen; ++i) {
Brian Osman3d81fdc2021-01-13 17:17:56 -050017 if (i < 5) { continue; }
18 sum += i;
19 }
20 return sum;
21}
22
23// Should return 15
24int break_loop() {
25 int sum = 0;
Brian Osman448b2d52021-09-23 11:36:15 -040026 const int kOne = 1;
27 for (int i = 0; i < 10; i += kOne) {
Brian Osman3d81fdc2021-01-13 17:17:56 -050028 if (i > 5) { break; }
29 sum += i;
30 }
31 return sum;
32}
33
John Stiles733fd742021-09-04 14:44:19 -040034bool loop_operator_le() {
35 // These loops are inside-out and execute zero times.
36 for (int i = 3; i <= 1; ++i) { return false; }
37 for (int i = 3; i <= 1; --i) { return false; }
38
39 int4 result = int4(9);
40 for (int i = 1; i <= 3; ++i) {
41 result = int4(result.yzw, i);
42 }
43 return result == int4(9, 1, 2, 3);
44}
45
46bool loop_operator_lt() {
47 // These loops are inside-out and execute zero times.
48 for (int i = 4; i < 1; ++i) { return false; }
49 for (int i = 4; i < 1; --i) { return false; }
50
51 int4 result = int4(9);
52 for (int i = 1; i < 4; ++i) {
53 result = int4(result.yzw, i);
54 }
55 return result == int4(9, 1, 2, 3);
56}
57
58bool loop_operator_ge() {
59 // These loops are inside-out and execute zero times.
60 for (int i = 1; i >= 3; ++i) { return false; }
61 for (int i = 1; i >= 3; --i) { return false; }
62
63 int4 result = int4(9);
64 for (int i = 3; i >= 1; --i) {
65 result = int4(result.yzw, i);
66 }
67 return result == int4(9, 3, 2, 1);
68}
69
70bool loop_operator_gt() {
71 // These loops are inside-out and execute zero times.
72 for (int i = 0; i > 3; ++i) { return false; }
73 for (int i = 0; i > 3; --i) { return false; }
74
75 int4 result = int4(9);
76 for (int i = 3; i > 0; --i) {
77 result = int4(result.yzw, i);
78 }
79 return result == int4(9, 3, 2, 1);
80}
81
82bool loop_operator_ne() {
83 // This loop executes zero times.
84 for (int i = 1; i != 1; ++i) { return false; }
85
86 int4 result = int4(9);
87 for (int i = 1; i != 4; ++i) {
88 result = int4(result.yzw, i);
89 }
90 return result == int4(9, 1, 2, 3);
91}
92
93bool loop_operator_eq() {
94 // This loop executes zero times.
95 for (int i = 1; i == 2; ++i) { return false; }
96
97 int4 result = int4(9);
98 for (int i = 1; i == 1; ++i) {
99 result = int4(result.yzw, i);
100 }
101 return result == int4(9, 9, 9, 1);
102}
103
Brian Osman552fcb92021-04-28 17:41:57 -0400104half4 main(float2 xy) {
John Stiles733fd742021-09-04 14:44:19 -0400105 return (return_loop() == 5 && continue_loop() == 35 && break_loop() == 15 &&
106 loop_operator_le() && loop_operator_lt() &&
107 loop_operator_ge() && loop_operator_gt() &&
108 loop_operator_eq() && loop_operator_ne()) ? colorGreen : colorRed;
Brian Osman3d81fdc2021-01-13 17:17:56 -0500109}