blob: 1dc9a3ab94b36e4150d5ea180631eac9e0d3bad9 [file] [log] [blame]
Craig Toppera5944aa2018-02-01 20:48:50 +00001; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
Craig Topper0c47e8f2018-04-17 17:30:06 +00002; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx512f | FileCheck %s
Craig Toppera5944aa2018-02-01 20:48:50 +00003
Sanjay Patela7874a52018-05-16 17:57:35 +00004define void @foo(<16 x float> %x) {
Craig Toppera5944aa2018-02-01 20:48:50 +00005; CHECK-LABEL: foo:
6; CHECK: # %bb.0:
Sanjay Patel357053f2018-11-20 22:26:35 +00007; CHECK-NEXT: vaddps %xmm0, %xmm0, %xmm0
Craig Toppera5944aa2018-02-01 20:48:50 +00008; CHECK-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
9; CHECK-NEXT: vinsertf64x4 $1, %ymm0, %zmm0, %zmm0
10; CHECK-NEXT: vmovups %zmm0, (%rax)
11; CHECK-NEXT: vzeroupper
12; CHECK-NEXT: retq
Sanjay Patela7874a52018-05-16 17:57:35 +000013 %1 = fadd <16 x float> %x, %x
Craig Toppera5944aa2018-02-01 20:48:50 +000014 %bc256 = bitcast <16 x float> %1 to <4 x i128>
15 %2 = extractelement <4 x i128> %bc256, i32 0
16 %3 = bitcast i128 %2 to <4 x float>
17 %4 = shufflevector <4 x float> %3, <4 x float> undef, <16 x i32> <i32 0, i32
181, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0,
19i32 1, i32 2, i32 3>
20 store <16 x float> %4, <16 x float>* undef, align 4
21 ret void
22}