]> granicus.if.org Git - llvm/commitdiff
[Hexagon] New HVX target features.
authorSumanth Gundapaneni <sgundapa@codeaurora.org>
Wed, 18 Oct 2017 18:07:07 +0000 (18:07 +0000)
committerSumanth Gundapaneni <sgundapa@codeaurora.org>
Wed, 18 Oct 2017 18:07:07 +0000 (18:07 +0000)
This patch lets the llvm tools handle the new HVX target features that
are added by frontend (clang). The target-features are of the form
"hvx-length64b" for 64 Byte HVX mode, "hvx-length128b" for 128 Byte mode HVX.
"hvx-double" is an alias to "hvx-length128b" and is soon will be deprecated.
The hvx version target feature is upgated form "+hvx" to "+hvxv{version_number}.
Eg: "+hvxv62"

For the correct HVX code generation, the user must use the following
target features.
For 64B mode: "+hvxv62" "+hvx-length64b"
For 128B mode: "+hvxv62" "+hvx-length128b"

Clang picks a default length if none is specified. If for some reason,
no hvx-length is specified to llvm, the compilation will bail out.
There is a corresponding clang patch.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316101 91177308-0d34-0410-b5e6-96231b3b80d8

110 files changed:
lib/Target/Hexagon/Hexagon.td
lib/Target/Hexagon/HexagonISelLowering.cpp
lib/Target/Hexagon/HexagonPseudo.td
lib/Target/Hexagon/HexagonRegisterInfo.td
lib/Target/Hexagon/HexagonSubtarget.cpp
lib/Target/Hexagon/HexagonSubtarget.h
lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp
test/CodeGen/Hexagon/SUnit-boundary-prob.ll
test/CodeGen/Hexagon/bit-bitsplit-at.ll
test/CodeGen/Hexagon/bit-bitsplit-src.ll
test/CodeGen/Hexagon/bit-bitsplit.ll
test/CodeGen/Hexagon/bit-ext-sat.ll
test/CodeGen/Hexagon/bit-extract-off.ll
test/CodeGen/Hexagon/bit-extract.ll
test/CodeGen/Hexagon/bit-has.ll
test/CodeGen/Hexagon/bit-loop-rc-mismatch.ll
test/CodeGen/Hexagon/bit-rie.ll
test/CodeGen/Hexagon/bitconvert-vector.ll
test/CodeGen/Hexagon/build-vector-shuffle.ll
test/CodeGen/Hexagon/builtin-expect.ll
test/CodeGen/Hexagon/cfgopt-fall-through.ll
test/CodeGen/Hexagon/cfi-offset.ll
test/CodeGen/Hexagon/common-gep-inbounds.ll
test/CodeGen/Hexagon/const-pool-tf.ll
test/CodeGen/Hexagon/convert-to-dot-old.ll
test/CodeGen/Hexagon/convert_const_i1_to_i8.ll
test/CodeGen/Hexagon/dead-store-stack.ll
test/CodeGen/Hexagon/early-if-merge-loop.ll
test/CodeGen/Hexagon/early-if-vecpi.ll
test/CodeGen/Hexagon/early-if-vecpred.ll
test/CodeGen/Hexagon/eliminate-pred-spill.ll
test/CodeGen/Hexagon/expand-condsets-dead-bad.ll
test/CodeGen/Hexagon/expand-condsets-dead-pred.ll
test/CodeGen/Hexagon/expand-vselect-kill.ll
test/CodeGen/Hexagon/expand-vstorerw-undef.ll
test/CodeGen/Hexagon/expand-vstorerw-undef2.ll
test/CodeGen/Hexagon/find-loop-instr.ll
test/CodeGen/Hexagon/fminmax.ll
test/CodeGen/Hexagon/frame-offset-overflow.ll
test/CodeGen/Hexagon/hasfp-crash1.ll
test/CodeGen/Hexagon/hasfp-crash2.ll
test/CodeGen/Hexagon/hexagon_vector_loop_carried_reuse.ll
test/CodeGen/Hexagon/hexagon_vector_loop_carried_reuse_constant.ll
test/CodeGen/Hexagon/hvx-nontemporal.ll
test/CodeGen/Hexagon/hwloop-noreturn-call.ll
test/CodeGen/Hexagon/hwloop-preh.ll
test/CodeGen/Hexagon/inline-asm-qv.ll
test/CodeGen/Hexagon/inline-asm-vecpred128.ll
test/CodeGen/Hexagon/intrinsics/byte-store-double.ll
test/CodeGen/Hexagon/intrinsics/byte-store.ll
test/CodeGen/Hexagon/intrinsics/system_user.ll
test/CodeGen/Hexagon/jt-in-text.ll
test/CodeGen/Hexagon/loop-idiom/pmpy-infinite-loop.ll
test/CodeGen/Hexagon/loop-idiom/pmpy-mod.ll
test/CodeGen/Hexagon/loop-prefetch.ll
test/CodeGen/Hexagon/lower-extract-subvector.ll
test/CodeGen/Hexagon/memops-stack.ll
test/CodeGen/Hexagon/misaligned_double_vector_store_not_fast.ll
test/CodeGen/Hexagon/multi-cycle.ll
test/CodeGen/Hexagon/newify-crash.ll
test/CodeGen/Hexagon/newvaluejump3.ll
test/CodeGen/Hexagon/peephole-kill-flags.ll
test/CodeGen/Hexagon/plt-rel.ll
test/CodeGen/Hexagon/post-inc-aa-metadata.ll
test/CodeGen/Hexagon/propagate-vcombine.ll
test/CodeGen/Hexagon/rdf-def-mask.ll
test/CodeGen/Hexagon/rdf-inline-asm-fixed.ll
test/CodeGen/Hexagon/rdf-inline-asm.ll
test/CodeGen/Hexagon/reg-scavengebug-3.ll
test/CodeGen/Hexagon/reg-scavenger-valid-slot.ll
test/CodeGen/Hexagon/regalloc-bad-undef.mir
test/CodeGen/Hexagon/regalloc-block-overlap.ll
test/CodeGen/Hexagon/select-instr-align.ll
test/CodeGen/Hexagon/stack-align-reset.ll
test/CodeGen/Hexagon/store-shift.ll
test/CodeGen/Hexagon/switch-lut-explicit-section.ll
test/CodeGen/Hexagon/switch-lut-function-section.ll
test/CodeGen/Hexagon/switch-lut-multiple-functions.ll
test/CodeGen/Hexagon/switch-lut-text-section.ll
test/CodeGen/Hexagon/undo-dag-shift.ll
test/CodeGen/Hexagon/v60-cur.ll
test/CodeGen/Hexagon/v60-vsel1.ll
test/CodeGen/Hexagon/v60Intrins.ll
test/CodeGen/Hexagon/v60Vasr.ll
test/CodeGen/Hexagon/v60small.ll
test/CodeGen/Hexagon/v6vec-vprint.ll
test/CodeGen/Hexagon/vassign-to-combine.ll
test/CodeGen/Hexagon/vdmpy-halide-test.ll
test/CodeGen/Hexagon/vec-pred-spill1.ll
test/CodeGen/Hexagon/vec-vararg-align.ll
test/CodeGen/Hexagon/vector-align.ll
test/CodeGen/Hexagon/vload-postinc-sel.ll
test/CodeGen/Hexagon/vmpa-halide-test.ll
test/CodeGen/Hexagon/vpack_eo.ll
test/CodeGen/Hexagon/vselect-pseudo.ll
test/MC/Hexagon/align.s
test/MC/Hexagon/double-vector-producer.s
test/MC/Hexagon/test.s
test/MC/Hexagon/v60-alu.s
test/MC/Hexagon/v60-misc.s
test/MC/Hexagon/v60-permute.s
test/MC/Hexagon/v60-shift.s
test/MC/Hexagon/v60-vcmp.s
test/MC/Hexagon/v60-vmem.s
test/MC/Hexagon/v60-vmpy-acc.s
test/MC/Hexagon/v60-vmpy1.s
test/MC/Hexagon/v60lookup.s
test/MC/Hexagon/v62_all.s
test/Transforms/SimplifyCFG/Hexagon/switch-to-lookup-table.ll
test/tools/llvm-objdump/Hexagon/source-interleave-hexagon.ll

index 0c1ff9693e4bc0cce971b556da41eaaade756cda..23221a9e17562956b78670ef1cec2838deaac492 100644 (file)
@@ -25,10 +25,31 @@ include "llvm/Target/Target.td"
 include "HexagonDepArch.td"
 
 // Hexagon ISA Extensions
-def ExtensionHVX: SubtargetFeature<"hvx", "UseHVXOps", "true",
-      "Hexagon HVX instructions">;
-def ExtensionHVXDbl: SubtargetFeature<"hvx-double", "UseHVXDblOps", "true",
-      "Hexagon HVX Double instructions">;
+def ExtensionHVXV60: SubtargetFeature<"hvxv60", "HexagonHVXVersion",
+      "Hexagon::ArchEnum::V60", "Hexagon HVX instructions">;
+def ExtensionHVXV62: SubtargetFeature<"hvxv62", "HexagonHVXVersion",
+      "Hexagon::ArchEnum::V62", "Hexagon HVX instructions",
+      [ExtensionHVXV60]>;
+def ExtensionHVX: SubtargetFeature<"hvx", "HexagonHVXVersion",
+      "Hexagon::ArchEnum::V62", "Hexagon HVX instructions",
+      [ExtensionHVXV60,
+       ExtensionHVXV62]>;
+def ExtensionHVX64B
+    : SubtargetFeature<"hvx-length64b", "UseHVX64BOps", "true",
+                       "Hexagon HVX 64B instructions",
+                        [ExtensionHVXV60, ExtensionHVXV62]>;
+def ExtensionHVX128B
+    : SubtargetFeature<"hvx-length128b", "UseHVX128BOps", "true",
+                       "Hexagon HVX 128B instructions",
+                        [ExtensionHVXV60, ExtensionHVXV62]>;
+
+// This is an alias to ExtensionHVX128B to accept the hvx-double as
+// an acceptable subtarget feature.
+def ExtensionHVXDbl
+    : SubtargetFeature<"hvx-double", "UseHVX128BOps", "true",
+                       "Hexagon HVX 128B instructions",
+                        [ExtensionHVXV60, ExtensionHVXV62]>;
+
 def FeatureLongCalls: SubtargetFeature<"long-calls", "UseLongCalls", "true",
       "Use constant-extended calls">;
 
@@ -38,14 +59,21 @@ def FeatureLongCalls: SubtargetFeature<"long-calls", "UseLongCalls", "true",
 
 def UseMEMOP           : Predicate<"HST->useMemOps()">;
 def IEEERndNearV5T     : Predicate<"HST->modeIEEERndNear()">;
