Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions llvm/lib/Target/AArch64/AArch64SchedNeoverseN3.td
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ def N3UnitM0 : ProcResource<1>; // Integer Single/Multi-Cycle 0
def N3UnitM1 : ProcResource<1>; // Integer Single/Multi-Cycle 1
def N3UnitL01 : ProcResource<2>; // Load/Store 0/1
def N3UnitL2 : ProcResource<1>; // Load 2
def N3UnitGL : ProcResource<4>; // Gather Load
def N3UnitD : ProcResource<2>; // Integer Store data 0/1
def N3UnitV0 : ProcResource<1>; // FP/ASIMD 0
def N3UnitV1 : ProcResource<1>; // FP/ASIMD 1
Expand Down Expand Up @@ -160,6 +161,12 @@ def N3Write_6c_2L : SchedWriteRes<[N3UnitL, N3UnitL]> {
let NumMicroOps = 2;
}

def N3Write_6c_2GL : SchedWriteRes<[N3UnitL, N3UnitGL]> {
let Latency = 6;
let NumMicroOps = 2;
let ReleaseAtCycles = [3, 5];
}

def N3Write_2c_1L01_1V : SchedWriteRes<[N3UnitL01, N3UnitV]> {
let Latency = 2;
let NumMicroOps = 2;
Expand Down Expand Up @@ -2243,8 +2250,8 @@ def : InstRW<[N3Write_7c_4L], (instregex "^LDNT1[BHW]_ZZR_S$",
"^LDNT1S[BH]_ZZR_S$")>;

// Non temporal gather load, vector + scalar 64-bit element size
def : InstRW<[N3Write_6c_2L], (instregex "^LDNT1S?[BHW]_ZZR_D$")>;
def : InstRW<[N3Write_6c_2L], (instrs LDNT1D_ZZR_D)>;
def : InstRW<[N3Write_6c_2GL], (instregex "^LDNT1S?[BHW]_ZZR_D$")>;
def : InstRW<[N3Write_6c_2GL], (instrs LDNT1D_ZZR_D)>;

// Contiguous first faulting load, scalar + scalar
def : InstRW<[N3Write_6c_1L], (instregex "^LDFF1[BHWD]$",
Expand Down Expand Up @@ -2293,11 +2300,11 @@ def : InstRW<[N3Write_7c_4L], (instregex "^GLD(FF)?1S?[BH]_S_IMM$",
"^GLD(FF)?1W_IMM$")>;

// Gather load, vector + imm, 64-bit element size
def : InstRW<[N3Write_6c_2L], (instregex "^GLD(FF)?1S?[BHW]_D_IMM$",
def : InstRW<[N3Write_6c_2GL], (instregex "^GLD(FF)?1S?[BHW]_D_IMM$",
"^GLD(FF)?1D_IMM$")>;

// Gather load, 64-bit element size
def : InstRW<[N3Write_6c_2L],
def : InstRW<[N3Write_6c_2GL],
(instregex "^GLD(FF)?1S?[BHW]_D_[SU]XTW(_SCALED)?$",
"^GLD(FF)?1S?[BHW]_D(_SCALED)?$",
"^GLD(FF)?1D_[SU]XTW(_SCALED)?$",
Expand Down
Loading
Loading