brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.3 KiB · 70531da Raw
225 lines · c
1// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avxifma -emit-llvm -o - -Wall -Werror | FileCheck %s2// RUN: %clang_cc1 -x c -ffreestanding %s -triple=i386-apple-darwin -target-feature +avxifma -emit-llvm -o - -Wall -Werror | FileCheck %s3// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avxifma -emit-llvm -o - -Wall -Werror | FileCheck %s4// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=i386-apple-darwin -target-feature +avxifma -emit-llvm -o - -Wall -Werror | FileCheck %s5 6// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avxifma -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s7// RUN: %clang_cc1 -x c -ffreestanding %s -triple=i386-apple-darwin -target-feature +avxifma -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s8// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avxifma -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s9// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=i386-apple-darwin -target-feature +avxifma -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s10 11#include <immintrin.h>12#include "builtin_test_helpers.h"13 14 15__m128i test_mm_madd52hi_epu64(__m128i __X, __m128i __Y, __m128i __Z) {16// CHECK-LABEL: test_mm_madd52hi_epu6417// CHECK:    call {{.*}}<2 x i64> @llvm.x86.avx512.vpmadd52h.uq.128(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})18  return _mm_madd52hi_epu64(__X, __Y, __Z);19}20 21TEST_CONSTEXPR(match_v2di(_mm_madd52hi_epu64(22                              (__m128i)((__v2du){50, 100}),23                              (__m128i)((__v2du){10, 20}),24                              (__m128i)((__v2du){5, 6})),25                          50, 100));26 27TEST_CONSTEXPR(match_v2di(_mm_madd52hi_epu64(28                              (__m128i)((__v2du){0, 0}),29                              (__m128i)((__v2du){0xFFFFFFFFFFFFFull, 0}),30                              (__m128i)((__v2du){0xFFFFFFFFFFFFFull, 0})),31                          0xFFFFFFFFFFFFEull, 0));32 33__m256i test_mm256_madd52hi_epu64(__m256i __X, __m256i __Y, __m256i __Z) {34// CHECK-LABEL: test_mm256_madd52hi_epu6435// CHECK:    call {{.*}}<4 x i64> @llvm.x86.avx512.vpmadd52h.uq.256(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})36  return _mm256_madd52hi_epu64(__X, __Y, __Z);37}38 39TEST_CONSTEXPR(match_v4di(_mm256_madd52hi_epu64(40                              (__m256i)((__v4du){100, 200, 300, 400}),41                              (__m256i)((__v4du){10, 20, 30, 40}),42                              (__m256i)((__v4du){5, 6, 7, 8})),43                          100, 200, 300, 400));44 45TEST_CONSTEXPR(match_v4di(_mm256_madd52hi_epu64(46                              (__m256i)((__v4du){0, 0, 0, 0}),47                              (__m256i)((__v4du){0xFFFFFFFFFFFFFull,48                                                 0xFFFFFFFFFFFFFull, 0, 0}),49                              (__m256i)((__v4du){0xFFFFFFFFFFFFFull,50                                                 0xFFFFFFFFFFFFFull, 0, 0})),51                          0xFFFFFFFFFFFFEull, 0xFFFFFFFFFFFFEull, 0, 0));52 53__m128i test_mm_madd52lo_epu64(__m128i __X, __m128i __Y, __m128i __Z) {54// CHECK-LABEL: test_mm_madd52lo_epu6455// CHECK:    call {{.*}}<2 x i64> @llvm.x86.avx512.vpmadd52l.uq.128(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})56  return _mm_madd52lo_epu64(__X, __Y, __Z);57}58 59TEST_CONSTEXPR(match_v2di(_mm_madd52lo_epu64(60                              (__m128i)((__v2du){0, 0}),61                              (__m128i)((__v2du){10, 0}),62                              (__m128i)((__v2du){5, 0})),63                          50, 0));64 65TEST_CONSTEXPR(match_v2di(_mm_madd52lo_epu64(66                              (__m128i)((__v2du){1, 2}),67                              (__m128i)((__v2du){10, 20}),68                              (__m128i)((__v2du){2, 3})),69                          21, 62));70 71TEST_CONSTEXPR(match_v2di(_mm_madd52lo_epu64(72                              (__m128i)((__v2du){0, 0}),73                              (__m128i)((__v2du){0xFFFFFFFFFFFFFull, 0}),74                              (__m128i)((__v2du){1, 0})),75                          0xFFFFFFFFFFFFFull, 0));76 77__m256i test_mm256_madd52lo_epu64(__m256i __X, __m256i __Y, __m256i __Z) {78// CHECK-LABEL: test_mm256_madd52lo_epu6479// CHECK:    call {{.*}}<4 x i64> @llvm.x86.avx512.vpmadd52l.uq.256(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})80  return _mm256_madd52lo_epu64(__X, __Y, __Z);81}82 83TEST_CONSTEXPR(match_v4di(_mm256_madd52lo_epu64(84                              (__m256i)((__v4du){1, 2, 3, 4}),85                              (__m256i)((__v4du){10, 20, 30, 40}),86                              (__m256i)((__v4du){2, 3, 4, 5})),87                          21, 62, 123, 204));88 89TEST_CONSTEXPR(match_v4di(_mm256_madd52lo_epu64(90                              (__m256i)((__v4du){0, 0, 0, 0}),91                              (__m256i)((__v4du){0xFFFFFFFFFFFFFull, 0, 0,92                                                 0}),93                              (__m256i)((__v4du){1, 0, 0, 0})),94                          0xFFFFFFFFFFFFFull, 0, 0, 0));95 96TEST_CONSTEXPR(match_v4di(_mm256_madd52lo_epu64(97                              (__m256i)((__v4du){0, 0, 0, 0}),98                              (__m256i)((__v4du){0x1F000000000000ull, 0, 0,99                                                 0}),100                              (__m256i)((__v4du){2, 0, 0, 0})),101                          0xE000000000000ull, 0, 0, 0));102 103__m128i test_mm_madd52hi_avx_epu64(__m128i __X, __m128i __Y, __m128i __Z) {104  // CHECK-LABEL: test_mm_madd52hi_avx_epu64105  // CHECK: call {{.*}}<2 x i64> @llvm.x86.avx512.vpmadd52h.uq.128(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})106  return _mm_madd52hi_avx_epu64(__X, __Y, __Z);107}108 109TEST_CONSTEXPR(match_v2di(_mm_madd52hi_avx_epu64(110                              (__m128i)((__v2du){50, 100}),111                              (__m128i)((__v2du){10, 20}),112                              (__m128i)((__v2du){5, 6})),113                          50, 100));114 115TEST_CONSTEXPR(match_v2di(_mm_madd52hi_avx_epu64(116                              (__m128i)((__v2du){100, 0}),117                              (__m128i)((__v2du){10, 0}),118                              (__m128i)((__v2du){5, 0})),119                          100, 0));120 121TEST_CONSTEXPR(match_v2di(_mm_madd52hi_avx_epu64(122                              (__m128i)((__v2du){0, 0}),123                              (__m128i)((__v2du){0xFFFFFFFFFFFFFull, 0}),124                              (__m128i)((__v2du){0xFFFFFFFFFFFFFull, 0})),125                          0xFFFFFFFFFFFFEull, 0));126                        127__m256i test_mm256_madd52hi_avx_epu64(__m256i __X, __m256i __Y, __m256i __Z) {128  // CHECK-LABEL: test_mm256_madd52hi_avx_epu64129  // CHECK: call {{.*}}<4 x i64> @llvm.x86.avx512.vpmadd52h.uq.256(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})130  return _mm256_madd52hi_avx_epu64(__X, __Y, __Z);131}132 133TEST_CONSTEXPR(match_v4di(_mm256_madd52hi_avx_epu64(134                              (__m256i)((__v4du){0, 0, 0, 0}),135                              (__m256i)((__v4du){0xFFFFFFFFFFFFFull,136                                                 0xFFFFFFFFFFFFFull, 0, 0}),137                              (__m256i)((__v4du){0xFFFFFFFFFFFFFull,138                                                 0xFFFFFFFFFFFFFull, 0, 0})),139                          0xFFFFFFFFFFFFEull, 0xFFFFFFFFFFFFEull, 0, 0));140 141TEST_CONSTEXPR(match_v4di(_mm256_madd52hi_avx_epu64(142                              (__m256i)((__v4du){100, 200, 300, 400}),143                              (__m256i)((__v4du){10, 20, 30, 40}),144                              (__m256i)((__v4du){5, 6, 7, 8})),145                          100, 200, 300, 400));146 147TEST_CONSTEXPR(match_v4di(_mm256_madd52hi_avx_epu64(148                              (__m256i)((__v4du){0, 0, 0, 0}),149                              (__m256i)((__v4du){0xFFFFFFFFFFFFFull, 0, 0,150                                                 0}),151                              (__m256i)((__v4du){0xFFFFFFFFFFFFFull, 0, 0,152                                                 0})),153                          0xFFFFFFFFFFFFEull, 0, 0, 0));154 155__m128i test_mm_madd52lo_avx_epu64(__m128i __X, __m128i __Y, __m128i __Z) {156  // CHECK-LABEL: test_mm_madd52lo_avx_epu64157  // CHECK: call {{.*}}<2 x i64> @llvm.x86.avx512.vpmadd52l.uq.128(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})158  return _mm_madd52lo_avx_epu64(__X, __Y, __Z);159}160 161TEST_CONSTEXPR(match_v2di(_mm_madd52lo_avx_epu64(162                              (__m128i)((__v2du){0, 0}),163                              (__m128i)((__v2du){10, 0}),164                              (__m128i)((__v2du){5, 0})),165                          50, 0));166 167TEST_CONSTEXPR(match_v2di(_mm_madd52lo_avx_epu64(168                              (__m128i)((__v2du){100, 0}),169                              (__m128i)((__v2du){20, 0}),170                              (__m128i)((__v2du){30, 0})),171                          700, 0));172 173TEST_CONSTEXPR(match_v2di(_mm_madd52lo_avx_epu64(174                              (__m128i)((__v2du){1, 2}),175                              (__m128i)((__v2du){10, 20}),176                              (__m128i)((__v2du){2, 3})),177                          21, 62));178 179TEST_CONSTEXPR(match_v2di(_mm_madd52lo_avx_epu64(180                              (__m128i)((__v2du){0, 0}),181                              (__m128i)((__v2du){0xFFFFFFFFFFFFFull, 0}),182                              (__m128i)((__v2du){1, 0})),183                          0xFFFFFFFFFFFFFull, 0));184 185__m256i test_mm256_madd52lo_avx_epu64(__m256i __X, __m256i __Y, __m256i __Z) {186  // CHECK-LABEL: test_mm256_madd52lo_avx_epu64187  // CHECK: call {{.*}}<4 x i64> @llvm.x86.avx512.vpmadd52l.uq.256(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})188  return _mm256_madd52lo_avx_epu64(__X, __Y, __Z);189}190 191TEST_CONSTEXPR(match_v4di(_mm256_madd52lo_avx_epu64(192                              (__m256i)((__v4du){1, 2, 3, 4}),193                              (__m256i)((__v4du){10, 20, 30, 40}),194                              (__m256i)((__v4du){2, 3, 4, 5})),195                          21, 62, 123, 204));196 197 198 199TEST_CONSTEXPR(match_v4di(_mm256_madd52lo_avx_epu64(200                              (__m256i)((__v4du){0, 0, 0, 0}),201                              (__m256i)((__v4du){0xFFFFFFFFFFFFFull, 0, 0,202                                                 0}),203                              (__m256i)((__v4du){1, 0, 0, 0})),204                          0xFFFFFFFFFFFFFull, 0, 0, 0));205 206TEST_CONSTEXPR(match_v4di(_mm256_madd52lo_avx_epu64(207                              (__m256i)((__v4du){0, 0, 0, 0}),208                              (__m256i)((__v4du){0x1F000000000000ull, 0, 0,209                                                 0}),210                              (__m256i)((__v4du){2, 0, 0, 0})),211                          0xE000000000000ull, 0, 0, 0));212 213TEST_CONSTEXPR(match_v2di(_mm_madd52lo_avx_epu64(214                              (__m128i)((__v2du){5, 10}),215                              (__m128i)((__v2du){100, 200}),216                              (__m128i)((__v2du){7, 8})),217                          705, 1610));218 219TEST_CONSTEXPR(match_v4di(_mm256_madd52lo_avx_epu64(220                              (__m256i)((__v4du){1, 2, 3, 4}),221                              (__m256i)((__v4du){10, 20, 30, 40}),222                              (__m256i)((__v4du){2, 3, 4, 5})),223                          21, 62, 123, 204));224 225