16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cc1 -O1 -triple arm64-apple-ios7 -target-feature +neon -ffreestanding -S -o - -emit-llvm %s | FileCheck %s 2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// Test ARM64 vector compare absolute intrinsics 3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#include <arm_neon.h> 5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x2_t test_vcale_f32(float32x2_t a1, float32x2_t a2) { 7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: test_vcale_f32 8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vcale_f32(a1, a2); 96bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: llvm.aarch64.neon.facge.v2i32.v2f32 10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // no check for ret here, as there is a bitcast 11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vcaleq_f32(float32x4_t a1, float32x4_t a2) { 14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: test_vcaleq_f32 15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vcaleq_f32(a1, a2); 166bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: llvm.aarch64.neon.facge.v4i32.v4f32{{.*a2,.*a1}} 17651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // no check for ret here, as there is a bitcast 18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x2_t test_vcalt_f32(float32x2_t a1, float32x2_t a2) { 21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: test_vcalt_f32 22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vcalt_f32(a1, a2); 236bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: llvm.aarch64.neon.facgt.v2i32.v2f32{{.*a2,.*a1}} 24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // no check for ret here, as there is a bitcast 25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vcaltq_f32(float32x4_t a1, float32x4_t a2) { 28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: test_vcaltq_f32 29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vcaltq_f32(a1, a2); 306bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: llvm.aarch64.neon.facgt.v4i32.v4f32{{.*a2,.*a1}} 31651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 32651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x2_t test_vcagtq_f64(float64x2_t a1, float64x2_t a2) { 34651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: test_vcagtq_f64 35651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vcagtq_f64(a1, a2); 366bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: llvm.aarch64.neon.facgt.v2i64.v2f64{{.*a1,.*a2}} 37651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // no check for ret here, as there is a bitcast 38651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 39651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 40651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x2_t test_vcaltq_f64(float64x2_t a1, float64x2_t a2) { 41651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: test_vcaltq_f64 42651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vcaltq_f64(a1, a2); 436bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: llvm.aarch64.neon.facgt.v2i64.v2f64{{.*a2,.*a1}} 44651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // no check for ret here, as there is a bitcast 45651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 46651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 47651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x2_t test_vcageq_f64(float64x2_t a1, float64x2_t a2) { 48651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: test_vcageq_f64 49651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vcageq_f64(a1, a2); 506bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: llvm.aarch64.neon.facge.v2i64.v2f64{{.*a1,.*a2}} 51651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // no check for ret here, as there is a bitcast 52651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 53651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 54651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x2_t test_vcaleq_f64(float64x2_t a1, float64x2_t a2) { 55651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: test_vcaleq_f64 56651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vcaleq_f64(a1, a2); 576bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: llvm.aarch64.neon.facge.v2i64.v2f64{{.*a2,.*a1}} 58651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // no check for ret here, as there is a bitcast 59651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 60