int synths_(float *rc) {
  float r1, r2;
  int i;
  for (i = 0; i < 128; ++i) {
    r2 = rc[i];
    r1 = ((r2) <= (.99f) ? (r2) : (.99f));
    rc[i] = ((r1) >= (-.99f) ? (r1) : (-.99f));
  }
}


x86 assembly (clang, -O0):
<synths_>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
movl   $0x0,-0x1c(%rbp)
cmpl   $0x80,-0x1c(%rbp)
jge    11c2 <synths_+0xc2>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xeca(%rip),%xmm0
ucomiss -0x18(%rbp),%xmm0
jb     114f <synths_+0x4f>
movss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
jmp    1161 <synths_+0x61>
movss  0xea9(%rip),%xmm0
movss  %xmm0,-0x20(%rbp)
jmp    1161 <synths_+0x61>
movss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x14(%rbp)
movss  -0x14(%rbp),%xmm0
movss  0xe8c(%rip),%xmm1
ucomiss %xmm1,%xmm0
jb     1190 <synths_+0x90>
movss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
jmp    11a2 <synths_+0xa2>
movss  0xe6c(%rip),%xmm0
movss  %xmm0,-0x24(%rbp)
jmp    11a2 <synths_+0xa2>
movss  -0x24(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    110f <synths_+0xf>
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<synths_>:
xor    %eax,%eax
movaps 0xef7(%rip),%xmm0
movaps 0xf00(%rip),%xmm1
movups (%rdi,%rax,4),%xmm4
movups 0x10(%rdi,%rax,4),%xmm5
movups 0x20(%rdi,%rax,4),%xmm3
movups 0x30(%rdi,%rax,4),%xmm2
movaps %xmm4,%xmm6
cmpleps %xmm0,%xmm6
movaps %xmm5,%xmm7
cmpleps %xmm0,%xmm7
andps  %xmm6,%xmm4
andnps %xmm0,%xmm6
orps   %xmm4,%xmm6
andps  %xmm7,%xmm5
andnps %xmm0,%xmm7
orps   %xmm5,%xmm7
movaps %xmm1,%xmm4
cmpleps %xmm6,%xmm4
movaps %xmm1,%xmm5
cmpleps %xmm7,%xmm5
andps  %xmm4,%xmm6
andnps %xmm1,%xmm4
orps   %xmm6,%xmm4
andps  %xmm5,%xmm7
andnps %xmm1,%xmm5
orps   %xmm7,%xmm5
movups %xmm4,(%rdi,%rax,4)
movups %xmm5,0x10(%rdi,%rax,4)
movaps %xmm3,%xmm4
cmpleps %xmm0,%xmm4
movaps %xmm2,%xmm5
cmpleps %xmm0,%xmm5
andps  %xmm4,%xmm3
andnps %xmm0,%xmm4
orps   %xmm3,%xmm4
andps  %xmm5,%xmm2
andnps %xmm0,%xmm5
orps   %xmm2,%xmm5
movaps %xmm1,%xmm2
cmpleps %xmm4,%xmm2
movaps %xmm1,%xmm3
cmpleps %xmm5,%xmm3
andps  %xmm2,%xmm4
andnps %xmm1,%xmm2
orps   %xmm4,%xmm2
andps  %xmm3,%xmm5
andnps %xmm1,%xmm3
orps   %xmm5,%xmm3
movups %xmm2,0x20(%rdi,%rax,4)
movups %xmm3,0x30(%rdi,%rax,4)
add    $0x10,%rax
cmp    $0x80,%rax
jne    1110 <synths_+0x10>
ret

LLVM IR (-O0):
define i32 @synths_(float* %0) {
%2 = alloca i32
%3 = alloca float*
%4 = alloca float
%5 = alloca float
%6 = alloca i32
store float* %0, float** %3
store i32 0, i32* %6
br label %7
7: ; preds = %34, %1
%8 = load i32, i32* %6
%9 = icmp slt i32 %8, 128
br i1 %9, label %10, label %37
10: ; preds = %7
%11 = load float*, float** %3
%12 = load i32, i32* %6
%13 = sext i32 %12 to i64
%14 = getelementptr inbounds float, float* %11, i64 %13
%15 = load float, float* %14
store float %15, float* %5
%16 = load float, float* %5
%17 = fcmp ole float %16, 0x3FEFAE1480000000
br i1 %17, label %18, label %20
18: ; preds = %10
%19 = load float, float* %5
br label %21
20: ; preds = %10
br label %21
21: ; preds = %20, %18
%22 = phi float [ %19, %18 ], [ 0x3FEFAE1480000000, %20 ]
store float %22, float* %4
%23 = load float, float* %4
%24 = fcmp oge float %23, 0xBFEFAE1480000000
br i1 %24, label %25, label %27
25: ; preds = %21
%26 = load float, float* %4
br label %28
27: ; preds = %21
br label %28
28: ; preds = %27, %25
%29 = phi float [ %26, %25 ], [ 0xBFEFAE1480000000, %27 ]
%30 = load float*, float** %3
%31 = load i32, i32* %6
%32 = sext i32 %31 to i64
%33 = getelementptr inbounds float, float* %30, i64 %32
store float %29, float* %33
br label %34
34: ; preds = %28
%35 = load i32, i32* %6
%36 = add nsw i32 %35, 1
store i32 %36, i32* %6
br label %7
37: ; preds = %7
%38 = load i32, i32* %2
ret i32 %38
}

LLVM IR (-O2):
define i32 @synths_(float* nocapture %0) {
br label %2
2: ; preds = %2, %1
%3 = phi i64 [ 0, %1 ], [ %37, %2 ]
%4 = getelementptr inbounds float, float* %0, i64 %3
%5 = bitcast float* %4 to <4 x float>*
%6 = load <4 x float>, <4 x float>* %5
%7 = getelementptr inbounds float, float* %4, i64 4
%8 = bitcast float* %7 to <4 x float>*
%9 = load <4 x float>, <4 x float>* %8
%10 = fcmp ole <4 x float> %6, <float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000>
%11 = fcmp ole <4 x float> %9, <float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000>
%12 = select <4 x i1> %10, <4 x float> %6, <4 x float> <float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000>
%13 = select <4 x i1> %11, <4 x float> %9, <4 x float> <float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000>
%14 = fcmp oge <4 x float> %12, <float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000>
%15 = fcmp oge <4 x float> %13, <float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000>
%16 = select <4 x i1> %14, <4 x float> %12, <4 x float> <float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000>
%17 = select <4 x i1> %15, <4 x float> %13, <4 x float> <float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000>
%18 = bitcast float* %4 to <4 x float>*
store <4 x float> %16, <4 x float>* %18
%19 = bitcast float* %7 to <4 x float>*
store <4 x float> %17, <4 x float>* %19
%20 = or i64 %3, 8
%21 = getelementptr inbounds float, float* %0, i64 %20
%22 = bitcast float* %21 to <4 x float>*
%23 = load <4 x float>, <4 x float>* %22
%24 = getelementptr inbounds float, float* %21, i64 4
%25 = bitcast float* %24 to <4 x float>*
%26 = load <4 x float>, <4 x float>* %25
%27 = fcmp ole <4 x float> %23, <float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000>
%28 = fcmp ole <4 x float> %26, <float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000>
%29 = select <4 x i1> %27, <4 x float> %23, <4 x float> <float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000>
%30 = select <4 x i1> %28, <4 x float> %26, <4 x float> <float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000, float 0x3FEFAE1480000000>
%31 = fcmp oge <4 x float> %29, <float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000>
%32 = fcmp oge <4 x float> %30, <float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000>
%33 = select <4 x i1> %31, <4 x float> %29, <4 x float> <float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000>
%34 = select <4 x i1> %32, <4 x float> %30, <4 x float> <float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000, float 0xBFEFAE1480000000>
%35 = bitcast float* %21 to <4 x float>*
store <4 x float> %33, <4 x float>* %35
%36 = bitcast float* %24 to <4 x float>*
store <4 x float> %34, <4 x float>* %36
%37 = add nuw nsw i64 %3, 16
%38 = icmp eq i64 %37, 128
br i1 %38, label %39, label %2
39: ; preds = %2
ret i32 undef
}