@@ -827,12 +827,12 @@ def : InstRW<[], (instregex "Insn.*")>;
827
827
//===----------------------------------------------------------------------===//
828
828
829
829
// Load zero
830
- def : InstRW<[WLat1, FXb, NormalGr], (instregex "LZ(DR|ER)$")>;
830
+ def : InstRW<[WLat1, FXb, NormalGr], (instregex "LZ(DR|ER|ER_16 )$")>;
831
831
def : InstRW<[WLat2, FXb2, Cracked], (instregex "LZXR$")>;
832
832
833
833
// Load
834
- def : InstRW<[WLat2, VecXsPm, NormalGr], (instregex "LER$")>;
835
- def : InstRW<[WLat1, FXb, NormalGr], (instregex "LD(R|R32|GR)$")>;
834
+ def : InstRW<[WLat2, VecXsPm, NormalGr], (instregex "LER(16)? $")>;
835
+ def : InstRW<[WLat1, FXb, NormalGr], (instregex "LD(R|R16| R32|GR)$")>;
836
836
def : InstRW<[WLat3, FXb, NormalGr], (instregex "LGDR$")>;
837
837
def : InstRW<[WLat2, FXb2, GroupAlone], (instregex "LXR$")>;
838
838
@@ -841,21 +841,21 @@ def : InstRW<[WLat3, WLat3, VecXsPm, NormalGr], (instregex "LT(E|D)BR$")>;
841
841
def : InstRW<[WLat10, WLat10, VecDF4, GroupAlone], (instregex "LTXBR$")>;
842
842
843
843
// Copy sign
844
- def : InstRW<[WLat2, VecXsPm, NormalGr], (instregex "CPSDR(d|s)(d|s)$")>;
844
+ def : InstRW<[WLat2, VecXsPm, NormalGr], (instregex "CPSDR(d|s|h )(d|s|h )$")>;
845
845
846
846
//===----------------------------------------------------------------------===//
847
847
// FP: Load instructions
848
848
//===----------------------------------------------------------------------===//
849
849
850
- def : InstRW<[WLat2LSU, VecXsPm, LSU, NormalGr], (instregex "LE (Y)?$")>;
850
+ def : InstRW<[WLat2LSU, VecXsPm, LSU, NormalGr], (instregex "L(E16|E) (Y)?$")>;
851
851
def : InstRW<[LSULatency, LSU, NormalGr], (instregex "LD(Y|E32)?$")>;
852
852
def : InstRW<[LSULatency, LSU, NormalGr], (instregex "LX$")>;
853
853
854
854
//===----------------------------------------------------------------------===//
855
855
// FP: Store instructions
856
856
//===----------------------------------------------------------------------===//
857
857
858
- def : InstRW<[WLat1, FXb, LSU, NormalGr], (instregex "ST(E|D)(Y)?$")>;
858
+ def : InstRW<[WLat1, FXb, LSU, NormalGr], (instregex "ST(E16| E|D)(Y)?$")>;
859
859
def : InstRW<[WLat1, FXb, LSU, NormalGr], (instregex "STX$")>;
860
860
861
861
//===----------------------------------------------------------------------===//
@@ -894,7 +894,7 @@ def : InstRW<[WLat12, WLat12, FXb, VecDF2, Cracked], (instregex "CL(F|G)XBR$")>;
894
894
895
895
// Load Complement / Negative / Positive
896
896
def : InstRW<[WLat3, WLat3, VecXsPm, NormalGr], (instregex "L(C|N|P)(E|D)BR$")>;
897
- def : InstRW<[WLat1, FXb, NormalGr], (instregex "L(C|N|P)DFR(_32)?$")>;
897
+ def : InstRW<[WLat1, FXb, NormalGr], (instregex "L(C|N|P)DFR(_32|_16 )?$")>;
898
898
def : InstRW<[WLat10, WLat10, VecDF4, GroupAlone], (instregex "L(C|N|P)XBR$")>;
899
899
900
900
// Square root
@@ -1252,7 +1252,7 @@ def : InstRW<[WLat2, VecXsPm, NormalGr], (instregex "VLEI(B|F|G|H)$")>;
1252
1252
1253
1253
def : InstRW<[LSULatency, LSU, NormalGr], (instregex "VL(Align)?$")>;
1254
1254
def : InstRW<[LSULatency, LSU, NormalGr], (instregex "VL(L|BB)$")>;
1255
- def : InstRW<[LSULatency, LSU, NormalGr], (instregex "VL(32|64)$")>;
1255
+ def : InstRW<[LSULatency, LSU, NormalGr], (instregex "VL(16| 32|64)$")>;
1256
1256
def : InstRW<[LSULatency, LSU, NormalGr], (instregex "VLLEZ(B|F|G|H|LF)?$")>;
1257
1257
def : InstRW<[LSULatency, LSU, NormalGr], (instregex "VLREP(B|F|G|H)?$")>;
1258
1258
def : InstRW<[WLat2LSU, RegReadAdv, VecXsPm, LSU, NormalGr],
@@ -1267,7 +1267,7 @@ def : InstRW<[LSULatency, LSU, NormalGr], (instregex "VLRL(R)?$")>;
1267
1267
// Vector: Stores
1268
1268
//===----------------------------------------------------------------------===//
1269
1269
1270
- def : InstRW<[WLat1, FXb, LSU, NormalGr], (instregex "VST(Align|L|32|64)?$")>;
1270
+ def : InstRW<[WLat1, FXb, LSU, NormalGr], (instregex "VST(Align|L|16| 32|64)?$")>;
1271
1271
def : InstRW<[WLat1, FXb, LSU, NormalGr], (instregex "VSTE(F|G)$")>;
1272
1272
def : InstRW<[WLat1, FXb, LSU, VecXsPm, Cracked], (instregex "VSTE(B|H)$")>;
1273
1273
def : InstRW<[WLat1, LSU2, FXb3, GroupAlone2], (instregex "VSTM(Align)?$")>;
@@ -1520,8 +1520,8 @@ def : InstRW<[WLat3, VecDFX, NormalGr], (instregex "WF(C|K)XB$")>;
1520
1520
// Vector: Floating-point insertion and extraction
1521
1521
//===----------------------------------------------------------------------===//
1522
1522
1523
- def : InstRW<[WLat1, FXb, NormalGr], (instregex "LEFR$")>;
1524
- def : InstRW<[WLat3, FXb, NormalGr], (instregex "LFER$")>;
1523
+ def : InstRW<[WLat1, FXb, NormalGr], (instregex "LEFR(_16)? $")>;
1524
+ def : InstRW<[WLat3, FXb, NormalGr], (instregex "LFER(_16)? $")>;
1525
1525
1526
1526
//===----------------------------------------------------------------------===//
1527
1527
// Vector: String instructions
0 commit comments