Skip to content

Commit b4dbd41

Browse files
[SystemZ] Consider VST/VL as SimpleBDXStore/Load
Previously VST and VL were not considered "simple" BDX stores and loads, leading to, among other things, some opportunities for mvc optimization to be missed. This commit addresses this and updates some tests to account for additional mvc instructions being emitted. This is observed to have a neutral or slightly beneficial effect performance-wise.
1 parent 88d0b08 commit b4dbd41

File tree

3 files changed

+285
-297
lines changed

3 files changed

+285
-297
lines changed

llvm/lib/Target/SystemZ/SystemZInstrVector.td

+4-2
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,8 @@ let Predicates = [FeatureVector] in {
105105

106106
let Predicates = [FeatureVector] in {
107107
// Load.
108-
defm VL : UnaryVRXAlign<"vl", 0xE706>;
108+
let SimpleBDXLoad = 1 in
109+
defm VL : UnaryVRXAlign<"vl", 0xE706>;
109110

110111
// Load to block boundary. The number of loaded bytes is only known
111112
// at run time. The instruction is really polymorphic, but v128b matches
@@ -213,7 +214,8 @@ defm : ReplicatePeephole<VLREPG, v2f64, z_load, f64>;
213214

214215
let Predicates = [FeatureVector] in {
215216
// Store.
216-
defm VST : StoreVRXAlign<"vst", 0xE70E>;
217+
let SimpleBDXStore = 1 in
218+
defm VST : StoreVRXAlign<"vst", 0xE70E>;
217219

218220
// Store with length. The number of stored bytes is only known at run time.
219221
def VSTL : StoreLengthVRSb<"vstl", 0xE73F, int_s390_vstl, 0>;

0 commit comments

Comments
 (0)