2 * vxeh2_vlstr: vector-enhancements facility 2 vector load/store reversed *
8 if (v1.d[0] != v2.d[0] || v1.d[1] != v2.d[1]) { \
12 static inline void vler(S390Vector
*v1
, const void *va
, uint8_t m3
)
14 asm volatile("vler %[v1], 0(%[va]), %[m3]\n"
21 static inline void vster(S390Vector
*v1
, const void *va
, uint8_t m3
)
23 asm volatile("vster %[v1], 0(%[va]), %[m3]\n"
30 static inline void vlbr(S390Vector
*v1
, void *va
, const uint8_t m3
)
32 asm volatile("vlbr %[v1], 0(%[va]), %[m3]\n"
39 static inline void vstbr(S390Vector
*v1
, void *va
, const uint8_t m3
)
41 asm volatile("vstbr %[v1], 0(%[va]), %[m3]\n"
49 static inline void vlebrh(S390Vector
*v1
, void *va
, const uint8_t m3
)
51 asm volatile("vlebrh %[v1], 0(%[va]), %[m3]\n"
58 static inline void vstebrh(S390Vector
*v1
, void *va
, const uint8_t m3
)
60 asm volatile("vstebrh %[v1], 0(%[va]), %[m3]\n"
67 static inline void vllebrz(S390Vector
*v1
, void *va
, const uint8_t m3
)
69 asm volatile("vllebrz %[v1], 0(%[va]), %[m3]\n"
76 static inline void vlbrrep(S390Vector
*v1
, void *va
, const uint8_t m3
)
78 asm volatile("vlbrrep %[v1], 0(%[va]), %[m3]\n"
85 int main(int argc
, char *argv
[])
87 S390Vector vd
= { .d
[0] = 0, .d
[1] = 0 };
88 S390Vector vs
= { .d
[0] = 0x8FEEDDCCBBAA9988ull
,
89 .d
[1] = 0x7766554433221107ull
};
91 const S390Vector vt_v_er16
= {
92 .h
[0] = 0x1107, .h
[1] = 0x3322, .h
[2] = 0x5544, .h
[3] = 0x7766,
93 .h
[4] = 0x9988, .h
[5] = 0xBBAA, .h
[6] = 0xDDCC, .h
[7] = 0x8FEE };
95 const S390Vector vt_v_br16
= {
96 .h
[0] = 0xEE8F, .h
[1] = 0xCCDD, .h
[2] = 0xAABB, .h
[3] = 0x8899,
97 .h
[4] = 0x6677, .h
[5] = 0x4455, .h
[6] = 0x2233, .h
[7] = 0x0711 };
100 uint64_t ss64
= 0xFEEDFACE0BADBEEFull
, sd64
= 0;
102 vler(&vd
, &vs
, ES16
);
105 vster(&vs
, &vd
, ES16
);
108 vlbr(&vd
, &vs
, ES16
);
111 vstbr(&vs
, &vd
, ES16
);
114 vlebrh(&vd
, &ss64
, 5);
115 if (0xEDFE != vd
.h
[5]) {
119 vstebrh(&vs
, (uint8_t *)&sd64
+ 4, 7);
120 if (0x0000000007110000ull
!= sd64
) {
124 vllebrz(&vd
, (uint8_t *)&ss64
+ 3, 2);
125 for (ix
= 0; ix
< 4; ix
++) {
126 if (vd
.w
[ix
] != (ix
!= 1 ? 0 : 0xBEAD0BCE)) {
131 vlbrrep(&vd
, (uint8_t *)&ss64
+ 4, 1);
132 for (ix
= 0; ix
< 8; ix
++) {
133 if (0xAD0B != vd
.h
[ix
]) {