[all-commits] [llvm/llvm-project] ab90d2: [llvm][ARM]Add widen global arrays pass (#107120)

Nashe Mncube via All-commits all-commits at lists.llvm.org
Thu Oct 17 03:56:22 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: ab90d2793cf56758a91f7a7ae027850af2455d3e
      https://github.com/llvm/llvm-project/commit/ab90d2793cf56758a91f7a7ae027850af2455d3e
  Author: Nashe Mncube <nashe.mncube at arm.com>
  Date:   2024-10-17 (Thu, 17 Oct 2024)

  Changed paths:
    M llvm/include/llvm/Analysis/TargetTransformInfo.h
    M llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
    M llvm/lib/Analysis/TargetTransformInfo.cpp
    M llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp
    M llvm/lib/Target/ARM/ARMTargetTransformInfo.h
    M llvm/lib/Transforms/IPO/GlobalOpt.cpp
    A llvm/test/Transforms/GlobalOpt/ARM/arm-widen-dest-non-array.ll
    A llvm/test/Transforms/GlobalOpt/ARM/arm-widen-global-dest.ll
    A llvm/test/Transforms/GlobalOpt/ARM/arm-widen-non-byte-array.ll
    A llvm/test/Transforms/GlobalOpt/ARM/arm-widen-non-const-global.ll
    A llvm/test/Transforms/GlobalOpt/ARM/arm-widen-string-multi-use.ll
    A llvm/test/Transforms/GlobalOpt/ARM/arm-widen-strings-1.ll
    A llvm/test/Transforms/GlobalOpt/ARM/arm-widen-strings-2.ll
    A llvm/test/Transforms/GlobalOpt/ARM/arm-widen-strings-lengths-dont-match.ll
    A llvm/test/Transforms/GlobalOpt/ARM/arm-widen-strings-more-than-64-bytes.ll
    A llvm/test/Transforms/GlobalOpt/ARM/arm-widen-strings-ptrtoint.ll
    A llvm/test/Transforms/GlobalOpt/ARM/arm-widen-strings-struct-test.ll
    A llvm/test/Transforms/GlobalOpt/ARM/arm-widen-strings-volatile.ll

  Log Message:
  -----------
  [llvm][ARM]Add  widen global arrays pass (#107120)

- Pass optimizes memcpy's by padding out destinations and sources to a
full word to make backend generate full word loads instead of loading a
single byte (ldrb) and/or half word (ldrh). Only pads destination when
it's a stack allocated constant size array and source when it's constant
array. Heuristic to decide whether to pad or not is very basic and could
be improved to allow more examples to be padded.
- Pass works within GlobalOpt but is disabled by default on all targets
except ARM.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list