blob: b805e9acb879697657cdd7fb914645885d81c2c4 [file] [log] [blame]
Craig Topper7feb3212011-12-30 09:15:03 +00001// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +fma4 -emit-llvm -o - | FileCheck %s
2
3// Don't include mm_malloc.h, it's system specific.
4#define __MM_MALLOC_H
5
6#include <x86intrin.h>
7
8__m128 test_mm_macc_ps(__m128 a, __m128 b, __m128 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +00009 // CHECK: @llvm.x86.fma.vfmadd.ps
Craig Topper7feb3212011-12-30 09:15:03 +000010 return _mm_macc_ps(a, b, c);
11}
12
13__m128d test_mm_macc_pd(__m128d a, __m128d b, __m128d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000014 // CHECK: @llvm.x86.fma.vfmadd.pd
Craig Topper7feb3212011-12-30 09:15:03 +000015 return _mm_macc_pd(a, b, c);
16}
17
18__m128 test_mm_macc_ss(__m128 a, __m128 b, __m128 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000019 // CHECK: @llvm.x86.fma.vfmadd.ss
Craig Topper7feb3212011-12-30 09:15:03 +000020 return _mm_macc_ss(a, b, c);
21}
22
23__m128d test_mm_macc_sd(__m128d a, __m128d b, __m128d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000024 // CHECK: @llvm.x86.fma.vfmadd.sd
Craig Topper7feb3212011-12-30 09:15:03 +000025 return _mm_macc_sd(a, b, c);
26}
27
28__m128 test_mm_msub_ps(__m128 a, __m128 b, __m128 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000029 // CHECK: @llvm.x86.fma.vfmsub.ps
Craig Topper7feb3212011-12-30 09:15:03 +000030 return _mm_msub_ps(a, b, c);
31}
32
33__m128d test_mm_msub_pd(__m128d a, __m128d b, __m128d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000034 // CHECK: @llvm.x86.fma.vfmsub.pd
Craig Topper7feb3212011-12-30 09:15:03 +000035 return _mm_msub_pd(a, b, c);
36}
37
38__m128 test_mm_msub_ss(__m128 a, __m128 b, __m128 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000039 // CHECK: @llvm.x86.fma.vfmsub.ss
Craig Topper7feb3212011-12-30 09:15:03 +000040 return _mm_msub_ss(a, b, c);
41}
42
43__m128d test_mm_msub_sd(__m128d a, __m128d b, __m128d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000044 // CHECK: @llvm.x86.fma.vfmsub.sd
Craig Topper7feb3212011-12-30 09:15:03 +000045 return _mm_msub_sd(a, b, c);
46}
47
48__m128 test_mm_nmacc_ps(__m128 a, __m128 b, __m128 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000049 // CHECK: @llvm.x86.fma.vfnmadd.ps
Craig Topper7feb3212011-12-30 09:15:03 +000050 return _mm_nmacc_ps(a, b, c);
51}
52
53__m128d test_mm_nmacc_pd(__m128d a, __m128d b, __m128d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000054 // CHECK: @llvm.x86.fma.vfnmadd.pd
Craig Topper7feb3212011-12-30 09:15:03 +000055 return _mm_nmacc_pd(a, b, c);
56}
57
58__m128 test_mm_nmacc_ss(__m128 a, __m128 b, __m128 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000059 // CHECK: @llvm.x86.fma.vfnmadd.ss
Craig Topper7feb3212011-12-30 09:15:03 +000060 return _mm_nmacc_ss(a, b, c);
61}
62
63__m128d test_mm_nmacc_sd(__m128d a, __m128d b, __m128d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000064 // CHECK: @llvm.x86.fma.vfnmadd.sd
Craig Topper7feb3212011-12-30 09:15:03 +000065 return _mm_nmacc_sd(a, b, c);
66}
67
68__m128 test_mm_nmsub_ps(__m128 a, __m128 b, __m128 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000069 // CHECK: @llvm.x86.fma.vfnmsub.ps
Craig Topper7feb3212011-12-30 09:15:03 +000070 return _mm_nmsub_ps(a, b, c);
71}
72
73__m128d test_mm_nmsub_pd(__m128d a, __m128d b, __m128d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000074 // CHECK: @llvm.x86.fma.vfnmsub.pd
Craig Topper7feb3212011-12-30 09:15:03 +000075 return _mm_nmsub_pd(a, b, c);
76}
77
78__m128 test_mm_nmsub_ss(__m128 a, __m128 b, __m128 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000079 // CHECK: @llvm.x86.fma.vfnmsub.ss
Craig Topper7feb3212011-12-30 09:15:03 +000080 return _mm_nmsub_ss(a, b, c);
81}
82
83__m128d test_mm_nmsub_sd(__m128d a, __m128d b, __m128d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000084 // CHECK: @llvm.x86.fma.vfnmsub.sd
Craig Topper7feb3212011-12-30 09:15:03 +000085 return _mm_nmsub_sd(a, b, c);
86}
87
88__m128 test_mm_maddsub_ps(__m128 a, __m128 b, __m128 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000089 // CHECK: @llvm.x86.fma.vfmaddsub.ps
Craig Topper7feb3212011-12-30 09:15:03 +000090 return _mm_maddsub_ps(a, b, c);
91}
92
93__m128d test_mm_maddsub_pd(__m128d a, __m128d b, __m128d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000094 // CHECK: @llvm.x86.fma.vfmaddsub.pd
Craig Topper7feb3212011-12-30 09:15:03 +000095 return _mm_maddsub_pd(a, b, c);
96}
97
98__m128 test_mm_msubadd_ps(__m128 a, __m128 b, __m128 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +000099 // CHECK: @llvm.x86.fma.vfmsubadd.ps
Craig Topper7feb3212011-12-30 09:15:03 +0000100 return _mm_msubadd_ps(a, b, c);
101}
102
103__m128d test_mm_msubadd_pd(__m128d a, __m128d b, __m128d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +0000104 // CHECK: @llvm.x86.fma.vfmsubadd.pd
Craig Topper7feb3212011-12-30 09:15:03 +0000105 return _mm_msubadd_pd(a, b, c);
106}
107
108__m256 test_mm256_macc_ps(__m256 a, __m256 b, __m256 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +0000109 // CHECK: @llvm.x86.fma.vfmadd.ps.256
Craig Topper7feb3212011-12-30 09:15:03 +0000110 return _mm256_macc_ps(a, b, c);
111}
112
113__m256d test_mm256_macc_pd(__m256d a, __m256d b, __m256d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +0000114 // CHECK: @llvm.x86.fma.vfmadd.pd.256
Craig Topper7feb3212011-12-30 09:15:03 +0000115 return _mm256_macc_pd(a, b, c);
116}
117
118__m256 test_mm256_msub_ps(__m256 a, __m256 b, __m256 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +0000119 // CHECK: @llvm.x86.fma.vfmsub.ps.256
Craig Topper7feb3212011-12-30 09:15:03 +0000120 return _mm256_msub_ps(a, b, c);
121}
122
123__m256d test_mm256_msub_pd(__m256d a, __m256d b, __m256d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +0000124 // CHECK: @llvm.x86.fma.vfmsub.pd.256
Craig Topper7feb3212011-12-30 09:15:03 +0000125 return _mm256_msub_pd(a, b, c);
126}
127
128__m256 test_mm256_nmacc_ps(__m256 a, __m256 b, __m256 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +0000129 // CHECK: @llvm.x86.fma.vfnmadd.ps.256
Craig Topper7feb3212011-12-30 09:15:03 +0000130 return _mm256_nmacc_ps(a, b, c);
131}
132
133__m256d test_mm256_nmacc_pd(__m256d a, __m256d b, __m256d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +0000134 // CHECK: @llvm.x86.fma.vfnmadd.pd.256
Craig Topper7feb3212011-12-30 09:15:03 +0000135 return _mm256_nmacc_pd(a, b, c);
136}
137
138__m256 test_mm256_nmsub_ps(__m256 a, __m256 b, __m256 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +0000139 // CHECK: @llvm.x86.fma.vfnmsub.ps.256
Craig Topper7feb3212011-12-30 09:15:03 +0000140 return _mm256_nmsub_ps(a, b, c);
141}
142
143__m256d test_mm256_nmsub_pd(__m256d a, __m256d b, __m256d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +0000144 // CHECK: @llvm.x86.fma.vfnmsub.pd.256
Craig Topper7feb3212011-12-30 09:15:03 +0000145 return _mm256_nmsub_pd(a, b, c);
146}
147
148__m256 test_mm256_maddsub_ps(__m256 a, __m256 b, __m256 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +0000149 // CHECK: @llvm.x86.fma.vfmaddsub.ps.256
Craig Topper7feb3212011-12-30 09:15:03 +0000150 return _mm256_maddsub_ps(a, b, c);
151}
152
153__m256d test_mm256_maddsub_pd(__m256d a, __m256d b, __m256d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +0000154 // CHECK: @llvm.x86.fma.vfmaddsub.pd.256
Craig Topper7feb3212011-12-30 09:15:03 +0000155 return _mm256_maddsub_pd(a, b, c);
156}
157
158__m256 test_mm256_msubadd_ps(__m256 a, __m256 b, __m256 c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +0000159 // CHECK: @llvm.x86.fma.vfmsubadd.ps.256
Craig Topper7feb3212011-12-30 09:15:03 +0000160 return _mm256_msubadd_ps(a, b, c);
161}
162
163__m256d test_mm256_msubadd_pd(__m256d a, __m256d b, __m256d c) {
Benjamin Kramer2a6e7842012-06-03 10:12:04 +0000164 // CHECK: @llvm.x86.fma.vfmsubadd.pd.256
Craig Topper7feb3212011-12-30 09:15:03 +0000165 return _mm256_msubadd_pd(a, b, c);
166}