Skip to content
  1. Jun 12, 2015
  2. Jun 05, 2015
  3. Apr 09, 2015
    • Javed Absar's avatar
      [ARM] support for Cortex-R4/R4F · 5c5e3c5e
      Javed Absar authored
      Currently, llvm (backend) doesn't know cortex-r4, even though it is the
      default target for armv7r. Using "--target=armv7r-arm-none-eabi" provokes
      'cortex-r4' is not a recognized processor for this target' by llvm.
      This patch adds support for cortex-r4 and, very closely related, r4f.
      
      llvm-svn: 234486
      5c5e3c5e
  4. Mar 26, 2015
  5. Mar 17, 2015
    • Renato Golin's avatar
      [ARM] Add support for ARMV6K subtarget (LLVM) · 12350607
      Renato Golin authored
      ARMv6K is another layer between ARMV6 and ARMV6T2. This is the LLVM
      side of the changes.
      
      ARMV6 family LLVM implementation.
      
      +-------------------------------------+
      | ARMV6                               |
      +----------------+--------------------+
      | ARMV6M (thumb) | ARMV6K (arm,thumb) | <- From ARMV6K and ARMV6M processors
      +----------------+--------------------+    have support for hint instructions
      | ARMV6T2 (arm,thumb,thumb2)          |    (SEV/WFE/WFI/NOP/YIELD). They can
      +-------------------------------------+    be either real or default to NOP.
      | ARMV7 (arm,thumb,thumb2)            |    The two processors also use
      +-------------------------------------+    different encoding for them.
      
      Patch by Vinicius Tinti.
      
      llvm-svn: 232468
      12350607
  6. Feb 18, 2015
    • Bradley Smith's avatar
      [ARM] Add missing M/R class CPUs · 26c9922a
      Bradley Smith authored
      Add some of the missing M and R class Cortex CPUs, namely:
      
      Cortex-M0+ (called Cortex-M0plus for GCC compatibility)
      Cortex-M1
      SC000
      SC300
      Cortex-R5
      
      llvm-svn: 229660
      26c9922a
  7. Feb 10, 2015
  8. Feb 04, 2015
    • Renato Golin's avatar
      Adding support to LLVM for targeting Cortex-A72 · 60885044
      Renato Golin authored
      Currently, Cortex-A72 is modelled as an Cortex-A57 except the fp
      load balancing pass isn't enabled for Cortex-A72 as it's not
      profitable to have it enabled for this core.
      
      Patch by Ranjeet Singh.
      
      llvm-svn: 228140
      60885044
  9. Jan 29, 2015
  10. Jan 07, 2015
  11. Jan 05, 2015
    • Charlie Turner's avatar
      Emit the build attribute Tag_conformance. · 8b2caa45
      Charlie Turner authored
      Claim conformance to version 2.09 of the ARM ABI.
      
      This build attribute must be emitted first amongst the build attributes when
      written to an object file. This is to simplify conformance detection by
      consumers.
      
      Change-Id: If9eddcfc416bc9ad6e5cc8cdcb05d0031af7657e
      llvm-svn: 225166
      8b2caa45
  12. Dec 12, 2014
    • Charlie Turner's avatar
      Emit Tag_ABI_FP_16bit_format build attribute. · 1a53996c
      Charlie Turner authored
      The __fp16 type is unconditionally exposed. Since -mfp16-format is not yet
      supported, there is not a user switch to change this behaviour. This build
      attribute should capture the default behaviour of the compiler, which is to
      expose the IEEE 754 version of __fp16.
      
      When -mfp16-format is emitted, that will be the way to control the value of
      this build attribute.
      
      Change-Id: I8a46641ff0fd2ef8ad0af5f482a6d1af2ac3f6b0
      llvm-svn: 224115
      1a53996c
  13. Dec 05, 2014
    • Charlie Turner's avatar
      Add missing FP build attribute tests. · c96e95c1
      Charlie Turner authored
      The test file test/CodeGen/ARM/build-attributes.ll was missing several
      floating-point build attribute tests. The intention of this commit is that for
      each CPU / architecture currently tested, there are now tests that make sure
      the following attributes are sufficiently checked,
      
        * Tag_ABI_FP_rounding
        * Tag_ABI_FP_denormal
        * Tag_ABI_FP_exceptions
        * Tag_ABI_FP_user_exceptions
        * Tag_ABI_FP_number_model
      
      Also in this commit, the -unsafe-fp-math flag has been augmented with the full
      suite of flags Clang sends to LLVM when you pass -ffast-math to Clang. That is,
      `-unsafe-fp-math' has been changed to `-enable-unsafe-fp-math -disable-fp-elim
      -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast'
      
      Change-Id: I35d766076bcbbf09021021c0a534bf8bf9a32dfc
      llvm-svn: 223454
      c96e95c1
  14. Dec 03, 2014
    • Charlie Turner's avatar
      Emit ABI_FP_rounding attribute. · f02c9248
      Charlie Turner authored
      LLVM understands a -enable-sign-dependent-rounding-fp-math codegen option. When
      the user has specified this option, the Tag_ABI_FP_rounding attribute should be
      emitted with value 1. This option currently does not appear to disable
      transformations and optimizations that assume default floating point rounding
      behavior, AFAICT, but the intention should be recorded in the build attributes,
      regardless of what the compiler actually does with the intention.
      
      Change-Id: If838578df3dc652b6f2796b8d152545674bcb30e
      llvm-svn: 223218
      f02c9248
    • Charlie Turner's avatar
      Add tests for default value of Tag_ABI_FP_rounding. · 1620a69f
      Charlie Turner authored
      Change-Id: I051866d073fc6ce87ce3e693a3762da6d81f4393
      llvm-svn: 223217
      1620a69f
  15. Dec 02, 2014
    • Charlie Turner's avatar
      Emit Tag_ABI_FP_denormal correctly in fast-math mode. · 15f91c52
      Charlie Turner authored
      The default ARM floating-point mode does not support IEEE 754 mode exactly. Of
      relevance to this patch is that input denormals are flushed to zero. The way in
      which they're flushed to zero depends on the architecture,
      
        * For VFPv2, it is implementation defined as to whether the sign of zero is
          preserved.
        * For VFPv3 and above, the sign of zero is always preserved when a denormal
          is flushed to zero.
      
      When FP support has been disabled, the strategy taken by this patch is to
      assume the software support will mirror the behaviour of the hardware support
      for the target *if it existed*. That is, for architectures which can only have
      VFPv2, it is assumed the software will flush to positive zero. For later
      architectures it is assumed the software will flush to zero preserving sign.
      
      Change-Id: Icc5928633ba222a4ba3ca8c0df44a440445865fd
      llvm-svn: 223110
      15f91c52
  16. Nov 03, 2014
    • Charlie Turner's avatar
      Remove the cortex-a9-mp CPU. · 1d8cc909
      Charlie Turner authored
      This CPU definition is redundant. The Cortex-A9 is defined as
      supporting multiprocessing extensions. Remove its definition and
      update appropriate tests.
      
      LLVM defines both a cortex-a9 CPU and a cortex-a9-mp CPU. The only
      difference between the two CPU definitions in ARM.td is that
      cortex-a9-mp contains the feature FeatureMP for multiprocessing
      extensions.
      
      This is redundant since the Cortex-A9 is defined as having
      multiprocessing extensions in the TRMs. armcc also defines the
      Cortex-A9 as having multiprocessing extensions by default.
      
      Change-Id: Ifcadaa6c322be0a33d9d2a39cfdd7da1d75981a7
      llvm-svn: 221166
      1d8cc909
  17. Oct 30, 2014
  18. Oct 13, 2014
  19. Oct 08, 2014
  20. Oct 01, 2014
    • Oliver Stannard's avatar
      [ARM] Add support for Cortex-M7, FPv5-SP and FPv5-DP (LLVM) · 37e4daab
      Oliver Stannard authored
      The Cortex-M7 has 3 options for its FPU: none, FPv5-SP-D16 and
      FPv5-DP-D16. FPv5 has the same instructions as FP-ARMv8, so it can be
      modelled using the same target feature, and all double-precision
      operations are already disabled by the fp-only-sp target features.
      
      llvm-svn: 218747
      37e4daab
  21. Jul 25, 2014
  22. May 27, 2014
  23. Feb 16, 2014
  24. Jan 20, 2014
  25. Jan 19, 2014
  26. Jan 16, 2014
  27. Jan 10, 2014
  28. Nov 25, 2013
  29. Nov 22, 2013
  30. Nov 21, 2013
  31. Nov 12, 2013
  32. Nov 01, 2013
    • Bradley Smith's avatar
      [ARM] Add Virtualization subtarget feature and more build attributes in this area · 2521975a
      Bradley Smith authored
      Add a Virtualization ARM subtarget feature along with adding proper build
      attribute emission for Tag_Virtualization_use (encodes Virtualization and
      TrustZone) and Tag_MPextension_use.
      
      Also rework test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll testcase to
      something that is more maintainable. This changes the focus of this
      testcase away from testing CPU defaults (which is tested elsewhere), onto
      specifically testing that attributes are encoded correctly.
      
      llvm-svn: 193859
      2521975a
    • Bradley Smith's avatar
      [ARM] Fix Tag_ABI_HardFP_use build attribute · c848beba
      Bradley Smith authored
      Fix Tag_ABI_HardFP_use build attribute to handle single precision FP,
      replace deprecated Tag_ABI_HardFP_use value of 3 with 0 and also add
      some tests for Tag_ABI_VFP_args.
      
      llvm-svn: 193856
      c848beba
  33. Oct 28, 2013
    • Logan Chien's avatar
      [arm] Implement eabi_attribute, cpu, and fpu directives. · 8cbb80d1
      Logan Chien authored
      This commit allows the ARM integrated assembler to parse
      and assemble the code with .eabi_attribute, .cpu, and
      .fpu directives.
      
      To implement the feature, this commit moves the code from
      AttrEmitter to ARMTargetStreamers, and several new test
      cases related to cortex-m4, cortex-r5, and cortex-a15 are
      added.
      
      Besides, this commit also change the Subtarget->isFPOnlySP()
      to Subtarget->hasD16() to match the usage of .fpu directive.
      
      This commit changes the test cases:
      
      * Several .eabi_attribute directives in
        2010-09-29-mc-asm-header-test.ll are removed because the .fpu
        directive already cover the functionality.
      
      * In the Cortex-A15 test case, the value for
        Tag_Advanced_SIMD_arch has be changed from 1 to 2,
        which is more precise.
      
      llvm-svn: 193524
      8cbb80d1
  34. Oct 14, 2013
  35. Oct 11, 2013
  36. Oct 07, 2013
  37. Oct 03, 2013
Loading