void extern avx512vl_test (void) { x1 = _mm256_roundscale_pd (x1, 0x42); x1 = _mm256_ceil_pd (x1); x1 = _mm256_floor_pd (x1); x1 = _mm256_mask_roundscale_pd (x1, 2, x1, 0x42); x1 = _mm256_maskz_roundscale_pd (2, x1, 0x42); x2 = _mm_roundscale_pd (x2, 0x42); x2 = _mm_ceil_pd (x2); x2 = _mm_floor_pd (x2); x2 = _mm_mask_roundscale_pd (x2, 2, x2, 0x42); x2 = _mm_maskz_roundscale_pd (2, x2, 0x42); }
void increment_sse41(float arr[4]) { double darr[4]; __m128d val1 = _mm_set_pd(arr[0], arr[1]); __m128d val2 = _mm_set_pd(arr[2], arr[3]); __m128d one = _mm_set_pd(1.0, 1.0); __m128d result = _mm_add_pd(val1, one); result = _mm_ceil_pd(result); /* A no-op, only here to use a SSE4.1 intrinsic. */ _mm_store_pd(darr, result); result = _mm_add_pd(val2, one); _mm_store_pd(&darr[2], result); arr[0] = (float)darr[1]; arr[1] = (float)darr[0]; arr[2] = (float)darr[3]; arr[3] = (float)darr[2]; }
__m128d test_mm_ceil_pd(__m128d x) { // CHECK-LABEL: test_mm_ceil_pd // CHECK: call <2 x double> @llvm.x86.sse41.round.pd // CHECK-ASM: roundpd $2, %xmm{{.*}}, %xmm{{.*}} return _mm_ceil_pd(x); }
__m128d test_mm_ceil_pd(__m128d x) { // CHECK-LABEL: test_mm_ceil_pd // CHECK: call <2 x double> @llvm.x86.sse41.round.pd(<2 x double> %{{.*}}, i32 2) return _mm_ceil_pd(x); }