12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// RUN: %clang_cc1 -ast-print %s -o - | FileCheck %s 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// FIXME: A bug in ParsedAttributes causes the order of the attributes to be 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// reversed. The checks are consequently in the reverse order below. 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// CHECK: #pragma clang loop interleave_count(8) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// CHECK-NEXT: #pragma clang loop vectorize_width(4) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void test(int *List, int Length) { 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int i = 0; 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#pragma clang loop vectorize_width(4) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#pragma clang loop interleave_count(8) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// CHECK-NEXT: while (i < Length) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) while (i < Length) { 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) List[i] = i * 2; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) i++; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// CHECK: #pragma clang loop interleave(disable) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// CHECK-NEXT: #pragma clang loop vectorize(enable) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#pragma clang loop vectorize(enable) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#pragma clang loop interleave(disable) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// CHECK-NEXT: while (i - 1 < Length) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) while (i - 1 < Length) { 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) List[i] = i * 2; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) i++; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// CHECK: #pragma clang loop interleave(enable) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// CHECK-NEXT: #pragma clang loop vectorize(disable) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#pragma clang loop vectorize(disable) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#pragma clang loop interleave(enable) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// CHECK-NEXT: while (i - 2 < Length) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) while (i - 2 < Length) { 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) List[i] = i * 2; 38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) i++; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)