68 lines · c
1// RUN: %clang_cc1 -triple aarch64-linux-gnu -target-feature +neon \2// RUN: -target-feature +v8.3a -target-feature +fullfp16 -emit-llvm -o - %s \3// RUN: | FileCheck %s4 5// REQUIRES: aarch64-registered-target || arm-registered-target6 7#include <arm_neon.h>8 9void foo16x4_rot90(float16x4_t a, float16x4_t b)10{11// CHECK: call <4 x half> @llvm.aarch64.neon.vcadd.rot90.v4f1612 float16x4_t result = vcadd_rot90_f16(a, b);13}14 15void foo32x2_rot90(float32x2_t a, float32x2_t b)16{17// CHECK: call <2 x float> @llvm.aarch64.neon.vcadd.rot90.v2f3218 float32x2_t result = vcadd_rot90_f32(a, b);19}20 21void foo16x8_rot90(float16x8_t a, float16x8_t b)22{23// CHECK: call <8 x half> @llvm.aarch64.neon.vcadd.rot90.v8f1624 float16x8_t result = vcaddq_rot90_f16(a, b);25}26 27void foo32x4_rot90(float32x4_t a, float32x4_t b)28{29// CHECK: call <4 x float> @llvm.aarch64.neon.vcadd.rot90.v4f3230 float32x4_t result = vcaddq_rot90_f32(a, b);31}32 33void foo64x2_rot90(float64x2_t a, float64x2_t b)34{35// CHECK: call <2 x double> @llvm.aarch64.neon.vcadd.rot90.v2f6436 float64x2_t result = vcaddq_rot90_f64(a, b);37}38 39void foo16x4_rot270(float16x4_t a, float16x4_t b)40{41// CHECK: call <4 x half> @llvm.aarch64.neon.vcadd.rot270.v4f1642 float16x4_t result = vcadd_rot270_f16(a, b);43}44 45void foo32x2_rot270(float32x2_t a, float32x2_t b)46{47// CHECK: call <2 x float> @llvm.aarch64.neon.vcadd.rot270.v2f3248 float32x2_t result = vcadd_rot270_f32(a, b);49}50 51void foo16x8_rot270(float16x8_t a, float16x8_t b)52{53// CHECK: call <8 x half> @llvm.aarch64.neon.vcadd.rot270.v8f1654 float16x8_t result = vcaddq_rot270_f16(a, b);55}56 57void foo32x4_rot270(float32x4_t a, float32x4_t b)58{59// CHECK: call <4 x float> @llvm.aarch64.neon.vcadd.rot270.v4f3260 float32x4_t result = vcaddq_rot270_f32(a, b);61}62 63void foo64x2_rot270(float64x2_t a, float64x2_t b)64{65// CHECK: call <2 x double> @llvm.aarch64.neon.vcadd.rot270.v2f6466 float64x2_t result = vcaddq_rot270_f64(a, b);67}68