John Stiles | 733fd74 | 2021-09-04 14:44:19 -0400 | [diff] [blame] | 1 | uniform half4 colorRed, colorGreen; |
| 2 | |
Brian Osman | 3d81fdc | 2021-01-13 17:17:56 -0500 | [diff] [blame] | 3 | // Should return 5 |
Brian Osman | 448b2d5 | 2021-09-23 11:36:15 -0400 | [diff] [blame] | 4 | const int kZero = 0; |
Brian Osman | 3d81fdc | 2021-01-13 17:17:56 -0500 | [diff] [blame] | 5 | int return_loop() { |
Brian Osman | 448b2d5 | 2021-09-23 11:36:15 -0400 | [diff] [blame] | 6 | for (int i = kZero; i < 10; ++i) { |
Brian Osman | 3d81fdc | 2021-01-13 17:17:56 -0500 | [diff] [blame] | 7 | if (i == 5) { return i; } |
| 8 | } |
| 9 | return 0; |
| 10 | } |
| 11 | |
| 12 | // Should return 35 |
Brian Osman | 448b2d5 | 2021-09-23 11:36:15 -0400 | [diff] [blame] | 13 | const int kTen = kZero + 10; |
Brian Osman | 3d81fdc | 2021-01-13 17:17:56 -0500 | [diff] [blame] | 14 | int continue_loop() { |
| 15 | int sum = 0; |
Brian Osman | 448b2d5 | 2021-09-23 11:36:15 -0400 | [diff] [blame] | 16 | for (int i = 0; i < kTen; ++i) { |
Brian Osman | 3d81fdc | 2021-01-13 17:17:56 -0500 | [diff] [blame] | 17 | if (i < 5) { continue; } |
| 18 | sum += i; |
| 19 | } |
| 20 | return sum; |
| 21 | } |
| 22 | |
| 23 | // Should return 15 |
| 24 | int break_loop() { |
| 25 | int sum = 0; |
Brian Osman | 448b2d5 | 2021-09-23 11:36:15 -0400 | [diff] [blame] | 26 | const int kOne = 1; |
| 27 | for (int i = 0; i < 10; i += kOne) { |
Brian Osman | 3d81fdc | 2021-01-13 17:17:56 -0500 | [diff] [blame] | 28 | if (i > 5) { break; } |
| 29 | sum += i; |
| 30 | } |
| 31 | return sum; |
| 32 | } |
| 33 | |
John Stiles | 733fd74 | 2021-09-04 14:44:19 -0400 | [diff] [blame] | 34 | bool 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 | |
| 46 | bool 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 | |
| 58 | bool 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 | |
| 70 | bool 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 | |
| 82 | bool 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 | |
| 93 | bool 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 Osman | 552fcb9 | 2021-04-28 17:41:57 -0400 | [diff] [blame] | 104 | half4 main(float2 xy) { |
John Stiles | 733fd74 | 2021-09-04 14:44:19 -0400 | [diff] [blame] | 105 | 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 Osman | 3d81fdc | 2021-01-13 17:17:56 -0500 | [diff] [blame] | 109 | } |