void init_locations(int L[]) {
  int j;
  for (j = 0; j < (21 * 21); j++)
    L[j] = ((21 + 3) + (j) + 2 * ((j) / 21));
}


x86 assembly (clang, -O0):
<init_locations>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0xc(%rbp)
cmpl   $0x1b9,-0xc(%rbp)
jge    1151 <init_locations+0x51>
mov    -0xc(%rbp),%eax
add    $0x18,%eax
mov    %eax,-0x10(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x15,%ecx
cltd
idiv   %ecx
mov    -0x10(%rbp),%edx
shl    $0x1,%eax
add    %eax,%edx
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    110f <init_locations+0xf>
pop    %rbp
ret

x86 assembly (clang, -O2):
<init_locations>:
movdqa 0xef8(%rip),%xmm0
movdqa 0xf00(%rip),%xmm7
mov    $0x4,%eax
movdqa 0xf02(%rip),%xmm8
movdqa 0xf0a(%rip),%xmm3
pxor   %xmm4,%xmm4
movdqa 0xf0d(%rip),%xmm9
movdqa 0xf14(%rip),%xmm10
movdqa 0xf1b(%rip),%xmm11
movdqa 0xf23(%rip),%xmm2
nopl   (%rax)
movdqa %xmm7,%xmm1
paddw  %xmm8,%xmm1
movdqa %xmm7,%xmm6
pmulhuw %xmm3,%xmm6
movdqa %xmm7,%xmm5
psubw  %xmm6,%xmm5
psrlw  $0x1,%xmm5
paddw  %xmm6,%xmm5
psrlw  $0x4,%xmm5
movdqa %xmm1,%xmm6
pmulhuw %xmm3,%xmm6
psubw  %xmm6,%xmm1
psrlw  $0x1,%xmm1
paddw  %xmm6,%xmm1
psrlw  $0x4,%xmm1
paddw  %xmm5,%xmm5
paddw  %xmm1,%xmm1
punpcklwd %xmm4,%xmm5
punpcklwd %xmm4,%xmm1
paddd  %xmm0,%xmm5
paddd  %xmm9,%xmm5
paddd  %xmm0,%xmm1
paddd  %xmm10,%xmm1
movdqu %xmm5,-0x10(%rdi,%rax,4)
movdqu %xmm1,(%rdi,%rax,4)
paddw  %xmm11,%xmm7
paddd  %xmm2,%xmm0
add    $0x8,%rax
cmp    $0x1bc,%rax
jne    1150 <init_locations+0x50>
movl   $0x1f8,0x6e0(%rdi)
ret

LLVM IR (-O0):
define void @init_locations(i32* %0) {
%2 = alloca i32*
%3 = alloca i32
store i32* %0, i32** %2
store i32 0, i32* %3
br label %4
4: ; preds = %18, %1
%5 = load i32, i32* %3
%6 = icmp slt i32 %5, 441
br i1 %6, label %7, label %21
7: ; preds = %4
%8 = load i32, i32* %3
%9 = add nsw i32 24, %8
%10 = load i32, i32* %3
%11 = sdiv i32 %10, 21
%12 = mul nsw i32 2, %11
%13 = add nsw i32 %9, %12
%14 = load i32*, i32** %2
%15 = load i32, i32* %3
%16 = sext i32 %15 to i64
%17 = getelementptr inbounds i32, i32* %14, i64 %16
store i32 %13, i32* %17
br label %18
18: ; preds = %7
%19 = load i32, i32* %3
%20 = add nsw i32 %19, 1
store i32 %20, i32* %3
br label %4
21: ; preds = %4
ret void
}

LLVM IR (-O2):
define void @init_locations(i32* nocapture writeonly %0) {
br label %2
2: ; preds = %2, %1
%3 = phi i64 [ 0, %1 ], [ %21, %2 ]
%4 = phi <4 x i16> [ <i16 0, i16 1, i16 2, i16 3>, %1 ], [ %22, %2 ]
%5 = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, %1 ], [ %23, %2 ]
%6 = add <4 x i16> %4, <i16 4, i16 4, i16 4, i16 4>
%7 = udiv <4 x i16> %4, <i16 21, i16 21, i16 21, i16 21>
%8 = udiv <4 x i16> %6, <i16 21, i16 21, i16 21, i16 21>
%9 = shl nuw nsw <4 x i16> %7, <i16 1, i16 1, i16 1, i16 1>
%10 = shl nuw nsw <4 x i16> %8, <i16 1, i16 1, i16 1, i16 1>
%11 = zext <4 x i16> %9 to <4 x i32>
%12 = zext <4 x i16> %10 to <4 x i32>
%13 = add <4 x i32> %5, <i32 24, i32 24, i32 24, i32 24>
%14 = add <4 x i32> %5, <i32 28, i32 28, i32 28, i32 28>
%15 = add nuw nsw <4 x i32> %13, %11
%16 = add nuw nsw <4 x i32> %14, %12
%17 = getelementptr inbounds i32, i32* %0, i64 %3
%18 = bitcast i32* %17 to <4 x i32>*
store <4 x i32> %15, <4 x i32>* %18
%19 = getelementptr inbounds i32, i32* %17, i64 4
%20 = bitcast i32* %19 to <4 x i32>*
store <4 x i32> %16, <4 x i32>* %20
%21 = add nuw i64 %3, 8
%22 = add <4 x i16> %4, <i16 8, i16 8, i16 8, i16 8>
%23 = add <4 x i32> %5, <i32 8, i32 8, i32 8, i32 8>
%24 = icmp eq i64 %21, 440
br i1 %24, label %25, label %2
25: ; preds = %2
%26 = getelementptr inbounds i32, i32* %0, i64 440
store i32 504, i32* %26
ret void
}