xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGen/arm64-vrsqrt.c (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc // RUN: %clang_cc1 -triple arm64-apple-ios7.0 -target-feature +neon -ffreestanding -emit-llvm -O1 -o - %s | FileCheck %s
2*0a6a1f1dSLionel Sambuc 
3*0a6a1f1dSLionel Sambuc #include <arm_neon.h>
4*0a6a1f1dSLionel Sambuc 
test_vrsqrte_u32(uint32x2_t in)5*0a6a1f1dSLionel Sambuc uint32x2_t test_vrsqrte_u32(uint32x2_t in) {
6*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: @test_vrsqrte_u32
7*0a6a1f1dSLionel Sambuc   // CHECK: call <2 x i32> @llvm.aarch64.neon.ursqrte.v2i32(<2 x i32> %in)
8*0a6a1f1dSLionel Sambuc   return vrsqrte_u32(in);
9*0a6a1f1dSLionel Sambuc }
10*0a6a1f1dSLionel Sambuc 
test_vrsqrte_f32(float32x2_t in)11*0a6a1f1dSLionel Sambuc float32x2_t test_vrsqrte_f32(float32x2_t in) {
12*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: @test_vrsqrte_f32
13*0a6a1f1dSLionel Sambuc   // CHECK: call <2 x float> @llvm.aarch64.neon.frsqrte.v2f32(<2 x float> %in)
14*0a6a1f1dSLionel Sambuc   return vrsqrte_f32(in);
15*0a6a1f1dSLionel Sambuc }
16*0a6a1f1dSLionel Sambuc 
17*0a6a1f1dSLionel Sambuc 
test_vrsqrteq_u32(uint32x4_t in)18*0a6a1f1dSLionel Sambuc uint32x4_t test_vrsqrteq_u32(uint32x4_t in) {
19*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: @test_vrsqrteq_u32
20*0a6a1f1dSLionel Sambuc   // CHECK: call <4 x i32> @llvm.aarch64.neon.ursqrte.v4i32(<4 x i32> %in)
21*0a6a1f1dSLionel Sambuc   return vrsqrteq_u32(in);
22*0a6a1f1dSLionel Sambuc }
23*0a6a1f1dSLionel Sambuc 
test_vrsqrteq_f32(float32x4_t in)24*0a6a1f1dSLionel Sambuc float32x4_t test_vrsqrteq_f32(float32x4_t in) {
25*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: @test_vrsqrteq_f32
26*0a6a1f1dSLionel Sambuc   // CHECK: call <4 x float> @llvm.aarch64.neon.frsqrte.v4f32(<4 x float> %in)
27*0a6a1f1dSLionel Sambuc   return vrsqrteq_f32(in);
28*0a6a1f1dSLionel Sambuc }
29*0a6a1f1dSLionel Sambuc 
30*0a6a1f1dSLionel Sambuc 
test_vrsqrts_f32(float32x2_t est,float32x2_t val)31*0a6a1f1dSLionel Sambuc float32x2_t test_vrsqrts_f32(float32x2_t est, float32x2_t val) {
32*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: @test_vrsqrts_f32
33*0a6a1f1dSLionel Sambuc   // CHECK: call <2 x float> @llvm.aarch64.neon.frsqrts.v2f32(<2 x float> %est, <2 x float> %val)
34*0a6a1f1dSLionel Sambuc   return vrsqrts_f32(est, val);
35*0a6a1f1dSLionel Sambuc }
36*0a6a1f1dSLionel Sambuc 
37*0a6a1f1dSLionel Sambuc 
test_vrsqrtsq_f32(float32x4_t est,float32x4_t val)38*0a6a1f1dSLionel Sambuc float32x4_t test_vrsqrtsq_f32(float32x4_t est, float32x4_t val) {
39*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: @test_vrsqrtsq_f32
40*0a6a1f1dSLionel Sambuc   // CHECK: call <4 x float> @llvm.aarch64.neon.frsqrts.v4f32(<4 x float> %est, <4 x float> %val)
41*0a6a1f1dSLionel Sambuc   return vrsqrtsq_f32(est, val);
42*0a6a1f1dSLionel Sambuc }
43*0a6a1f1dSLionel Sambuc 
44