-def UseHVXDbl          : Predicate<"HST->useHVXDblOps()">,
-                         AssemblerPredicate<"ExtensionHVXDbl">;
-def UseHVXSgl          : Predicate<"HST->useHVXSglOps()">;
-def UseHVX             : Predicate<"HST->useHVXSglOps() ||HST->useHVXDblOps()">,
-                         AssemblerPredicate<"ExtensionHVX">;
-
-def Hvx64   : HwMode<"+hvx,-hvx-double">;
-def Hvx128  : HwMode<"+hvx,+hvx-double">;
+def UseHVX64B          : Predicate<"HST->useHVX64BOps()">,
+                         AssemblerPredicate<"ExtensionHVX64B">;
+def UseHVX128B         : Predicate<"HST->useHVX128BOps()">,
+                         AssemblerPredicate<"ExtensionHVX128B">;
+def UseHVX             : Predicate<"HST->useHVXOps()">,
+                         AssemblerPredicate<"ExtensionHVXV60">;
+def UseHVXV60          : Predicate<"HST->useHVXOps()">,
+                         AssemblerPredicate<"ExtensionHVXV60">;
+def UseHVXV62          : Predicate<"HST->useHVXOps()">,
+                         AssemblerPredicate<"ExtensionHVXV62">;
+
+def Hvx64     : HwMode<"+hvx-length64b">;
+def Hvx64old  : HwMode<"-hvx-double">;
+def Hvx128    : HwMode<"+hvx-length128b">;
+def Hvx128old : HwMode<"+hvx-double">;
 
 //===----------------------------------------------------------------------===//
 // Classes used for relation maps.
@@ -274,9 +302,9 @@ def : Proc<"hexagonv5",  HexagonModelV4,
 def : Proc<"hexagonv55", HexagonModelV55,
            [ArchV4, ArchV5, ArchV55]>;
 def : Proc<"hexagonv60", HexagonModelV60,
-           [ArchV4, ArchV5, ArchV55, ArchV60, ExtensionHVX]>;
+           [ArchV4, ArchV5, ArchV55, ArchV60]>;
 def : Proc<"hexagonv62", HexagonModelV62,
-           [ArchV4, ArchV5, ArchV55, ArchV60, ArchV62, ExtensionHVX]>;
+           [ArchV4, ArchV5, ArchV55, ArchV60, ArchV62]>;
 
 //===----------------------------------------------------------------------===//
 // Declare the target which we are implementing
