Hex Artifact Content
Not logged in

Artifact ac9c6122ad778b0914eaaba32305a1d4ab749ed5:


0000: 23 20 54 68 69 73 20 64 69 72 65 63 74 6f 72 79  # This directory
0010: 20 63 6f 6e 74 61 69 6e 73 20 61 20 6c 61 72 67   contains a larg
0020: 65 20 61 6d 6f 75 6e 74 20 6f 66 20 43 20 63 6f  e amount of C co
0030: 64 65 20 77 68 69 63 68 20 70 72 6f 76 69 64 65  de which provide
0040: 73 0a 23 20 67 65 6e 65 72 69 63 20 69 6d 70 6c  s.# generic impl
0050: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6f 66 20 74  ementations of t
0060: 68 65 20 63 6f 72 65 20 72 75 6e 74 69 6d 65 20  he core runtime 
0070: 6c 69 62 72 61 72 79 20 61 6c 6f 6e 67 20 77 69  library along wi
0080: 74 68 20 6f 70 74 69 6d 69 7a 65 64 0a 23 20 61  th optimized.# a
0090: 72 63 68 69 74 65 63 74 75 72 65 2d 73 70 65 63  rchitecture-spec
00a0: 69 66 69 63 20 63 6f 64 65 20 69 6e 20 76 61 72  ific code in var
00b0: 69 6f 75 73 20 73 75 62 64 69 72 65 63 74 6f 72  ious subdirector
00c0: 69 65 73 2e 0a 0a 69 66 20 28 43 4d 41 4b 45 5f  ies...if (CMAKE_
00d0: 53 4f 55 52 43 45 5f 44 49 52 20 53 54 52 45 51  SOURCE_DIR STREQ
00e0: 55 41 4c 20 43 4d 41 4b 45 5f 43 55 52 52 45 4e  UAL CMAKE_CURREN
00f0: 54 5f 53 4f 55 52 43 45 5f 44 49 52 29 0a 20 20  T_SOURCE_DIR).  
0100: 63 6d 61 6b 65 5f 6d 69 6e 69 6d 75 6d 5f 72 65  cmake_minimum_re
0110: 71 75 69 72 65 64 28 56 45 52 53 49 4f 4e 20 33  quired(VERSION 3
0120: 2e 34 2e 33 29 0a 0a 20 20 70 72 6f 6a 65 63 74  .4.3)..  project
0130: 28 43 6f 6d 70 69 6c 65 72 52 54 42 75 69 6c 74  (CompilerRTBuilt
0140: 69 6e 73 20 43 20 41 53 4d 29 0a 20 20 73 65 74  ins C ASM).  set
0150: 28 43 4f 4d 50 49 4c 45 52 5f 52 54 5f 53 54 41  (COMPILER_RT_STA
0160: 4e 44 41 4c 4f 4e 45 5f 42 55 49 4c 44 20 54 52  NDALONE_BUILD TR
0170: 55 45 29 0a 20 20 73 65 74 28 43 4f 4d 50 49 4c  UE).  set(COMPIL
0180: 45 52 5f 52 54 5f 42 55 49 4c 54 49 4e 53 5f 53  ER_RT_BUILTINS_S
0190: 54 41 4e 44 41 4c 4f 4e 45 5f 42 55 49 4c 44 20  TANDALONE_BUILD 
01a0: 54 52 55 45 29 0a 20 20 6c 69 73 74 28 49 4e 53  TRUE).  list(INS
01b0: 45 52 54 20 43 4d 41 4b 45 5f 4d 4f 44 55 4c 45  ERT CMAKE_MODULE
01c0: 5f 50 41 54 48 20 30 0a 20 20 20 20 22 24 7b 43  _PATH 0.    "${C
01d0: 4d 41 4b 45 5f 53 4f 55 52 43 45 5f 44 49 52 7d  MAKE_SOURCE_DIR}
01e0: 2f 2e 2e 2f 2e 2e 2f 63 6d 61 6b 65 22 0a 20 20  /../../cmake".  
01f0: 20 20 22 24 7b 43 4d 41 4b 45 5f 53 4f 55 52 43    "${CMAKE_SOURC
0200: 45 5f 44 49 52 7d 2f 2e 2e 2f 2e 2e 2f 63 6d 61  E_DIR}/../../cma
0210: 6b 65 2f 4d 6f 64 75 6c 65 73 22 29 0a 20 20 69  ke/Modules").  i
0220: 6e 63 6c 75 64 65 28 62 61 73 65 2d 63 6f 6e 66  nclude(base-conf
0230: 69 67 2d 69 78 29 0a 20 20 69 6e 63 6c 75 64 65  ig-ix).  include
0240: 28 43 6f 6d 70 69 6c 65 72 52 54 55 74 69 6c 73  (CompilerRTUtils
0250: 29 0a 0a 20 20 6c 6f 61 64 5f 6c 6c 76 6d 5f 63  )..  load_llvm_c
0260: 6f 6e 66 69 67 28 29 0a 20 20 63 6f 6e 73 74 72  onfig().  constr
0270: 75 63 74 5f 63 6f 6d 70 69 6c 65 72 5f 72 74 5f  uct_compiler_rt_
0280: 64 65 66 61 75 6c 74 5f 74 72 69 70 6c 65 28 29  default_triple()
0290: 0a 0a 20 20 69 66 28 41 50 50 4c 45 29 0a 20 20  ..  if(APPLE).  
02a0: 20 20 69 6e 63 6c 75 64 65 28 43 6f 6d 70 69 6c    include(Compil
02b0: 65 72 52 54 44 61 72 77 69 6e 55 74 69 6c 73 29  erRTDarwinUtils)
02c0: 0a 20 20 65 6e 64 69 66 28 29 0a 20 20 69 6e 63  .  endif().  inc
02d0: 6c 75 64 65 28 41 64 64 43 6f 6d 70 69 6c 65 72  lude(AddCompiler
02e0: 52 54 29 0a 65 6e 64 69 66 28 29 0a 0a 69 6e 63  RT).endif()..inc
02f0: 6c 75 64 65 28 62 75 69 6c 74 69 6e 2d 63 6f 6e  lude(builtin-con
0300: 66 69 67 2d 69 78 29 0a 0a 23 20 54 4f 44 4f 3a  fig-ix)..# TODO:
0310: 20 4e 65 65 64 20 74 6f 20 61 64 64 20 61 20 6d   Need to add a m
0320: 65 63 68 61 6e 69 73 6d 20 66 6f 72 20 6c 6f 67  echanism for log
0330: 67 69 6e 67 20 65 72 72 6f 72 73 20 77 68 65 6e  ging errors when
0340: 20 62 75 69 6c 74 69 6e 20 73 6f 75 72 63 65 20   builtin source 
0350: 66 69 6c 65 73 20 61 72 65 0a 23 20 61 64 64 65  files are.# adde
0360: 64 20 74 6f 20 61 20 73 75 62 2d 64 69 72 65 63  d to a sub-direc
0370: 74 6f 72 79 20 61 6e 64 20 6e 6f 74 20 74 68 69  tory and not thi
0380: 73 20 43 4d 61 6b 65 4c 69 73 74 73 20 66 69 6c  s CMakeLists fil
0390: 65 2e 0a 73 65 74 28 47 45 4e 45 52 49 43 5f 53  e..set(GENERIC_S
03a0: 4f 55 52 43 45 53 0a 20 20 61 62 73 76 64 69 32  OURCES.  absvdi2
03b0: 2e 63 0a 20 20 61 62 73 76 73 69 32 2e 63 0a 20  .c.  absvsi2.c. 
03c0: 20 61 62 73 76 74 69 32 2e 63 0a 20 20 61 64 64   absvti2.c.  add
03d0: 64 66 33 2e 63 0a 20 20 61 64 64 73 66 33 2e 63  df3.c.  addsf3.c
03e0: 0a 20 20 61 64 64 74 66 33 2e 63 0a 20 20 61 64  .  addtf3.c.  ad
03f0: 64 76 64 69 33 2e 63 0a 20 20 61 64 64 76 73 69  dvdi3.c.  addvsi
0400: 33 2e 63 0a 20 20 61 64 64 76 74 69 33 2e 63 0a  3.c.  addvti3.c.
0410: 20 20 61 70 70 6c 65 5f 76 65 72 73 69 6f 6e 69    apple_versioni
0420: 6e 67 2e 63 0a 20 20 61 73 68 6c 64 69 33 2e 63  ng.c.  ashldi3.c
0430: 0a 20 20 61 73 68 6c 74 69 33 2e 63 0a 20 20 61  .  ashlti3.c.  a
0440: 73 68 72 64 69 33 2e 63 0a 20 20 61 73 68 72 74  shrdi3.c.  ashrt
0450: 69 33 2e 63 0a 20 20 63 6c 65 61 72 5f 63 61 63  i3.c.  clear_cac
0460: 68 65 2e 63 0a 20 20 63 6c 7a 64 69 32 2e 63 0a  he.c.  clzdi2.c.
0470: 20 20 63 6c 7a 73 69 32 2e 63 0a 20 20 63 6c 7a    clzsi2.c.  clz
0480: 74 69 32 2e 63 0a 20 20 63 6d 70 64 69 32 2e 63  ti2.c.  cmpdi2.c
0490: 0a 20 20 63 6d 70 74 69 32 2e 63 0a 20 20 63 6f  .  cmpti2.c.  co
04a0: 6d 70 61 72 65 64 66 32 2e 63 0a 20 20 63 6f 6d  mparedf2.c.  com
04b0: 70 61 72 65 73 66 32 2e 63 0a 20 20 63 70 75 5f  paresf2.c.  cpu_
04c0: 6d 6f 64 65 6c 2e 63 0a 20 20 63 74 7a 64 69 32  model.c.  ctzdi2
04d0: 2e 63 0a 20 20 63 74 7a 73 69 32 2e 63 0a 20 20  .c.  ctzsi2.c.  
04e0: 63 74 7a 74 69 32 2e 63 0a 20 20 64 69 76 64 63  ctzti2.c.  divdc
04f0: 33 2e 63 0a 20 20 64 69 76 64 66 33 2e 63 0a 20  3.c.  divdf3.c. 
0500: 20 64 69 76 64 69 33 2e 63 0a 20 20 64 69 76 6d   divdi3.c.  divm
0510: 6f 64 64 69 34 2e 63 0a 20 20 64 69 76 6d 6f 64  oddi4.c.  divmod
0520: 73 69 34 2e 63 0a 20 20 64 69 76 73 63 33 2e 63  si4.c.  divsc3.c
0530: 0a 20 20 64 69 76 73 66 33 2e 63 0a 20 20 64 69  .  divsf3.c.  di
0540: 76 73 69 33 2e 63 0a 20 20 64 69 76 74 63 33 2e  vsi3.c.  divtc3.
0550: 63 0a 20 20 64 69 76 74 69 33 2e 63 0a 20 20 64  c.  divti3.c.  d
0560: 69 76 74 66 33 2e 63 0a 20 20 64 69 76 78 63 33  ivtf3.c.  divxc3
0570: 2e 63 0a 20 20 65 6e 61 62 6c 65 5f 65 78 65 63  .c.  enable_exec
0580: 75 74 65 5f 73 74 61 63 6b 2e 63 0a 20 20 65 70  ute_stack.c.  ep
0590: 72 69 6e 74 66 2e 63 0a 20 20 65 78 74 65 6e 64  rintf.c.  extend
05a0: 73 66 64 66 32 2e 63 0a 20 20 65 78 74 65 6e 64  sfdf2.c.  extend
05b0: 68 66 73 66 32 2e 63 0a 20 20 66 66 73 64 69 32  hfsf2.c.  ffsdi2
05c0: 2e 63 0a 20 20 66 66 73 74 69 32 2e 63 0a 20 20  .c.  ffsti2.c.  
05d0: 66 69 78 64 66 64 69 2e 63 0a 20 20 66 69 78 64  fixdfdi.c.  fixd
05e0: 66 73 69 2e 63 0a 20 20 66 69 78 64 66 74 69 2e  fsi.c.  fixdfti.
05f0: 63 0a 20 20 66 69 78 73 66 64 69 2e 63 0a 20 20  c.  fixsfdi.c.  
0600: 66 69 78 73 66 73 69 2e 63 0a 20 20 66 69 78 73  fixsfsi.c.  fixs
0610: 66 74 69 2e 63 0a 20 20 66 69 78 75 6e 73 64 66  fti.c.  fixunsdf
0620: 64 69 2e 63 0a 20 20 66 69 78 75 6e 73 64 66 73  di.c.  fixunsdfs
0630: 69 2e 63 0a 20 20 66 69 78 75 6e 73 64 66 74 69  i.c.  fixunsdfti
0640: 2e 63 0a 20 20 66 69 78 75 6e 73 73 66 64 69 2e  .c.  fixunssfdi.
0650: 63 0a 20 20 66 69 78 75 6e 73 73 66 73 69 2e 63  c.  fixunssfsi.c
0660: 0a 20 20 66 69 78 75 6e 73 73 66 74 69 2e 63 0a  .  fixunssfti.c.
0670: 20 20 66 69 78 75 6e 73 78 66 64 69 2e 63 0a 20    fixunsxfdi.c. 
0680: 20 66 69 78 75 6e 73 78 66 73 69 2e 63 0a 20 20   fixunsxfsi.c.  
0690: 66 69 78 75 6e 73 78 66 74 69 2e 63 0a 20 20 66  fixunsxfti.c.  f
06a0: 69 78 78 66 64 69 2e 63 0a 20 20 66 69 78 78 66  ixxfdi.c.  fixxf
06b0: 74 69 2e 63 0a 20 20 66 6c 6f 61 74 64 69 64 66  ti.c.  floatdidf
06c0: 2e 63 0a 20 20 66 6c 6f 61 74 64 69 73 66 2e 63  .c.  floatdisf.c
06d0: 0a 20 20 66 6c 6f 61 74 64 69 78 66 2e 63 0a 20  .  floatdixf.c. 
06e0: 20 66 6c 6f 61 74 73 69 64 66 2e 63 0a 20 20 66   floatsidf.c.  f
06f0: 6c 6f 61 74 73 69 73 66 2e 63 0a 20 20 66 6c 6f  loatsisf.c.  flo
0700: 61 74 74 69 64 66 2e 63 0a 20 20 66 6c 6f 61 74  attidf.c.  float
0710: 74 69 73 66 2e 63 0a 20 20 66 6c 6f 61 74 74 69  tisf.c.  floatti
0720: 78 66 2e 63 0a 20 20 66 6c 6f 61 74 75 6e 64 69  xf.c.  floatundi
0730: 64 66 2e 63 0a 20 20 66 6c 6f 61 74 75 6e 64 69  df.c.  floatundi
0740: 73 66 2e 63 0a 20 20 66 6c 6f 61 74 75 6e 64 69  sf.c.  floatundi
0750: 78 66 2e 63 0a 20 20 66 6c 6f 61 74 75 6e 73 69  xf.c.  floatunsi
0760: 64 66 2e 63 0a 20 20 66 6c 6f 61 74 75 6e 73 69  df.c.  floatunsi
0770: 73 66 2e 63 0a 20 20 66 6c 6f 61 74 75 6e 74 69  sf.c.  floatunti
0780: 64 66 2e 63 0a 20 20 66 6c 6f 61 74 75 6e 74 69  df.c.  floatunti
0790: 73 66 2e 63 0a 20 20 66 6c 6f 61 74 75 6e 74 69  sf.c.  floatunti
07a0: 78 66 2e 63 0a 20 20 69 6e 74 5f 75 74 69 6c 2e  xf.c.  int_util.
07b0: 63 0a 20 20 6c 73 68 72 64 69 33 2e 63 0a 20 20  c.  lshrdi3.c.  
07c0: 6c 73 68 72 74 69 33 2e 63 0a 20 20 6d 6f 64 64  lshrti3.c.  modd
07d0: 69 33 2e 63 0a 20 20 6d 6f 64 73 69 33 2e 63 0a  i3.c.  modsi3.c.
07e0: 20 20 6d 6f 64 74 69 33 2e 63 0a 20 20 6d 75 6c    modti3.c.  mul
07f0: 64 63 33 2e 63 0a 20 20 6d 75 6c 64 66 33 2e 63  dc3.c.  muldf3.c
0800: 0a 20 20 6d 75 6c 64 69 33 2e 63 0a 20 20 6d 75  .  muldi3.c.  mu
0810: 6c 6f 64 69 34 2e 63 0a 20 20 6d 75 6c 6f 73 69  lodi4.c.  mulosi
0820: 34 2e 63 0a 20 20 6d 75 6c 6f 74 69 34 2e 63 0a  4.c.  muloti4.c.
0830: 20 20 6d 75 6c 73 63 33 2e 63 0a 20 20 6d 75 6c    mulsc3.c.  mul
0840: 73 66 33 2e 63 0a 20 20 6d 75 6c 74 69 33 2e 63  sf3.c.  multi3.c
0850: 0a 20 20 6d 75 6c 74 66 33 2e 63 0a 20 20 6d 75  .  multf3.c.  mu
0860: 6c 76 64 69 33 2e 63 0a 20 20 6d 75 6c 76 73 69  lvdi3.c.  mulvsi
0870: 33 2e 63 0a 20 20 6d 75 6c 76 74 69 33 2e 63 0a  3.c.  mulvti3.c.
0880: 20 20 6d 75 6c 78 63 33 2e 63 0a 20 20 6e 65 67    mulxc3.c.  neg
0890: 64 66 32 2e 63 0a 20 20 6e 65 67 64 69 32 2e 63  df2.c.  negdi2.c
08a0: 0a 20 20 6e 65 67 73 66 32 2e 63 0a 20 20 6e 65  .  negsf2.c.  ne
08b0: 67 74 69 32 2e 63 0a 20 20 6e 65 67 76 64 69 32  gti2.c.  negvdi2
08c0: 2e 63 0a 20 20 6e 65 67 76 73 69 32 2e 63 0a 20  .c.  negvsi2.c. 
08d0: 20 6e 65 67 76 74 69 32 2e 63 0a 20 20 70 61 72   negvti2.c.  par
08e0: 69 74 79 64 69 32 2e 63 0a 20 20 70 61 72 69 74  itydi2.c.  parit
08f0: 79 73 69 32 2e 63 0a 20 20 70 61 72 69 74 79 74  ysi2.c.  parityt
0900: 69 32 2e 63 0a 20 20 70 6f 70 63 6f 75 6e 74 64  i2.c.  popcountd
0910: 69 32 2e 63 0a 20 20 70 6f 70 63 6f 75 6e 74 73  i2.c.  popcounts
0920: 69 32 2e 63 0a 20 20 70 6f 70 63 6f 75 6e 74 74  i2.c.  popcountt
0930: 69 32 2e 63 0a 20 20 70 6f 77 69 64 66 32 2e 63  i2.c.  powidf2.c
0940: 0a 20 20 70 6f 77 69 73 66 32 2e 63 0a 20 20 70  .  powisf2.c.  p
0950: 6f 77 69 74 66 32 2e 63 0a 20 20 70 6f 77 69 78  owitf2.c.  powix
0960: 66 32 2e 63 0a 20 20 73 75 62 64 66 33 2e 63 0a  f2.c.  subdf3.c.
0970: 20 20 73 75 62 73 66 33 2e 63 0a 20 20 73 75 62    subsf3.c.  sub
0980: 76 64 69 33 2e 63 0a 20 20 73 75 62 76 73 69 33  vdi3.c.  subvsi3
0990: 2e 63 0a 20 20 73 75 62 76 74 69 33 2e 63 0a 20  .c.  subvti3.c. 
09a0: 20 73 75 62 74 66 33 2e 63 0a 20 20 74 72 61 6d   subtf3.c.  tram
09b0: 70 6f 6c 69 6e 65 5f 73 65 74 75 70 2e 63 0a 20  poline_setup.c. 
09c0: 20 74 72 75 6e 63 64 66 68 66 32 2e 63 0a 20 20   truncdfhf2.c.  
09d0: 74 72 75 6e 63 64 66 73 66 32 2e 63 0a 20 20 74  truncdfsf2.c.  t
09e0: 72 75 6e 63 73 66 68 66 32 2e 63 0a 20 20 75 63  runcsfhf2.c.  uc
09f0: 6d 70 64 69 32 2e 63 0a 20 20 75 63 6d 70 74 69  mpdi2.c.  ucmpti
0a00: 32 2e 63 0a 20 20 75 64 69 76 64 69 33 2e 63 0a  2.c.  udivdi3.c.
0a10: 20 20 75 64 69 76 6d 6f 64 64 69 34 2e 63 0a 20    udivmoddi4.c. 
0a20: 20 75 64 69 76 6d 6f 64 73 69 34 2e 63 0a 20 20   udivmodsi4.c.  
0a30: 75 64 69 76 6d 6f 64 74 69 34 2e 63 0a 20 20 75  udivmodti4.c.  u
0a40: 64 69 76 73 69 33 2e 63 0a 20 20 75 64 69 76 74  divsi3.c.  udivt
0a50: 69 33 2e 63 0a 20 20 75 6d 6f 64 64 69 33 2e 63  i3.c.  umoddi3.c
0a60: 0a 20 20 75 6d 6f 64 73 69 33 2e 63 0a 20 20 75  .  umodsi3.c.  u
0a70: 6d 6f 64 74 69 33 2e 63 29 0a 0a 6f 70 74 69 6f  modti3.c)..optio
0a80: 6e 28 43 4f 4d 50 49 4c 45 52 5f 52 54 5f 45 58  n(COMPILER_RT_EX
0a90: 43 4c 55 44 45 5f 41 54 4f 4d 49 43 5f 42 55 49  CLUDE_ATOMIC_BUI
0aa0: 4c 54 49 4e 0a 20 20 22 53 6b 69 70 20 74 68 65  LTIN.  "Skip the
0ab0: 20 61 74 6f 6d 69 63 20 62 75 69 6c 74 69 6e 20   atomic builtin 
0ac0: 28 74 68 69 73 20 6d 61 79 20 62 65 20 6e 65 65  (this may be nee
0ad0: 64 65 64 20 69 66 20 73 79 73 74 65 6d 20 68 65  ded if system he
0ae0: 61 64 65 72 73 20 61 72 65 20 75 6e 61 76 61 69  aders are unavai
0af0: 6c 61 62 6c 65 29 22 0a 20 20 4f 66 66 29 0a 0a  lable)".  Off)..
0b00: 69 66 28 43 4f 4d 50 49 4c 45 52 5f 52 54 5f 48  if(COMPILER_RT_H
0b10: 41 53 5f 41 54 4f 4d 49 43 5f 4b 45 59 57 4f 52  AS_ATOMIC_KEYWOR
0b20: 44 20 41 4e 44 20 4e 4f 54 20 43 4f 4d 50 49 4c  D AND NOT COMPIL
0b30: 45 52 5f 52 54 5f 45 58 43 4c 55 44 45 5f 41 54  ER_RT_EXCLUDE_AT
0b40: 4f 4d 49 43 5f 42 55 49 4c 54 49 4e 29 0a 20 20  OMIC_BUILTIN).  
0b50: 73 65 74 28 47 45 4e 45 52 49 43 5f 53 4f 55 52  set(GENERIC_SOUR
0b60: 43 45 53 0a 20 20 20 20 24 7b 47 45 4e 45 52 49  CES.    ${GENERI
0b70: 43 5f 53 4f 55 52 43 45 53 7d 0a 20 20 20 20 61  C_SOURCES}.    a
0b80: 74 6f 6d 69 63 2e 63 29 0a 65 6e 64 69 66 28 29  tomic.c).endif()
0b90: 0a 0a 73 65 74 28 4d 53 56 43 5f 53 4f 55 52 43  ..set(MSVC_SOURC
0ba0: 45 53 0a 20 64 69 76 73 63 33 2e 63 0a 20 64 69  ES. divsc3.c. di
0bb0: 76 64 63 33 2e 63 0a 20 64 69 76 78 63 33 2e 63  vdc3.c. divxc3.c
0bc0: 0a 20 6d 75 6c 73 63 33 2e 63 0a 20 6d 75 6c 64  . mulsc3.c. muld
0bd0: 63 33 2e 63 0a 20 6d 75 6c 78 63 33 2e 63 29 0a  c3.c. mulxc3.c).
0be0: 0a 0a 69 66 28 41 50 50 4c 45 29 0a 20 20 73 65  ..if(APPLE).  se
0bf0: 74 28 47 45 4e 45 52 49 43 5f 53 4f 55 52 43 45  t(GENERIC_SOURCE
0c00: 53 0a 20 20 20 20 24 7b 47 45 4e 45 52 49 43 5f  S.    ${GENERIC_
0c10: 53 4f 55 52 43 45 53 7d 0a 20 20 20 20 61 74 6f  SOURCES}.    ato
0c20: 6d 69 63 5f 66 6c 61 67 5f 63 6c 65 61 72 2e 63  mic_flag_clear.c
0c30: 0a 20 20 20 20 61 74 6f 6d 69 63 5f 66 6c 61 67  .    atomic_flag
0c40: 5f 63 6c 65 61 72 5f 65 78 70 6c 69 63 69 74 2e  _clear_explicit.
0c50: 63 0a 20 20 20 20 61 74 6f 6d 69 63 5f 66 6c 61  c.    atomic_fla
0c60: 67 5f 74 65 73 74 5f 61 6e 64 5f 73 65 74 2e 63  g_test_and_set.c
0c70: 0a 20 20 20 20 61 74 6f 6d 69 63 5f 66 6c 61 67  .    atomic_flag
0c80: 5f 74 65 73 74 5f 61 6e 64 5f 73 65 74 5f 65 78  _test_and_set_ex
0c90: 70 6c 69 63 69 74 2e 63 0a 20 20 20 20 61 74 6f  plicit.c.    ato
0ca0: 6d 69 63 5f 73 69 67 6e 61 6c 5f 66 65 6e 63 65  mic_signal_fence
0cb0: 2e 63 0a 20 20 20 20 61 74 6f 6d 69 63 5f 74 68  .c.    atomic_th
0cc0: 72 65 61 64 5f 66 65 6e 63 65 2e 63 29 0a 65 6e  read_fence.c).en
0cd0: 64 69 66 28 29 0a 0a 69 66 28 4e 4f 54 20 57 49  dif()..if(NOT WI
0ce0: 4e 33 32 20 4f 52 20 4d 49 4e 47 57 29 0a 20 20  N32 OR MINGW).  
0cf0: 73 65 74 28 47 45 4e 45 52 49 43 5f 53 4f 55 52  set(GENERIC_SOUR
0d00: 43 45 53 0a 20 20 20 20 20 20 24 7b 47 45 4e 45  CES.      ${GENE
0d10: 52 49 43 5f 53 4f 55 52 43 45 53 7d 0a 20 20 20  RIC_SOURCES}.   
0d20: 20 20 20 65 6d 75 74 6c 73 2e 63 29 0a 65 6e 64     emutls.c).end
0d30: 69 66 28 29 0a 0a 69 66 20 28 48 41 56 45 5f 55  if()..if (HAVE_U
0d40: 4e 57 49 4e 44 5f 48 29 0a 20 20 73 65 74 28 47  NWIND_H).  set(G
0d50: 45 4e 45 52 49 43 5f 53 4f 55 52 43 45 53 0a 20  ENERIC_SOURCES. 
0d60: 20 20 20 20 20 24 7b 47 45 4e 45 52 49 43 5f 53       ${GENERIC_S
0d70: 4f 55 52 43 45 53 7d 0a 20 20 20 20 20 20 67 63  OURCES}.      gc
0d80: 63 5f 70 65 72 73 6f 6e 61 6c 69 74 79 5f 76 30  c_personality_v0
0d90: 2e 63 29 0a 65 6e 64 69 66 20 28 29 0a 0a 69 66  .c).endif ()..if
0da0: 20 28 4e 4f 54 20 4d 53 56 43 29 0a 20 20 73 65   (NOT MSVC).  se
0db0: 74 28 78 38 36 5f 36 34 5f 53 4f 55 52 43 45 53  t(x86_64_SOURCES
0dc0: 0a 20 20 20 20 20 20 78 38 36 5f 36 34 2f 63 68  .      x86_64/ch
0dd0: 6b 73 74 6b 2e 53 0a 20 20 20 20 20 20 78 38 36  kstk.S.      x86
0de0: 5f 36 34 2f 63 68 6b 73 74 6b 32 2e 53 0a 20 20  _64/chkstk2.S.  
0df0: 20 20 20 20 78 38 36 5f 36 34 2f 66 6c 6f 61 74      x86_64/float
0e00: 64 69 64 66 2e 63 0a 20 20 20 20 20 20 78 38 36  didf.c.      x86
0e10: 5f 36 34 2f 66 6c 6f 61 74 64 69 73 66 2e 63 0a  _64/floatdisf.c.
0e20: 20 20 20 20 20 20 78 38 36 5f 36 34 2f 66 6c 6f        x86_64/flo
0e30: 61 74 64 69 78 66 2e 63 0a 20 20 20 20 20 20 78  atdixf.c.      x
0e40: 38 36 5f 36 34 2f 66 6c 6f 61 74 75 6e 64 69 64  86_64/floatundid
0e50: 66 2e 53 0a 20 20 20 20 20 20 78 38 36 5f 36 34  f.S.      x86_64
0e60: 2f 66 6c 6f 61 74 75 6e 64 69 73 66 2e 53 0a 20  /floatundisf.S. 
0e70: 20 20 20 20 20 78 38 36 5f 36 34 2f 66 6c 6f 61       x86_64/floa
0e80: 74 75 6e 64 69 78 66 2e 53 0a 20 20 20 20 20 20  tundixf.S.      
0e90: 24 7b 47 45 4e 45 52 49 43 5f 53 4f 55 52 43 45  ${GENERIC_SOURCE
0ea0: 53 7d 29 0a 20 20 73 65 74 28 78 38 36 5f 36 34  S}).  set(x86_64
0eb0: 68 5f 53 4f 55 52 43 45 53 20 24 7b 78 38 36 5f  h_SOURCES ${x86_
0ec0: 36 34 5f 53 4f 55 52 43 45 53 7d 29 0a 0a 20 20  64_SOURCES})..  
0ed0: 69 66 20 28 57 49 4e 33 32 29 0a 20 20 20 20 73  if (WIN32).    s
0ee0: 65 74 28 78 38 36 5f 36 34 5f 53 4f 55 52 43 45  et(x86_64_SOURCE
0ef0: 53 0a 20 20 20 20 20 20 20 20 24 7b 78 38 36 5f  S.        ${x86_
0f00: 36 34 5f 53 4f 55 52 43 45 53 7d 0a 20 20 20 20  64_SOURCES}.    
0f10: 20 20 20 20 78 38 36 5f 36 34 2f 63 68 6b 73 74      x86_64/chkst
0f20: 6b 2e 53 0a 20 20 20 20 20 20 20 20 78 38 36 5f  k.S.        x86_
0f30: 36 34 2f 63 68 6b 73 74 6b 32 2e 53 29 0a 20 20  64/chkstk2.S).  
0f40: 65 6e 64 69 66 28 29 0a 0a 20 20 73 65 74 28 69  endif()..  set(i
0f50: 33 38 36 5f 53 4f 55 52 43 45 53 0a 20 20 20 20  386_SOURCES.    
0f60: 20 20 69 33 38 36 2f 61 73 68 6c 64 69 33 2e 53    i386/ashldi3.S
0f70: 0a 20 20 20 20 20 20 69 33 38 36 2f 61 73 68 72  .      i386/ashr
0f80: 64 69 33 2e 53 0a 20 20 20 20 20 20 69 33 38 36  di3.S.      i386
0f90: 2f 63 68 6b 73 74 6b 2e 53 0a 20 20 20 20 20 20  /chkstk.S.      
0fa0: 69 33 38 36 2f 63 68 6b 73 74 6b 32 2e 53 0a 20  i386/chkstk2.S. 
0fb0: 20 20 20 20 20 69 33 38 36 2f 64 69 76 64 69 33       i386/divdi3
0fc0: 2e 53 0a 20 20 20 20 20 20 69 33 38 36 2f 66 6c  .S.      i386/fl
0fd0: 6f 61 74 64 69 64 66 2e 53 0a 20 20 20 20 20 20  oatdidf.S.      
0fe0: 69 33 38 36 2f 66 6c 6f 61 74 64 69 73 66 2e 53  i386/floatdisf.S
0ff0: 0a 20 20 20 20 20 20 69 33 38 36 2f 66 6c 6f 61  .      i386/floa
1000: 74 64 69 78 66 2e 53 0a 20 20 20 20 20 20 69 33  tdixf.S.      i3
1010: 38 36 2f 66 6c 6f 61 74 75 6e 64 69 64 66 2e 53  86/floatundidf.S
1020: 0a 20 20 20 20 20 20 69 33 38 36 2f 66 6c 6f 61  .      i386/floa
1030: 74 75 6e 64 69 73 66 2e 53 0a 20 20 20 20 20 20  tundisf.S.      
1040: 69 33 38 36 2f 66 6c 6f 61 74 75 6e 64 69 78 66  i386/floatundixf
1050: 2e 53 0a 20 20 20 20 20 20 69 33 38 36 2f 6c 73  .S.      i386/ls
1060: 68 72 64 69 33 2e 53 0a 20 20 20 20 20 20 69 33  hrdi3.S.      i3
1070: 38 36 2f 6d 6f 64 64 69 33 2e 53 0a 20 20 20 20  86/moddi3.S.    
1080: 20 20 69 33 38 36 2f 6d 75 6c 64 69 33 2e 53 0a    i386/muldi3.S.
1090: 20 20 20 20 20 20 69 33 38 36 2f 75 64 69 76 64        i386/udivd
10a0: 69 33 2e 53 0a 20 20 20 20 20 20 69 33 38 36 2f  i3.S.      i386/
10b0: 75 6d 6f 64 64 69 33 2e 53 0a 20 20 20 20 20 20  umoddi3.S.      
10c0: 24 7b 47 45 4e 45 52 49 43 5f 53 4f 55 52 43 45  ${GENERIC_SOURCE
10d0: 53 7d 29 0a 0a 20 20 69 66 20 28 57 49 4e 33 32  S})..  if (WIN32
10e0: 29 0a 20 20 20 20 73 65 74 28 69 33 38 36 5f 53  ).    set(i386_S
10f0: 4f 55 52 43 45 53 0a 20 20 20 20 20 20 20 20 24  OURCES.        $
1100: 7b 69 33 38 36 5f 53 4f 55 52 43 45 53 7d 0a 20  {i386_SOURCES}. 
1110: 20 20 20 20 20 20 20 69 33 38 36 2f 63 68 6b 73         i386/chks
1120: 74 6b 2e 53 0a 20 20 20 20 20 20 20 20 69 33 38  tk.S.        i38
1130: 36 2f 63 68 6b 73 74 6b 32 2e 53 29 0a 20 20 65  6/chkstk2.S).  e
1140: 6e 64 69 66 28 29 0a 0a 20 20 73 65 74 28 69 36  ndif()..  set(i6
1150: 38 36 5f 53 4f 55 52 43 45 53 0a 20 20 20 20 20  86_SOURCES.     
1160: 20 24 7b 69 33 38 36 5f 53 4f 55 52 43 45 53 7d   ${i386_SOURCES}
1170: 29 0a 65 6c 73 65 20 28 29 20 23 20 4d 53 56 43  ).else () # MSVC
1180: 0a 20 20 23 20 55 73 65 20 43 20 76 65 72 73 69  .  # Use C versi
1190: 6f 6e 73 20 6f 66 20 66 75 6e 63 74 69 6f 6e 73  ons of functions
11a0: 20 77 68 65 6e 20 62 75 69 6c 64 69 6e 67 20 6f   when building o
11b0: 6e 20 4d 53 56 43 0a 20 20 23 20 4d 53 56 43 27  n MSVC.  # MSVC'
11c0: 73 20 61 73 73 65 6d 62 6c 65 72 20 74 61 6b 65  s assembler take
11d0: 73 20 49 6e 74 65 6c 20 73 79 6e 74 61 78 2c 20  s Intel syntax, 
11e0: 6e 6f 74 20 41 54 26 54 20 73 79 6e 74 61 78 2e  not AT&T syntax.
11f0: 0a 20 20 23 20 41 6c 73 6f 20 75 73 65 20 6f 6e  .  # Also use on
1200: 6c 79 20 4d 53 56 43 20 63 6f 6d 70 69 6c 61 62  ly MSVC compilab
1210: 6c 65 20 62 75 69 6c 74 69 6e 20 69 6d 70 6c 65  le builtin imple
1220: 6d 65 6e 74 61 74 69 6f 6e 73 2e 0a 20 20 73 65  mentations..  se
1230: 74 28 78 38 36 5f 36 34 5f 53 4f 55 52 43 45 53  t(x86_64_SOURCES
1240: 0a 20 20 20 20 20 20 78 38 36 5f 36 34 2f 66 6c  .      x86_64/fl
1250: 6f 61 74 64 69 64 66 2e 63 0a 20 20 20 20 20 20  oatdidf.c.      
1260: 78 38 36 5f 36 34 2f 66 6c 6f 61 74 64 69 73 66  x86_64/floatdisf
1270: 2e 63 0a 20 20 20 20 20 20 78 38 36 5f 36 34 2f  .c.      x86_64/
1280: 66 6c 6f 61 74 64 69 78 66 2e 63 0a 20 20 20 20  floatdixf.c.    
1290: 20 20 24 7b 4d 53 56 43 5f 53 4f 55 52 43 45 53    ${MSVC_SOURCES
12a0: 7d 29 0a 20 20 73 65 74 28 78 38 36 5f 36 34 68  }).  set(x86_64h
12b0: 5f 53 4f 55 52 43 45 53 20 24 7b 78 38 36 5f 36  _SOURCES ${x86_6
12c0: 34 5f 53 4f 55 52 43 45 53 7d 29 0a 20 20 73 65  4_SOURCES}).  se
12d0: 74 28 69 33 38 36 5f 53 4f 55 52 43 45 53 20 24  t(i386_SOURCES $
12e0: 7b 4d 53 56 43 5f 53 4f 55 52 43 45 53 7d 29 0a  {MSVC_SOURCES}).
12f0: 20 20 73 65 74 28 69 36 38 36 5f 53 4f 55 52 43    set(i686_SOURC
1300: 45 53 20 24 7b 69 33 38 36 5f 53 4f 55 52 43 45  ES ${i386_SOURCE
1310: 53 7d 29 0a 65 6e 64 69 66 20 28 29 20 23 20 69  S}).endif () # i
1320: 66 20 28 4e 4f 54 20 4d 53 56 43 29 0a 0a 73 65  f (NOT MSVC)..se
1330: 74 28 61 72 6d 5f 53 4f 55 52 43 45 53 0a 20 20  t(arm_SOURCES.  
1340: 61 72 6d 2f 62 73 77 61 70 64 69 32 2e 53 0a 20  arm/bswapdi2.S. 
1350: 20 61 72 6d 2f 62 73 77 61 70 73 69 32 2e 53 0a   arm/bswapsi2.S.
1360: 20 20 61 72 6d 2f 63 6c 7a 64 69 32 2e 53 0a 20    arm/clzdi2.S. 
1370: 20 61 72 6d 2f 63 6c 7a 73 69 32 2e 53 0a 20 20   arm/clzsi2.S.  
1380: 61 72 6d 2f 63 6f 6d 70 61 72 65 73 66 32 2e 53  arm/comparesf2.S
1390: 0a 20 20 61 72 6d 2f 64 69 76 6d 6f 64 73 69 34  .  arm/divmodsi4
13a0: 2e 53 0a 20 20 61 72 6d 2f 64 69 76 73 69 33 2e  .S.  arm/divsi3.
13b0: 53 0a 20 20 61 72 6d 2f 6d 6f 64 73 69 33 2e 53  S.  arm/modsi3.S
13c0: 0a 20 20 61 72 6d 2f 73 79 6e 63 5f 66 65 74 63  .  arm/sync_fetc
13d0: 68 5f 61 6e 64 5f 61 64 64 5f 34 2e 53 0a 20 20  h_and_add_4.S.  
13e0: 61 72 6d 2f 73 79 6e 63 5f 66 65 74 63 68 5f 61  arm/sync_fetch_a
13f0: 6e 64 5f 61 64 64 5f 38 2e 53 0a 20 20 61 72 6d  nd_add_8.S.  arm
1400: 2f 73 79 6e 63 5f 66 65 74 63 68 5f 61 6e 64 5f  /sync_fetch_and_
1410: 61 6e 64 5f 34 2e 53 0a 20 20 61 72 6d 2f 73 79  and_4.S.  arm/sy
1420: 6e 63 5f 66 65 74 63 68 5f 61 6e 64 5f 61 6e 64  nc_fetch_and_and
1430: 5f 38 2e 53 0a 20 20 61 72 6d 2f 73 79 6e 63 5f  _8.S.  arm/sync_
1440: 66 65 74 63 68 5f 61 6e 64 5f 6d 61 78 5f 34 2e  fetch_and_max_4.
1450: 53 0a 20 20 61 72 6d 2f 73 79 6e 63 5f 66 65 74  S.  arm/sync_fet
1460: 63 68 5f 61 6e 64 5f 6d 61 78 5f 38 2e 53 0a 20  ch_and_max_8.S. 
1470: 20 61 72 6d 2f 73 79 6e 63 5f 66 65 74 63 68 5f   arm/sync_fetch_
1480: 61 6e 64 5f 6d 69 6e 5f 34 2e 53 0a 20 20 61 72  and_min_4.S.  ar
1490: 6d 2f 73 79 6e 63 5f 66 65 74 63 68 5f 61 6e 64  m/sync_fetch_and
14a0: 5f 6d 69 6e 5f 38 2e 53 0a 20 20 61 72 6d 2f 73  _min_8.S.  arm/s
14b0: 79 6e 63 5f 66 65 74 63 68 5f 61 6e 64 5f 6e 61  ync_fetch_and_na
14c0: 6e 64 5f 34 2e 53 0a 20 20 61 72 6d 2f 73 79 6e  nd_4.S.  arm/syn
14d0: 63 5f 66 65 74 63 68 5f 61 6e 64 5f 6e 61 6e 64  c_fetch_and_nand
14e0: 5f 38 2e 53 0a 20 20 61 72 6d 2f 73 79 6e 63 5f  _8.S.  arm/sync_
14f0: 66 65 74 63 68 5f 61 6e 64 5f 6f 72 5f 34 2e 53  fetch_and_or_4.S
1500: 0a 20 20 61 72 6d 2f 73 79 6e 63 5f 66 65 74 63  .  arm/sync_fetc
1510: 68 5f 61 6e 64 5f 6f 72 5f 38 2e 53 0a 20 20 61  h_and_or_8.S.  a
1520: 72 6d 2f 73 79 6e 63 5f 66 65 74 63 68 5f 61 6e  rm/sync_fetch_an
1530: 64 5f 73 75 62 5f 34 2e 53 0a 20 20 61 72 6d 2f  d_sub_4.S.  arm/
1540: 73 79 6e 63 5f 66 65 74 63 68 5f 61 6e 64 5f 73  sync_fetch_and_s
1550: 75 62 5f 38 2e 53 0a 20 20 61 72 6d 2f 73 79 6e  ub_8.S.  arm/syn
1560: 63 5f 66 65 74 63 68 5f 61 6e 64 5f 75 6d 61 78  c_fetch_and_umax
1570: 5f 34 2e 53 0a 20 20 61 72 6d 2f 73 79 6e 63 5f  _4.S.  arm/sync_
1580: 66 65 74 63 68 5f 61 6e 64 5f 75 6d 61 78 5f 38  fetch_and_umax_8
1590: 2e 53 0a 20 20 61 72 6d 2f 73 79 6e 63 5f 66 65  .S.  arm/sync_fe
15a0: 74 63 68 5f 61 6e 64 5f 75 6d 69 6e 5f 34 2e 53  tch_and_umin_4.S
15b0: 0a 20 20 61 72 6d 2f 73 79 6e 63 5f 66 65 74 63  .  arm/sync_fetc
15c0: 68 5f 61 6e 64 5f 75 6d 69 6e 5f 38 2e 53 0a 20  h_and_umin_8.S. 
15d0: 20 61 72 6d 2f 73 79 6e 63 5f 66 65 74 63 68 5f   arm/sync_fetch_
15e0: 61 6e 64 5f 78 6f 72 5f 34 2e 53 0a 20 20 61 72  and_xor_4.S.  ar
15f0: 6d 2f 73 79 6e 63 5f 66 65 74 63 68 5f 61 6e 64  m/sync_fetch_and
1600: 5f 78 6f 72 5f 38 2e 53 0a 20 20 61 72 6d 2f 75  _xor_8.S.  arm/u
1610: 64 69 76 6d 6f 64 73 69 34 2e 53 0a 20 20 61 72  divmodsi4.S.  ar
1620: 6d 2f 75 64 69 76 73 69 33 2e 53 0a 20 20 61 72  m/udivsi3.S.  ar
1630: 6d 2f 75 6d 6f 64 73 69 33 2e 53 0a 20 20 24 7b  m/umodsi3.S.  ${
1640: 47 45 4e 45 52 49 43 5f 53 4f 55 52 43 45 53 7d  GENERIC_SOURCES}
1650: 29 0a 0a 73 65 74 28 61 72 6d 5f 45 41 42 49 5f  )..set(arm_EABI_
1660: 53 4f 55 52 43 45 53 0a 20 20 61 72 6d 2f 61 65  SOURCES.  arm/ae
1670: 61 62 69 5f 63 64 63 6d 70 2e 53 0a 20 20 61 72  abi_cdcmp.S.  ar
1680: 6d 2f 61 65 61 62 69 5f 63 64 63 6d 70 65 71 5f  m/aeabi_cdcmpeq_
1690: 63 68 65 63 6b 5f 6e 61 6e 2e 63 0a 20 20 61 72  check_nan.c.  ar
16a0: 6d 2f 61 65 61 62 69 5f 63 66 63 6d 70 2e 53 0a  m/aeabi_cfcmp.S.
16b0: 20 20 61 72 6d 2f 61 65 61 62 69 5f 63 66 63 6d    arm/aeabi_cfcm
16c0: 70 65 71 5f 63 68 65 63 6b 5f 6e 61 6e 2e 63 0a  peq_check_nan.c.
16d0: 20 20 61 72 6d 2f 61 65 61 62 69 5f 64 63 6d 70    arm/aeabi_dcmp
16e0: 2e 53 0a 20 20 61 72 6d 2f 61 65 61 62 69 5f 64  .S.  arm/aeabi_d
16f0: 69 76 30 2e 63 0a 20 20 61 72 6d 2f 61 65 61 62  iv0.c.  arm/aeab
1700: 69 5f 64 72 73 75 62 2e 63 0a 20 20 61 72 6d 2f  i_drsub.c.  arm/
1710: 61 65 61 62 69 5f 66 63 6d 70 2e 53 0a 20 20 61  aeabi_fcmp.S.  a
1720: 72 6d 2f 61 65 61 62 69 5f 66 72 73 75 62 2e 63  rm/aeabi_frsub.c
1730: 0a 20 20 61 72 6d 2f 61 65 61 62 69 5f 69 64 69  .  arm/aeabi_idi
1740: 76 6d 6f 64 2e 53 0a 20 20 61 72 6d 2f 61 65 61  vmod.S.  arm/aea
1750: 62 69 5f 6c 64 69 76 6d 6f 64 2e 53 0a 20 20 61  bi_ldivmod.S.  a
1760: 72 6d 2f 61 65 61 62 69 5f 6d 65 6d 63 6d 70 2e  rm/aeabi_memcmp.
1770: 53 0a 20 20 61 72 6d 2f 61 65 61 62 69 5f 6d 65  S.  arm/aeabi_me
1780: 6d 63 70 79 2e 53 0a 20 20 61 72 6d 2f 61 65 61  mcpy.S.  arm/aea
1790: 62 69 5f 6d 65 6d 6d 6f 76 65 2e 53 0a 20 20 61  bi_memmove.S.  a
17a0: 72 6d 2f 61 65 61 62 69 5f 6d 65 6d 73 65 74 2e  rm/aeabi_memset.
17b0: 53 0a 20 20 61 72 6d 2f 61 65 61 62 69 5f 75 69  S.  arm/aeabi_ui
17c0: 64 69 76 6d 6f 64 2e 53 0a 20 20 61 72 6d 2f 61  divmod.S.  arm/a
17d0: 65 61 62 69 5f 75 6c 64 69 76 6d 6f 64 2e 53 29  eabi_uldivmod.S)
17e0: 0a 73 65 74 28 61 72 6d 5f 54 68 75 6d 62 31 5f  .set(arm_Thumb1_
17f0: 4a 54 5f 53 4f 55 52 43 45 53 0a 20 20 61 72 6d  JT_SOURCES.  arm
1800: 2f 73 77 69 74 63 68 31 36 2e 53 0a 20 20 61 72  /switch16.S.  ar
1810: 6d 2f 73 77 69 74 63 68 33 32 2e 53 0a 20 20 61  m/switch32.S.  a
1820: 72 6d 2f 73 77 69 74 63 68 38 2e 53 0a 20 20 61  rm/switch8.S.  a
1830: 72 6d 2f 73 77 69 74 63 68 75 38 2e 53 29 0a 73  rm/switchu8.S).s
1840: 65 74 28 61 72 6d 5f 54 68 75 6d 62 31 5f 53 6a  et(arm_Thumb1_Sj
1850: 4c 6a 5f 45 48 5f 53 4f 55 52 43 45 53 0a 20 20  Lj_EH_SOURCES.  
1860: 61 72 6d 2f 72 65 73 74 6f 72 65 5f 76 66 70 5f  arm/restore_vfp_
1870: 64 38 5f 64 31 35 5f 72 65 67 73 2e 53 0a 20 20  d8_d15_regs.S.  
1880: 61 72 6d 2f 73 61 76 65 5f 76 66 70 5f 64 38 5f  arm/save_vfp_d8_
1890: 64 31 35 5f 72 65 67 73 2e 53 29 0a 73 65 74 28  d15_regs.S).set(
18a0: 61 72 6d 5f 54 68 75 6d 62 31 5f 56 46 50 76 32  arm_Thumb1_VFPv2
18b0: 5f 53 4f 55 52 43 45 53 0a 20 20 61 72 6d 2f 61  _SOURCES.  arm/a
18c0: 64 64 64 66 33 76 66 70 2e 53 0a 20 20 61 72 6d  dddf3vfp.S.  arm
18d0: 2f 61 64 64 73 66 33 76 66 70 2e 53 0a 20 20 61  /addsf3vfp.S.  a
18e0: 72 6d 2f 64 69 76 64 66 33 76 66 70 2e 53 0a 20  rm/divdf3vfp.S. 
18f0: 20 61 72 6d 2f 64 69 76 73 66 33 76 66 70 2e 53   arm/divsf3vfp.S
1900: 0a 20 20 61 72 6d 2f 65 71 64 66 32 76 66 70 2e  .  arm/eqdf2vfp.
1910: 53 0a 20 20 61 72 6d 2f 65 71 73 66 32 76 66 70  S.  arm/eqsf2vfp
1920: 2e 53 0a 20 20 61 72 6d 2f 65 78 74 65 6e 64 73  .S.  arm/extends
1930: 66 64 66 32 76 66 70 2e 53 0a 20 20 61 72 6d 2f  fdf2vfp.S.  arm/
1940: 66 69 78 64 66 73 69 76 66 70 2e 53 0a 20 20 61  fixdfsivfp.S.  a
1950: 72 6d 2f 66 69 78 73 66 73 69 76 66 70 2e 53 0a  rm/fixsfsivfp.S.
1960: 20 20 61 72 6d 2f 66 69 78 75 6e 73 64 66 73 69    arm/fixunsdfsi
1970: 76 66 70 2e 53 0a 20 20 61 72 6d 2f 66 69 78 75  vfp.S.  arm/fixu
1980: 6e 73 73 66 73 69 76 66 70 2e 53 0a 20 20 61 72  nssfsivfp.S.  ar
1990: 6d 2f 66 6c 6f 61 74 73 69 64 66 76 66 70 2e 53  m/floatsidfvfp.S
19a0: 0a 20 20 61 72 6d 2f 66 6c 6f 61 74 73 69 73 66  .  arm/floatsisf
19b0: 76 66 70 2e 53 0a 20 20 61 72 6d 2f 66 6c 6f 61  vfp.S.  arm/floa
19c0: 74 75 6e 73 73 69 64 66 76 66 70 2e 53 0a 20 20  tunssidfvfp.S.  
19d0: 61 72 6d 2f 66 6c 6f 61 74 75 6e 73 73 69 73 66  arm/floatunssisf
19e0: 76 66 70 2e 53 0a 20 20 61 72 6d 2f 67 65 64 66  vfp.S.  arm/gedf
19f0: 32 76 66 70 2e 53 0a 20 20 61 72 6d 2f 67 65 73  2vfp.S.  arm/ges
1a00: 66 32 76 66 70 2e 53 0a 20 20 61 72 6d 2f 67 74  f2vfp.S.  arm/gt
1a10: 64 66 32 76 66 70 2e 53 0a 20 20 61 72 6d 2f 67  df2vfp.S.  arm/g
1a20: 74 73 66 32 76 66 70 2e 53 0a 20 20 61 72 6d 2f  tsf2vfp.S.  arm/
1a30: 6c 65 64 66 32 76 66 70 2e 53 0a 20 20 61 72 6d  ledf2vfp.S.  arm
1a40: 2f 6c 65 73 66 32 76 66 70 2e 53 0a 20 20 61 72  /lesf2vfp.S.  ar
1a50: 6d 2f 6c 74 64 66 32 76 66 70 2e 53 0a 20 20 61  m/ltdf2vfp.S.  a
1a60: 72 6d 2f 6c 74 73 66 32 76 66 70 2e 53 0a 20 20  rm/ltsf2vfp.S.  
1a70: 61 72 6d 2f 6d 75 6c 64 66 33 76 66 70 2e 53 0a  arm/muldf3vfp.S.
1a80: 20 20 61 72 6d 2f 6d 75 6c 73 66 33 76 66 70 2e    arm/mulsf3vfp.
1a90: 53 0a 20 20 61 72 6d 2f 6e 65 64 66 32 76 66 70  S.  arm/nedf2vfp
1aa0: 2e 53 0a 20 20 61 72 6d 2f 6e 65 67 64 66 32 76  .S.  arm/negdf2v
1ab0: 66 70 2e 53 0a 20 20 61 72 6d 2f 6e 65 67 73 66  fp.S.  arm/negsf
1ac0: 32 76 66 70 2e 53 0a 20 20 61 72 6d 2f 6e 65 73  2vfp.S.  arm/nes
1ad0: 66 32 76 66 70 2e 53 0a 20 20 61 72 6d 2f 73 75  f2vfp.S.  arm/su
1ae0: 62 64 66 33 76 66 70 2e 53 0a 20 20 61 72 6d 2f  bdf3vfp.S.  arm/
1af0: 73 75 62 73 66 33 76 66 70 2e 53 0a 20 20 61 72  subsf3vfp.S.  ar
1b00: 6d 2f 74 72 75 6e 63 64 66 73 66 32 76 66 70 2e  m/truncdfsf2vfp.
1b10: 53 0a 20 20 61 72 6d 2f 75 6e 6f 72 64 64 66 32  S.  arm/unorddf2
1b20: 76 66 70 2e 53 0a 20 20 61 72 6d 2f 75 6e 6f 72  vfp.S.  arm/unor
1b30: 64 73 66 32 76 66 70 2e 53 29 0a 73 65 74 28 61  dsf2vfp.S).set(a
1b40: 72 6d 5f 54 68 75 6d 62 31 5f 69 63 61 63 68 65  rm_Thumb1_icache
1b50: 5f 53 4f 55 52 43 45 53 0a 20 20 61 72 6d 2f 73  _SOURCES.  arm/s
1b60: 79 6e 63 5f 73 79 6e 63 68 72 6f 6e 69 7a 65 2e  ync_synchronize.
1b70: 53 29 0a 73 65 74 28 61 72 6d 5f 54 68 75 6d 62  S).set(arm_Thumb
1b80: 31 5f 53 4f 55 52 43 45 53 0a 20 20 24 7b 61 72  1_SOURCES.  ${ar
1b90: 6d 5f 54 68 75 6d 62 31 5f 4a 54 5f 53 4f 55 52  m_Thumb1_JT_SOUR
1ba0: 43 45 53 7d 0a 20 20 24 7b 61 72 6d 5f 54 68 75  CES}.  ${arm_Thu
1bb0: 6d 62 31 5f 53 6a 4c 6a 5f 45 48 5f 53 4f 55 52  mb1_SjLj_EH_SOUR
1bc0: 43 45 53 7d 0a 20 20 24 7b 61 72 6d 5f 54 68 75  CES}.  ${arm_Thu
1bd0: 6d 62 31 5f 56 46 50 76 32 5f 53 4f 55 52 43 45  mb1_VFPv2_SOURCE
1be0: 53 7d 0a 20 20 24 7b 61 72 6d 5f 54 68 75 6d 62  S}.  ${arm_Thumb
1bf0: 31 5f 69 63 61 63 68 65 5f 53 4f 55 52 43 45 53  1_icache_SOURCES
1c00: 7d 29 0a 0a 69 66 28 4d 49 4e 47 57 29 0a 20 20  })..if(MINGW).  
1c10: 73 65 74 28 61 72 6d 5f 53 4f 55 52 43 45 53 0a  set(arm_SOURCES.
1c20: 20 20 20 20 20 20 61 72 6d 2f 61 65 61 62 69 5f        arm/aeabi_
1c30: 69 64 69 76 6d 6f 64 2e 53 0a 20 20 20 20 20 20  idivmod.S.      
1c40: 61 72 6d 2f 61 65 61 62 69 5f 6c 64 69 76 6d 6f  arm/aeabi_ldivmo
1c50: 64 2e 53 0a 20 20 20 20 20 20 61 72 6d 2f 61 65  d.S.      arm/ae
1c60: 61 62 69 5f 75 69 64 69 76 6d 6f 64 2e 53 0a 20  abi_uidivmod.S. 
1c70: 20 20 20 20 20 61 72 6d 2f 61 65 61 62 69 5f 75       arm/aeabi_u
1c80: 6c 64 69 76 6d 6f 64 2e 53 0a 20 20 20 20 20 20  ldivmod.S.      
1c90: 64 69 76 6d 6f 64 64 69 34 2e 63 0a 20 20 20 20  divmoddi4.c.    
1ca0: 20 20 64 69 76 6d 6f 64 73 69 34 2e 63 0a 20 20    divmodsi4.c.  
1cb0: 20 20 20 20 64 69 76 64 69 33 2e 63 0a 20 20 20      divdi3.c.   
1cc0: 20 20 20 64 69 76 73 69 33 2e 63 0a 20 20 20 20     divsi3.c.    
1cd0: 20 20 66 69 78 64 66 64 69 2e 63 0a 20 20 20 20    fixdfdi.c.    
1ce0: 20 20 66 69 78 73 66 64 69 2e 63 0a 20 20 20 20    fixsfdi.c.    
1cf0: 20 20 66 69 78 75 6e 73 64 66 64 69 2e 63 0a 20    fixunsdfdi.c. 
1d00: 20 20 20 20 20 66 69 78 75 6e 73 73 66 64 69 2e       fixunssfdi.
1d10: 63 0a 20 20 20 20 20 20 66 6c 6f 61 74 64 69 64  c.      floatdid
1d20: 66 2e 63 0a 20 20 20 20 20 20 66 6c 6f 61 74 64  f.c.      floatd
1d30: 69 73 66 2e 63 0a 20 20 20 20 20 20 66 6c 6f 61  isf.c.      floa
1d40: 74 75 6e 64 69 64 66 2e 63 0a 20 20 20 20 20 20  tundidf.c.      
1d50: 66 6c 6f 61 74 75 6e 64 69 73 66 2e 63 0a 20 20  floatundisf.c.  
1d60: 20 20 20 20 6d 69 6e 67 77 5f 66 69 78 66 6c 6f      mingw_fixflo
1d70: 61 74 2e 63 0a 20 20 20 20 20 20 6d 6f 64 64 69  at.c.      moddi
1d80: 33 2e 63 0a 20 20 20 20 20 20 75 64 69 76 6d 6f  3.c.      udivmo
1d90: 64 64 69 34 2e 63 0a 20 20 20 20 20 20 75 64 69  ddi4.c.      udi
1da0: 76 6d 6f 64 73 69 34 2e 63 0a 20 20 20 20 20 20  vmodsi4.c.      
1db0: 75 64 69 76 73 69 33 2e 63 0a 20 20 20 20 20 20  udivsi3.c.      
1dc0: 75 6d 6f 64 64 69 33 2e 63 29 0a 65 6c 73 65 69  umoddi3.c).elsei
1dd0: 66 28 4e 4f 54 20 57 49 4e 33 32 29 0a 20 20 23  f(NOT WIN32).  #
1de0: 20 54 4f 44 4f 20 74 68 65 20 45 41 42 49 20 73   TODO the EABI s
1df0: 6f 75 72 63 65 73 20 73 68 6f 75 6c 64 20 6f 6e  ources should on
1e00: 6c 79 20 62 65 20 61 64 64 65 64 20 74 6f 20 45  ly be added to E
1e10: 41 42 49 20 74 61 72 67 65 74 73 0a 20 20 73 65  ABI targets.  se
1e20: 74 28 61 72 6d 5f 53 4f 55 52 43 45 53 0a 20 20  t(arm_SOURCES.  
1e30: 20 20 24 7b 61 72 6d 5f 53 4f 55 52 43 45 53 7d    ${arm_SOURCES}
1e40: 0a 20 20 20 20 24 7b 61 72 6d 5f 45 41 42 49 5f  .    ${arm_EABI_
1e50: 53 4f 55 52 43 45 53 7d 0a 20 20 20 20 24 7b 61  SOURCES}.    ${a
1e60: 72 6d 5f 54 68 75 6d 62 31 5f 53 4f 55 52 43 45  rm_Thumb1_SOURCE
1e70: 53 7d 29 0a 65 6e 64 69 66 28 29 0a 0a 73 65 74  S}).endif()..set
1e80: 28 61 61 72 63 68 36 34 5f 53 4f 55 52 43 45 53  (aarch64_SOURCES
1e90: 0a 20 20 63 6f 6d 70 61 72 65 74 66 32 2e 63 0a  .  comparetf2.c.
1ea0: 20 20 65 78 74 65 6e 64 64 66 74 66 32 2e 63 0a    extenddftf2.c.
1eb0: 20 20 65 78 74 65 6e 64 73 66 74 66 32 2e 63 0a    extendsftf2.c.
1ec0: 20 20 66 69 78 74 66 64 69 2e 63 0a 20 20 66 69    fixtfdi.c.  fi
1ed0: 78 74 66 73 69 2e 63 0a 20 20 66 69 78 74 66 74  xtfsi.c.  fixtft
1ee0: 69 2e 63 0a 20 20 66 69 78 75 6e 73 74 66 64 69  i.c.  fixunstfdi
1ef0: 2e 63 0a 20 20 66 69 78 75 6e 73 74 66 73 69 2e  .c.  fixunstfsi.
1f00: 63 0a 20 20 66 69 78 75 6e 73 74 66 74 69 2e 63  c.  fixunstfti.c
1f10: 0a 20 20 66 6c 6f 61 74 64 69 74 66 2e 63 0a 20  .  floatditf.c. 
1f20: 20 66 6c 6f 61 74 73 69 74 66 2e 63 0a 20 20 66   floatsitf.c.  f
1f30: 6c 6f 61 74 74 69 74 66 2e 63 0a 20 20 66 6c 6f  loattitf.c.  flo
1f40: 61 74 75 6e 64 69 74 66 2e 63 0a 20 20 66 6c 6f  atunditf.c.  flo
1f50: 61 74 75 6e 73 69 74 66 2e 63 0a 20 20 66 6c 6f  atunsitf.c.  flo
1f60: 61 74 75 6e 74 69 74 66 2e 63 0a 20 20 6d 75 6c  atuntitf.c.  mul
1f70: 74 63 33 2e 63 0a 20 20 74 72 75 6e 63 74 66 64  tc3.c.  trunctfd
1f80: 66 32 2e 63 0a 20 20 74 72 75 6e 63 74 66 73 66  f2.c.  trunctfsf
1f90: 32 2e 63 0a 20 20 24 7b 47 45 4e 45 52 49 43 5f  2.c.  ${GENERIC_
1fa0: 53 4f 55 52 43 45 53 7d 29 0a 0a 73 65 74 28 61  SOURCES})..set(a
1fb0: 72 6d 68 66 5f 53 4f 55 52 43 45 53 20 24 7b 61  rmhf_SOURCES ${a
1fc0: 72 6d 5f 53 4f 55 52 43 45 53 7d 29 0a 73 65 74  rm_SOURCES}).set
1fd0: 28 61 72 6d 76 37 5f 53 4f 55 52 43 45 53 20 24  (armv7_SOURCES $
1fe0: 7b 61 72 6d 5f 53 4f 55 52 43 45 53 7d 29 0a 73  {arm_SOURCES}).s
1ff0: 65 74 28 61 72 6d 76 37 73 5f 53 4f 55 52 43 45  et(armv7s_SOURCE
2000: 53 20 24 7b 61 72 6d 5f 53 4f 55 52 43 45 53 7d  S ${arm_SOURCES}
2010: 29 0a 73 65 74 28 61 72 6d 76 37 6b 5f 53 4f 55  ).set(armv7k_SOU
2020: 52 43 45 53 20 24 7b 61 72 6d 5f 53 4f 55 52 43  RCES ${arm_SOURC
2030: 45 53 7d 29 0a 73 65 74 28 61 72 6d 36 34 5f 53  ES}).set(arm64_S
2040: 4f 55 52 43 45 53 20 24 7b 61 61 72 63 68 36 34  OURCES ${aarch64
2050: 5f 53 4f 55 52 43 45 53 7d 29 0a 0a 23 20 6d 61  _SOURCES})..# ma
2060: 63 68 6f 5f 65 6d 62 65 64 64 65 64 20 61 72 63  cho_embedded arc
2070: 68 73 0a 73 65 74 28 61 72 6d 76 36 6d 5f 53 4f  hs.set(armv6m_SO
2080: 55 52 43 45 53 20 24 7b 47 45 4e 45 52 49 43 5f  URCES ${GENERIC_
2090: 53 4f 55 52 43 45 53 7d 29 0a 73 65 74 28 61 72  SOURCES}).set(ar
20a0: 6d 76 37 6d 5f 53 4f 55 52 43 45 53 20 24 7b 61  mv7m_SOURCES ${a
20b0: 72 6d 5f 53 4f 55 52 43 45 53 7d 29 0a 73 65 74  rm_SOURCES}).set
20c0: 28 61 72 6d 76 37 65 6d 5f 53 4f 55 52 43 45 53  (armv7em_SOURCES
20d0: 20 24 7b 61 72 6d 5f 53 4f 55 52 43 45 53 7d 29   ${arm_SOURCES})
20e0: 0a 0a 73 65 74 28 6d 69 70 73 5f 53 4f 55 52 43  ..set(mips_SOURC
20f0: 45 53 20 24 7b 47 45 4e 45 52 49 43 5f 53 4f 55  ES ${GENERIC_SOU
2100: 52 43 45 53 7d 29 0a 73 65 74 28 6d 69 70 73 65  RCES}).set(mipse
2110: 6c 5f 53 4f 55 52 43 45 53 20 24 7b 6d 69 70 73  l_SOURCES ${mips
2120: 5f 53 4f 55 52 43 45 53 7d 29 0a 73 65 74 28 6d  _SOURCES}).set(m
2130: 69 70 73 36 34 5f 53 4f 55 52 43 45 53 20 24 7b  ips64_SOURCES ${
2140: 6d 69 70 73 5f 53 4f 55 52 43 45 53 7d 29 0a 73  mips_SOURCES}).s
2150: 65 74 28 6d 69 70 73 36 34 65 6c 5f 53 4f 55 52  et(mips64el_SOUR
2160: 43 45 53 20 24 7b 6d 69 70 73 5f 53 4f 55 52 43  CES ${mips_SOURC
2170: 45 53 7d 29 0a 0a 73 65 74 28 77 61 73 6d 33 32  ES})..set(wasm32
2180: 5f 53 4f 55 52 43 45 53 20 24 7b 47 45 4e 45 52  _SOURCES ${GENER
2190: 49 43 5f 53 4f 55 52 43 45 53 7d 29 0a 73 65 74  IC_SOURCES}).set
21a0: 28 77 61 73 6d 36 34 5f 53 4f 55 52 43 45 53 20  (wasm64_SOURCES 
21b0: 24 7b 47 45 4e 45 52 49 43 5f 53 4f 55 52 43 45  ${GENERIC_SOURCE
21c0: 53 7d 29 0a 0a 61 64 64 5f 63 75 73 74 6f 6d 5f  S})..add_custom_
21d0: 74 61 72 67 65 74 28 62 75 69 6c 74 69 6e 73 29  target(builtins)
21e0: 0a 73 65 74 5f 74 61 72 67 65 74 5f 70 72 6f 70  .set_target_prop
21f0: 65 72 74 69 65 73 28 62 75 69 6c 74 69 6e 73 20  erties(builtins 
2200: 50 52 4f 50 45 52 54 49 45 53 20 46 4f 4c 44 45  PROPERTIES FOLDE
2210: 52 20 22 43 6f 6d 70 69 6c 65 72 2d 52 54 20 4d  R "Compiler-RT M
2220: 69 73 63 22 29 0a 0a 69 66 20 28 41 50 50 4c 45  isc")..if (APPLE
2230: 29 0a 20 20 61 64 64 5f 73 75 62 64 69 72 65 63  ).  add_subdirec
2240: 74 6f 72 79 28 44 61 72 77 69 6e 2d 65 78 63 6c  tory(Darwin-excl
2250: 75 64 65 73 29 0a 20 20 61 64 64 5f 73 75 62 64  udes).  add_subd
2260: 69 72 65 63 74 6f 72 79 28 6d 61 63 68 6f 5f 65  irectory(macho_e
2270: 6d 62 65 64 64 65 64 29 0a 20 20 64 61 72 77 69  mbedded).  darwi
2280: 6e 5f 61 64 64 5f 62 75 69 6c 74 69 6e 5f 6c 69  n_add_builtin_li
2290: 62 72 61 72 69 65 73 28 24 7b 42 55 49 4c 54 49  braries(${BUILTI
22a0: 4e 5f 53 55 50 50 4f 52 54 45 44 5f 4f 53 7d 29  N_SUPPORTED_OS})
22b0: 0a 65 6c 73 65 20 28 29 0a 20 20 73 65 74 28 42  .else ().  set(B
22c0: 55 49 4c 54 49 4e 5f 43 46 4c 41 47 53 20 22 22  UILTIN_CFLAGS ""
22d0: 29 0a 0a 20 20 61 70 70 65 6e 64 5f 6c 69 73 74  )..  append_list
22e0: 5f 69 66 28 43 4f 4d 50 49 4c 45 52 5f 52 54 5f  _if(COMPILER_RT_
22f0: 48 41 53 5f 53 54 44 5f 43 31 31 5f 46 4c 41 47  HAS_STD_C11_FLAG
2300: 20 2d 73 74 64 3d 63 31 31 20 42 55 49 4c 54 49   -std=c11 BUILTI
2310: 4e 5f 43 46 4c 41 47 53 29 0a 0a 20 20 23 20 54  N_CFLAGS)..  # T
2320: 68 65 73 65 20 66 6c 61 67 73 20 77 6f 75 6c 64  hese flags would
2330: 20 6e 6f 72 6d 61 6c 6c 79 20 62 65 20 61 64 64   normally be add
2340: 65 64 20 74 6f 20 43 4d 41 4b 45 5f 43 5f 46 4c  ed to CMAKE_C_FL
2350: 41 47 53 20 62 79 20 74 68 65 20 6c 6c 76 6d 0a  AGS by the llvm.
2360: 20 20 23 20 63 6d 61 6b 65 20 73 74 65 70 2e 20    # cmake step. 
2370: 41 64 64 20 74 68 65 6d 20 6d 61 6e 75 61 6c 6c  Add them manuall
2380: 79 20 69 66 20 74 68 69 73 20 69 73 20 61 20 73  y if this is a s
2390: 74 61 6e 64 61 6c 6f 6e 65 20 62 75 69 6c 64 2e  tandalone build.
23a0: 0a 20 20 69 66 28 43 4f 4d 50 49 4c 45 52 5f 52  .  if(COMPILER_R
23b0: 54 5f 53 54 41 4e 44 41 4c 4f 4e 45 5f 42 55 49  T_STANDALONE_BUI
23c0: 4c 44 29 0a 20 20 20 20 61 70 70 65 6e 64 5f 6c  LD).    append_l
23d0: 69 73 74 5f 69 66 28 43 4f 4d 50 49 4c 45 52 5f  ist_if(COMPILER_
23e0: 52 54 5f 48 41 53 5f 46 50 49 43 5f 46 4c 41 47  RT_HAS_FPIC_FLAG
23f0: 20 2d 66 50 49 43 20 42 55 49 4c 54 49 4e 5f 43   -fPIC BUILTIN_C
2400: 46 4c 41 47 53 29 0a 20 20 20 20 61 70 70 65 6e  FLAGS).    appen
2410: 64 5f 6c 69 73 74 5f 69 66 28 43 4f 4d 50 49 4c  d_list_if(COMPIL
2420: 45 52 5f 52 54 5f 48 41 53 5f 46 4e 4f 5f 42 55  ER_RT_HAS_FNO_BU
2430: 49 4c 54 49 4e 5f 46 4c 41 47 20 2d 66 6e 6f 2d  ILTIN_FLAG -fno-
2440: 62 75 69 6c 74 69 6e 20 42 55 49 4c 54 49 4e 5f  builtin BUILTIN_
2450: 43 46 4c 41 47 53 29 0a 20 20 20 20 61 70 70 65  CFLAGS).    appe
2460: 6e 64 5f 6c 69 73 74 5f 69 66 28 43 4f 4d 50 49  nd_list_if(COMPI
2470: 4c 45 52 5f 52 54 5f 48 41 53 5f 56 49 53 49 42  LER_RT_HAS_VISIB
2480: 49 4c 49 54 59 5f 48 49 44 44 45 4e 5f 46 4c 41  ILITY_HIDDEN_FLA
2490: 47 20 2d 66 76 69 73 69 62 69 6c 69 74 79 3d 68  G -fvisibility=h
24a0: 69 64 64 65 6e 20 42 55 49 4c 54 49 4e 5f 43 46  idden BUILTIN_CF
24b0: 4c 41 47 53 29 0a 20 20 20 20 69 66 28 4e 4f 54  LAGS).    if(NOT
24c0: 20 43 4f 4d 50 49 4c 45 52 5f 52 54 5f 44 45 42   COMPILER_RT_DEB
24d0: 55 47 29 0a 20 20 20 20 20 20 61 70 70 65 6e 64  UG).      append
24e0: 5f 6c 69 73 74 5f 69 66 28 43 4f 4d 50 49 4c 45  _list_if(COMPILE
24f0: 52 5f 52 54 5f 48 41 53 5f 4f 4d 49 54 5f 46 52  R_RT_HAS_OMIT_FR
2500: 41 4d 45 5f 50 4f 49 4e 54 45 52 5f 46 4c 41 47  AME_POINTER_FLAG
2510: 20 2d 66 6f 6d 69 74 2d 66 72 61 6d 65 2d 70 6f   -fomit-frame-po
2520: 69 6e 74 65 72 20 42 55 49 4c 54 49 4e 5f 43 46  inter BUILTIN_CF
2530: 4c 41 47 53 29 0a 20 20 20 20 65 6e 64 69 66 28  LAGS).    endif(
2540: 29 0a 20 20 65 6e 64 69 66 28 29 0a 0a 20 20 73  ).  endif()..  s
2550: 65 74 28 42 55 49 4c 54 49 4e 5f 44 45 46 53 20  et(BUILTIN_DEFS 
2560: 22 22 29 0a 0a 20 20 61 70 70 65 6e 64 5f 6c 69  "")..  append_li
2570: 73 74 5f 69 66 28 43 4f 4d 50 49 4c 45 52 5f 52  st_if(COMPILER_R
2580: 54 5f 48 41 53 5f 56 49 53 49 42 49 4c 49 54 59  T_HAS_VISIBILITY
2590: 5f 48 49 44 44 45 4e 5f 46 4c 41 47 20 56 49 53  _HIDDEN_FLAG VIS
25a0: 49 42 49 4c 49 54 59 5f 48 49 44 44 45 4e 20 42  IBILITY_HIDDEN B
25b0: 55 49 4c 54 49 4e 5f 44 45 46 53 29 0a 0a 20 20  UILTIN_DEFS)..  
25c0: 66 6f 72 65 61 63 68 20 28 61 72 63 68 20 24 7b  foreach (arch ${
25d0: 42 55 49 4c 54 49 4e 5f 53 55 50 50 4f 52 54 45  BUILTIN_SUPPORTE
25e0: 44 5f 41 52 43 48 7d 29 0a 20 20 20 20 69 66 20  D_ARCH}).    if 
25f0: 28 43 41 4e 5f 54 41 52 47 45 54 5f 24 7b 61 72  (CAN_TARGET_${ar
2600: 63 68 7d 29 0a 20 20 20 20 20 20 23 20 46 69 6c  ch}).      # Fil
2610: 74 65 72 20 6f 75 74 20 67 65 6e 65 72 69 63 20  ter out generic 
2620: 76 65 72 73 69 6f 6e 73 20 6f 66 20 72 6f 75 74  versions of rout
2630: 69 6e 65 73 20 74 68 61 74 20 61 72 65 20 72 65  ines that are re
2640: 2d 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 0a  -implemented in.
2650: 20 20 20 20 20 20 23 20 61 72 63 68 69 74 65 63        # architec
2660: 74 75 72 65 20 73 70 65 63 69 66 69 63 20 6d 61  ture specific ma
2670: 6e 6e 65 72 2e 20 20 54 68 69 73 20 70 72 65 76  nner.  This prev
2680: 65 6e 74 73 20 6d 75 6c 74 69 70 6c 65 20 64 65  ents multiple de
2690: 66 69 6e 69 74 69 6f 6e 73 20 6f 66 20 74 68 65  finitions of the
26a0: 0a 20 20 20 20 20 20 23 20 73 61 6d 65 20 73 79  .      # same sy
26b0: 6d 62 6f 6c 73 2c 20 6d 61 6b 69 6e 67 20 74 68  mbols, making th
26c0: 65 20 73 79 6d 62 6f 6c 20 73 65 6c 65 63 74 69  e symbol selecti
26d0: 6f 6e 20 6e 6f 6e 2d 64 65 74 65 72 6d 69 6e 69  on non-determini
26e0: 73 74 69 63 2e 0a 20 20 20 20 20 20 66 6f 72 65  stic..      fore
26f0: 61 63 68 20 28 5f 66 69 6c 65 20 24 7b 24 7b 61  ach (_file ${${a
2700: 72 63 68 7d 5f 53 4f 55 52 43 45 53 7d 29 0a 20  rch}_SOURCES}). 
2710: 20 20 20 20 20 20 20 69 66 20 28 24 7b 5f 66 69         if (${_fi
2720: 6c 65 7d 20 4d 41 54 43 48 45 53 20 24 7b 61 72  le} MATCHES ${ar
2730: 63 68 7d 2f 2a 29 0a 20 20 20 20 20 20 20 20 20  ch}/*).         
2740: 20 67 65 74 5f 66 69 6c 65 6e 61 6d 65 5f 63 6f   get_filename_co
2750: 6d 70 6f 6e 65 6e 74 28 5f 6e 61 6d 65 20 24 7b  mponent(_name ${
2760: 5f 66 69 6c 65 7d 20 4e 41 4d 45 29 0a 20 20 20  _file} NAME).   
2770: 20 20 20 20 20 20 20 73 74 72 69 6e 67 28 52 45         string(RE
2780: 50 4c 41 43 45 20 22 2e 53 22 20 22 2e 63 22 20  PLACE ".S" ".c" 
2790: 5f 63 6e 61 6d 65 20 22 24 7b 5f 6e 61 6d 65 7d  _cname "${_name}
27a0: 22 29 0a 20 20 20 20 20 20 20 20 20 20 6c 69 73  ").          lis
27b0: 74 28 52 45 4d 4f 56 45 5f 49 54 45 4d 20 24 7b  t(REMOVE_ITEM ${
27c0: 61 72 63 68 7d 5f 53 4f 55 52 43 45 53 20 24 7b  arch}_SOURCES ${
27d0: 5f 63 6e 61 6d 65 7d 29 0a 20 20 20 20 20 20 20  _cname}).       
27e0: 20 65 6e 64 69 66 20 28 29 0a 20 20 20 20 20 20   endif ().      
27f0: 65 6e 64 66 6f 72 65 61 63 68 20 28 29 0a 0a 20  endforeach ().. 
2800: 20 20 20 20 20 23 20 4e 65 65 64 65 64 20 66 6f       # Needed fo
2810: 72 20 63 6c 65 61 72 5f 63 61 63 68 65 20 6f 6e  r clear_cache on
2820: 20 64 65 62 75 67 20 6d 6f 64 65 2c 20 64 75 65   debug mode, due
2830: 20 74 6f 20 72 37 27 73 20 75 73 61 67 65 20 69   to r7's usage i
2840: 6e 20 69 6e 6c 69 6e 65 20 61 73 6d 2e 0a 20 20  n inline asm..  
2850: 20 20 20 20 23 20 52 65 6c 65 61 73 65 20 6d 6f      # Release mo
2860: 64 65 20 61 6c 72 65 61 64 79 20 73 65 74 73 20  de already sets 
2870: 69 74 20 76 69 61 20 2d 4f 32 2f 33 2c 20 44 65  it via -O2/3, De
2880: 62 75 67 20 6d 6f 64 65 20 64 6f 65 73 6e 27 74  bug mode doesn't
2890: 2e 0a 20 20 20 20 20 20 69 66 20 28 24 7b 61 72  ..      if (${ar
28a0: 63 68 7d 20 53 54 52 45 51 55 41 4c 20 22 61 72  ch} STREQUAL "ar
28b0: 6d 68 66 22 29 0a 20 20 20 20 20 20 20 20 6c 69  mhf").        li
28c0: 73 74 28 41 50 50 45 4e 44 20 42 55 49 4c 54 49  st(APPEND BUILTI
28d0: 4e 5f 43 46 4c 41 47 53 20 2d 66 6f 6d 69 74 2d  N_CFLAGS -fomit-
28e0: 66 72 61 6d 65 2d 70 6f 69 6e 74 65 72 29 0a 20  frame-pointer). 
28f0: 20 20 20 20 20 65 6e 64 69 66 28 29 0a 0a 20 20       endif()..  
2900: 20 20 20 20 61 64 64 5f 63 6f 6d 70 69 6c 65 72      add_compiler
2910: 5f 72 74 5f 72 75 6e 74 69 6d 65 28 63 6c 61 6e  _rt_runtime(clan
2920: 67 5f 72 74 2e 62 75 69 6c 74 69 6e 73 0a 20 20  g_rt.builtins.  
2930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2940: 20 20 20 20 20 20 20 20 20 20 20 20 53 54 41 54              STAT
2950: 49 43 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  IC.             
2960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2970: 20 41 52 43 48 53 20 24 7b 61 72 63 68 7d 0a 20   ARCHS ${arch}. 
2980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2990: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 4f 55               SOU
29a0: 52 43 45 53 20 24 7b 24 7b 61 72 63 68 7d 5f 53  RCES ${${arch}_S
29b0: 4f 55 52 43 45 53 7d 0a 20 20 20 20 20 20 20 20  OURCES}.        
29c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29d0: 20 20 20 20 20 20 44 45 46 53 20 24 7b 42 55 49        DEFS ${BUI
29e0: 4c 54 49 4e 5f 44 45 46 53 7d 0a 20 20 20 20 20  LTIN_DEFS}.     
29f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a00: 20 20 20 20 20 20 20 20 20 43 46 4c 41 47 53 20           CFLAGS 
2a10: 24 7b 42 55 49 4c 54 49 4e 5f 43 46 4c 41 47 53  ${BUILTIN_CFLAGS
2a20: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
2a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a40: 50 41 52 45 4e 54 5f 54 41 52 47 45 54 20 62 75  PARENT_TARGET bu
2a50: 69 6c 74 69 6e 73 29 0a 20 20 20 20 65 6e 64 69  iltins).    endi
2a60: 66 20 28 29 0a 20 20 65 6e 64 66 6f 72 65 61 63  f ().  endforeac
2a70: 68 20 28 29 0a 65 6e 64 69 66 20 28 29 0a 0a 61  h ().endif ()..a
2a80: 64 64 5f 64 65 70 65 6e 64 65 6e 63 69 65 73 28  dd_dependencies(
2a90: 63 6f 6d 70 69 6c 65 72 2d 72 74 20 62 75 69 6c  compiler-rt buil
2aa0: 74 69 6e 73 29 0a                                tins).