void sincostables(double *sintabhi, double *sintablo, double *costabhi,
                  double *costablo) {
  const double sin_t0_hi = 1.950903220161282758e-01;
  const double sin_t0_lo = -7.991079068461731263e-18;
  const double sin_t1_hi = 3.826834323650897818e-01;
  const double sin_t1_lo = -1.005077269646158761e-17;
  const double sin_t2_hi = 5.555702330196021776e-01;
  const double sin_t2_lo = 4.709410940561676821e-17;
  const double sin_t3_hi = 7.071067811865475727e-01;
  const double sin_t3_lo = -4.833646656726456726e-17;
  const double cos_t0_hi = 9.807852804032304306e-01;
  const double cos_t0_lo = 1.854693999782500573e-17;
  const double cos_t1_hi = 9.238795325112867385e-01;
  const double cos_t1_lo = 1.764504708433667706e-17;
  const double cos_t2_hi = 8.314696123025452357e-01;
  const double cos_t2_lo = 1.407385698472802389e-18;
  const double cos_t3_hi = 7.071067811865475727e-01;
  const double cos_t3_lo = -4.833646656726456726e-17;
  sintabhi[0] = sin_t0_hi;
  sintablo[0] = sin_t0_lo;
  sintabhi[1] = sin_t1_hi;
  sintablo[1] = sin_t1_lo;
  sintabhi[2] = sin_t2_hi;
  sintablo[2] = sin_t2_lo;
  sintabhi[3] = sin_t3_hi;
  sintablo[3] = sin_t3_lo;
  costabhi[0] = cos_t0_hi;
  costablo[0] = cos_t0_lo;
  costabhi[1] = cos_t1_hi;
  costablo[1] = cos_t1_lo;
  costabhi[2] = cos_t2_hi;
  costablo[2] = cos_t2_lo;
  costabhi[3] = cos_t3_hi;
  costablo[3] = cos_t3_lo;
}


