[all-commits] [llvm/llvm-project] b1d474: [Hexagon] Change HVX vector predicate types from v...

Krzysztof Parzyszek via All-commits all-commits at lists.llvm.org
Wed Feb 19 12:15:24 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: b1d47467e26142e6029e9ec7ca5c42645ffaa7bb
      https://github.com/llvm/llvm-project/commit/b1d47467e26142e6029e9ec7ca5c42645ffaa7bb
  Author: Krzysztof Parzyszek <kparzysz at quicinc.com>
  Date:   2020-02-19 (Wed, 19 Feb 2020)

  Changed paths:
    M clang/include/clang/Basic/BuiltinsHexagon.def
    M clang/include/clang/Basic/BuiltinsHexagonDep.def
    A clang/include/clang/Basic/BuiltinsHexagonMapCustomDep.def
    M clang/include/clang/module.modulemap
    M clang/lib/Basic/Targets/Hexagon.h
    M clang/lib/CodeGen/CGBuiltin.cpp
    M clang/test/CodeGen/builtins-hexagon-v66-128B.c
    M clang/test/CodeGen/builtins-hexagon-v66.c
    M clang/test/CodeGen/builtins-hvx128.c
    M clang/test/CodeGen/builtins-hvx64.c
    M llvm/include/llvm/IR/IntrinsicsHexagon.td
    M llvm/include/llvm/IR/IntrinsicsHexagonDep.td
    M llvm/lib/Target/Hexagon/HexagonISelDAGToDAGHVX.cpp
    M llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
    M llvm/lib/Target/Hexagon/HexagonISelLoweringHVX.cpp
    M llvm/lib/Target/Hexagon/HexagonIntrinsics.td
    M llvm/lib/Target/Hexagon/HexagonIntrinsicsV60.td
    M llvm/lib/Target/Hexagon/HexagonRegisterInfo.td
    M llvm/lib/Target/Hexagon/HexagonSubtarget.h
    M llvm/test/CodeGen/Hexagon/autohvx/bitwise-pred-128b.ll
    M llvm/test/CodeGen/Hexagon/bug-aa4463-ifconv-vecpred.ll
    M llvm/test/CodeGen/Hexagon/convert_const_i1_to_i8.ll
    M llvm/test/CodeGen/Hexagon/early-if-vecpred.ll
    M llvm/test/CodeGen/Hexagon/eliminate-pred-spill.ll
    M llvm/test/CodeGen/Hexagon/hvx-byte-store-double.ll
    M llvm/test/CodeGen/Hexagon/hvx-byte-store.ll
    M llvm/test/CodeGen/Hexagon/hvx-dbl-dual-output.ll
    M llvm/test/CodeGen/Hexagon/hvx-dual-output.ll
    M llvm/test/CodeGen/Hexagon/inline-asm-qv.ll
    M llvm/test/CodeGen/Hexagon/inline-asm-vecpred128.ll
    M llvm/test/CodeGen/Hexagon/intrinsics-v60-alu.ll
    M llvm/test/CodeGen/Hexagon/intrinsics-v60-misc.ll
    M llvm/test/CodeGen/Hexagon/intrinsics-v60-vcmp.ll
    M llvm/test/CodeGen/Hexagon/intrinsics/byte-store-double.ll
    M llvm/test/CodeGen/Hexagon/intrinsics/byte-store.ll
    M llvm/test/CodeGen/Hexagon/intrinsics/v65-gather-double.ll
    M llvm/test/CodeGen/Hexagon/intrinsics/v65-gather.ll
    M llvm/test/CodeGen/Hexagon/intrinsics/v65-scatter-double.ll
    M llvm/test/CodeGen/Hexagon/intrinsics/v65-scatter.ll
    M llvm/test/CodeGen/Hexagon/intrinsics/v65.ll
    M llvm/test/CodeGen/Hexagon/late_instr.ll
    M llvm/test/CodeGen/Hexagon/peephole-move-phi.ll
    M llvm/test/CodeGen/Hexagon/reg-scavengebug-2.ll
    M llvm/test/CodeGen/Hexagon/reg-scavengebug-3.ll
    M llvm/test/CodeGen/Hexagon/reg-scavengebug-4.ll
    M llvm/test/CodeGen/Hexagon/reg-scavenger-valid-slot.ll
    M llvm/test/CodeGen/Hexagon/split-vecpred.ll
    M llvm/test/CodeGen/Hexagon/swp-prolog-phi.ll
    M llvm/test/CodeGen/Hexagon/swp-sigma.ll
    M llvm/test/CodeGen/Hexagon/v6-inlasm4.ll
    M llvm/test/CodeGen/Hexagon/v6-spill1.ll
    M llvm/test/CodeGen/Hexagon/v6-unaligned-spill.ll
    M llvm/test/CodeGen/Hexagon/v6-vecpred-copy.ll
    M llvm/test/CodeGen/Hexagon/v60-vecpred-spill.ll
    M llvm/test/CodeGen/Hexagon/v60-vsel1.ll
    M llvm/test/CodeGen/Hexagon/v60-vsel2.ll
    M llvm/test/CodeGen/Hexagon/v60Intrins.ll
    M llvm/test/CodeGen/Hexagon/v60_sort16.ll
    M llvm/test/CodeGen/Hexagon/v60small.ll
    M llvm/test/CodeGen/Hexagon/v62-inlasm4.ll
    M llvm/test/CodeGen/Hexagon/v6vect-dbl-spill.ll
    M llvm/test/CodeGen/Hexagon/v6vect-pred2.ll
    M llvm/test/CodeGen/Hexagon/v6vect-spill-kill.ll
    M llvm/test/CodeGen/Hexagon/vec-pred-spill1.ll
    M llvm/test/CodeGen/Hexagon/vecPred2Vec.ll
    M llvm/test/CodeGen/Hexagon/vect-downscale.ll
    M llvm/test/CodeGen/Hexagon/vector-align.ll
    M llvm/test/CodeGen/Hexagon/vselect-pseudo.ll

  Log Message:
  -----------
  [Hexagon] Change HVX vector predicate types from v512/1024i1 to v64/128i1

This commit removes the artificial types <512 x i1> and <1024 x i1>
from HVX intrinsics, and makes v512i1 and v1024i1 no longer legal on
Hexagon.

It may cause existing bitcode files to become invalid.

* Converting between vector predicates and vector registers must be
  done explicitly via vandvrt/vandqrt instructions (their intrinsics),
  i.e. (for 64-byte mode):
    %Q = call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %V, i32 -1)
    %V = call <16 x i32> @llvm.hexagon.V6.vandqrt(<64 x i1> %Q, i32 -1)

  The conversion intrinsics are:
    declare  <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32>, i32)
    declare <128 x i1> @llvm.hexagon.V6.vandvrt.128B(<32 x i32>, i32)
    declare <16 x i32> @llvm.hexagon.V6.vandqrt(<64 x i1>, i32)
    declare <32 x i32> @llvm.hexagon.V6.vandqrt.128B(<128 x i1>, i32)
  They are all pure.

* Vector predicate values cannot be loaded/stored directly. This directly
  reflects the architecture restriction. Loading and storing or vector
  predicates must be done indirectly via vector registers and explicit
  conversions via vandvrt/vandqrt instructions.




More information about the All-commits mailing list