brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.1 KiB · f90697e Raw
238 lines · c
1// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512ifma -emit-llvm -o - -Wall -Werror | FileCheck %s2// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx512ifma -emit-llvm -o - -Wall -Werror | FileCheck %s3// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512ifma -emit-llvm -o - -Wall -Werror | FileCheck %s4// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx512ifma -emit-llvm -o - -Wall -Werror | FileCheck %s5 6// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512ifma -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s7// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx512ifma -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s8// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512ifma -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s9// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx512ifma -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s10 11#include <immintrin.h>12#include "builtin_test_helpers.h"13 14__m512i test_mm512_madd52hi_epu64(__m512i __X, __m512i __Y, __m512i __Z) {15  // CHECK-LABEL: test_mm512_madd52hi_epu6416  // CHECK: call {{.*}}<8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})17  return _mm512_madd52hi_epu64(__X, __Y, __Z);18}19 20TEST_CONSTEXPR(match_v8di(_mm512_madd52hi_epu64(21                              (__m512i)(__v8du){100, 0, 0, 0, 0, 0, 0, 0},22                              (__m512i)(__v8du){10, 0, 0, 0, 0, 0, 0, 0},23                              (__m512i)(__v8du){5, 0, 0, 0, 0, 0, 0, 0}),24                          100, 0, 0, 0, 0, 0, 0, 0));25 26TEST_CONSTEXPR(match_v8di(_mm512_madd52hi_epu64(27                              (__m512i)(__v8du){0, 0, 0, 0, 0, 0, 0, 0},28                              (__m512i)(__v8du){0xFFFFFFFFFFFFFull, 0, 0, 0,29                                                0, 0, 0, 0},30                              (__m512i)(__v8du){0xFFFFFFFFFFFFFull, 0, 0, 0,31                                                0, 0, 0, 0}),32                          0xFFFFFFFFFFFFEull, 0, 0, 0, 0, 0, 0, 0));33 34TEST_CONSTEXPR(match_v8di(_mm512_madd52hi_epu64(35                              (__m512i)(__v8du){1, 2, 3, 4, 5, 6, 7, 8},36                              (__m512i)(__v8du){0xFFFFFFFFFFFFFull,37                                                0xFFFFFFFFFFFFFull,38                                                0xFFFFFFFFFFFFFull,39                                                0xFFFFFFFFFFFFFull,40                                                0xFFFFFFFFFFFFFull,41                                                0xFFFFFFFFFFFFFull,42                                                0xFFFFFFFFFFFFFull,43                                                0xFFFFFFFFFFFFFull},44                              (__m512i)(__v8du){0xFFFFFFFFFFFFFull,45                                                0xFFFFFFFFFFFFFull,46                                                0xFFFFFFFFFFFFFull,47                                                0xFFFFFFFFFFFFFull,48                                                0xFFFFFFFFFFFFFull,49                                                0xFFFFFFFFFFFFFull,50                                                0xFFFFFFFFFFFFFull,51                                                0xFFFFFFFFFFFFFull}),52                          4503599627370495ull, 4503599627370496ull,53                          4503599627370497ull, 4503599627370498ull,54                          4503599627370499ull, 4503599627370500ull,55                          4503599627370501ull, 4503599627370502ull));56 57__m512i test_mm512_mask_madd52hi_epu64(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) {58  // CHECK-LABEL: test_mm512_mask_madd52hi_epu6459  // CHECK: call {{.*}}<8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})60  // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}61  return _mm512_mask_madd52hi_epu64(__W, __M, __X, __Y);62}63 64TEST_CONSTEXPR(match_v8di(_mm512_mask_madd52hi_epu64(65                              (__m512i)(__v8du){111, 222, 333, 444, 555, 666,66                                                777, 888},67                              0x00,68                              (__m512i)(__v8du){1, 2, 3, 4, 5, 6, 7, 8},69                              (__m512i)(__v8du){10, 20, 30, 40, 50, 60, 70,70                                                80}),71                          111, 222, 333, 444, 555, 666, 777, 888));72 73TEST_CONSTEXPR(match_v8di(_mm512_mask_madd52hi_epu64(74                              (__m512i)(__v8du){10, 20, 30, 40, 50, 60, 70,75                                                80},76                              0xFF,77                              (__m512i)(__v8du){100, 200, 300, 400, 500, 600,78                                                700, 800},79                              (__m512i)(__v8du){10, 20, 30, 40, 50, 60, 70,80                                                80}),81                          10, 20, 30, 40, 50, 60, 70, 80));82 83__m512i test_mm512_maskz_madd52hi_epu64(__mmask8 __M, __m512i __X, __m512i __Y, __m512i __Z) {84  // CHECK-LABEL: test_mm512_maskz_madd52hi_epu6485  // CHECK: call {{.*}}<8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})86  // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}87  return _mm512_maskz_madd52hi_epu64(__M, __X, __Y, __Z);88}89 90TEST_CONSTEXPR(match_v8di(_mm512_maskz_madd52hi_epu64(91                              0x00,92                              (__m512i)(__v8du){1, 2, 3, 4, 5, 6, 7, 8},93                              (__m512i)(__v8du){10, 20, 30, 40, 50, 60, 70,94                                                80},95                              (__m512i)(__v8du){100, 200, 300, 400, 500, 600,96                                                700, 800}),97                          0, 0, 0, 0, 0, 0, 0, 0));98 99TEST_CONSTEXPR(match_v8di(_mm512_maskz_madd52hi_epu64(100                              0xFF,101                              (__m512i)(__v8du){1, 2, 3, 4, 5, 6, 7, 8},102                              (__m512i)(__v8du){10, 20, 30, 40, 50, 60, 70,103                                                80},104                              (__m512i)(__v8du){100, 200, 300, 400, 500, 600,105                                                700, 800}),106                          1, 2, 3, 4, 5, 6, 7, 8));107 108__m512i test_mm512_madd52lo_epu64(__m512i __X, __m512i __Y, __m512i __Z) {109  // CHECK-LABEL: test_mm512_madd52lo_epu64110  // CHECK: call {{.*}}<8 x i64> @llvm.x86.avx512.vpmadd52l.uq.512(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})111  return _mm512_madd52lo_epu64(__X, __Y, __Z);112}113 114TEST_CONSTEXPR(match_v8di(_mm512_madd52lo_epu64(115                              (__m512i)(__v8du){0, 0, 0, 0, 0, 0, 0, 0},116                              (__m512i)(__v8du){10, 0, 0, 0, 0, 0, 0, 0},117                              (__m512i)(__v8du){5, 0, 0, 0, 0, 0, 0, 0}),118                          50, 0, 0, 0, 0, 0, 0, 0));119 120TEST_CONSTEXPR(match_v8di(_mm512_madd52lo_epu64(121                              (__m512i)(__v8du){100, 0, 0, 0, 0, 0, 0, 0},122                              (__m512i)(__v8du){20, 0, 0, 0, 0, 0, 0, 0},123                              (__m512i)(__v8du){30, 0, 0, 0, 0, 0, 0, 0}),124                          700, 0, 0, 0, 0, 0, 0, 0));125 126TEST_CONSTEXPR(match_v8di(_mm512_madd52lo_epu64(127                              (__m512i)(__v8du){0, 0, 0, 0, 0, 0, 0, 0},128                              (__m512i)(__v8du){0xFFFFFFFFFFFFFull, 0, 0, 0,129                                                0, 0, 0, 0},130                              (__m512i)(__v8du){1, 0, 0, 0, 0, 0, 0, 0}),131                          0xFFFFFFFFFFFFFull, 0, 0, 0, 0, 0, 0, 0));132 133TEST_CONSTEXPR(match_v8di(_mm512_madd52lo_epu64(134                              (__m512i)(__v8du){0, 0, 0, 0, 0, 0, 0, 0},135                              (__m512i)(__v8du){0x1F000000000000ull, 0, 0, 0,136                                                0, 0, 0, 0},137                              (__m512i)(__v8du){2, 0, 0, 0, 0, 0, 0, 0}),138                          0xE000000000000ull, 0, 0, 0, 0, 0, 0, 0));139 140TEST_CONSTEXPR(match_v8di(_mm512_madd52lo_epu64(141                              (__m512i)(__v8du){1, 2, 3, 4, 5, 6, 7, 8},142                              (__m512i)(__v8du){10, 20, 30, 40, 50, 60, 70,143                                                80},144                              (__m512i)(__v8du){2, 3, 4, 5, 6, 7, 8, 9}),145                          21, 62, 123, 204, 305, 426, 567, 728));146 147TEST_CONSTEXPR(match_v8di(_mm512_madd52lo_epu64(148                              (__m512i)(__v8du){0xFFFFFFFFFFFFFull, 0, 0, 0,149                                                0, 0, 0, 0},150                              (__m512i)(__v8du){10, 0, 0, 0, 0, 0, 0, 0},151                              (__m512i)(__v8du){5, 0, 0, 0, 0, 0, 0, 0}),152                          4503599627370545ull, 0, 0, 0, 0, 0, 0, 0));153 154TEST_CONSTEXPR(match_v8di(_mm512_madd52lo_epu64(155                              (__m512i)(__v8du){10, 20, 30, 40, 50, 60, 70,156                                                80},157                              (__m512i)(__v8du){100, 200, 300, 400, 500, 600,158                                                700, 800},159                              (__m512i)(__v8du){2, 3, 4, 5, 6, 7, 8, 9}),160                          210, 620, 1230, 2040, 3050, 4260, 5670, 7280));161 162TEST_CONSTEXPR(match_v8di(_mm512_madd52lo_epu64(163                              (__m512i)(__v8du){0, 0, 0, 0, 0, 0, 0, 0},164                              (__m512i)(__v8du){0x1F000000000000ull,165                                                0x1F000000000000ull, 0, 0, 0,166                                                0, 0, 0},167                              (__m512i)(__v8du){2, 3, 0, 0, 0, 0, 0, 0}),168                          0xE000000000000ull, 0xD000000000000ull, 0, 0, 0, 0,169                          0, 0));170 171TEST_CONSTEXPR(match_v8di(_mm512_madd52lo_epu64(172                              (__m512i)(__v8du){0, 0, 0, 0, 0, 0, 0, 0},173                              (__m512i)(__v8du){0xFFFFFFFFFFFFFull,174                                                0xFFFFFFFFFFFFFull,175                                                0xFFFFFFFFFFFFFull,176                                                0xFFFFFFFFFFFFFull,177                                                0xFFFFFFFFFFFFFull,178                                                0xFFFFFFFFFFFFFull,179                                                0xFFFFFFFFFFFFFull,180                                                0xFFFFFFFFFFFFFull},181                              (__m512i)(__v8du){1, 1, 1, 1, 1, 1, 1, 1}),182                          0xFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFull,183                          0xFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFull,184                          0xFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFull,185                          0xFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFull));186 187__m512i test_mm512_mask_madd52lo_epu64(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) {188  // CHECK-LABEL: test_mm512_mask_madd52lo_epu64189  // CHECK: call {{.*}}<8 x i64> @llvm.x86.avx512.vpmadd52l.uq.512(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})190  // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}191  return _mm512_mask_madd52lo_epu64(__W, __M, __X, __Y);192}193 194TEST_CONSTEXPR(match_v8di(_mm512_mask_madd52lo_epu64(195                              (__m512i)(__v8du){111, 222, 333, 444, 555, 666,196                                                777, 888},197                              0x00,198                              (__m512i)(__v8du){1, 2, 3, 4, 5, 6, 7, 8},199                              (__m512i)(__v8du){10, 20, 30, 40, 50, 60, 70,200                                                80}),201                          111, 222, 333, 444, 555, 666, 777, 888));202 203TEST_CONSTEXPR(match_v8di(_mm512_mask_madd52lo_epu64(204                              (__m512i)(__v8du){1000, 2000, 3000, 4000, 5000,205                                                6000, 7000, 8000},206                              0xFF,207                              (__m512i)(__v8du){100, 200, 300, 400, 500, 600,208                                                700, 800},209                              (__m512i)(__v8du){20, 30, 40, 50, 60, 70, 80,210                                                90}),211                          3000, 8000, 15000, 24000, 35000, 48000, 63000,212                          80000));213 214__m512i test_mm512_maskz_madd52lo_epu64(__mmask8 __M, __m512i __X, __m512i __Y, __m512i __Z) {215  // CHECK-LABEL: test_mm512_maskz_madd52lo_epu64216  // CHECK: call {{.*}}<8 x i64> @llvm.x86.avx512.vpmadd52l.uq.512(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})217  // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}218  return _mm512_maskz_madd52lo_epu64(__M, __X, __Y, __Z);219}220 221TEST_CONSTEXPR(match_v8di(_mm512_maskz_madd52lo_epu64(222                              0x00,223                              (__m512i)(__v8du){1, 2, 3, 4, 5, 6, 7, 8},224                              (__m512i)(__v8du){10, 20, 30, 40, 50, 60, 70,225                                                80},226                              (__m512i)(__v8du){2, 3, 4, 5, 6, 7, 8, 9}),227                          0, 0, 0, 0, 0, 0, 0, 0));228 229TEST_CONSTEXPR(match_v8di(_mm512_maskz_madd52lo_epu64(230                              0xFF,231                              (__m512i)(__v8du){100, 200, 300, 400, 500, 600,232                                                700, 800},233                              (__m512i)(__v8du){20, 30, 40, 50, 60, 70, 80,234                                                90},235                              (__m512i)(__v8du){30, 40, 50, 60, 70, 80, 90,236                                                100}),237                          700, 1400, 2300, 3400, 4700, 6200, 7900, 9800));238