; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4 ; RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx %s -o - | FileCheck %s --check-prefixes AVX-ALL,AVX ; RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx -fast-isel %s -o - | FileCheck %s --check-prefixes AVX-ALL,AVX ; RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx -global-isel -global-isel-abort=1 %s -o - | FileCheck %s --check-prefixes AVX-ALL,AVX ; RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx512f %s -o - | FileCheck %s --check-prefixes AVX-ALL,AVX512 ; RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx512f -fast-isel %s -o - | FileCheck %s --check-prefixes AVX-ALL,AVX512 ; RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx512f -global-isel -global-isel-abort=1 %s -o - | FileCheck %s --check-prefixes AVX-ALL,AVX512 ; ; 256 bit vectors ; define <32 x i8> @test_vector_v32i8() { ; AVX-ALL-LABEL: test_vector_v32i8: ; AVX-ALL: # %bb.0: ; AVX-ALL-NEXT: vmovaps {{.*#+}} ymm0 = [99,2,7,77,56,5,48,73,36,63,68,13,59,34,36,117,43,11,61,97,104,113,46,89,42,12,97,41,73,7,55,73] ; AVX-ALL-NEXT: retq ret <32 x i8> } define <16 x i16> @test_vector_v16i16() { ; AVX-ALL-LABEL: test_vector_v16i16: ; AVX-ALL: # %bb.0: ; AVX-ALL-NEXT: vmovaps {{.*#+}} ymm0 = [2415,4748,23790,5373,22059,21582,12346,30507,9170,21469,12631,24765,31001,26396,24951,27843] ; AVX-ALL-NEXT: retq ret <16 x i16> } define <5 x float> @test_vector_v5f32() { ; AVX-ALL-LABEL: test_vector_v5f32: ; AVX-ALL: # %bb.0: ; AVX-ALL-NEXT: vmovaps {{.*#+}} ymm0 = [6.135E+3,2.179E+4,2.8365E+4,6.641E+3,2.6535E+4,u,u,u] ; AVX-ALL-NEXT: retq ret <5 x float> } define <8 x float> @test_vector_v8f32() { ; AVX-ALL-LABEL: test_vector_v8f32: ; AVX-ALL: # %bb.0: ; AVX-ALL-NEXT: vmovaps {{.*#+}} ymm0 = [6.135E+3,2.179E+4,2.8365E+4,6.641E+3,2.6535E+4,2.1447E+4,1.9619E+4,1.1916E+4] ; AVX-ALL-NEXT: retq ret <8 x float> } define <4 x i64> @test_vector_v4i64() { ; AVX-LABEL: test_vector_v4i64: ; AVX: # %bb.0: ; AVX-NEXT: vmovaps {{.*#+}} ymm0 = [23430,24650,1,12] ; AVX-NEXT: retq ; ; AVX512-LABEL: test_vector_v4i64: ; AVX512: # %bb.0: ; AVX512-NEXT: vpmovsxwq {{.*#+}} ymm0 = [23430,24650,1,12] ; AVX512-NEXT: retq ret <4 x i64> } ; ; 512 bit vectors ; define <64 x i8> @test_vector_v64i8() { ; AVX-X64-LABEL: test_vector_v64i8: ; AVX-LABEL: test_vector_v64i8: ; AVX: # %bb.0: ; AVX-NEXT: vmovaps {{.*#+}} ymm0 = [0,84,15,13,66,11,70,102,12,82,111,109,61,15,70,8,110,17,35,102,57,111,119,61,112,47,3,34,65,126,55,37] ; AVX-NEXT: vmovaps {{.*#+}} ymm1 = [9,100,124,46,65,75,68,70,120,109,125,21,98,121,127,13,119,64,2,0,9,79,10,78,53,81,37,95,99,79,114,3] ; AVX-NEXT: retq ; ; AVX512-LABEL: test_vector_v64i8: ; AVX512: # %bb.0: ; AVX512-NEXT: vmovaps {{.*#+}} zmm0 = [0,84,15,13,66,11,70,102,12,82,111,109,61,15,70,8,110,17,35,102,57,111,119,61,112,47,3,34,65,126,55,37,9,100,124,46,65,75,68,70,120,109,125,21,98,121,127,13,119,64,2,0,9,79,10,78,53,81,37,95,99,79,114,3] ; AVX512-NEXT: retq ret <64 x i8> } define <32 x i16> @test_vector_v32i16() { ; AVX-LABEL: test_vector_v32i16: ; AVX: # %bb.0: ; AVX-NEXT: vmovaps {{.*#+}} ymm0 = [30901,2280,10793,13893,17914,6183,27317,29748,27420,12395,13504,18229,14700,11550,24714,26203] ; AVX-NEXT: vmovaps {{.*#+}} ymm1 = [23668,3198,27016,12020,31057,19311,16505,24461,28451,19446,23816,10995,17209,5831,27666,21680] ; AVX-NEXT: retq ; ; AVX512-LABEL: test_vector_v32i16: ; AVX512: # %bb.0: ; AVX512-NEXT: vmovaps {{.*#+}} zmm0 = [30901,2280,10793,13893,17914,6183,27317,29748,27420,12395,13504,18229,14700,11550,24714,26203,23668,3198,27016,12020,31057,19311,16505,24461,28451,19446,23816,10995,17209,5831,27666,21680] ; AVX512-NEXT: retq ret <32 x i16> } define <16 x i32> @test_vector_v16i32() { ; AVX-LABEL: test_vector_v16i32: ; AVX: # %bb.0: ; AVX-NEXT: vmovaps {{.*#+}} ymm0 = [867316,75798,646113,495494,920699,901516,613751,811205] ; AVX-NEXT: vmovaps {{.*#+}} ymm1 = [778508,933022,441446,241046,364018,527717,71828,337100] ; AVX-NEXT: retq ; ; AVX512-LABEL: test_vector_v16i32: ; AVX512: # %bb.0: ; AVX512-NEXT: vmovaps {{.*#+}} zmm0 = [867316,75798,646113,495494,920699,901516,613751,811205,778508,933022,441446,241046,364018,527717,71828,337100] ; AVX512-NEXT: retq ret <16 x i32> } define <8 x double> @test_vector_v8f64() { ; AVX-LABEL: test_vector_v8f64: ; AVX: # %bb.0: ; AVX-NEXT: vmovaps {{.*#+}} ymm0 = [6.1349999999999998E+0,2.1789999999999998E+0,2.8365E+0,6.641E+0] ; AVX-NEXT: vmovaps {{.*#+}} ymm1 = [2.6535000000000002E+0,2.1446999999999998E+0,1.9619E+0,1.1916E+0] ; AVX-NEXT: retq ; ; AVX512-LABEL: test_vector_v8f64: ; AVX512: # %bb.0: ; AVX512-NEXT: vmovaps {{.*#+}} zmm0 = [6.1349999999999998E+0,2.1789999999999998E+0,2.8365E+0,6.641E+0,2.6535000000000002E+0,2.1446999999999998E+0,1.9619E+0,1.1916E+0] ; AVX512-NEXT: retq ret <8 x double> }