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 Sambucuint32x2_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 Sambucfloat32x2_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 Sambucuint32x4_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 Sambucfloat32x4_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 Sambucfloat32x2_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 Sambucfloat32x4_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