brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 214ae56 Raw
66 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O3 -mtriple=x86_64-linux-generic -mattr=avx < %s | FileCheck %s3 4; Bug 45563:5; The LowerMLOAD() method AVX masked load branch should6; use the operand vector type rather than the mask type.7; Given, for example:8;   v4f64,ch = masked_load ..9; The select should be:10;   v4f64 = vselect ..11; instead of:12;   v4i64 = vselect ..13 14define <16 x double> @bug45563(ptr %addr, <16 x double> %dst, <16 x i64> %e, <16 x i64> %f) {15; CHECK-LABEL: bug45563:16; CHECK:       # %bb.0:17; CHECK-NEXT:    pushq %rbp18; CHECK-NEXT:    .cfi_def_cfa_offset 1619; CHECK-NEXT:    .cfi_offset %rbp, -1620; CHECK-NEXT:    movq %rsp, %rbp21; CHECK-NEXT:    .cfi_def_cfa_register %rbp22; CHECK-NEXT:    andq $-32, %rsp23; CHECK-NEXT:    subq $32, %rsp24; CHECK-NEXT:    vextractf128 $1, %ymm7, %xmm825; CHECK-NEXT:    vmovdqa 112(%rbp), %xmm926; CHECK-NEXT:    vmovdqa 128(%rbp), %xmm1027; CHECK-NEXT:    vpcmpgtq %xmm8, %xmm10, %xmm828; CHECK-NEXT:    vpcmpgtq %xmm7, %xmm9, %xmm729; CHECK-NEXT:    vinsertf128 $1, %xmm8, %ymm7, %ymm730; CHECK-NEXT:    vextractf128 $1, %ymm6, %xmm831; CHECK-NEXT:    vmovdqa 80(%rbp), %xmm932; CHECK-NEXT:    vmovdqa 96(%rbp), %xmm1033; CHECK-NEXT:    vpcmpgtq %xmm8, %xmm10, %xmm834; CHECK-NEXT:    vpcmpgtq %xmm6, %xmm9, %xmm635; CHECK-NEXT:    vinsertf128 $1, %xmm8, %ymm6, %ymm636; CHECK-NEXT:    vextractf128 $1, %ymm5, %xmm837; CHECK-NEXT:    vmovdqa 48(%rbp), %xmm938; CHECK-NEXT:    vmovdqa 64(%rbp), %xmm1039; CHECK-NEXT:    vpcmpgtq %xmm8, %xmm10, %xmm840; CHECK-NEXT:    vpcmpgtq %xmm5, %xmm9, %xmm541; CHECK-NEXT:    vinsertf128 $1, %xmm8, %ymm5, %ymm542; CHECK-NEXT:    vextractf128 $1, %ymm4, %xmm843; CHECK-NEXT:    vmovdqa 16(%rbp), %xmm944; CHECK-NEXT:    vmovdqa 32(%rbp), %xmm1045; CHECK-NEXT:    vpcmpgtq %xmm8, %xmm10, %xmm846; CHECK-NEXT:    vpcmpgtq %xmm4, %xmm9, %xmm447; CHECK-NEXT:    vinsertf128 $1, %xmm8, %ymm4, %ymm448; CHECK-NEXT:    vmaskmovpd (%rdi), %ymm4, %ymm849; CHECK-NEXT:    vblendvpd %ymm4, %ymm8, %ymm0, %ymm050; CHECK-NEXT:    vmaskmovpd 32(%rdi), %ymm5, %ymm451; CHECK-NEXT:    vblendvpd %ymm5, %ymm4, %ymm1, %ymm152; CHECK-NEXT:    vmaskmovpd 64(%rdi), %ymm6, %ymm453; CHECK-NEXT:    vblendvpd %ymm6, %ymm4, %ymm2, %ymm254; CHECK-NEXT:    vmaskmovpd 96(%rdi), %ymm7, %ymm455; CHECK-NEXT:    vblendvpd %ymm7, %ymm4, %ymm3, %ymm356; CHECK-NEXT:    movq %rbp, %rsp57; CHECK-NEXT:    popq %rbp58; CHECK-NEXT:    .cfi_def_cfa %rsp, 859; CHECK-NEXT:    retq60  %mask = icmp slt <16 x i64> %e, %f61  %res = call <16 x double> @llvm.masked.load.v16f64.p0(ptr %addr, i32 4, <16 x i1>%mask, <16 x double> %dst)62  ret <16 x double> %res63}64 65declare <16 x double> @llvm.masked.load.v16f64.p0(ptr %addr, i32 %align, <16 x i1> %mask, <16 x double> %dst)66