vec_xstADD TO COMPARE ADDED TO COMPARE
IBM-Z (64 bits)/ IBM-Z
View official documentation
Location:
Memory Operations
>
Vector Store
Purpose:
Stores the elements of the 16-byte vector a to the effective address that is obtained by adding the displacement b in the address c. Note: It is preferred that you use pointers and the indirection operator * instead of this function to store vectors. vec_xst_be is available on the XL C/C++ compilers for some other platforms. You can define the following macro to migrate programs from other platforms to the z/OS XL C/C++ compiler. #define vec_xst_be(a, b) vec_xst(a,b). Minimum Arch: Z11.
Prototypes
Usage:
void result =
vec_xst(
vector float a, signed long long b, float* c
)
Example:
#include <vecintrin.h>
#include <stdio.h>
int main() {
vector float a = {
1.0f, 2.0f, 3.0f, 4.0f
};
float data[12] = {
0.0f
};
long b = 16;
vec_xst(a, b, data);
printf("a: ");
for (int i = 0; i < 4; i++)
printf("%3.0f ", a[i]);
printf("\nb: %ld (displacement in bytes)\n", b);
printf("data: ");
for (int i = 0; i < 12; i++)
printf("%3.0f ", data[i]);
printf("\n");
return 0;
}
Usage:
void result =
vec_xst(
vector double a, signed long long b, double* c
)
Example:
#include <vecintrin.h>
#include <stdio.h>
int main() {
vector double a = {
1.0, 2.0
};
double data[8] = {
0.0
};
long b = 8;
vec_xst(a, b, data);
printf("a: ");
for (int i = 0; i < 2; i++)
printf("%3.0f ", a[i]);
printf("\nb: %ld (displacement in bytes)\n", b);
printf("data: ");
for (int i = 0; i < 8; i++)
printf("%3.0f ", data[i]);
printf("\n");
return 0;
}
Usage:
void result =
vec_xst(
vector unsigned int a, signed long long b, unsigned int* c
)
Example:
#include <vecintrin.h>
#include <stdio.h>
int main() {
vector unsigned int a = {
10, 20, 30, 40
};
unsigned int data[12] = {
0
};
long b = 12;
vec_xst(a, b, data);
printf("a: ");
for (int i = 0; i < 4; i++)
printf("%3u ", a[i]);
printf("\nb: %ld (displacement in bytes)\n", b);
printf("data: ");
for (int i = 0; i < 12; i++)
printf("%3u ", data[i]);
printf("\n");
return 0;
}
Usage:
void result =
vec_xst(
vector unsigned short a, signed long long b, unsigned short* c
)
Example:
#include <vecintrin.h>
#include <stdio.h>
int main() {
vector unsigned short a = {
10, 20, 30, 40, 50, 60, 70, 80
};
unsigned short data[20] = {
0
};
long b = 16;
vec_xst(a, b, data);
printf("a: ");
for (int i = 0; i < 8; i++)
printf("%3u ", a[i]);
printf("\nb: %ld (displacement in bytes)\n", b);
printf("data: ");
for (int i = 0; i < 20; i++)
printf("%3u ", data[i]);
printf("\n");
return 0;
}
Usage:
void result =
vec_xst(
vector signed char a, signed long long b, signed char* c
)
Example:
#include <vecintrin.h>
#include <stdio.h>
int main() {
vector signed char a = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
};
signed char data[32] = {
0
};
long b = 8;
vec_xst(a, b, data);
printf("a: ");
for (int i = 0; i < 16; i++)
printf("%3d ", a[i]);
printf("\nb: %ld (displacement)\n", b);
printf("data: ");
for (int i = 0; i < 32; i++)
printf("%3d ", data[i]);
printf("\n");
return 0;
}
Usage:
result =
vec_xst(
vector unsigned char a, signed long long b, unsigned char* c
)
Example:
#include <vecintrin.h>
#include <stdio.h>
int main() {
vector unsigned char a = {
10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160
};
unsigned char data[32] = {
0
};
long b = 0;
vec_xst(a, b, data);
printf("a: ");
for (int i = 0; i < 16; i++)
printf("%3u ", a[i]);
printf("\nb: %ld (displacement)\n", b);
printf("data: ");
for (int i = 0; i < 32; i++)
printf("%3u ", data[i]);
printf("\n");
return 0;
}
Usage:
void result =
vec_xst(
vector unsigned long long a, signed long long b, unsigned long long* c
)
Example:
#include <vecintrin.h>
#include <stdio.h>
int main() {
vector unsigned long long a = {
10, 20
};
unsigned long long data[8] = {
0
};
long b = 0;
vec_xst(a, b, data);
printf("a: ");
for (int i = 0; i < 2; i++)
printf("%3llu ", a[i]);
printf("\nb: %ld (displacement in bytes)\n", b);
printf("data: ");
for (int i = 0; i < 8; i++)
printf("%3llu ", data[i]);
printf("\n");
return 0;
}
Usage:
void result =
vec_xst(
vector signed long long a, signed long long b, signed long long* c
)
Example:
#include <vecintrin.h>
#include <stdio.h>
int main() {
vector signed long long a = {
1, 2
};
signed long long data[8] = {
0
};
long b = 16;
vec_xst(a, b, data);
printf("a: ");
for (int i = 0; i < 2; i++)
printf("%3lld ", a[i]);
printf("\nb: %ld (displacement in bytes)\n", b);
printf("data: ");
for (int i = 0; i < 8; i++)
printf("%3lld ", data[i]);
printf("\n");
return 0;
}
Usage:
void result =
vec_xst(
vector signed short a, signed long long b, signed short* c
)
Example:
#include <vecintrin.h>
#include <stdio.h>
int main() {
vector signed short a = {
1, 2, 3, 4, 5, 6, 7, 8
};
signed short data[20] = {
0
};
long b = 4;
vec_xst(a, b, data);
printf("a: ");
for (int i = 0; i < 8; i++)
printf("%3d ", a[i]);
printf("\nb: %ld (displacement in bytes)\n", b);
printf("data: ");
for (int i = 0; i < 20; i++)
printf("%3d ", data[i]);
printf("\n");
return 0;
}
Usage:
void result =
vec_xst(
vector signed int a, signed long long b, signed int* c
)
Example:
#include <vecintrin.h>
#include <stdio.h>
int main() {
vector signed int a = {
1, 2, 3, 4
};
signed int data[12] = {
0
};
long b = 8;
vec_xst(a, b, data);
printf("a: ");
for (int i = 0; i < 4; i++)
printf("%3d ", a[i]);
printf("\nb: %ld (displacement in bytes)\n", b);
printf("data: ");
for (int i = 0; i < 12; i++)
printf("%3d ", data[i]);
printf("\n");
return 0;
}
SIMD Intrinsics Summary
| SIMD Engines: | 6 |
| C Intrinsics: | 10444 |
| NEON: | 4353 |
| AVX2: | 405 |
| AVX512: | 4717 |
| SSE4.2: | 598 |
| VSX: | 192 |
| IBM-Z: | 179 |