index d9d8dbec3202c35bf1006890aa6f44efce3440b2..957fc8caccc531d9d69c3b44b31b0fa24ca0d868 100644 (file)
@@ -357,7 +357,7 @@ static bool CC_HexagonVector(unsigned ValNo, MVT ValVT,
   auto &MF = State.getMachineFunction();
   auto &HST = MF.getSubtarget<HexagonSubtarget>();
 
-  if (HST.useHVXSglOps() &&
+  if (HST.useHVX64BOps() &&
       (LocVT == MVT::v8i64 || LocVT == MVT::v16i32 || LocVT == MVT::v32i16 ||
        LocVT == MVT::v64i8 || LocVT == MVT::v512i1)) {
     if (unsigned Reg = State.AllocateReg(VecLstS)) {
@@ -368,7 +368,7 @@ static bool CC_HexagonVector(unsigned ValNo, MVT ValVT,
     State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset, LocVT, LocInfo));
     return false;
   }
-  if (HST.useHVXSglOps() && (LocVT == MVT::v16i64 || LocVT == MVT::v32i32 ||
+  if (HST.useHVX64BOps() && (LocVT == MVT::v16i64 || LocVT == MVT::v32i32 ||
                              LocVT == MVT::v64i16 || LocVT == MVT::v128i8)) {
     if (unsigned Reg = State.AllocateReg(VecLstD)) {
       State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
@@ -379,8 +379,8 @@ static bool CC_HexagonVector(unsigned ValNo, MVT ValVT,
     return false;
   }
   // 128B Mode
-  if (HST.useHVXDblOps() && (LocVT == MVT::v32i64 || LocVT == MVT::v64i32 ||
-                             LocVT == MVT::v128i16 || LocVT == MVT::v256i8)) {
+  if (HST.useHVX128BOps() && (LocVT == MVT::v32i64 || LocVT == MVT::v64i32 ||
+                              LocVT == MVT::v128i16 || LocVT == MVT::v256i8)) {
     if (unsigned Reg = State.AllocateReg(VecLstD)) {
       State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
       return false;
@@ -389,7 +389,7 @@ static bool CC_HexagonVector(unsigned ValNo, MVT ValVT,
     State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset, LocVT, LocInfo));
     return false;
   }
-  if (HST.useHVXDblOps() &&
+  if (HST.useHVX128BOps() &&
       (LocVT == MVT::v16i64 || LocVT == MVT::v32i32 || LocVT == MVT::v64i16 ||
        LocVT == MVT::v128i8 || LocVT == MVT::v1024i1)) {
     if (unsigned Reg = State.AllocateReg(VecLstS)) {
@@ -437,7 +437,7 @@ static bool RetCC_Hexagon(unsigned ValNo, MVT ValVT,
     LocInfo = CCValAssign::Full;
   } else if (LocVT == MVT::v128i8 || LocVT == MVT::v64i16 ||
              LocVT == MVT::v32i32 || LocVT == MVT::v16i64 ||
-             (LocVT == MVT::v1024i1 && HST.useHVXDblOps())) {
+             (LocVT == MVT::v1024i1 && HST.useHVX128BOps())) {
     LocVT = MVT::v32i32;
     ValVT = MVT::v32i32;
     LocInfo = CCValAssign::Full;
@@ -507,7 +507,7 @@ static bool RetCC_HexagonVector(unsigned ValNo, MVT ValVT,
       return false;
     }
   } else if (LocVT == MVT::v32i32) {
-    unsigned Req = HST.useHVXDblOps() ? Hexagon::V0 : Hexagon::W0;
+    unsigned Req = HST.useHVX128BOps() ? Hexagon::V0 : Hexagon::W0;
     if (unsigned Reg = State.AllocateReg(Req)) {
       State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
       return false;
@@ -827,9 +827,9 @@ HexagonTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
     DEBUG(dbgs() << "Function needs byte stack align due to call args\n");
     // V6 vectors passed by value have 64 or 128 byte alignment depending
     // on whether we are 64 byte vector mode or 128 byte.
-    bool UseHVXDbl = Subtarget.useHVXDblOps();
+    bool UseHVX128B = Subtarget.useHVX128BOps();
     assert(Subtarget.useHVXOps());
-    const unsigned ObjAlign = UseHVXDbl ? 128 : 64;
+    const unsigned ObjAlign = UseHVX128B ? 128 : 64;
     LargestAlignSeen = std::max(LargestAlignSeen, ObjAlign);
     MFI.ensureMaxAlignment(LargestAlignSeen);
   }
@@ -940,15 +940,15 @@ static bool getIndexedAddressParts(SDNode *Ptr, EVT VT,
 
   auto &HST = static_cast<const HexagonSubtarget&>(DAG.getSubtarget());
 
-  bool ValidHVXDblType =
-      HST.useHVXDblOps() && (VT == MVT::v32i32 || VT == MVT::v16i64 ||
-                             VT == MVT::v64i16 || VT == MVT::v128i8);
+  bool ValidHVX128BType =
+      HST.useHVX128BOps() && (VT == MVT::v32i32 || VT == MVT::v16i64 ||
+                              VT == MVT::v64i16 || VT == MVT::v128i8);
   bool ValidHVXType =
-      HST.useHVXSglOps() && (VT == MVT::v16i32 || VT == MVT::v8i64 ||
+      HST.useHVX64BOps() && (VT == MVT::v16i32 || VT == MVT::v8i64 ||
                              VT == MVT::v32i16 || VT == MVT::v64i8);
 
-  if (ValidHVXDblType || ValidHVXType ||
-      VT == MVT::i64 || VT == MVT::i32 || VT == MVT::i16 || VT == MVT::i8) {
+  if (ValidHVX128BType || ValidHVXType || VT == MVT::i64 || VT == MVT::i32 ||
+      VT == MVT::i16 || VT == MVT::i8) {
     IsInc = (Ptr->getOpcode() == ISD::ADD);
     Base = Ptr->getOperand(0);
     Offset = Ptr->getOperand(1);
@@ -1182,7 +1182,7 @@ SDValue HexagonTargetLowering::LowerFormalArguments(
           RegInfo.createVirtualRegister(&Hexagon::HvxVRRegClass);
         RegInfo.addLiveIn(VA.getLocReg(), VReg);
         InVals.push_back(DAG.getCopyFromReg(Chain, dl, VReg, RegVT));
-      } else if (Subtarget.useHVXDblOps() &&
+      } else if (Subtarget.useHVX128BOps() &&
                  ((RegVT == MVT::v16i64 || RegVT == MVT::v32i32 ||
                    RegVT == MVT::v64i16 || RegVT == MVT::v128i8))) {
         unsigned VReg =
@@ -1197,7 +1197,7 @@ SDValue HexagonTargetLowering::LowerFormalArguments(
           RegInfo.createVirtualRegister(&Hexagon::HvxWRRegClass);
         RegInfo.addLiveIn(VA.getLocReg(), VReg);
         InVals.push_back(DAG.getCopyFromReg(Chain, dl, VReg, RegVT));
-      } else if (Subtarget.useHVXDblOps() &&
+      } else if (Subtarget.useHVX128BOps() &&
                  ((RegVT == MVT::v32i64 || RegVT == MVT::v64i32 ||
                    RegVT == MVT::v128i16 || RegVT == MVT::v256i8))) {
         unsigned VReg =
@@ -1743,7 +1743,7 @@ HexagonTargetLowering::HexagonTargetLowering(const TargetMachine &TM,
   }
 
   if (Subtarget.hasV60TOps()) {
-    if (Subtarget.useHVXSglOps()) {
+    if (Subtarget.useHVX64BOps()) {
       addRegisterClass(MVT::v64i8,  &Hexagon::HvxVRRegClass);
       addRegisterClass(MVT::v32i16, &Hexagon::HvxVRRegClass);
       addRegisterClass(MVT::v16i32, &Hexagon::HvxVRRegClass);
@@ -1753,7 +1753,7 @@ HexagonTargetLowering::HexagonTargetLowering(const TargetMachine &TM,
       addRegisterClass(MVT::v32i32, &Hexagon::HvxWRRegClass);
       addRegisterClass(MVT::v16i64, &Hexagon::HvxWRRegClass);
       addRegisterClass(MVT::v512i1, &Hexagon::HvxQRRegClass);
-    } else if (Subtarget.useHVXDblOps()) {
+    } else if (Subtarget.useHVX128BOps()) {
       addRegisterClass(MVT::v128i8,  &Hexagon::HvxVRRegClass);
       addRegisterClass(MVT::v64i16,  &Hexagon::HvxVRRegClass);
       addRegisterClass(MVT::v32i32,  &Hexagon::HvxVRRegClass);
@@ -1992,7 +1992,7 @@ HexagonTargetLowering::HexagonTargetLowering(const TargetMachine &TM,
   setOperationAction(ISD::VECTOR_SHUFFLE, MVT::v8i8,  Custom);
 
   if (Subtarget.useHVXOps()) {
-    if (Subtarget.useHVXSglOps()) {
+    if (Subtarget.useHVX64BOps()) {
       setOperationAction(ISD::CONCAT_VECTORS, MVT::v128i8,  Custom);
       setOperationAction(ISD::CONCAT_VECTORS, MVT::v64i16,  Custom);
       setOperationAction(ISD::CONCAT_VECTORS, MVT::v32i32,  Custom);
@@ -2004,7 +2004,7 @@ HexagonTargetLowering::HexagonTargetLowering(const TargetMachine &TM,
       setOperationAction(ISD::EXTRACT_SUBVECTOR, MVT::v64i8, Custom);
       setOperationAction(ISD::EXTRACT_SUBVECTOR, MVT::v32i16, Custom);
       setOperationAction(ISD::EXTRACT_SUBVECTOR, MVT::v16i32, Custom);
-    } else if (Subtarget.useHVXDblOps()) {
+    } else if (Subtarget.useHVX128BOps()) {
       setOperationAction(ISD::CONCAT_VECTORS, MVT::v256i8,  Custom);
       setOperationAction(ISD::CONCAT_VECTORS, MVT::v128i16, Custom);
       setOperationAction(ISD::CONCAT_VECTORS, MVT::v64i32,  Custom);
@@ -2082,13 +2082,13 @@ HexagonTargetLowering::HexagonTargetLowering(const TargetMachine &TM,
     setIndexedStoreAction(ISD::POST_INC, VT, Legal);
   }
 
-  if (Subtarget.useHVXSglOps()) {
+  if (Subtarget.useHVX64BOps()) {
     for (MVT VT : {MVT::v64i8,  MVT::v32i16, MVT::v16i32, MVT::v8i64,
                    MVT::v128i8, MVT::v64i16, MVT::v32i32, MVT::v16i64}) {
       setIndexedLoadAction(ISD::POST_INC, VT, Legal);
       setIndexedStoreAction(ISD::POST_INC, VT, Legal);
     }
-  } else if (Subtarget.useHVXDblOps()) {
+  } else if (Subtarget.useHVX128BOps()) {
     for (MVT VT : {MVT::v128i8, MVT::v64i16,  MVT::v32i32, MVT::v16i64,
                    MVT::v256i8, MVT::v128i16, MVT::v64i32, MVT::v32i64}) {
       setIndexedLoadAction(ISD::POST_INC, VT, Legal);
@@ -2353,8 +2353,8 @@ HexagonTargetLowering::LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG)
     size_t MaskLen = Mask.size();
     unsigned SizeInBits = VT.getScalarSizeInBits() * MaskLen;
 
-    if ((Subtarget.useHVXSglOps() && SizeInBits == 64 * 8) ||
-        (Subtarget.useHVXDblOps() && SizeInBits == 128 * 8)) {
+    if ((Subtarget.useHVX64BOps() && SizeInBits == 64 * 8) ||
+        (Subtarget.useHVX128BOps() && SizeInBits == 128 * 8)) {
       StridedLoadKind Pattern = isStridedLoad(Mask);
       if (Pattern == StridedLoadKind::NoPattern)
         return SDValue();
@@ -2617,11 +2617,11 @@ HexagonTargetLowering::LowerCONCAT_VECTORS(SDValue Op,
       return DAG.getNode(HexagonISD::COMBINE, dl, VT, Op.getOperand(1), Vec0);
 
     if (UseHVX) {
-      assert((Width ==  64*8 && Subtarget.useHVXSglOps()) ||
-             (Width == 128*8 && Subtarget.useHVXDblOps()));
+      assert((Width == 64 * 8 && Subtarget.useHVX64BOps()) ||
+             (Width == 128 * 8 && Subtarget.useHVX128BOps()));
       SDValue Vec1 = Op.getOperand(1);
-      MVT OpTy = Subtarget.useHVXSglOps() ? MVT::v16i32 : MVT::v32i32;
-      MVT ReTy = Subtarget.useHVXSglOps() ? MVT::v32i32 : MVT::v64i32;
+      MVT OpTy = Subtarget.useHVX64BOps() ? MVT::v16i32 : MVT::v32i32;
+      MVT ReTy = Subtarget.useHVX64BOps() ? MVT::v32i32 : MVT::v64i32;
       SDValue B0 = DAG.getNode(ISD::BITCAST, dl, OpTy, Vec0);
       SDValue B1 = DAG.getNode(ISD::BITCAST, dl, OpTy, Vec1);
       SDValue VC = DAG.getNode(HexagonISD::VCOMBINE, dl, ReTy, B1, B0);
@@ -2667,7 +2667,7 @@ HexagonTargetLowering::LowerEXTRACT_SUBVECTOR_HVX(SDValue Op,
   EVT VT = Op.getOperand(0).getValueType();
   SDLoc dl(Op);
   bool UseHVX = Subtarget.useHVXOps();
-  bool UseHVXSgl = Subtarget.useHVXSglOps();
+  bool UseHVX64B = Subtarget.useHVX64BOps();
   // Just in case...
 
   if (!VT.isVector() || !UseHVX)
@@ -2675,7 +2675,7 @@ HexagonTargetLowering::LowerEXTRACT_SUBVECTOR_HVX(SDValue Op,
 
   EVT ResVT = Op.getValueType();
   unsigned ResSize = ResVT.getSizeInBits();
-  unsigned VectorSizeInBits = UseHVXSgl ? (64 * 8) : (128 * 8);
+  unsigned VectorSizeInBits = UseHVX64B ? (64 * 8) : (128 * 8);
   unsigned OpSize = VT.getSizeInBits();
 
   // We deal only with cases where the result is the vector size
@@ -3001,7 +3001,7 @@ HexagonTargetLowering::getRegForInlineAsmConstraint(
       case 512:
         return std::make_pair(0U, &Hexagon::HvxVRRegClass);
       case 1024:
-        if (Subtarget.hasV60TOps() && Subtarget.useHVXDblOps())
+        if (Subtarget.hasV60TOps() && Subtarget.useHVX128BOps())
           return std::make_pair(0U, &Hexagon::HvxVRRegClass);
         return std::make_pair(0U, &Hexagon::HvxWRRegClass);
       case 2048:
@@ -3204,7 +3204,7 @@ HexagonTargetLowering::findRepresentativeClass(const TargetRegisterInfo *TRI,
   case MVT::v32i32:
   case MVT::v16i64:
     if (Subtarget.hasV60TOps() && Subtarget.useHVXOps() &&
-        Subtarget.useHVXDblOps())
+        Subtarget.useHVX128BOps())
       RRC = &Hexagon::HvxVRRegClass;
     else
       RRC = &Hexagon::HvxWRRegClass;
index 199148fde0529a1e6eaec57ddab9ab8efa7cf86c..b2d66317b66e66104c07252b363668291b0b4175 100644 (file)
@@ -427,7 +427,7 @@ class LDrivv_template<RegisterClass RC, InstHexagon rootInst>
 def PS_vloadrw_ai: LDrivv_template<HvxWR, V6_vL32b_ai>,
       Requires<[HasV60T,UseHVX]>;
 def PS_vloadrw_nt_ai: LDrivv_template<HvxWR, V6_vL32b_nt_ai>,
-      Requires<[HasV60T,UseHVXSgl]>;
+      Requires<[HasV60T,UseHVX]>;
 def PS_vloadrwu_ai: LDrivv_template<HvxWR, V6_vL32Ub_ai>,
       Requires<[HasV60T,UseHVX]>;
 
index b2e952a761226b6f6b63e62307a6bf6499d86ed4..51ef37f39a73b1dd11e2d12e9f9ce68310a1e50a 100644 (file)
@@ -216,25 +216,33 @@ let Namespace = "Hexagon" in {
 
 // HVX types
 
-def VecI1   : ValueTypeByHwMode<[Hvx64,  Hvx128,  DefaultMode],
-                                [v512i1, v1024i1, v512i1]>;
-def VecI8   : ValueTypeByHwMode<[Hvx64,  Hvx128,  DefaultMode],
-                                [v64i8,  v128i8,  v64i8]>;
-def VecI16  : ValueTypeByHwMode<[Hvx64,  Hvx128,  DefaultMode],
-                                [v32i16, v64i16,  v32i16]>;
-def VecI32  : ValueTypeByHwMode<[Hvx64,  Hvx128,  DefaultMode],
-                                [v16i32, v32i32,  v16i32]>;
-def VecI64  : ValueTypeByHwMode<[Hvx64,  Hvx128,  DefaultMode],
-                                [v8i64,  v16i64,  v8i64]>;
-def VecPI8  : ValueTypeByHwMode<[Hvx64,  Hvx128,  DefaultMode],
-                                [v128i8, v256i8,  v128i8]>;
-def VecPI16 : ValueTypeByHwMode<[Hvx64,  Hvx128,  DefaultMode],
-                                [v64i16, v128i16, v64i16]>;
-def VecPI32 : ValueTypeByHwMode<[Hvx64,  Hvx128,  DefaultMode],
-                                [v32i32, v64i32,  v32i32]>;
-def VecPI64 : ValueTypeByHwMode<[Hvx64,  Hvx128,  DefaultMode],
-                                [v16i64, v32i64,  v16i64]>;
-
+def VecI1
+  : ValueTypeByHwMode<[Hvx64,  Hvx64old,  Hvx128,  Hvx128old, DefaultMode],
+                      [v512i1, v512i1,    v1024i1, v1024i1,   v512i1]>;
+def VecI8
+  : ValueTypeByHwMode<[Hvx64,  Hvx64old,  Hvx128,  Hvx128old, DefaultMode],
+                      [v64i8,  v64i8,     v128i8,  v128i8,    v64i8]>;
+def VecI16
+  : ValueTypeByHwMode<[Hvx64,  Hvx64old,  Hvx128,  Hvx128old, DefaultMode],
+                      [v32i16, v32i16,    v64i16,  v64i16,    v32i16]>;
+def VecI32
+  : ValueTypeByHwMode<[Hvx64,  Hvx64old,  Hvx128,  Hvx128old, DefaultMode],
+                      [v16i32, v16i32,    v32i32,  v32i32,    v16i32]>;
+def VecI64
+  : ValueTypeByHwMode<[Hvx64,  Hvx64old,  Hvx128,  Hvx128old, DefaultMode],
+                      [v8i64,  v8i64,     v16i64,  v16i64,    v8i64]>;
+def VecPI8
+  : ValueTypeByHwMode<[Hvx64,  Hvx64old,  Hvx128,  Hvx128old, DefaultMode],
+                      [v128i8, v128i8,    v256i8,  v256i8,    v128i8]>;
+def VecPI16
+  : ValueTypeByHwMode<[Hvx64,  Hvx64old,  Hvx128,  Hvx128old, DefaultMode],
+                      [v64i16, v64i16,    v128i16, v128i16,   v64i16]>;
+def VecPI32
+  : ValueTypeByHwMode<[Hvx64,  Hvx64old,  Hvx128,  Hvx128old, DefaultMode],
+                      [v32i32, v32i32,    v64i32,  v64i32,    v32i32]>;
+def VecPI64
+  : ValueTypeByHwMode<[Hvx64,  Hvx64old,  Hvx128,  Hvx128old, DefaultMode],
+                      [v16i64, v16i64,    v32i64,  v32i64,    v16i64]>;
 
 // Register classes.
 //
index 2c6e34072b41d3b5101ce06e910aacad9f4e7432..7ec4c34504bda4932a72e8ff8b85c41b7d7493f6 100644 (file)
@@ -53,14 +53,6 @@ static cl::opt<bool> EnableIEEERndNear("enable-hexagon-ieee-rnd-near",
 static cl::opt<bool> EnableBSBSched("enable-bsb-sched",
   cl::Hidden, cl::ZeroOrMore, cl::init(true));
 
-static cl::opt<bool> EnableHexagonHVXDouble("enable-hexagon-hvx-double",
-  cl::Hidden, cl::ZeroOrMore, cl::init(false),
-  cl::desc("Enable Hexagon Double Vector eXtensions"));
-
-static cl::opt<bool> EnableHexagonHVX("enable-hexagon-hvx",
-  cl::Hidden, cl::ZeroOrMore, cl::init(false),
-  cl::desc("Enable Hexagon Vector eXtensions"));
-
 static cl::opt<bool> EnableTCLatencySched("enable-tc-latency-sched",
   cl::Hidden, cl::ZeroOrMore, cl::init(false));
 
@@ -126,8 +118,8 @@ HexagonSubtarget::initializeSubtargetDependencies(StringRef CPU, StringRef FS) {
   else
     llvm_unreachable("Unrecognized Hexagon processor version");
 
-  UseHVXOps = false;
-  UseHVXDblOps = false;
+  UseHVX128BOps = false;
+  UseHVX64BOps = false;
   UseLongCalls = false;
 
   UseMemOps = DisableMemOps ? false : EnableMemOps;
@@ -136,10 +128,6 @@ HexagonSubtarget::initializeSubtargetDependencies(StringRef CPU, StringRef FS) {
 
   ParseSubtargetFeatures(CPUString, FS);
 
-  if (EnableHexagonHVX.getPosition())
-    UseHVXOps = EnableHexagonHVX;
-  if (EnableHexagonHVXDouble.getPosition())
-    UseHVXDblOps = EnableHexagonHVXDouble;
   if (OverrideLongCalls.getPosition())
     UseLongCalls = OverrideLongCalls;
 
index 9722852aa1d880d233e2d5a9997f46a75014b8d7..54cf8e11d0669804f29f6b949b8b1029e85a19e1 100644 (file)
@@ -46,12 +46,13 @@ class Triple;
 class HexagonSubtarget : public HexagonGenSubtargetInfo {
   virtual void anchor();
 
-  bool UseMemOps, UseHVXOps, UseHVXDblOps;
+  bool UseMemOps, UseHVX64BOps, UseHVX128BOps;
   bool UseLongCalls;
   bool ModeIEEERndNear;
 
 public:
   Hexagon::ArchEnum HexagonArchVersion;
+  Hexagon::ArchEnum HexagonHVXVersion = Hexagon::ArchEnum::V4;
   /// True if the target should use Back-Skip-Back scheduling. This is the
   /// default for V60.
   bool UseBSBScheduling;
@@ -138,9 +139,9 @@ public:
   }
 
   bool modeIEEERndNear() const { return ModeIEEERndNear; }
-  bool useHVXOps() const { return UseHVXOps; }
-  bool useHVXDblOps() const { return UseHVXOps && UseHVXDblOps; }
-  bool useHVXSglOps() const { return UseHVXOps && !UseHVXDblOps; }
+  bool useHVXOps() const { return HexagonHVXVersion > Hexagon::ArchEnum::V4; }
+  bool useHVX128BOps() const { return useHVXOps() && UseHVX128BOps; }
+  bool useHVX64BOps() const { return useHVXOps() && UseHVX64BOps; }
   bool useLongCalls() const { return UseLongCalls; }
   bool usePredicatedCalls() const;
 
index 05bbf396944d414b4185e08cd49867e01bebd7be..6f48169be8cfdacf1e74f30d3089e5ae62234f22 100644 (file)
@@ -288,7 +288,7 @@ MCSubtargetInfo *Hexagon_MC::createHexagonMCSubtargetInfo(const Triple &TT,
   }
 
   MCSubtargetInfo *X = createHexagonMCSubtargetInfoImpl(TT, CPUName, ArchFS);
-  if (X->getFeatureBits()[Hexagon::ExtensionHVXDbl]) {
+  if (X->getFeatureBits()[Hexagon::ExtensionHVX128B]) {
     llvm::FeatureBitset Features = X->getFeatureBits();
     X->setFeatureBits(Features.set(Hexagon::ExtensionHVX));
   }
index 9df178f9907cde9911a3af08069b10ae1f932925..badab1686fcf16c4c7d728819c9abc9672836b3c 100644 (file)
@@ -187,7 +187,7 @@ entry:
 }
 
 attributes #0 = { nounwind readnone }
-attributes #1 = { "target-cpu"="hexagonv60" "target-features"="+hvx" }
+attributes #1 = { "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
 attributes #2 = { nounwind }
 
 !llvm.module.flags = !{!0}
index 87d535fd0f22aa08b39825ff9c7c12c2fe0af3e2..30d18b7724e18889da096ff865124adb80b007cb 100644 (file)
@@ -30,4 +30,4 @@ b9:                                               ; preds = %b6, %b4
   ret i32 %v10
 }
 
-attributes #0 = { nounwind optsize "target-cpu"="hexagonv60" "target-features"="-hvx-double,-long-calls" }
+attributes #0 = { nounwind optsize "target-cpu"="hexagonv60" "target-features"="-hvxv60,-long-calls" }
index 2d1c71c709f47eb381499e7540eccec0ca840ee7..edac4cb34b6e8c3bb153eac5c5c757ce3c3a6211 100644 (file)
@@ -32,4 +32,4 @@ b0:
 ; Function Attrs: nounwind
 declare void @printf(i8* nocapture readonly, ...) local_unnamed_addr #0
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" }
index 4ae2e4e6650839542b5344aee1f337b182c19500..52ae69af994b600e156d97269c6e7c5a941d7f74 100644 (file)
@@ -14,4 +14,4 @@ entry:
   ret i32 %and2
 }
 
-attributes #0 = { norecurse nounwind readonly "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double" }
+attributes #0 = { norecurse nounwind readonly "target-cpu"="hexagonv60" "target-features"="-hvx" }
index 47c49c2364b7e3bb44a6375437257cd759035dfb..713e3988457e188b618deb43d184c1bc2836163d 100644 (file)
@@ -53,5 +53,5 @@ declare i32 @llvm.hexagon.A2.sath(i32) #1
 declare i32 @llvm.hexagon.A2.satub(i32) #1
 declare i32 @llvm.hexagon.A2.satuh(i32) #1
 
-attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" }
 attributes #1 = { nounwind readnone }
index 183435ab7b23a0ea450c85f2ef5113a87c819176..4086ca34bbbcf44551653ef489d112794959d510 100644 (file)
@@ -19,5 +19,5 @@ b5:                                               ; preds = %b5, %b4
 
 declare double @fabs(double) #1
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double,-long-calls" }
-attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" }
+attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" }
index ad7d05d2c235bb03fb2c409771a7147ec57c0857..33fa50c14f39bb854c35256e6765550823aa8604 100644 (file)
@@ -72,4 +72,4 @@ entry:
   ret i32 %bf.ashr
 }
 
-attributes #0 = { noinline norecurse nounwind readnone "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { noinline norecurse nounwind readnone "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" }
index 9022de3918682af270081e34e058b0c9f91266c0..5bb0f2f60b0a9d52cb797268b7fdd76072af45b0 100644 (file)
@@ -60,5 +60,5 @@ b23:                                              ; preds = %b21
 
 declare i32 @llvm.hexagon.A2.sath(i32) #1
 
-attributes #0 = { nounwind "target-cpu"="hexagonv5" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { nounwind "target-cpu"="hexagonv5" "target-features"="-hvx,-long-calls" }
 attributes #1 = { nounwind readnone }
index db57998aeb666aa5dbca4eb59c52f11220357d5c..e7dd87c1da14d03241bd4961351ace7c7f9ef554 100644 (file)
@@ -24,7 +24,7 @@ for.end:                                          ; preds = %for.body, %entry
 declare hidden i64 @danny(i32*, i32* nocapture readonly dereferenceable(4)) #1 align 2
 declare hidden i32 @sammy(i32* nocapture, i32) #0 align 2
 
-attributes #0 = { nounwind optsize "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" "unsafe-fp-math"="false" "use-soft-float"="false" }
-attributes #1 = { nounwind optsize readonly "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { nounwind optsize "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #1 = { nounwind optsize readonly "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #2 = { optsize }
 
index 302382a1ade473c78911a320b180216963a7b533..a090a668d9f3a3535d6e6a0f68fd0647f699a38d 100644 (file)
@@ -190,7 +190,7 @@ declare i64 @llvm.hexagon.M2.mpyd.ll.s1(i32, i32) #2
 declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
 declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
 
-attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,,+hvx-length64b" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { argmemonly nounwind }
 attributes #2 = { nounwind readnone }
 
index c090721b8fffb7b2f471f07f8aa0d27170e2e204..a89a15c22d221c9c18c23252fec4b7f2340a805a 100644 (file)
@@ -24,4 +24,4 @@ entry:
 
 
 attributes #0 = { nounwind readnone }
-attributes #1 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" }
+attributes #1 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" }
index 1d06953ddf32df2fdbd6e35882a9c2ceafbbab4e..7efc38f15b3336b569468ed89a94e3c78ee934a7 100644 (file)
@@ -17,5 +17,5 @@ entry:
 ; Function Attrs: nounwind readnone
 declare <16 x i32> @llvm.hexagon.V6.vshuffh(<16 x i32>) #1
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
 attributes #1 = { nounwind readnone }
index 9945da1782b2fd4c924122aeea113d4a7744ac7c..9fed28760ade1570ea6500ce00cea26990d948be 100644 (file)
@@ -39,6 +39,6 @@ b14:                                              ; preds = %b13, %b10
 
 declare i32 @bar(i32) local_unnamed_addr #0
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double,-long-calls" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b,-long-calls" }
 
 !0 = !{!"branch_weights", i32 1, i32 2000}
index be234aafc0bb1b3db9c2c867076aa7cc57017a4f..2d65a5c5848fd0ffce599d5e12a734fc700519fe 100644 (file)
@@ -68,4 +68,4 @@ b19:                                              ; preds = %b4
   unreachable
 }
 
-attributes #0 = { nounwind "target-cpu"="hexagonv55" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { nounwind "target-cpu"="hexagonv55" "target-features"="-hvx,-long-calls" }
index 100034a0c6c4ada326fab37828c1217802422f97..c7d447d168c8b8ad1609a21c601ffe2f287a6281 100644 (file)
@@ -39,5 +39,5 @@ declare i8* @__cxa_begin_catch(i8*)
 
 declare void @__cxa_end_catch()
 
-attributes #0 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind }
index a8b75725a0b893018a8a73be4feeb008650e3407..ddc73c284bc8d95f67c1deaafaeb871b6af06a9d 100644 (file)
@@ -17,4 +17,4 @@ entry:
   ret i16 %a
 }
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="-hvx-double,-long-calls" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" }
index 9a4569b1e4de25d115cbee9fde9e76d36b1aca15..e67892537ef6e011f403c9f11e808304728e8a53 100644 (file)
@@ -1,6 +1,6 @@
-; RUN: llc -march=hexagon -mcpu=hexagonv60 -relocation-model pic < %s | FileCheck %s
+; RUN: opt -relocation-model pic -march=hexagon -mcpu=hexagonv60 -O2 -S < %s | llc -march=hexagon -mcpu=hexagonv60 -relocation-model pic
 
-; CHECK: @PCREL
+; CHECK: jumpr
 
 target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048"
 target triple = "hexagon-unknown--elf"
index b793fa0c22cd57f3a5def44bb8a8c802f2224951..c4e67f3db6108e69a470291263f5f8e0d50716c6 100644 (file)
@@ -103,8 +103,8 @@ declare i32 @llvm.hexagon.S2.asr.r.r.sat(i32, i32) #2
 declare i32 @llvm.hexagon.A2.aslh(i32) #2
 declare void @foo(i16*, i32*, i16*, i16 signext, i16 signext, i16 signext) local_unnamed_addr #3
 
-attributes #0 = { nounwind optsize "target-cpu"="hexagonv55" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { nounwind optsize "target-cpu"="hexagonv55" "target-features"="-hvx,-long-calls" }
 attributes #1 = { argmemonly nounwind }
 attributes #2 = { nounwind readnone }
-attributes #3 = { optsize "target-cpu"="hexagonv55" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #3 = { optsize "target-cpu"="hexagonv55" "target-features"="-hvx,-long-calls" }
 attributes #4 = { nounwind optsize }
index 35c12f1d88b7f5b7dd619e21b4bbdf991fa21a24..62beeee19ff19c617e6e1d37abba355578f9a9fb 100644 (file)
@@ -14,4 +14,4 @@ entry:
 declare <32 x i32> @llvm.hexagon.V6.vrdelta.128B(<32 x i32>, <32 x i32>)
 declare <32 x i32> @llvm.hexagon.V6.vmux.128B(<1024 x i1>, <32 x i32>, <32 x i32>)
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length128b" }
index 0d8124e76b90388d301a34f358f28bb689d2a8ee..532c2b2ee8c99e266f0ba50a0cfedd0ff099e580 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc -O2 -march=hexagon < %s | FileCheck %s
+; RUN: llc -O2 -march=hexagon -mcpu=hexagonv62< %s | FileCheck %s
 ; CHECK: ParseFunc:
 ; CHECK: r[[ARG0:[0-9]+]] = memuh(r[[ARG1:[0-9]+]]+#[[OFFSET:[0-9]+]])
 ; CHECK: memw(r[[ARG1]]+#[[OFFSET]]) = r[[ARG0]]
@@ -126,6 +126,7 @@ sw.epilog:
 ; Function Attrs: nounwind
 declare void @snprintf(i8* nocapture, i32, i8* nocapture readonly, ...) local_unnamed_addr #1
 
-attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "target-features"="+hvx" "unsafe-fp-math"="false" "use-soft-float"="false" }
-attributes #1 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "target-features"="+hvx" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv62" "target-features"="+hvx,+hvx-length64b" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #1 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv62" "target-features"="+hvx,+hvx-length64b" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #2 = { nounwind }
+
index f45058f029dd095a65bab69864139bf85d1dde3f..ab8b00d6c909bc4affee344a0da156bee521cb48 100644 (file)
@@ -82,7 +82,7 @@ declare i64 @llvm.hexagon.A2.addp(i64, i64) #1
 declare i64 @llvm.hexagon.A2.subp(i64, i64) #1
 declare i64 @llvm.hexagon.A2.combinew(i32, i32) #1
 
-attributes #0 = { nounwind readonly "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { nounwind readonly "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" }
 attributes #1 = { nounwind readnone }
 
 !0 = !{!1, !1, i64 0}
index 6f3ec2d5a51da93ec07ca51f26ec0eed143551d0..6fd2aa134807c8dfeadfaf89dc7cf4467ba76997 100644 (file)
@@ -66,4 +66,4 @@ for.end:                                          ; preds = %if.end
   ret void
 }
 
-attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" }
+attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
index ca119e1d1dec304430d485505105b38f8f8c2d51..05074338cffb33e4d7c4419e09d29b1dfcd56aba 100644 (file)
@@ -31,7 +31,7 @@ b5:                                               ; preds = %b3, %b1
 declare <1024 x i1> @llvm.hexagon.V6.pred.scalar2.128B(i32) #1
 declare <1024 x i1> @llvm.hexagon.V6.pred.not.128B(<1024 x i1>) #1
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" }
 attributes #1 = { nounwind readnone }
 attributes #2 = { nounwind }
 
index b3a4a2f4252494bfe0439bd127e1966e1fb75b84..4c93ab201e3b4bb44eff06194c050f6ebe48771d 100644 (file)
@@ -139,5 +139,5 @@ declare <64 x i32> @llvm.hexagon.V6.vmpyuh.acc.128B(<64 x i32>, <32 x i32>, i32)
 
 declare <32 x i32> @llvm.hexagon.V6.hi.128B(<64 x i32>) #1
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" }
 attributes #1 = { nounwind readnone }
index ce7f5e0ce12fe92761f3e2196d65020f085bc786..350b0edec85d5478de9192548e7e0b26ebfc50f2 100644 (file)
@@ -51,4 +51,4 @@ b23:                                              ; preds = %b0
   ret void
 }
 
-attributes #0 = { nounwind "target-cpu"="hexagonv5" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { nounwind "target-cpu"="hexagonv5" "target-features"="-hvx,-long-calls" }
index ecec83625e1c2f80ca728bbf1fe17ce32a31be8a..dbcba1aa7d02aaf76d8c69c5361426a39c23d68f 100644 (file)
@@ -42,4 +42,4 @@ b20:                                              ; preds = %b2
   br label %b1
 }
 
-attributes #0 = { nounwind "target-cpu"="hexagonv55" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { nounwind "target-cpu"="hexagonv55" "target-features"="-hvx,-long-calls" }
index 1d07859665c075977813d68a9047fb1cc9bb96bf..a5769dbddd64a4f1724337fd78e554ade5f2c23b 100644 (file)
@@ -48,6 +48,6 @@ declare <32 x i32> @llvm.hexagon.V6.hi.128B(<64 x i32>) #2
 declare <32 x i32> @llvm.hexagon.V6.lo.128B(<64 x i32>) #2
 declare <64 x i32> @llvm.hexagon.V6.vshuffvdd.128B(<32 x i32>, <32 x i32>, i32) #2
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx" }
-attributes #1 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
+attributes #1 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length128b" }
 attributes #2 = { nounwind readnone }
index 8524bf33de188d3e24bf98fdafe099144e5986b1..88eaec938fd365f77bd4545cbc9f2ebf90e31b7b 100644 (file)
@@ -91,5 +91,5 @@ b22:                                              ; preds = %b22, %b18
 
 attributes #0 = { nounwind }
 attributes #1 = { nounwind readnone }
-attributes #2 = { nounwind "reciprocal-estimates"="none" "target-cpu"="hexagonv60" "target-features"="+hvx-double" }
+attributes #2 = { nounwind "reciprocal-estimates"="none" "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length128b" }
 attributes #3 = { nobuiltin nounwind }
index 4f2bb86f0842b500989d766822fbef6593fadb8d..641d53c87837b1b979fd819849af73d2b399d562 100644 (file)
@@ -210,7 +210,7 @@ b34:                                              ; preds = %b34, %b24
   br i1 %v146, label %b33, label %b34
 }
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length128b" }
 attributes #1 = { nounwind readnone }
 attributes #2 = { nounwind }
 attributes #3 = { nobuiltin nounwind }
index 1234baf17f528e6dc1a99bd06d56d41f58cbbc7e..b9743ad33aad4a9b762bf59b9b6420dd92cf2b42 100644 (file)
@@ -76,4 +76,4 @@ b21:                                              ; preds = %b20, %b19, %b16, %b
   br i1 %v23, label %b13, label %b10
 }
 
-attributes #0 = { norecurse "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { norecurse "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" }
index 7c1a9fb42f233881907c56f1e532564b3416eefd..cf1dc6cdf61bed01ba7d98d74d961df07a10f859 100644 (file)
@@ -22,6 +22,6 @@ entry:
 declare float @fminf(float, float) #0
 declare float @fmaxf(float, float) #0
 
-attributes #0 = { nounwind readnone "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { nounwind readnone "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind readnone }
 
index 43d5fd5ad0f05bf770fb5217d0630598ce459e61..88d4e287fc038f120133d52a75f8b4518a091d4b 100644 (file)
@@ -156,7 +156,7 @@ declare <32 x i32> @llvm.hexagon.V6.vmpahb.acc(<32 x i32>, <32 x i32>, i32) #0
 declare <32 x i32> @llvm.hexagon.V6.vmpyhsat.acc(<32 x i32>, <16 x i32>, i32) #0
 
 attributes #0 = { nounwind readnone }
-attributes #1 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" }
+attributes #1 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
 
 !1 = !{!2, !2, i64 0}
 !2 = !{!"omnipotent char", !3, i64 0}
index 1154a7117a70a0869e147da872c1666c7ff220be..f96eafe15024f717b7da69abf403562ccf98a899 100644 (file)
@@ -18,7 +18,7 @@ entry:
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #1
 
-attributes #0 = { nounwind "disable-tail-calls"="true" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv5" "target-features"="-hvx-double,-long-calls" }
+attributes #0 = { nounwind "disable-tail-calls"="true" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv5" "target-features"="-hvx,-long-calls" }
 attributes #1 = { nounwind readnone speculatable }
 
 !llvm.dbg.cu = !{!0}
index c8b49948ce74ecd7156dd232253dc97b55cbe324..c454a9fcd9b67123ea47ce14adccd88b0680ba64 100644 (file)
@@ -19,7 +19,7 @@ entry:
 ; Function Attrs: nounwind readnone speculatable
 declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #1
 
-attributes #0 = { nounwind "disable-tail-calls"="true" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv5" "target-features"="-hvx-double,-long-calls" }
+attributes #0 = { nounwind "disable-tail-calls"="true" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv5" "target-features"=",-hvx,-long-calls" }
 attributes #1 = { nounwind readnone speculatable }
 
 !llvm.dbg.cu = !{!0}
index 1719003bb80279b44c5592dbc76a9651c4cf28cb..ca1ba2fe1a2677802d61d881fab8fe034f4850ed 100644 (file)
@@ -73,7 +73,7 @@ declare <32 x i32> @llvm.hexagon.V6.vmaxub.128B(<32 x i32>, <32 x i32>) #1
 ; Function Attrs: nounwind readnone
 declare <32 x i32> @llvm.hexagon.V6.valignbi.128B(<32 x i32>, <32 x i32>, i32) #1
 
-attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind readnone }
 
 !llvm.ident = !{!0}
index 3808364d41af7d580ab5c3ca656d8bcdeebbe8f0..8fb62b3fa5aee1d72334cf8da7e4ea005d77faf6 100644 (file)
@@ -73,7 +73,7 @@ declare <32 x i32> @llvm.hexagon.V6.vmaxub.128B(<32 x i32>, <32 x i32>) #1
 ; Function Attrs: nounwind readnone
 declare <32 x i32> @llvm.hexagon.V6.valignbi.128B(<32 x i32>, <32 x i32>, i32) #1
 
-attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind readnone }
 
 !llvm.ident = !{!0}
index 98c5ef4809b08298b21d6ca7aa34b95b7bc0369f..38e597df1ba8ebc41788783a9e369dbbb606718b 100644 (file)
@@ -20,7 +20,7 @@ entry:
   ret void
 }
 
-attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" }
+attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length128b" }
 
 !1 = !{!2, !2, i64 0}
 !2 = !{!"omnipotent char", !3, i64 0}
index 1045e2ed80a79e305b673b6731395ac3df22d48c..accf6fd83c6e6f9319b04dc96c58c8cb8c09794b 100644 (file)
@@ -58,6 +58,6 @@ noret:
 
 declare void @trap() #1
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b" }
 attributes #1 = { nounwind noreturn }
 
index e92461f43da58ae27eb53c4e907b1dc54bff1a7e..fb7e76848660be03df034ace533f0893d0d1876f 100644 (file)
@@ -41,4 +41,4 @@ return:                                           ; preds = %return.loopexit, %f
 !1 = !{!"omnipotent char", !2}
 !2 = !{!"Simple C/C++ TBAA"}
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="-hvx" }
index 2563421703130223a54a35dab0801e2081241935..d540c09c1dde0b112c5d7dddf2c6ea8cfb22f9e7 100644 (file)
@@ -15,5 +15,5 @@ entry:
   ret void
 }
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" } 
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" } 
 attributes #1 = { nounwind readnone }
index 234f5a0b792600c328ec77fad7d9ed0a0dfc9683..7d2f50ed58a4b2e9af967d7d54899cd9f4a2b252 100644 (file)
@@ -12,4 +12,4 @@ define void @fred() #0 {
   ret void
 }
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" }
index 2a54bfef0ad7a0cd7bb7903218b4cec19df41f75..3b853ebb444bc4a1be4d90f8fe3f8155ce8e1a23 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc -mattr=+hvx-double -march=hexagon -O2 < %s | FileCheck %s
+; RUN: llc -mattr=+hvxv60,hvx-length128b -march=hexagon -O2 < %s | FileCheck %s
 
 ; CHECK-LABEL: V6_vmaskedstoreq_128B
 ; CHECK: if (q{{[0-3]+}}) vmem(r{{[0-9]+}}+#0) = v{{[0-9]+}}
index 208c15fec9804304d7611c8f09d00a91b995d157..5ff672224529236af5e257bd848ffff429c7b4cb 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc -mattr=+hvx -march=hexagon -O2 < %s | FileCheck %s
+; RUN: llc -mattr=+hvxv60,hvx-length64b -march=hexagon -O2 < %s | FileCheck %s
 
 ; CHECK-LABEL: V6_vmaskedstoreq
 ; CHECK: if (q{{[0-3]+}}) vmem(r{{[0-9]+}}+#0) = v{{[0-9]+}}
index 23473c92da911548f03260aabaa4e248746a61a9..1a5fd138e0ff9d6640bbc416e52e536393443ac0 100644 (file)
@@ -65,7 +65,7 @@ declare void @llvm.hexagon.Y2.dczeroa(i8* nocapture) #3
 declare void @llvm.hexagon.Y4.l2fetch(i8* nocapture readonly, i32) #2
 declare void @llvm.hexagon.Y5.l2fetch(i8* nocapture readonly, i64) #2
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" }
 attributes #1 = { inaccessiblemem_or_argmemonly nounwind }
 attributes #2 = { nounwind }
 attributes #3 = { argmemonly nounwind writeonly }
index 62b5caef6aaa10b85da0ab599be4dfa88ae9c6ae..7389c960b9ec33a46667b734eb889d8d088696ac 100644 (file)
@@ -54,4 +54,4 @@ sw.epilog:                                        ; preds = %entry, %sw.bb4, %sw
   ret void
 }
 
-attributes #0 = { noinline nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx-double,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { noinline nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
index f738282c0f1bcbd9b06794e142c92b7c5d6a9b40..92f3b6048bfb19536807cb46e93021385f3c722c 100644 (file)
@@ -80,4 +80,4 @@ if.end437:                                        ; preds = %if.then409, %for.bo
   br label %for.body405
 }
 
-attributes #0 = { noinline nounwind "target-cpu"="hexagonv60" "target-features"="-hvx-double,-long-calls" }
+attributes #0 = { noinline nounwind "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" }
index 9907ae71c99216fb5f11265300be7c1d6dd99a31..3e1e39b9d0944d450fcb3b65289461f5a9d3454f 100644 (file)
@@ -81,4 +81,4 @@ b46:                                              ; preds = %b3
   ret i16 %v5
 }
 
-attributes #0 = { noinline nounwind "target-cpu"="hexagonv5" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { noinline nounwind "target-cpu"="hexagonv5" "target-features"="-hvx,-long-calls" }
index 0c6e4581a71ff4d18e38254d4bc7b23794887f50..24518421c4452ce77a43f417b047741e22e644c4 100644 (file)
@@ -24,4 +24,4 @@ while.end:                                        ; preds = %while.body, %entry
   ret void
 }
 
-attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double" }
+attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="-hvx" }
index ba67de9e00a4cf6242af320bd70cd0b77fa84c07..09ca465c6716b41fcb32e941689b8faa9ffc2358 100644 (file)
@@ -43,5 +43,5 @@ if.then.i164:                                     ; preds = %"consume denoised"
 ; Function Attrs: nounwind readnone
 declare <64 x i32> @llvm.hexagon.V6.vshuffvdd.128B(<32 x i32>, <32 x i32>, i32) #1
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" }
-attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" }
+attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" }
index 1aa2e30ea25b63f731437e236e1d8f44b2ef9b33..9da319f443bb2157ae132195e826627e280c3790 100644 (file)
@@ -136,9 +136,9 @@ declare void @foo(i32*) #2
 declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
 declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
 
-attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { argmemonly nounwind }
-attributes #2 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #2 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #3 = { nounwind }
 
 !1 = !{!2, !2, i64 0}
index 25cb14e8514e1ee0bf6b0043b065e2c98b8b549c..c147282407434d38ff585d69ca32b0593531f9e9 100644 (file)
@@ -42,6 +42,6 @@ entry:
 
 declare <64 x i32> @llvm.hexagon.V6.vshuffvdd.128B(<32 x i32>, <32 x i32>, i32) #1
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" }
-attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" }
+attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" }
 
index fc021821af388d8b22f8f8b14ab3cb72e781968d..b8caef90397d4ecc84c3417dfdc9be420ef8bbd8 100644 (file)
@@ -95,7 +95,7 @@ declare <16 x i32> @llvm.hexagon.V6.valignb(<16 x i32>, <16 x i32>, i32) #1
 declare <16 x i32> @llvm.hexagon.V6.vabsdiffh(<16 x i32>, <16 x i32>) #1
 declare <16 x i32> @llvm.hexagon.V6.vabsh(<16 x i32>) #1
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
 attributes #1 = { nounwind readnone }
 
 !1 = !{!2, !2, i64 0}
index 705170b13a593b72b04d944dcc315e96511d1069..bb29954291271532bbc0fc98838a15b31d6c7869 100644 (file)
@@ -40,5 +40,5 @@ b18:                                              ; preds = %b7
 declare <32 x i32> @llvm.hexagon.V6.vaddhsat.128B(<32 x i32>, <32 x i32>) #1
 declare void @f0() #0
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" }
 attributes #1 = { nounwind readnone }
index 1e2e6c28c849fc79f49400f07d2127d3b3e452e9..93479666ad53dce756278cf8ddcc28aa66ac47e5 100644 (file)
@@ -74,6 +74,6 @@ b24:                                              ; preds = %b20, %b16, %b9, %b2
 }
 
 attributes #0 = { argmemonly nounwind }
-attributes #1 = { nounwind readonly "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double,-long-calls" }
-attributes #2 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double,-long-calls" }
+attributes #1 = { nounwind readonly "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b,-long-calls" }
+attributes #2 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b,-long-calls" }
 
index 03de15323528f57eac1d601a25fd317f806558d2..4a24ea62af4e09673b8d3a86e5f765e641607d0e 100644 (file)
@@ -23,5 +23,5 @@ for.end13:                                        ; preds = %for.cond
   ret void
 }
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b" }
 
index 1d38cf32b8860cdc6ccde46a9265745da028432d..d1d97a62263cdab25eb48b76e4f9ce5339ea3cfd 100644 (file)
@@ -34,4 +34,4 @@ return:                                           ; preds = %entry, %if.then
   ret i1 %.sink
 }
 
-attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx" }
+attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
index fb2f038e6e5929ac3fb2aadbee74e1495280d86c..673a9b41ff22ac9441466937d218caef8a3d99c9 100644 (file)
@@ -29,7 +29,7 @@ while.end:                                        ; preds = %while.body, %entry
   ret void
 }
 
-attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" }
+attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b" }
 
 
 !1 = !{!2, !2, i64 0}
index 4948a89b73e8e5e5318dfd30369f4d1d52c83c28..989322a0fea09196a028fddc8079039222878c10 100644 (file)
@@ -42,7 +42,7 @@ declare <64 x i32> @llvm.hexagon.V6.vcombine.128B(<32 x i32>, <32 x i32>) #3
 declare <32 x i32> @llvm.hexagon.V6.lo.128B(<64 x i32>) #3
 declare <32 x i32> @llvm.hexagon.V6.hi.128B(<64 x i32>) #3
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx" }
-attributes #1 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" }
-attributes #2 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx" }
-attributes #3 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
+attributes #1 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length128b" }
+attributes #2 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
+attributes #3 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length128b" }
index 3d65968911ed36278e9481104937e56a3ebd9758..91aec7750dbc952ac0633333e52448e7d061c186 100644 (file)
@@ -48,5 +48,5 @@ declare i32 @llvm.hexagon.S2.clb(i32) #1
 declare i32 @llvm.hexagon.S2.asl.r.r(i32, i32) #1
 declare i32 @llvm.hexagon.M2.mpyu.nac.ll.s0(i32, i32, i32) #1
 
-attributes #0 = { nounwind readnone "target-cpu"="hexagonv55" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { nounwind readnone "target-cpu"="hexagonv55" "target-features"="-hvx,-long-calls" }
 attributes #1 = { nounwind readnone }
index 222d8a2b2e147a64d2d22e2cb483e6cffdce1cf8..d06da9346786b56c37f8f86746826c58fe973b6c 100644 (file)
@@ -26,7 +26,7 @@ declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
 ; Function Attrs: argmemonly nounwind
 declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
 
-attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv5" "target-features"="-hvx,-hvx-double" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv5" "target-features"="-hvx" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { argmemonly nounwind }
 attributes #2 = { nounwind }
 
index ae09062638dcd071869b0adc957ec6d8945a0b16..2661f8c0d0dd15d242ad0f9fefb196d2cd72a9d2 100644 (file)
@@ -24,7 +24,7 @@ if.end:                                           ; preds = %if.then, %entry
   ret i32 %retval1.0
 }
 
-attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind }
 
 !1 = !{i32 155}
index db9ed55d2da66997e16b1cff2f861445cb0d7145..c73d4c7bc01f52c855c9494ef76975f8d5ead346 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc -O0 -march=hexagon -mcpu=hexagonv60 < %s | FileCheck %s
+; RUN: llc -O0 -march=hexagon -mcpu=hexagonv60 -mattr=+hvxv60,hvx-length64b < %s | FileCheck %s
 
 ; CHECK: vmem
 
index 78c4b989b7ac2c96fdb3363f198b4e8689aa86b4..bc878e09ef9429494b573701779e8da70d85e5ad 100644 (file)
@@ -95,6 +95,6 @@ entry:
   ret void
 }
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
 attributes #1 = { nounwind readnone }
 attributes #2 = { nounwind }
index a541e766f593c8f842d220866d45089d167b05aa..7e18011a523a92efae4f35a9139dc06ccdd9060b 100644 (file)
@@ -58,7 +58,7 @@
   declare i32 @lrand48() #0
   declare i64 @llvm.hexagon.S2.extractup(i64, i32, i32) #1
 
-  attributes #0 = { nounwind optsize "target-cpu"="hexagonv55" "target-features"="-hvx,-hvx-double" }
+  attributes #0 = { nounwind optsize "target-cpu"="hexagonv55" "target-features"="-hvx" }
   attributes #1 = { nounwind readnone }
 
 ...
index c98fcb6a9f04b0a0a17075163e02bb539a6bc24f..2dc9a7a5153cd06f0b1de098b94693a44db5a28d 100644 (file)
@@ -138,6 +138,6 @@ b42:                                              ; preds = %b40
   br label %b39
 }
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length128b" }
 attributes #1 = { nounwind readnone }
 attributes #2 = { nounwind }
index e3b2929d52f1675b4059e83a855d761899134ff2..368ee3c5726ad6539ee630d12adac5320e22a7f3 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc -march=hexagon -enable-hexagon-hvx < %s | FileCheck %s
+; RUN: llc -march=hexagon -mcpu=hexagonv60 -mattr=+hvxv60,hvx-length64b < %s | FileCheck %s
 ; CHECK-LABEL: aligned_load:
 ; CHECK: = vmem({{.*}})
 ; CHECK-LABEL: aligned_store:
index 0d028fb95b248b106658ea724a51b98255d7f050..f7639c728624b41f932de1c622782de766ef7ceb 100644 (file)
@@ -47,5 +47,5 @@ b11:                                              ; preds = %b11, %b7
 
 declare i32 @llvm.hexagon.V6.extractw(<16 x i32>, i32) #1
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
 attributes #1 = { nounwind readnone }
index 981071a0181e7e6b6a9dfadfd4ee66063d7fa8d0..f7bed980b65c38d60d9a181f3b386350bec5c62d 100644 (file)
@@ -42,7 +42,7 @@ entry:
   ret void
 }
 
-attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" }
+attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b" }
 
 !1 = !{!2, !2, i64 0}
 !2 = !{!"int", !3, i64 0}
index 6c67a0dab1a8cecde3391954536aa7da1d2475e7..b80e8e33bf8b4798ac57a50145e7a7ca741cb996 100644 (file)
@@ -29,4 +29,4 @@ return:                                           ; preds = %entry
   ret i32 19
 }
 
-attributes #0 = { norecurse nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx-double,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { norecurse nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
index bb2b1e798c8ab17fe435e8152d8df96e7794fd9c..542bfbb6d667891d40f94e186edae980275cb331 100644 (file)
@@ -27,4 +27,4 @@ return:                                           ; preds = %entry
   ret i32 19
 }
 
-attributes #0 = { norecurse nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx-double,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { norecurse nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
index 57fdfbf33abce983efeca1eac028489c706e81f0..22b61f0c92ba70f5e11caa8319378de52af5e16d 100644 (file)
@@ -39,4 +39,4 @@ return:                                           ; preds = %entry
   ret i32 19
 }
 
-attributes #0 = { norecurse nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx-double,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { norecurse nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
index b4d3e898d103454ae54823d042901f424f2ad5ab..203ea4abd94670623bfae12d3dd479567320d603 100644 (file)
@@ -24,4 +24,4 @@ return:                                           ; preds = %entry
   ret i32 19
 }
 
-attributes #0 = { norecurse nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx-double,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { norecurse nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
index c1ab5d73f5c389ee8d7d657194c0ad19f560a247..5aa7f39121d836f1f3fd6b407ca278525466af4d 100644 (file)
@@ -54,6 +54,6 @@ entry:
   ret void
 }
 
-attributes #0 = { norecurse nounwind readonly "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double,-long-calls" }
-attributes #1 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double,-long-calls" }
+attributes #0 = { norecurse nounwind readonly "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" }
+attributes #1 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" }
 
index a7d4f6d310e476faf58636e83f6e8f2a72e2a666..26d40c9a697560bbe0816f4492389ef0adcd11b7 100644 (file)
@@ -54,7 +54,7 @@ declare <16 x i32> @llvm.hexagon.V6.vasrwh(<16 x i32>, <16 x i32>, i32) #1
 declare <16 x i32> @llvm.hexagon.V6.hi(<32 x i32>) #1
 declare <16 x i32> @llvm.hexagon.V6.vsathub(<16 x i32>, <16 x i32>) #1
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
 attributes #1 = { nounwind readnone }
 
 !1 = !{!2, !2, i64 0}
index e673145c9d14c9fb40cba85d7fc604074382e160..71d112cc7357eff908f9be66663602af5083be7d 100644 (file)
@@ -65,5 +65,5 @@ declare <16 x i32> @llvm.hexagon.V6.vandqrt(<512 x i1>, i32) #1
 declare <16 x i32> @llvm.hexagon.V6.vnot(<16 x i32>) #1
 declare <16 x i32> @llvm.hexagon.V6.vand(<16 x i32>, <16 x i32>) #1
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
 attributes #1 = { nounwind readnone }
index d0064c50e71d3b67a77ac8163634a2ed8cb6af19..980d8701382689f05d479fd1e7dee10b3289de1a 100644 (file)
@@ -2555,5 +2555,5 @@ declare <32 x i32> @llvm.hexagon.V6.vunpackh(<16 x i32>) #1
 ; Function Attrs: nounwind readnone
 declare <32 x i32> @llvm.hexagon.V6.vunpackoh(<32 x i32>, <16 x i32>) #1
 
-attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind readnone }
index fb177f614f72d55cf029c803ba6c334eeedd62dd..dd309f6764615892e05f544d028c4f4fc44fa30b 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc -march=hexagon -O2 -mcpu=hexagonv60  < %s | FileCheck %s
+; RUN: llc -march=hexagon -O2 -mcpu=hexagonv60 -mattr=+hvxv60,hvx-length64b < %s | FileCheck %s
 
 ; CHECK: vasr(v{{[0-9]+}}.h,v{{[0-9]+}}.h,r{{[0-7]+}}):sat
 
index 8a6a6155a3998b3b197ca457e5ae3ea9e0c46596..efa726e2c6b1c8f2f42dc90435830fa129ffa579 100644 (file)
@@ -47,5 +47,5 @@ declare <512 x i1> @llvm.hexagon.V6.pred.and(<512 x i1>, <512 x i1>) #1
 ; Function Attrs: nounwind readnone
 declare <512 x i1> @llvm.hexagon.V6.pred.and.n(<512 x i1>, <512 x i1>) #1
 
-attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind readnone }
index 24daeac3fb5deff55fb62c8628ce39ca90b1954b..18c2cf65f727ef3822fa29d3721aa6e260380b05 100644 (file)
@@ -1,5 +1,5 @@
-; RUN: llc -march=hexagon -mcpu=hexagonv60 -enable-hexagon-hvx -disable-hexagon-shuffle=0 -O2 -enable-hexagon-vector-print < %s | FileCheck %s
-; RUN: llc -march=hexagon -mcpu=hexagonv60 -enable-hexagon-hvx -disable-hexagon-shuffle=0 -O2 -enable-hexagon-vector-print -trace-hex-vector-stores-only < %s | FileCheck --check-prefix=VSTPRINT %s
+; RUN: llc -march=hexagon -mcpu=hexagonv60 -mattr=+hvxv60,hvx-length64b -disable-hexagon-shuffle=0 -O2 -enable-hexagon-vector-print < %s | FileCheck --check-prefix=CHECK %s
+; RUN: llc -march=hexagon -mcpu=hexagonv60 -mattr=+hvxv60,hvx-length64b -disable-hexagon-shuffle=0 -O2 -enable-hexagon-vector-print -trace-hex-vector-stores-only < %s | FileCheck --check-prefix=VSTPRINT %s
 ;   generate .long XXXX which is a vector debug print instruction.
 ; CHECK: .long 0x1dffe0
 ; CHECK: .long 0x1dffe0
index a9a0d51e43b6e6fcb6120bf3a0aeb8560eeba2fc..0facdc335554d3a37a3f6b347fcb211e003e3813 100644 (file)
@@ -52,5 +52,5 @@ b2:                                                                ; preds = %b1
 }
 
 attributes #0 = { nounwind readnone }
-attributes #1 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" }
+attributes #1 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" }
 
index 7e41bd4d20d412ec6244be93f91011cbfe413671..352398e7bbeaf1f2ba12a4532d22666a6b0c1ade 100644 (file)
@@ -155,8 +155,8 @@ destructor_block:                                 ; preds = %"for testOne.s0.x.x
 ; Function Attrs: nounwind readnone
 declare <16 x i32> @llvm.hexagon.V6.vdmpyhvsat(<16 x i32>, <16 x i32>) #1
 
-attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" }
-attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" }
+attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
+attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
 
 !5 = !{!6, !6, i64 0}
 !6 = !{!"inputOne", !7}
index d120295fa52ccdc80f8a183dde89b8ace9eed71a..40b4a819ad6159e73585ffcef208fa430e7ead3f 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc -march=hexagon -mcpu=hexagonv60 -O2 -enable-hexagon-hvx < %s | FileCheck %s
+; RUN: llc -march=hexagon -mcpu=hexagonv60 -O2 -mattr=+hvxv60,hvx-length64b < %s | FileCheck %s
 
 ; CHECK: vmem(r{{[0-9]+}}+#3) = v{{[0-9]+}}
 ; CHECK: call puts
index d4c6bd3ef61b88381628ab3ad784a6a2d37550b2..0101c1ffa8a0e6b778a59f6a3353d02e43bbcdfb 100644 (file)
@@ -27,4 +27,4 @@ b0:
 declare i32 @printf(i8*, ...) #0
 declare void @VarVec1(i8*, i32, ...) #0
 
-attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx" }
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
index 557ee3f97f2e78f18dd4ca357b985490a7ff6d2a..043839c704ae9da130caa33713831f202771cfbb 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc -march=hexagon -mcpu=hexagonv60 -enable-hexagon-hvx < %s \
+; RUN: llc -march=hexagon -mcpu=hexagonv60 -mattr=+hvxv60,hvx-length64b < %s \
 ; RUN:    | FileCheck %s
 
 ; Check that the store to Q6VecPredResult does not get expanded into multiple
index 70ed3a9b1e8dbab4d515ac5d5e644f5ab8371eb2..a3bed31071d18e38f0d6be2fae52f388806c001d 100644 (file)
@@ -49,4 +49,4 @@ call_destructor.exit:                             ; preds = %entry
 declare <32 x i32> @llvm.hexagon.V6.valignbi.128B(<32 x i32>, <32 x i32>, i32) #0
 
 attributes #0 = { nounwind readnone }
-attributes #1 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" }
+attributes #1 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length128b" }
index 9c359900ba42265dae4521db2f24d2f25a394614..8b207ba4f238924635c5257c2b83e070dbff21aa 100644 (file)
@@ -133,8 +133,8 @@ destructor_block:                                 ; preds = %"for testOne.s0.x.x
 ; Function Attrs: nounwind readnone
 declare <32 x i32> @llvm.hexagon.V6.vmpabuuv(<32 x i32>, <32 x i32>) #1
 
-attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" }
-attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" }
+attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
+attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
 
 !5 = !{!6, !6, i64 0}
 !6 = !{!"inputOne", !7}
index 7238ca84a42e0f1ef06961aa3e9530ae57b75a47..cf8619c0f0a5d08be579f7c5f1b7d9ad3af37177 100644 (file)
@@ -61,8 +61,8 @@ entry:
 ; Function Attrs: nounwind readnone
 declare <16 x i32> @llvm.hexagon.V6.vaddh(<16 x i32>, <16 x i32>) #1
 
-attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" }
-attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" }
+attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
+attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
 
 !4 = !{!5, !5, i64 0}
 !5 = !{!"InputOne", !6}
index ef86e47e3959ffd65f2486a55230643c5e42507b..e6be3ee69c0407fbd61b9d30f02e4c20eceba784 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc -march=hexagon < %s
+; RUN: llc -march=hexagon -mattr="+hvxv60,+hvx-length64b" < %s
 ; REQUIRES: asserts
 
 target triple = "hexagon"
index 80cebf125cea5431945f05a00a7b32a57130b464..e85534def21f24d2065a26e7d0116b2dacc1b10e 100644 (file)
@@ -1,4 +1,4 @@
-# RUN: llvm-mc -triple=hexagon -filetype=obj %s | llvm-objdump -d - | FileCheck %s
+# RUN: llvm-mc -triple=hexagon -filetype=obj -mhvx %s | llvm-objdump -mhvx -d - | FileCheck %s
 
 # Verify that the .align directive emits the proper insn packets.
 
index 5421653b5b47594082af3ef273699f8f9b40cfc7..e10917b06fb4229ce52f41d1b9cd2975aa6d42b6 100644 (file)
@@ -1,4 +1,4 @@
-# RUN: llvm-mc -arch=hexagon -mcpu=hexagonv60 -filetype=obj %s | llvm-objdump -d - | FileCheck %s
+# RUN: llvm-mc -arch=hexagon -mcpu=hexagonv60 -mhvx -filetype=obj %s | llvm-objdump -d - | FileCheck %s
 {
   v1:0 = vshuff(v1,v0,r7)
   v2.w = vadd(v13.w,v15.w)
index 73b6d0a96c71af86a7909d6ab151ae11990dc402..35a395a3ac4840dc04c16900a46186251bee8747 100644 (file)
@@ -1,4 +1,4 @@
-#RUN: llvm-mc -filetype=obj -triple=hexagon -mcpu=hexagonv60 %s
+#RUN: llvm-mc -filetype=obj -triple=hexagon -mcpu=hexagonv60 -mhvx %s
 
 { vmem (r0 + #0) = v0
-  r0 = memw(r0) } 
\ No newline at end of file
+  r0 = memw(r0) } 
index 1583c3da2cb74f6b90582f437b87e2799c5d33e1..856a9fec91afcbb8d70033e3cd93a249d0713eca 100644 (file)
@@ -1,5 +1,5 @@
-#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj %s | \
-#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -d - | \
+#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj -mhvx %s | \
+#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -mhvx -d - | \
 #RUN: FileCheck %s
 
 #CHECK: 1ce2cbd7 { v23.w = vavg(v11.w,{{ *}}v2.w):rnd }
index b278447ab100cc387e55964345a095286232619a..53872d64dcff13e37055f4b24ca3f72c0ae1cab4 100644 (file)
@@ -1,4 +1,4 @@
-# RUN: llvm-mc -arch=hexagon -mcpu=hexagonv60 -mattr=+hvx -filetype=obj %s | llvm-objdump -arch=hexagon -mcpu=hexagonv60 -d - | FileCheck %s
+# RUN: llvm-mc -arch=hexagon -mcpu=hexagonv60 -mattr=+hvx -filetype=obj %s | llvm-objdump -arch=hexagon -mcpu=hexagonv60 -mhvx -d - | FileCheck %s
 
 .L0:
 
index b3544bd0a57b19867293b1fcf2cb19c096bc16be..0b0697a9e2fa3c04820ab6abb94926dc1912209f 100644 (file)
@@ -1,5 +1,5 @@
-#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj %s | \
-#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -d - | \
+#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj -mhvx %s | \
+#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -mhvx -d - | \
 #RUN: FileCheck %s
 
 #CHECK: 1fd2d5cf { v15.b = vpack(v21.h{{ *}},{{ *}}v18.h):sat }
index 3d0c334debb9013fe661eab6e7982c67664bebd5..0002714cab4ab0c243fe1e32250864f10d0bfd5d 100644 (file)
@@ -1,5 +1,5 @@
-#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj %s | \
-#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -d - | \
+#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj -mhvx %s | \
+#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -mhvx -d - | \
 #RUN: FileCheck %s
 
 #CHECK: 198fd829 { v9.uw = vlsr(v24.uw,{{ *}}r15) }
index c7f4e128be6383bee8d3cf276d1384e5d1534501..712f570f99ed654b3fab997fc33d36d5e9eae382 100644 (file)
@@ -1,5 +1,5 @@
-#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj %s | \
-#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -d - | \
+#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj -mhvx %s | \
+#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -mhvx -d - | \
 #RUN: FileCheck %s
 
 #CHECK: 1c81f142 { q2 |= vcmp.eq(v17.b{{ *}},{{ *}}v1.b) }
index 0580a1e62448fac9f7dc2cd372b648382ecea588..bf549c893a11a0579ba8898c1b753deec069b1b8 100644 (file)
@@ -1,5 +1,5 @@
-#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj %s | \
-#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -d - | \
+#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj -mhvx %s | \
+#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -mhvx -d - | \
 #RUN: FileCheck %s
 
 #CHECK: 292cc11b { vmem(r12++#1) = v27 }
index c39a9252b563a48164240c63065d17e7a6b09594..a582a5f740c9ef4696d416d1ee0d00f47bd56074 100644 (file)
@@ -1,5 +1,5 @@
-#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj %s | \
-#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -d - | \
+#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj -mhvx %s | \
+#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -mhvx -d - | \
 #RUN: FileCheck %s
 
 #CHECK: 1936ee37 { v23.w += vdmpy(v15:14.h,r22.uh,#1):sat }
index 1f36a5e95ddb8224d1ecab7f24f4ff97176c4c28..dd86a084d1f63276e1ffd3a6b2ab604f7bf5a806 100644 (file)
@@ -1,5 +1,5 @@
-#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj %s | \
-#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -d - | \
+#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj -mhvx %s | \
+#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -mhvx -d - | \
 #RUN: FileCheck %s
 
 #CHECK: 1939c223 { v3.w = vdmpy(v3:2.h,{{ *}}r25.uh,{{ *}}#1):sat }
index b92a2d3c6eb1ed3650fb5f44fa8e28102dfc2eae..d4c520210a0ab0da10aace6e0bd01c08929f6510 100644 (file)
@@ -1,5 +1,5 @@
-#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj %s | \
-#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -d - | \
+#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj -mhvx %s | \
+#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -mhvx -d - | \
 #RUN: FileCheck %s
 
                     V31.b = vlut32(V29.b, V15.b, R1)
index 6effdc0caba9b06216fb6d756f28f9a1c5e4df48..79e30982e96d1696b05ec05be2bb8ae16eaa16da 100644 (file)
@@ -1,4 +1,4 @@
-# RUN: llvm-mc -arch=hexagon -mcpu=hexagonv62 -filetype=obj %s | llvm-objdump -arch=hexagon -mcpu=hexagonv62 -d - | FileCheck %s
+# RUN: llvm-mc -arch=hexagon -mcpu=hexagonv62 -filetype=obj -mhvx %s | llvm-objdump -arch=hexagon -mcpu=hexagonv62 -mhvx -d - | FileCheck %s
 
 //   V6_lvsplatb
 //   Vd32.b=vsplat(Rt32)
index 4bc1251572aa44bc79a308d5934442186e5e30af..a81737a7979db89d47f77c54a649a095d70c1e49 100644 (file)
@@ -59,4 +59,4 @@ return:                                           ; preds = %sw.default, %sw.bb5
   ret i32 %1
 }
 
-attributes #0 = { noinline nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx-double,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { noinline nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
index b14eb2a85ed02323f580fb01604f462e860b4981..fd3537209ca124ba59b9ea9a9ddb5637ea916997 100644 (file)
@@ -34,7 +34,7 @@ entry:
 ; Function Attrs: nounwind readnone
 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
 
-attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx,-hvx-double" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="-hvx" "unsafe-fp-math"="false" "use-soft-float"="false" }
 attributes #1 = { nounwind readnone }
 
 !llvm.dbg.cu = !{!0}