x86 assembly (clang, -O0):
<sincostables>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
movsd  0xf48(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xf33(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xf1e(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xf09(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xef4(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xedf(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xe9a(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xe85(%rip),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0xeb0(%rip),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0xe9b(%rip),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xe86(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0xe71(%rip),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  0xe5c(%rip),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xe44(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xe2c(%rip),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0xe14(%rip),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xe68(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0xe50(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movsd  0xe38(%rip),%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0xe1f(%rip),%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x8(%rbp),%rax
movsd  0xe06(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0xded(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x8(%rbp),%rax
movsd  0xda4(%rip),%xmm0
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  0xd8b(%rip),%xmm0
movsd  %xmm0,0x18(%rax)
mov    -0x18(%rbp),%rax
movsd  0xdb2(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movsd  0xd9a(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  0xd82(%rip),%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x20(%rbp),%rax
movsd  0xd69(%rip),%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x18(%rbp),%rax
movsd  0xd50(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x20(%rbp),%rax
movsd  0xd37(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x18(%rbp),%rax
movsd  0xd1e(%rip),%xmm0
movsd  %xmm0,0x18(%rax)
mov    -0x20(%rbp),%rax
movsd  0xd05(%rip),%xmm0
movsd  %xmm0,0x18(%rax)
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sincostables>:
movabs $0x3fc8f8b83c69a60b,%rax
f8 c8 3f
mov    %rax,(%rdi)
movabs $0xbc626d19b9ff8d82,%rax
6d 62 bc
mov    %rax,(%rsi)
movabs $0x3fd87de2a6aea963,%rax
7d d8 3f
mov    %rax,0x8(%rdi)
movabs $0xbc672cedd3d5a610,%rax
2c 67 bc
mov    %rax,0x8(%rsi)
movabs $0x3fe1c73b39ae68c8,%rax
c7 e1 3f
mov    %rax,0x10(%rdi)
movabs $0x3c8b25dd267f6600,%rax
25 8b 3c
mov    %rax,0x10(%rsi)
movabs $0x3fe6a09e667f3bcd,%rax
a0 e6 3f
mov    %rax,0x18(%rdi)
movabs $0xbc8bdd3413b26456,%rdi
dd 8b bc
mov    %rdi,0x18(%rsi)
movabs $0x3fef6297cff75cb0,%rsi
62 ef 3f
mov    %rsi,(%rdx)
movabs $0x3c7562172a361fd3,%rsi
62 75 3c
mov    %rsi,(%rcx)
movabs $0x3fed906bcf328d46,%rsi
90 ed 3f
mov    %rsi,0x8(%rdx)
movabs $0x3c7457e610231ac2,%rsi
57 74 3c
mov    %rsi,0x8(%rcx)
movabs $0x3fea9b66290ea1a3,%rsi
9b ea 3f
mov    %rsi,0x10(%rdx)
movabs $0x3c39f630e8b6dac8,%rsi
f6 39 3c
mov    %rsi,0x10(%rcx)
mov    %rax,0x18(%rdx)
mov    %rdi,0x18(%rcx)
ret

LLVM IR (-O0):
define void @sincostables(double* %0, double* %1, double* %2, double* %3) {
%5 = alloca double*
%6 = alloca double*
%7 = alloca double*
%8 = alloca double*
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
store double* %0, double** %5
store double* %1, double** %6
store double* %2, double** %7
store double* %3, double** %8
store double 0x3FC8F8B83C69A60B, double* %9
store double 0xBC626D19B9FF8D82, double* %10
store double 0x3FD87DE2A6AEA963, double* %11
store double 0xBC672CEDD3D5A610, double* %12
store double 0x3FE1C73B39AE68C8, double* %13
store double 0x3C8B25DD267F6600, double* %14
store double 0x3FE6A09E667F3BCD, double* %15
store double 0xBC8BDD3413B26456, double* %16
store double 0x3FEF6297CFF75CB0, double* %17
store double 0x3C7562172A361FD3, double* %18
store double 0x3FED906BCF328D46, double* %19
store double 0x3C7457E610231AC2, double* %20
store double 0x3FEA9B66290EA1A3, double* %21
store double 0x3C39F630E8B6DAC8, double* %22
store double 0x3FE6A09E667F3BCD, double* %23
store double 0xBC8BDD3413B26456, double* %24
%25 = load double*, double** %5
%26 = getelementptr inbounds double, double* %25, i64 0
store double 0x3FC8F8B83C69A60B, double* %26
%27 = load double*, double** %6
%28 = getelementptr inbounds double, double* %27, i64 0
store double 0xBC626D19B9FF8D82, double* %28
%29 = load double*, double** %5
%30 = getelementptr inbounds double, double* %29, i64 1
store double 0x3FD87DE2A6AEA963, double* %30
%31 = load double*, double** %6
%32 = getelementptr inbounds double, double* %31, i64 1
store double 0xBC672CEDD3D5A610, double* %32
%33 = load double*, double** %5
%34 = getelementptr inbounds double, double* %33, i64 2
store double 0x3FE1C73B39AE68C8, double* %34
%35 = load double*, double** %6
%36 = getelementptr inbounds double, double* %35, i64 2
store double 0x3C8B25DD267F6600, double* %36
%37 = load double*, double** %5
%38 = getelementptr inbounds double, double* %37, i64 3
store double 0x3FE6A09E667F3BCD, double* %38
%39 = load double*, double** %6
%40 = getelementptr inbounds double, double* %39, i64 3
store double 0xBC8BDD3413B26456, double* %40
%41 = load double*, double** %7
%42 = getelementptr inbounds double, double* %41, i64 0
store double 0x3FEF6297CFF75CB0, double* %42
%43 = load double*, double** %8
%44 = getelementptr inbounds double, double* %43, i64 0
store double 0x3C7562172A361FD3, double* %44
%45 = load double*, double** %7
%46 = getelementptr inbounds double, double* %45, i64 1
store double 0x3FED906BCF328D46, double* %46
%47 = load double*, double** %8
%48 = getelementptr inbounds double, double* %47, i64 1
store double 0x3C7457E610231AC2, double* %48
%49 = load double*, double** %7
%50 = getelementptr inbounds double, double* %49, i64 2
store double 0x3FEA9B66290EA1A3, double* %50
%51 = load double*, double** %8
%52 = getelementptr inbounds double, double* %51, i64 2
store double 0x3C39F630E8B6DAC8, double* %52
%53 = load double*, double** %7
%54 = getelementptr inbounds double, double* %53, i64 3
store double 0x3FE6A09E667F3BCD, double* %54
%55 = load double*, double** %8
%56 = getelementptr inbounds double, double* %55, i64 3
store double 0xBC8BDD3413B26456, double* %56
ret void
}

LLVM IR (-O2):
define void @sincostables(double* nocapture writeonly %0, double* nocapture writeonly %1, double* nocapture writeonly %2, double* nocapture writeonly %3) {
store double 0x3FC8F8B83C69A60B, double* %0
store double 0xBC626D19B9FF8D82, double* %1
%5 = getelementptr inbounds double, double* %0, i64 1
store double 0x3FD87DE2A6AEA963, double* %5
%6 = getelementptr inbounds double, double* %1, i64 1
store double 0xBC672CEDD3D5A610, double* %6
%7 = getelementptr inbounds double, double* %0, i64 2
store double 0x3FE1C73B39AE68C8, double* %7
%8 = getelementptr inbounds double, double* %1, i64 2
store double 0x3C8B25DD267F6600, double* %8
%9 = getelementptr inbounds double, double* %0, i64 3
store double 0x3FE6A09E667F3BCD, double* %9
%10 = getelementptr inbounds double, double* %1, i64 3
store double 0xBC8BDD3413B26456, double* %10
store double 0x3FEF6297CFF75CB0, double* %2
store double 0x3C7562172A361FD3, double* %3
%11 = getelementptr inbounds double, double* %2, i64 1
store double 0x3FED906BCF328D46, double* %11
%12 = getelementptr inbounds double, double* %3, i64 1
store double 0x3C7457E610231AC2, double* %12
%13 = getelementptr inbounds double, double* %2, i64 2
store double 0x3FEA9B66290EA1A3, double* %13
%14 = getelementptr inbounds double, double* %3, i64 2
store double 0x3C39F630E8B6DAC8, double* %14
%15 = getelementptr inbounds double, double* %2, i64 3
store double 0x3FE6A09E667F3BCD, double* %15
%16 = getelementptr inbounds double, double* %3, i64 3
store double 0xBC8BDD3413B26456, double* %16
ret void
}