Please enter what you're looking for to continue your search
 

vec_min
ADD TO COMPARE ADDED TO COMPARE

 IBM-Z (64 bits)/ IBM-Z  View official documentation
Purpose:
Returns a vector containing the minimum value from each set of corresponding elements of the given vectors. The value of each element of the result is the minimum of the values of the corresponding elements of a and b.This function emulates the operation on vector double under ARCH(11). Minimum Arch: Z11.

Prototypes

Usage:
vector signed short result = vec_min( vector signed short a, vector signed short b )
Example:
#include <stdio.h>
#include <vecintrin.h>
int main() {
 vector signed short a = {
  -1000, 2000, -3000, 4000, -5000, 6000, -7000, 8000
 };
 vector signed short b = {
  500, -1500, 2500, -3500, 4500, -5500, 6500, -7500
 };
 vector signed short d = vec_min(a, b);
 signed short *a_array = (signed short*)&a;
 signed short *b_array = (signed short*)&b;
 signed short *d_array = (signed short*)&d;
 for (int i = 0; i < 8; i++) {
   printf("min(%d, %d) = %d\n",               a_array[i], b_array[i], d_array[i]);
  }

  return 0;
 }
Usage:
vector float result = vec_min( vector float a, vector float b )
Example:
#include <stdio.h>
vector float a = {
 -10.5f, 20.3f, -30.7f, 40.1f
};
float *b_array = (float*)&b;
printf("min(%.1f, %.1f) = %.1f\n",
}

return 0;
Usage:
vector unsigned int result = vec_min( vector unsigned int a, vector unsigned int b )
Example:
#include <stdio.h>
#include <vecintrin.h>
int main() {
 vector unsigned int a = {
  100000, 200000, 300000, 400000
 };
 vector unsigned int b = {
  50000, 150000, 250000, 350000
 };
 vector unsigned int d = vec_min(a, b);
 unsigned int *a_array = (unsigned int*)&a;
 unsigned int *b_array = (unsigned int*)&b;
 unsigned int *d_array = (unsigned int*)&d;
 for (int i = 0; i < 4; i++) {
   printf("min(%d, %d) = %d\n",               a_array[i], b_array[i], d_array[i]);
  }

  return 0;
 }
Usage:
vector signed int result = vec_min( vector signed int a, vector signed int b )
Example:
#include <stdio.h>
#include <vecintrin.h>
int main() {
 vector signed int a = {
  -100000, 200000, -300000, 400000
 };
 vector signed int b = {
  50000, -150000, 250000, -350000
 };
 vector signed int d = vec_min(a, b);
 signed int *a_array = (signed int*)&a;
 signed int *b_array = (signed int*)&b;
 signed int *d_array = (signed int*)&d;
 for (int i = 0; i < 4; i++) {
   printf("min(%d, %d) = %d\n",               a_array[i], b_array[i], d_array[i]);
  }

  return 0;
 }
Usage:
vector unsigned short result = vec_min( vector unsigned short a, vector unsigned short b )
Example:
#include <stdio.h>
#include <vecintrin.h>
int main() {
 vector unsigned short a = {
  1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000
 };
 vector unsigned short b = {
  500, 1500, 2500, 3500, 4500, 5500, 6500, 7500
 };
 vector unsigned short d = vec_min(a, b);
 unsigned short *a_array = (unsigned short*)&a;
 unsigned short *b_array = (unsigned short*)&b;
 unsigned short *d_array = (unsigned short*)&d;
 for (int i = 0; i < 8; i++) {
   printf("min(%d, %d) = %d\n",               a_array[i], b_array[i], d_array[i]);
  }

  return 0;
 }
Usage:
vector unsigned char result = vec_min( vector unsigned char a, vector unsigned char b, vector unsigned char c )
Example:
#include <stdio.h>
#include <vecintrin.h>
int main() {
 vector unsigned char a = {
  10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160
 };
 vector unsigned char b = {
  5, 15, 25, 35, 45, 55, 65, 75, 85, 95, 105, 115, 125, 135, 145, 155
 };
 vector unsigned char d = vec_min(a, b);
 unsigned char *a_array = (unsigned char*)&a;
 unsigned char *b_array = (unsigned char*)&b;
 unsigned char *d_array = (unsigned char*)&d;
 for (int i = 0; i < 16; i++) {
   printf("min(%d, %d) = %d\n",               a_array[i], b_array[i], d_array[i]);
  }

  return 0;
 }
Usage:
vector unsigned long long result = vec_min( vector unsigned long long a, vector unsigned long long b )
Example:
#include <stdio.h>
#include <vecintrin.h>
int main() {
 vector unsigned long long a = {
  10000000000ULL, 20000000000ULL
 };
 vector unsigned long long b = {
  5000000000ULL, 15000000000ULL
 };
 vector unsigned long long d = vec_min(a, b);
 unsigned long long *a_array = (unsigned long long*)&a;
 unsigned long long *b_array = (unsigned long long*)&b;
 unsigned long long *d_array = (unsigned long long*)&d;
 for (int i = 0; i < 2; i++) {
   printf("min(%llu, %llu) = %llu\n",               a_array[i], b_array[i], d_array[i]);
  }

  return 0;
 }
Usage:
vector signed char result = vec_min( vector signed char a, vector signed char b )
Example:
#include <stdio.h>
#include <vecintrin.h>
int main() {
 vector signed char a = {
  -10, 20, -30, 40, -50, 60, -70, 80, -90, 100, -110, 120, 10, 20, 30, 40
 };
 vector signed char b = {
  5, -15, 25, -35, 45, -55, 65, -75, 85, -95, 105, -115, 15, 25, 35, 45
 };
 vector signed char d = vec_min(a, b);
 signed char *a_array = (signed char*)&a;
 signed char *b_array = (signed char*)&b;
 signed char *d_array = (signed char*)&d;
 for (int i = 0; i < 16; i++) {
   printf("min(%d, %d) = %d\n",               a_array[i], b_array[i], d_array[i]);
  }

  return 0;
 }
Usage:
vector signed long long result = vec_min( vector signed long long a, vector signed long long b )
Example:
#include <stdio.h>
#include <vecintrin.h>
int main() {
 vector signed long long a = {
  -10000000000LL, 20000000000LL
 };
 vector signed long long b = {
  5000000000LL, -15000000000LL
 };
 vector signed long long d = vec_min(a, b);
 signed long long *a_array = (signed long long*)&a;
 signed long long *b_array = (signed long long*)&b;
 signed long long *d_array = (signed long long*)&d;
 for (int i = 0; i < 2; i++) {
   printf("min(%lld, %lld) = %lld\n",               a_array[i], b_array[i], d_array[i]);
  }

  return 0;
 }
Usage:
vector double result = vec_min( vector double a, vector double b )
Example:
#include <stdio.h>
#include <vecintrin.h>
int main() {
 vector double a = {
  -10.5, 20.3
 };
 vector double b = {
  5.2, -15.8
 };
 vector double d = vec_min(a, b);
 double *a_array = (double*)&a;
 double *b_array = (double*)&b;
 double *d_array = (double*)&d;
 for (int i = 0; i < 2; i++) {
   printf("min(%.1f, %.1f) = %.1f\n",               a_array[i], b_array[i], d_array[i]);
  }

  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