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