diff options
Diffstat (limited to 'llvm/lib/Target/VE')
| -rw-r--r-- | llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/VE/Disassembler/VEDisassembler.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/VE/MCTargetDesc/VEAsmBackend.cpp | 5 | ||||
| -rw-r--r-- | llvm/lib/Target/VE/MCTargetDesc/VEMCAsmInfo.cpp | 1 | ||||
| -rw-r--r-- | llvm/lib/Target/VE/MCTargetDesc/VEMCTargetDesc.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/VE/TargetInfo/VETargetInfo.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/VE/VEAsmPrinter.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/VE/VEISelLowering.cpp | 12 | ||||
| -rw-r--r-- | llvm/lib/Target/VE/VEInstrInfo.cpp | 6 | ||||
| -rw-r--r-- | llvm/lib/Target/VE/VEInstrInfo.td | 52 | ||||
| -rw-r--r-- | llvm/lib/Target/VE/VESubtarget.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/VE/VETargetMachine.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/VE/VVPInstrPatternsVec.td | 7 |
13 files changed, 43 insertions, 54 deletions
diff --git a/llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp b/llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp index a3309a68c76d..7e92e4b33812 100644 --- a/llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp +++ b/llvm/lib/Target/VE/AsmParser/VEAsmParser.cpp @@ -25,7 +25,7 @@ #include "llvm/MC/MCStreamer.h" #include "llvm/MC/MCSubtargetInfo.h" #include "llvm/MC/MCSymbol.h" -#include "llvm/Support/TargetRegistry.h" +#include "llvm/MC/TargetRegistry.h" #include "llvm/Support/raw_ostream.h" #include <algorithm> #include <memory> diff --git a/llvm/lib/Target/VE/Disassembler/VEDisassembler.cpp b/llvm/lib/Target/VE/Disassembler/VEDisassembler.cpp index 20d609bc6b32..72c40cbe78c4 100644 --- a/llvm/lib/Target/VE/Disassembler/VEDisassembler.cpp +++ b/llvm/lib/Target/VE/Disassembler/VEDisassembler.cpp @@ -18,7 +18,7 @@ #include "llvm/MC/MCDisassembler/MCDisassembler.h" #include "llvm/MC/MCFixedLenDisassembler.h" #include "llvm/MC/MCInst.h" -#include "llvm/Support/TargetRegistry.h" +#include "llvm/MC/TargetRegistry.h" using namespace llvm; diff --git a/llvm/lib/Target/VE/MCTargetDesc/VEAsmBackend.cpp b/llvm/lib/Target/VE/MCTargetDesc/VEAsmBackend.cpp index 9a6ae90b5c73..29c209934680 100644 --- a/llvm/lib/Target/VE/MCTargetDesc/VEAsmBackend.cpp +++ b/llvm/lib/Target/VE/MCTargetDesc/VEAsmBackend.cpp @@ -15,8 +15,8 @@ #include "llvm/MC/MCObjectWriter.h" #include "llvm/MC/MCSubtargetInfo.h" #include "llvm/MC/MCValue.h" +#include "llvm/MC/TargetRegistry.h" #include "llvm/Support/EndianStream.h" -#include "llvm/Support/TargetRegistry.h" using namespace llvm; @@ -164,7 +164,8 @@ public: llvm_unreachable("relaxInstruction() should not be called"); } - bool writeNopData(raw_ostream &OS, uint64_t Count) const override { + bool writeNopData(raw_ostream &OS, uint64_t Count, + const MCSubtargetInfo *STI) const override { if ((Count % 8) != 0) return false; diff --git a/llvm/lib/Target/VE/MCTargetDesc/VEMCAsmInfo.cpp b/llvm/lib/Target/VE/MCTargetDesc/VEMCAsmInfo.cpp index 76824335239b..9f29fc092c69 100644 --- a/llvm/lib/Target/VE/MCTargetDesc/VEMCAsmInfo.cpp +++ b/llvm/lib/Target/VE/MCTargetDesc/VEMCAsmInfo.cpp @@ -37,5 +37,4 @@ VEELFMCAsmInfo::VEELFMCAsmInfo(const Triple &TheTriple) { UsesELFSectionDirectiveForBSS = true; SupportsDebugInformation = true; - UseIntegratedAssembler = false; } diff --git a/llvm/lib/Target/VE/MCTargetDesc/VEMCTargetDesc.cpp b/llvm/lib/Target/VE/MCTargetDesc/VEMCTargetDesc.cpp index 4c480c050274..f4fbf763e59c 100644 --- a/llvm/lib/Target/VE/MCTargetDesc/VEMCTargetDesc.cpp +++ b/llvm/lib/Target/VE/MCTargetDesc/VEMCTargetDesc.cpp @@ -18,8 +18,8 @@ #include "llvm/MC/MCInstrInfo.h" #include "llvm/MC/MCRegisterInfo.h" #include "llvm/MC/MCSubtargetInfo.h" +#include "llvm/MC/TargetRegistry.h" #include "llvm/Support/ErrorHandling.h" -#include "llvm/Support/TargetRegistry.h" using namespace llvm; diff --git a/llvm/lib/Target/VE/TargetInfo/VETargetInfo.cpp b/llvm/lib/Target/VE/TargetInfo/VETargetInfo.cpp index a95a299def88..7c4bf1cfd672 100644 --- a/llvm/lib/Target/VE/TargetInfo/VETargetInfo.cpp +++ b/llvm/lib/Target/VE/TargetInfo/VETargetInfo.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "TargetInfo/VETargetInfo.h" -#include "llvm/Support/TargetRegistry.h" +#include "llvm/MC/TargetRegistry.h" using namespace llvm; diff --git a/llvm/lib/Target/VE/VEAsmPrinter.cpp b/llvm/lib/Target/VE/VEAsmPrinter.cpp index 08a75b6b8c55..af69d04a17ca 100644 --- a/llvm/lib/Target/VE/VEAsmPrinter.cpp +++ b/llvm/lib/Target/VE/VEAsmPrinter.cpp @@ -30,7 +30,7 @@ #include "llvm/MC/MCInstBuilder.h" #include "llvm/MC/MCStreamer.h" #include "llvm/MC/MCSymbol.h" -#include "llvm/Support/TargetRegistry.h" +#include "llvm/MC/TargetRegistry.h" #include "llvm/Support/raw_ostream.h" using namespace llvm; diff --git a/llvm/lib/Target/VE/VEISelLowering.cpp b/llvm/lib/Target/VE/VEISelLowering.cpp index b297e0fcd1a2..32315543826a 100644 --- a/llvm/lib/Target/VE/VEISelLowering.cpp +++ b/llvm/lib/Target/VE/VEISelLowering.cpp @@ -2508,13 +2508,12 @@ static bool isI32Insn(const SDNode *User, const SDNode *N) { case ISD::CopyToReg: // Check all use of selections, bit operations, and copies. If all of them // are safe, optimize truncate to extract_subreg. - for (SDNode::use_iterator UI = User->use_begin(), UE = User->use_end(); - UI != UE; ++UI) { - switch ((*UI)->getOpcode()) { + for (const SDNode *U : User->uses()) { + switch (U->getOpcode()) { default: // If the use is an instruction which treats the source operand as i32, // it is safe to avoid truncate here. - if (isI32Insn(*UI, N)) + if (isI32Insn(U, N)) continue; break; case ISD::ANY_EXTEND: @@ -2561,10 +2560,7 @@ SDValue VETargetLowering::combineTRUNCATE(SDNode *N, return SDValue(); // Check all use of this TRUNCATE. - for (SDNode::use_iterator UI = N->use_begin(), UE = N->use_end(); UI != UE; - ++UI) { - SDNode *User = *UI; - + for (const SDNode *User : N->uses()) { // Make sure that we're not going to replace TRUNCATE for non i32 // instructions. // diff --git a/llvm/lib/Target/VE/VEInstrInfo.cpp b/llvm/lib/Target/VE/VEInstrInfo.cpp index 9770052ff913..ddcfb9da8249 100644 --- a/llvm/lib/Target/VE/VEInstrInfo.cpp +++ b/llvm/lib/Target/VE/VEInstrInfo.cpp @@ -20,10 +20,10 @@ #include "llvm/CodeGen/MachineInstrBuilder.h" #include "llvm/CodeGen/MachineMemOperand.h" #include "llvm/CodeGen/MachineRegisterInfo.h" +#include "llvm/MC/TargetRegistry.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" #include "llvm/Support/ErrorHandling.h" -#include "llvm/Support/TargetRegistry.h" #define DEBUG_TYPE "ve-instr-info" @@ -99,7 +99,7 @@ static bool isUncondBranchOpcode(int Opc) { #define BRKIND(NAME) (Opc == NAME##a || Opc == NAME##a_nt || Opc == NAME##a_t) // VE has other branch relative always instructions for word/double/float, - // but we use only long branches in our lower. So, sanity check it here. + // but we use only long branches in our lower. So, check it here. assert(!BRKIND(BRCFW) && !BRKIND(BRCFD) && !BRKIND(BRCFS) && "Branch relative word/double/float always instructions should not be " "used!"); @@ -127,7 +127,7 @@ static bool isIndirectBranchOpcode(int Opc) { #define BRKIND(NAME) \ (Opc == NAME##ari || Opc == NAME##ari_nt || Opc == NAME##ari_t) // VE has other branch always instructions for word/double/float, but - // we use only long branches in our lower. So, sanity check it here. + // we use only long branches in our lower. So, check it here. assert(!BRKIND(BCFW) && !BRKIND(BCFD) && !BRKIND(BCFS) && "Branch word/double/float always instructions should not be used!"); return BRKIND(BCFL); diff --git a/llvm/lib/Target/VE/VEInstrInfo.td b/llvm/lib/Target/VE/VEInstrInfo.td index 2f77daae7130..c3abbe2cafab 100644 --- a/llvm/lib/Target/VE/VEInstrInfo.td +++ b/llvm/lib/Target/VE/VEInstrInfo.td @@ -634,9 +634,7 @@ multiclass RRIm<string opcStr, bits<8>opc, // Special RR multiclass for 128 bits shift left instruction. // e.g. SLD let Constraints = "$hi = $sx", DisableEncoding = "$hi", hasSideEffects = 0 in -multiclass RRILDm<string opcStr, bits<8>opc, - RegisterClass RC, ValueType Ty, - SDPatternOperator OpNode = null_frag> { +multiclass RRILDm<string opcStr, bits<8>opc, RegisterClass RC> { def rrr : RR<opc, (outs RC:$sx), (ins RC:$hi, RC:$sz, I32:$sy), !strconcat(opcStr, " $sx, $sz, $sy")>; let cz = 0 in @@ -653,9 +651,7 @@ multiclass RRILDm<string opcStr, bits<8>opc, // Special RR multiclass for 128 bits shift right instruction. // e.g. SRD let Constraints = "$low = $sx", DisableEncoding = "$low", hasSideEffects = 0 in -multiclass RRIRDm<string opcStr, bits<8>opc, - RegisterClass RC, ValueType Ty, - SDPatternOperator OpNode = null_frag> { +multiclass RRIRDm<string opcStr, bits<8>opc, RegisterClass RC> { def rrr : RR<opc, (outs RC:$sx), (ins RC:$sz, RC:$low, I32:$sy), !strconcat(opcStr, " $sx, $sz, $sy")>; let cz = 0 in @@ -685,7 +681,7 @@ multiclass RRI1m<string opcStr, bits<8>opc, RegisterClass RC, ValueType Ty, // Special RR multiclass for MRG instruction. // e.g. MRG let Constraints = "$sx = $sd", DisableEncoding = "$sd", hasSideEffects = 0 in -multiclass RRMRGm<string opcStr, bits<8>opc, RegisterClass RC, ValueType Ty> { +multiclass RRMRGm<string opcStr, bits<8>opc, RegisterClass RC> { def rr : RR<opc, (outs RC:$sx), (ins RC:$sy, RC:$sz, RC:$sd), !strconcat(opcStr, " $sx, $sy, $sz")>; let cy = 0 in @@ -719,7 +715,7 @@ multiclass RRSWPm<string opcStr, bits<8>opc, // e.g. CMOVL, CMOVW, CMOVD, and etc. let Constraints = "$sx = $sd", DisableEncoding = "$sd", hasSideEffects = 0, cfw = ? in -multiclass RRCMOVm<string opcStr, bits<8>opc, RegisterClass RC, ValueType Ty> { +multiclass RRCMOVm<string opcStr, bits<8>opc, RegisterClass RC> { def rr : RR<opc, (outs I64:$sx), (ins CCOp:$cfw, RC:$sy, I64:$sz, I64:$sd), !strconcat(opcStr, " $sx, $sz, $sy")>; let cy = 0 in @@ -740,8 +736,8 @@ multiclass RRCMOVm<string opcStr, bits<8>opc, RegisterClass RC, ValueType Ty> { // e.g. CVTWDSX, CVTWDZX, CVTWSSX, and etc. // sz{3-0} = rounding mode let cz = 0, hasSideEffects = 0 in -multiclass CVTRDm<string opcStr, bits<8> opc, RegisterClass RCo, ValueType Tyo, - RegisterClass RCi, ValueType Tyi> { +multiclass CVTRDm<string opcStr, bits<8> opc, RegisterClass RCo, + RegisterClass RCi> { def r : RR<opc, (outs RCo:$sx), (ins RDOp:$rd, RCi:$sy), !strconcat(opcStr, "${rd} $sx, $sy")> { bits<4> rd; @@ -1265,7 +1261,7 @@ let isReMaterializable = 1, isAsCheapAsAMove = 1 in defm NND : RRNCm<"nnd", 0x54, I64, i64, and_not>; // Section 8.5.6 - MRG (Merge) -defm MRG : RRMRGm<"mrg", 0x56, I64, i64>; +defm MRG : RRMRGm<"mrg", 0x56, I64>; // Section 8.5.7 - LDZ (Leading Zero Count) def ctlz_pat : PatFrags<(ops node:$src), @@ -1297,10 +1293,10 @@ def : Pat<(i32 (bswap (i32 mimm:$src))), (EXTRACT_SUBREG (BSWPmi (MIMM $src), 1), sub_i32)>; // Section 8.5.11 - CMOV (Conditional Move) -let cw = 0, cw2 = 0 in defm CMOVL : RRCMOVm<"cmov.l.${cfw}", 0x3B, I64, i64>; -let cw = 1, cw2 = 0 in defm CMOVW : RRCMOVm<"cmov.w.${cfw}", 0x3B, I32, i32>; -let cw = 0, cw2 = 1 in defm CMOVD : RRCMOVm<"cmov.d.${cfw}", 0x3B, I64, f64>; -let cw = 1, cw2 = 1 in defm CMOVS : RRCMOVm<"cmov.s.${cfw}", 0x3B, F32, f32>; +let cw = 0, cw2 = 0 in defm CMOVL : RRCMOVm<"cmov.l.${cfw}", 0x3B, I64>; +let cw = 1, cw2 = 0 in defm CMOVW : RRCMOVm<"cmov.w.${cfw}", 0x3B, I32>; +let cw = 0, cw2 = 1 in defm CMOVD : RRCMOVm<"cmov.d.${cfw}", 0x3B, I64>; +let cw = 1, cw2 = 1 in defm CMOVS : RRCMOVm<"cmov.s.${cfw}", 0x3B, F32>; def : MnemonicAlias<"cmov.l", "cmov.l.at">; def : MnemonicAlias<"cmov.w", "cmov.w.at">; def : MnemonicAlias<"cmov.d", "cmov.d.at">; @@ -1315,14 +1311,14 @@ let isReMaterializable = 1, isAsCheapAsAMove = 1 in defm SLL : RRIm<"sll", 0x65, I64, i64, shl>; // Section 8.6.2 - SLD (Shift Left Double) -defm SLD : RRILDm<"sld", 0x64, I64, i64>; +defm SLD : RRILDm<"sld", 0x64, I64>; // Section 8.6.3 - SRL (Shift Right Logical) let isReMaterializable = 1, isAsCheapAsAMove = 1 in defm SRL : RRIm<"srl", 0x75, I64, i64, srl>; // Section 8.6.4 - SRD (Shift Right Double) -defm SRD : RRIRDm<"srd", 0x74, I64, i64>; +defm SRD : RRIRDm<"srd", 0x74, I64>; let isReMaterializable = 1, isAsCheapAsAMove = 1 in { @@ -1405,16 +1401,16 @@ defm FCMPQ : RRNCbm<"fcmp.q", 0x7D, I64, f64, F128, f128, null_frag, simm7fp, // Section 8.7.11 - FIX (Convert to Fixed Point) // cx: double/float, cw: sx/zx, sz{0-3} = round let cx = 0, cw = 0 /* sign extend */ in -defm CVTWDSX : CVTRDm<"cvt.w.d.sx", 0x4E, I32, i32, I64, f64>; +defm CVTWDSX : CVTRDm<"cvt.w.d.sx", 0x4E, I32, I64>; let cx = 0, cw = 1 /* zero extend */ in -defm CVTWDZX : CVTRDm<"cvt.w.d.zx", 0x4E, I32, i32, I64, f64>; +defm CVTWDZX : CVTRDm<"cvt.w.d.zx", 0x4E, I32, I64>; let cx = 1, cw = 0 /* sign extend */ in -defm CVTWSSX : CVTRDm<"cvt.w.s.sx", 0x4E, I32, i32, F32, f32>; +defm CVTWSSX : CVTRDm<"cvt.w.s.sx", 0x4E, I32, F32>; let cx = 1, cw = 1 /* zero extend */ in -defm CVTWSZX : CVTRDm<"cvt.w.s.zx", 0x4E, I32, i32, F32, f32>; +defm CVTWSZX : CVTRDm<"cvt.w.s.zx", 0x4E, I32, F32>; // Section 8.7.12 - FIXX (Convert to Fixed Point) -defm CVTLD : CVTRDm<"cvt.l.d", 0x4F, I64, i64, I64, f64>; +defm CVTLD : CVTRDm<"cvt.l.d", 0x4F, I64, I64>; // Section 8.7.13 - FLT (Convert to Floating Point) defm CVTDW : CVTm<"cvt.d.w", 0x5E, I64, f64, I32, i32, sint_to_fp>; @@ -1836,7 +1832,7 @@ multiclass ZXATMLDm<SDPatternOperator from, int VAL, def : Pat<(i64 (and (anyext (from ADDRzii:$addr)), VAL)), (i2l (tozii MEMzii:$addr))>; } -multiclass ZXATMLD32m<SDPatternOperator from, int VAL, +multiclass ZXATMLD32m<SDPatternOperator from, RM torri, RM torii, RM tozri, RM tozii> { def : Pat<(i64 (zext (from ADDRrri:$addr))), @@ -1852,8 +1848,7 @@ defm : ZXATMLDm<atomic_load_8, 0xFF, LD1BZXrri, LD1BZXrii, LD1BZXzri, LD1BZXzii>; defm : ZXATMLDm<atomic_load_16, 0xFFFF, LD2BZXrri, LD2BZXrii, LD2BZXzri, LD2BZXzii>; -defm : ZXATMLD32m<atomic_load_32, 0xFFFFFFFF, LDLZXrri, LDLZXrii, LDLZXzri, - LDLZXzii>; +defm : ZXATMLD32m<atomic_load_32, LDLZXrri, LDLZXrii, LDLZXzri, LDLZXzii>; // Atomic stores multiclass ATMSTm<SDPatternOperator from, ValueType ty, @@ -1871,7 +1866,6 @@ defm : ATMSTm<atomic_store_64, i64, STrri, STrii, STzri, STzii>; // Optimized atomic stores with truncate multiclass TRATMSTm<SDPatternOperator from, - ValueType ty, RM torri, RM torii, RM tozri, @@ -1885,9 +1879,9 @@ multiclass TRATMSTm<SDPatternOperator from, def : Pat<(from ADDRzii:$addr, (i32 (trunc i64:$src))), (tozii MEMzii:$addr, (EXTRACT_SUBREG $src, sub_i32))>; } -defm : TRATMSTm<atomic_store_8, i32, ST1Brri, ST1Brii, ST1Bzri, ST1Bzii>; -defm : TRATMSTm<atomic_store_16, i32, ST2Brri, ST2Brii, ST2Bzri, ST2Bzii>; -defm : TRATMSTm<atomic_store_32, i32, STLrri, STLrii, STLzri, STLzii>; +defm : TRATMSTm<atomic_store_8, ST1Brri, ST1Brii, ST1Bzri, ST1Bzii>; +defm : TRATMSTm<atomic_store_16, ST2Brri, ST2Brii, ST2Bzri, ST2Bzii>; +defm : TRATMSTm<atomic_store_32, STLrri, STLrii, STLzri, STLzii>; // Atomic swaps def : Pat<(i32 (ts1am i64:$src, i32:$flag, i32:$new)), diff --git a/llvm/lib/Target/VE/VESubtarget.cpp b/llvm/lib/Target/VE/VESubtarget.cpp index daa6cfb8aa84..78ac742ebf52 100644 --- a/llvm/lib/Target/VE/VESubtarget.cpp +++ b/llvm/lib/Target/VE/VESubtarget.cpp @@ -12,8 +12,8 @@ #include "VESubtarget.h" #include "VE.h" +#include "llvm/MC/TargetRegistry.h" #include "llvm/Support/MathExtras.h" -#include "llvm/Support/TargetRegistry.h" using namespace llvm; diff --git a/llvm/lib/Target/VE/VETargetMachine.cpp b/llvm/lib/Target/VE/VETargetMachine.cpp index 414ae09431c0..9f294f15da91 100644 --- a/llvm/lib/Target/VE/VETargetMachine.cpp +++ b/llvm/lib/Target/VE/VETargetMachine.cpp @@ -17,7 +17,7 @@ #include "llvm/CodeGen/TargetLoweringObjectFileImpl.h" #include "llvm/CodeGen/TargetPassConfig.h" #include "llvm/IR/LegacyPassManager.h" -#include "llvm/Support/TargetRegistry.h" +#include "llvm/MC/TargetRegistry.h" using namespace llvm; diff --git a/llvm/lib/Target/VE/VVPInstrPatternsVec.td b/llvm/lib/Target/VE/VVPInstrPatternsVec.td index 7003fb387670..ac03e0bf627e 100644 --- a/llvm/lib/Target/VE/VVPInstrPatternsVec.td +++ b/llvm/lib/Target/VE/VVPInstrPatternsVec.td @@ -20,8 +20,7 @@ include "VVPInstrInfo.td" multiclass VectorBinaryArith< SDPatternOperator OpNode, ValueType ScalarVT, ValueType DataVT, ValueType MaskVT, - string OpBaseName, - SDPatternOperator ImmOp, SDNodeXForm ImmCast> { + string OpBaseName> { // No mask. def : Pat<(OpNode (any_broadcast ScalarVT:$sx), @@ -56,10 +55,10 @@ multiclass VectorBinaryArith_ShortLong< ValueType ShortScalarVT, ValueType ShortDataVT, string ShortOpBaseName> { defm : VectorBinaryArith<OpNode, LongScalarVT, LongDataVT, v256i1, - LongOpBaseName, simm7, LO7>; + LongOpBaseName>; defm : VectorBinaryArith<OpNode, ShortScalarVT, ShortDataVT, v256i1, - ShortOpBaseName, simm7, LO7>; + ShortOpBaseName>; } |
