@@ -827,12 +827,12 @@ def : InstRW<[], (instregex "Insn.*")>;
827827//===----------------------------------------------------------------------===//
828828
829829// Load zero
830- def : InstRW<[WLat1, FXb, NormalGr], (instregex "LZ(DR|ER)$")>;
830+ def : InstRW<[WLat1, FXb, NormalGr], (instregex "LZ(DR|ER|ER_16 )$")>;
831831def : InstRW<[WLat2, FXb2, Cracked], (instregex "LZXR$")>;
832832
833833// 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)$")>;
836836def : InstRW<[WLat3, FXb, NormalGr], (instregex "LGDR$")>;
837837def : InstRW<[WLat2, FXb2, GroupAlone], (instregex "LXR$")>;
838838
@@ -841,21 +841,21 @@ def : InstRW<[WLat3, WLat3, VecXsPm, NormalGr], (instregex "LT(E|D)BR$")>;
841841def : InstRW<[WLat10, WLat10, VecDF4, GroupAlone], (instregex "LTXBR$")>;
842842
843843// 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 )$")>;
845845
846846//===----------------------------------------------------------------------===//
847847// FP: Load instructions
848848//===----------------------------------------------------------------------===//
849849
850- def : InstRW<[WLat2LSU, VecXsPm, LSU, NormalGr], (instregex "LE (Y)?$")>;
850+ def : InstRW<[WLat2LSU, VecXsPm, LSU, NormalGr], (instregex "L(E16|E) (Y)?$")>;
851851def : InstRW<[LSULatency, LSU, NormalGr], (instregex "LD(Y|E32)?$")>;
852852def : InstRW<[LSULatency, LSU, NormalGr], (instregex "LX$")>;
853853
854854//===----------------------------------------------------------------------===//
855855// FP: Store instructions
856856//===----------------------------------------------------------------------===//
857857
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)?$")>;
859859def : InstRW<[WLat1, FXb, LSU, NormalGr], (instregex "STX$")>;
860860
861861//===----------------------------------------------------------------------===//
@@ -894,7 +894,7 @@ def : InstRW<[WLat12, WLat12, FXb, VecDF2, Cracked], (instregex "CL(F|G)XBR$")>;
894894
895895// Load Complement / Negative / Positive
896896def : 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 )?$")>;
898898def : InstRW<[WLat10, WLat10, VecDF4, GroupAlone], (instregex "L(C|N|P)XBR$")>;
899899
900900// Square root
@@ -1252,7 +1252,7 @@ def : InstRW<[WLat2, VecXsPm, NormalGr], (instregex "VLEI(B|F|G|H)$")>;
12521252
12531253def : InstRW<[LSULatency, LSU, NormalGr], (instregex "VL(Align)?$")>;
12541254def : 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)$")>;
12561256def : InstRW<[LSULatency, LSU, NormalGr], (instregex "VLLEZ(B|F|G|H|LF)?$")>;
12571257def : InstRW<[LSULatency, LSU, NormalGr], (instregex "VLREP(B|F|G|H)?$")>;
12581258def : InstRW<[WLat2LSU, RegReadAdv, VecXsPm, LSU, NormalGr],
@@ -1267,7 +1267,7 @@ def : InstRW<[LSULatency, LSU, NormalGr], (instregex "VLRL(R)?$")>;
12671267// Vector: Stores
12681268//===----------------------------------------------------------------------===//
12691269
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)?$")>;
12711271def : InstRW<[WLat1, FXb, LSU, NormalGr], (instregex "VSTE(F|G)$")>;
12721272def : InstRW<[WLat1, FXb, LSU, VecXsPm, Cracked], (instregex "VSTE(B|H)$")>;
12731273def : InstRW<[WLat1, LSU2, FXb3, GroupAlone2], (instregex "VSTM(Align)?$")>;
@@ -1520,8 +1520,8 @@ def : InstRW<[WLat3, VecDFX, NormalGr], (instregex "WF(C|K)XB$")>;
15201520// Vector: Floating-point insertion and extraction
15211521//===----------------------------------------------------------------------===//
15221522
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)? $")>;
15251525
15261526//===----------------------------------------------------------------------===//
15271527// Vector: String instructions
0 commit comments