1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
- ; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix =AVX-32
3
- ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix =AVX-64
4
- ; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefix =AVX-32
5
- ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefix =AVX-64
2
+ ; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefixes =AVX-32,AVX512F -32
3
+ ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefixes =AVX-64,AVX512F -64
4
+ ; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefixes =AVX-32,AVX512BW -32
5
+ ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefixes =AVX-64,AVX512BW -64
6
6
7
7
define <8 x double > @test_buildvector_v8f64 (double %a0 , double %a1 , double %a2 , double %a3 , double %a4 , double %a5 , double %a6 , double %a7 ) {
8
8
; AVX-32-LABEL: test_buildvector_v8f64:
@@ -480,6 +480,37 @@ define <64 x i8> @test_buildvector_v64i8(i8 %a0, i8 %a1, i8 %a2, i8 %a3, i8 %a4,
480
480
; build vectors of repeated elements
481
481
482
482
define <8 x double > @test_buildvector_8f64_2_var (double %a0 , double %a1 ) {
483
+ ; AVX512F-32-LABEL: test_buildvector_8f64_2_var:
484
+ ; AVX512F-32: # %bb.0:
485
+ ; AVX512F-32-NEXT: vbroadcastsd {{[0-9]+}}(%esp), %zmm0
486
+ ; AVX512F-32-NEXT: movb $-126, %al
487
+ ; AVX512F-32-NEXT: kmovw %eax, %k1
488
+ ; AVX512F-32-NEXT: vbroadcastsd {{[0-9]+}}(%esp), %zmm0 {%k1}
489
+ ; AVX512F-32-NEXT: retl
490
+ ;
491
+ ; AVX512F-64-LABEL: test_buildvector_8f64_2_var:
492
+ ; AVX512F-64: # %bb.0:
493
+ ; AVX512F-64-NEXT: vbroadcastsd %xmm0, %zmm0
494
+ ; AVX512F-64-NEXT: movb $-126, %al
495
+ ; AVX512F-64-NEXT: kmovw %eax, %k1
496
+ ; AVX512F-64-NEXT: vbroadcastsd %xmm1, %zmm0 {%k1}
497
+ ; AVX512F-64-NEXT: retq
498
+ ;
499
+ ; AVX512BW-32-LABEL: test_buildvector_8f64_2_var:
500
+ ; AVX512BW-32: # %bb.0:
501
+ ; AVX512BW-32-NEXT: vbroadcastsd {{[0-9]+}}(%esp), %zmm0
502
+ ; AVX512BW-32-NEXT: movb $-126, %al
503
+ ; AVX512BW-32-NEXT: kmovd %eax, %k1
504
+ ; AVX512BW-32-NEXT: vbroadcastsd {{[0-9]+}}(%esp), %zmm0 {%k1}
505
+ ; AVX512BW-32-NEXT: retl
506
+ ;
507
+ ; AVX512BW-64-LABEL: test_buildvector_8f64_2_var:
508
+ ; AVX512BW-64: # %bb.0:
509
+ ; AVX512BW-64-NEXT: vbroadcastsd %xmm0, %zmm0
510
+ ; AVX512BW-64-NEXT: movb $-126, %al
511
+ ; AVX512BW-64-NEXT: kmovd %eax, %k1
512
+ ; AVX512BW-64-NEXT: vbroadcastsd %xmm1, %zmm0 {%k1}
513
+ ; AVX512BW-64-NEXT: retq
483
514
%v0 = insertelement <8 x double > poison, double %a0 , i32 0
484
515
%v1 = insertelement <8 x double > %v0 , double %a1 , i32 1
485
516
%v2 = insertelement <8 x double > %v1 , double %a0 , i32 2
@@ -492,6 +523,41 @@ define <8 x double> @test_buildvector_8f64_2_var(double %a0, double %a1) {
492
523
}
493
524
494
525
define <8 x double > @test_buildvector_8f64_2_load (ptr %p0 , ptr %p1 ) {
526
+ ; AVX512F-32-LABEL: test_buildvector_8f64_2_load:
527
+ ; AVX512F-32: # %bb.0:
528
+ ; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax
529
+ ; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %ecx
530
+ ; AVX512F-32-NEXT: vbroadcastsd (%ecx), %zmm0
531
+ ; AVX512F-32-NEXT: movb $-126, %cl
532
+ ; AVX512F-32-NEXT: kmovw %ecx, %k1
533
+ ; AVX512F-32-NEXT: vbroadcastsd (%eax), %zmm0 {%k1}
534
+ ; AVX512F-32-NEXT: retl
535
+ ;
536
+ ; AVX512F-64-LABEL: test_buildvector_8f64_2_load:
537
+ ; AVX512F-64: # %bb.0:
538
+ ; AVX512F-64-NEXT: vbroadcastsd (%rdi), %zmm0
539
+ ; AVX512F-64-NEXT: movb $-126, %al
540
+ ; AVX512F-64-NEXT: kmovw %eax, %k1
541
+ ; AVX512F-64-NEXT: vbroadcastsd (%rsi), %zmm0 {%k1}
542
+ ; AVX512F-64-NEXT: retq
543
+ ;
544
+ ; AVX512BW-32-LABEL: test_buildvector_8f64_2_load:
545
+ ; AVX512BW-32: # %bb.0:
546
+ ; AVX512BW-32-NEXT: movl {{[0-9]+}}(%esp), %eax
547
+ ; AVX512BW-32-NEXT: movl {{[0-9]+}}(%esp), %ecx
548
+ ; AVX512BW-32-NEXT: vbroadcastsd (%ecx), %zmm0
549
+ ; AVX512BW-32-NEXT: movb $-126, %cl
550
+ ; AVX512BW-32-NEXT: kmovd %ecx, %k1
551
+ ; AVX512BW-32-NEXT: vbroadcastsd (%eax), %zmm0 {%k1}
552
+ ; AVX512BW-32-NEXT: retl
553
+ ;
554
+ ; AVX512BW-64-LABEL: test_buildvector_8f64_2_load:
555
+ ; AVX512BW-64: # %bb.0:
556
+ ; AVX512BW-64-NEXT: vbroadcastsd (%rdi), %zmm0
557
+ ; AVX512BW-64-NEXT: movb $-126, %al
558
+ ; AVX512BW-64-NEXT: kmovd %eax, %k1
559
+ ; AVX512BW-64-NEXT: vbroadcastsd (%rsi), %zmm0 {%k1}
560
+ ; AVX512BW-64-NEXT: retq
495
561
%a0 = load double , ptr %p0
496
562
%a1 = load double , ptr %p1
497
563
%v0 = insertelement <8 x double > poison, double %a0 , i32 0
0 commit comments