[all-commits] [llvm/llvm-project] 7cbbf8: [ARM] CMSE code generation

Momchil Velikov via All-commits all-commits at lists.llvm.org
Tue May 5 10:24:12 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 7cbbf89d230d46c3de9a7affc29b23f08c4377a1
      https://github.com/llvm/llvm-project/commit/7cbbf89d230d46c3de9a7affc29b23f08c4377a1
  Author: Momchil Velikov <momchil.velikov at arm.com>
  Date:   2020-05-05 (Tue, 05 May 2020)

  Changed paths:
    M llvm/lib/Target/ARM/ARMAsmPrinter.cpp
    M llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
    M llvm/lib/Target/ARM/ARMFastISel.cpp
    M llvm/lib/Target/ARM/ARMFrameLowering.cpp
    M llvm/lib/Target/ARM/ARMFrameLowering.h
    M llvm/lib/Target/ARM/ARMISelLowering.cpp
    M llvm/lib/Target/ARM/ARMISelLowering.h
    M llvm/lib/Target/ARM/ARMInstrInfo.td
    M llvm/lib/Target/ARM/ARMInstrThumb.td
    M llvm/lib/Target/ARM/ARMMachineFunctionInfo.cpp
    M llvm/lib/Target/ARM/ARMMachineFunctionInfo.h
    M llvm/lib/Target/ARM/ARMRegisterInfo.td
    M llvm/lib/Target/ARM/Thumb1FrameLowering.cpp
    A llvm/test/CodeGen/ARM/cmse-clear-float-bigend.mir
    A llvm/test/CodeGen/ARM/cmse-clear-float-hard.ll
    A llvm/test/CodeGen/ARM/cmse-clear-float-hard2.ll
    A llvm/test/CodeGen/ARM/cmse-clear-float-mve.ll
    A llvm/test/CodeGen/ARM/cmse-clear-float.ll
    A llvm/test/CodeGen/ARM/cmse-clear.ll
    A llvm/test/CodeGen/ARM/cmse-clrm-it-block.ll
    A llvm/test/CodeGen/ARM/cmse-expand-bxns-ret.mir
    A llvm/test/CodeGen/ARM/cmse.ll

  Log Message:
  -----------
  [ARM] CMSE code generation

This patch implements the final bits of CMSE code generation:

* emit special linker symbols

* restrict parameter passing to not use memory

* emit BXNS and BLXNS instructions for returns from non-secure entry
  functions, and non-secure function calls, respectively

* emit code to save/restore secure floating-point state around calls
  to non-secure functions

* emit code to save/restore non-secure floating-pointy state upon
  entry to non-secure entry function, and return to non-secure state

* emit code to clobber registers not used for arguments and returns
  when switching to no-secure state

Patch by Momchil Velikov, Bradley Smith, Javed Absar, David Green,
possibly others.

Differential Revision: https://reviews.llvm.org/D76518




More information about the All-commits mailing list