brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · 5a2721c Raw
116 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=znver3 | FileCheck %s --check-prefix=X643 4define <8 x i32> @simple(ptr %base, <8 x i32> %offsets) {5; X64-LABEL: simple:6; X64:       # %bb.0:7; X64-NEXT:    vextracti128 $1, %ymm0, %xmm28; X64-NEXT:    vpmovsxdq %xmm0, %ymm09; X64-NEXT:    vmovq %rdi, %xmm110; X64-NEXT:    vpbroadcastq %xmm1, %ymm111; X64-NEXT:    vpmovsxdq %xmm2, %ymm212; X64-NEXT:    vpsllq $2, %ymm0, %ymm013; X64-NEXT:    vpaddq %ymm0, %ymm1, %ymm014; X64-NEXT:    vmovq %xmm0, %rax15; X64-NEXT:    vpextrq $1, %xmm0, %rcx16; X64-NEXT:    vextracti128 $1, %ymm0, %xmm017; X64-NEXT:    vpsllq $2, %ymm2, %ymm218; X64-NEXT:    vpaddq %ymm2, %ymm1, %ymm219; X64-NEXT:    vmovd {{.*#+}} xmm1 = mem[0],zero,zero,zero20; X64-NEXT:    vpextrq $1, %xmm0, %rdx21; X64-NEXT:    vmovq %xmm0, %rsi22; X64-NEXT:    vextracti128 $1, %ymm2, %xmm023; X64-NEXT:    vmovq %xmm2, %rdi24; X64-NEXT:    vpextrq $1, %xmm2, %r825; X64-NEXT:    vpinsrd $1, (%rcx), %xmm1, %xmm126; X64-NEXT:    vmovq %xmm0, %r927; X64-NEXT:    vpextrq $1, %xmm0, %r1028; X64-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero29; X64-NEXT:    vpinsrd $2, (%rsi), %xmm1, %xmm130; X64-NEXT:    vpinsrd $1, (%r8), %xmm0, %xmm031; X64-NEXT:    vpinsrd $3, (%rdx), %xmm1, %xmm132; X64-NEXT:    vpinsrd $2, (%r9), %xmm0, %xmm033; X64-NEXT:    vpinsrd $3, (%r10), %xmm0, %xmm034; X64-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm035; X64-NEXT:    retq36  %ptrs = getelementptr inbounds i32, ptr %base, <8 x i32> %offsets37  %wide.masked.gather = call <8 x i32> @llvm.masked.gather.v8i32.v8p0(<8 x ptr> %ptrs, i32 4, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <8 x i32> undef)38  ret <8 x i32> %wide.masked.gather39}40 41define <8 x i32> @optsize(ptr %base, <8 x i32> %offsets) optsize {42; X64-LABEL: optsize:43; X64:       # %bb.0:44; X64-NEXT:    vextracti128 $1, %ymm0, %xmm245; X64-NEXT:    vpmovsxdq %xmm0, %ymm046; X64-NEXT:    vmovq %rdi, %xmm147; X64-NEXT:    vpbroadcastq %xmm1, %ymm148; X64-NEXT:    vpmovsxdq %xmm2, %ymm249; X64-NEXT:    vpsllq $2, %ymm0, %ymm050; X64-NEXT:    vpaddq %ymm0, %ymm1, %ymm051; X64-NEXT:    vmovq %xmm0, %rax52; X64-NEXT:    vpextrq $1, %xmm0, %rcx53; X64-NEXT:    vextracti128 $1, %ymm0, %xmm054; X64-NEXT:    vpsllq $2, %ymm2, %ymm255; X64-NEXT:    vpaddq %ymm2, %ymm1, %ymm256; X64-NEXT:    vmovd {{.*#+}} xmm1 = mem[0],zero,zero,zero57; X64-NEXT:    vpextrq $1, %xmm0, %rdx58; X64-NEXT:    vmovq %xmm0, %rsi59; X64-NEXT:    vextracti128 $1, %ymm2, %xmm060; X64-NEXT:    vmovq %xmm2, %rdi61; X64-NEXT:    vpextrq $1, %xmm2, %r862; X64-NEXT:    vpinsrd $1, (%rcx), %xmm1, %xmm163; X64-NEXT:    vmovq %xmm0, %r964; X64-NEXT:    vpextrq $1, %xmm0, %r1065; X64-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero66; X64-NEXT:    vpinsrd $2, (%rsi), %xmm1, %xmm167; X64-NEXT:    vpinsrd $1, (%r8), %xmm0, %xmm068; X64-NEXT:    vpinsrd $3, (%rdx), %xmm1, %xmm169; X64-NEXT:    vpinsrd $2, (%r9), %xmm0, %xmm070; X64-NEXT:    vpinsrd $3, (%r10), %xmm0, %xmm071; X64-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm072; X64-NEXT:    retq73  %ptrs = getelementptr inbounds i32, ptr %base, <8 x i32> %offsets74  %wide.masked.gather = call <8 x i32> @llvm.masked.gather.v8i32.v8p0(<8 x ptr> %ptrs, i32 4, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <8 x i32> undef)75  ret <8 x i32> %wide.masked.gather76}77 78define <8 x i32> @minsize(ptr %base, <8 x i32> %offsets) minsize {79; X64-LABEL: minsize:80; X64:       # %bb.0:81; X64-NEXT:    vextracti128 $1, %ymm0, %xmm282; X64-NEXT:    vpmovsxdq %xmm0, %ymm083; X64-NEXT:    vmovq %rdi, %xmm184; X64-NEXT:    vpbroadcastq %xmm1, %ymm185; X64-NEXT:    vpmovsxdq %xmm2, %ymm286; X64-NEXT:    vpsllq $2, %ymm0, %ymm087; X64-NEXT:    vpaddq %ymm0, %ymm1, %ymm088; X64-NEXT:    vmovq %xmm0, %rax89; X64-NEXT:    vpextrq $1, %xmm0, %rcx90; X64-NEXT:    vextracti128 $1, %ymm0, %xmm091; X64-NEXT:    vpsllq $2, %ymm2, %ymm292; X64-NEXT:    vpaddq %ymm2, %ymm1, %ymm293; X64-NEXT:    vmovd {{.*#+}} xmm1 = mem[0],zero,zero,zero94; X64-NEXT:    vpextrq $1, %xmm0, %rdx95; X64-NEXT:    vmovq %xmm0, %rsi96; X64-NEXT:    vextracti128 $1, %ymm2, %xmm097; X64-NEXT:    vmovq %xmm2, %rdi98; X64-NEXT:    vpextrq $1, %xmm2, %r899; X64-NEXT:    vpinsrd $1, (%rcx), %xmm1, %xmm1100; X64-NEXT:    vmovq %xmm0, %r9101; X64-NEXT:    vpextrq $1, %xmm0, %r10102; X64-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero103; X64-NEXT:    vpinsrd $2, (%rsi), %xmm1, %xmm1104; X64-NEXT:    vpinsrd $1, (%r8), %xmm0, %xmm0105; X64-NEXT:    vpinsrd $3, (%rdx), %xmm1, %xmm1106; X64-NEXT:    vpinsrd $2, (%r9), %xmm0, %xmm0107; X64-NEXT:    vpinsrd $3, (%r10), %xmm0, %xmm0108; X64-NEXT:    vinserti128 $1, %xmm0, %ymm1, %ymm0109; X64-NEXT:    retq110  %ptrs = getelementptr inbounds i32, ptr %base, <8 x i32> %offsets111  %wide.masked.gather = call <8 x i32> @llvm.masked.gather.v8i32.v8p0(<8 x ptr> %ptrs, i32 4, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <8 x i32> undef)112  ret <8 x i32> %wide.masked.gather113}114 115declare <8 x i32> @llvm.masked.gather.v8i32.v8p0(<8 x ptr>, i32 immarg, <8 x i1>, <8 x i32>)116