brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · fd72126 Raw
76 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unkown-unkown -mattr=+avx512bw -mattr=+avx512vl -mattr=+avx512fp16 | FileCheck %s3 4define void @test_mscatter_v16f16(ptr %base, <16 x i32> %index, <16 x half> %val)5; CHECK-LABEL: test_mscatter_v16f16:6; CHECK:       # %bb.0:7; CHECK-NEXT:    vpbroadcastq %rdi, %zmm38; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm29; CHECK-NEXT:    vpmovsxdq %ymm2, %zmm210; CHECK-NEXT:    vpaddq %zmm2, %zmm2, %zmm211; CHECK-NEXT:    vpaddq %zmm2, %zmm3, %zmm212; CHECK-NEXT:    vpmovsxdq %ymm0, %zmm013; CHECK-NEXT:    vpaddq %zmm0, %zmm0, %zmm014; CHECK-NEXT:    vpaddq %zmm0, %zmm3, %zmm015; CHECK-NEXT:    vmovq %xmm0, %rax16; CHECK-NEXT:    vmovsh %xmm1, (%rax)17; CHECK-NEXT:    vpsrld $16, %xmm1, %xmm318; CHECK-NEXT:    vpextrq $1, %xmm0, %rax19; CHECK-NEXT:    vmovsh %xmm3, (%rax)20; CHECK-NEXT:    vmovshdup {{.*#+}} xmm3 = xmm1[1,1,3,3]21; CHECK-NEXT:    vextracti128 $1, %ymm0, %xmm422; CHECK-NEXT:    vmovq %xmm4, %rax23; CHECK-NEXT:    vmovsh %xmm3, (%rax)24; CHECK-NEXT:    vpsrlq $48, %xmm1, %xmm325; CHECK-NEXT:    vpextrq $1, %xmm4, %rax26; CHECK-NEXT:    vmovsh %xmm3, (%rax)27; CHECK-NEXT:    vshufpd {{.*#+}} xmm3 = xmm1[1,0]28; CHECK-NEXT:    vextracti32x4 $2, %zmm0, %xmm429; CHECK-NEXT:    vmovq %xmm4, %rax30; CHECK-NEXT:    vmovsh %xmm3, (%rax)31; CHECK-NEXT:    vpsrldq {{.*#+}} xmm3 = xmm1[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero32; CHECK-NEXT:    vpextrq $1, %xmm4, %rax33; CHECK-NEXT:    vmovsh %xmm3, (%rax)34; CHECK-NEXT:    vshufps {{.*#+}} xmm3 = xmm1[3,3,3,3]35; CHECK-NEXT:    vextracti32x4 $3, %zmm0, %xmm036; CHECK-NEXT:    vmovq %xmm0, %rax37; CHECK-NEXT:    vmovsh %xmm3, (%rax)38; CHECK-NEXT:    vpsrldq {{.*#+}} xmm3 = xmm1[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero39; CHECK-NEXT:    vpextrq $1, %xmm0, %rax40; CHECK-NEXT:    vmovsh %xmm3, (%rax)41; CHECK-NEXT:    vextractf128 $1, %ymm1, %xmm042; CHECK-NEXT:    vmovq %xmm2, %rax43; CHECK-NEXT:    vmovsh %xmm0, (%rax)44; CHECK-NEXT:    vpsrld $16, %xmm0, %xmm145; CHECK-NEXT:    vpextrq $1, %xmm2, %rax46; CHECK-NEXT:    vmovsh %xmm1, (%rax)47; CHECK-NEXT:    vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]48; CHECK-NEXT:    vextracti128 $1, %ymm2, %xmm349; CHECK-NEXT:    vmovq %xmm3, %rax50; CHECK-NEXT:    vmovsh %xmm1, (%rax)51; CHECK-NEXT:    vpsrlq $48, %xmm0, %xmm152; CHECK-NEXT:    vpextrq $1, %xmm3, %rax53; CHECK-NEXT:    vmovsh %xmm1, (%rax)54; CHECK-NEXT:    vshufpd {{.*#+}} xmm1 = xmm0[1,0]55; CHECK-NEXT:    vextracti32x4 $2, %zmm2, %xmm356; CHECK-NEXT:    vmovq %xmm3, %rax57; CHECK-NEXT:    vmovsh %xmm1, (%rax)58; CHECK-NEXT:    vpsrldq {{.*#+}} xmm1 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero59; CHECK-NEXT:    vpextrq $1, %xmm3, %rax60; CHECK-NEXT:    vmovsh %xmm1, (%rax)61; CHECK-NEXT:    vshufps {{.*#+}} xmm1 = xmm0[3,3,3,3]62; CHECK-NEXT:    vextracti32x4 $3, %zmm2, %xmm263; CHECK-NEXT:    vmovq %xmm2, %rax64; CHECK-NEXT:    vmovsh %xmm1, (%rax)65; CHECK-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero66; CHECK-NEXT:    vpextrq $1, %xmm2, %rax67; CHECK-NEXT:    vmovsh %xmm0, (%rax)68; CHECK-NEXT:    vzeroupper69; CHECK-NEXT:    retq70{71  %gep = getelementptr half, ptr %base, <16 x i32> %index72  call void @llvm.masked.scatter.v16f16.v16p0(<16 x half> %val, <16 x ptr> %gep, i32 4, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)73  ret void74}75declare void @llvm.masked.scatter.v16f16.v16p0(<16 x half> , <16 x ptr> , i32 , <16 x i1>)76