brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.3 KiB · c66b101 Raw
132 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512fp16,+avx512vl| FileCheck %s3 4declare <8 x half> @test_call_8()5 6declare <16 x half> @test_call_16()7 8declare <32 x half> @test_call_32()9 10define <8 x i1> @test_cmp_v8half_ogt(<8 x half> %rhs, <8 x i1> %mask) nounwind {11; CHECK-LABEL: test_cmp_v8half_ogt:12; CHECK:       # %bb.0:13; CHECK-NEXT:    subq $40, %rsp14; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill15; CHECK-NEXT:    vpsllw $15, %xmm1, %xmm016; CHECK-NEXT:    vpmovw2m %xmm0, %k117; CHECK-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill18; CHECK-NEXT:    callq test_call_8@PLT19; CHECK-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 2-byte Reload20; CHECK-NEXT:    vcmpgtph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %k0 {%k1} # 16-byte Folded Reload21; CHECK-NEXT:    vpmovm2w %k0, %xmm022; CHECK-NEXT:    addq $40, %rsp23; CHECK-NEXT:    retq24    %lhs = call <8 x half> @test_call_8()25    %comp = fcmp ogt <8 x half> %lhs, %rhs26    %res = and <8 x i1> %comp, %mask27    ret <8 x i1> %res28}29 30define <8 x i1> @test_cmp_v8half_ogt_commute(<8 x half> %rhs, <8 x i1> %mask) nounwind {31; CHECK-LABEL: test_cmp_v8half_ogt_commute:32; CHECK:       # %bb.0:33; CHECK-NEXT:    subq $40, %rsp34; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill35; CHECK-NEXT:    vpsllw $15, %xmm1, %xmm036; CHECK-NEXT:    vpmovw2m %xmm0, %k137; CHECK-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill38; CHECK-NEXT:    callq test_call_8@PLT39; CHECK-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 2-byte Reload40; CHECK-NEXT:    vcmpltph {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %k0 {%k1} # 16-byte Folded Reload41; CHECK-NEXT:    vpmovm2w %k0, %xmm042; CHECK-NEXT:    addq $40, %rsp43; CHECK-NEXT:    retq44    %lhs = call <8 x half> @test_call_8()45    %comp = fcmp ogt <8 x half> %rhs, %lhs46    %res = and <8 x i1> %comp, %mask47    ret <8 x i1> %res48}49 50 51define <16 x i1> @test_cmp_v16half_olt(<16 x half> %rhs, <16 x i1> %mask) nounwind {52; CHECK-LABEL: test_cmp_v16half_olt:53; CHECK:       # %bb.0:54; CHECK-NEXT:    subq $56, %rsp55; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill56; CHECK-NEXT:    vpsllw $7, %xmm1, %xmm057; CHECK-NEXT:    vpmovb2m %xmm0, %k158; CHECK-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill59; CHECK-NEXT:    callq test_call_16@PLT60; CHECK-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 2-byte Reload61; CHECK-NEXT:    vcmpltph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %k0 {%k1} # 32-byte Folded Reload62; CHECK-NEXT:    vpmovm2b %k0, %xmm063; CHECK-NEXT:    addq $56, %rsp64; CHECK-NEXT:    vzeroupper65; CHECK-NEXT:    retq66    %lhs = call <16 x half> @test_call_16()67    %comp = fcmp olt <16 x half> %lhs, %rhs68    %res = and <16 x i1> %comp, %mask69    ret <16 x i1> %res70}71 72define <16 x i1> @test_cmp_v16half_olt_commute(<16 x half> %rhs, <16 x i1> %mask) nounwind {73; CHECK-LABEL: test_cmp_v16half_olt_commute:74; CHECK:       # %bb.0:75; CHECK-NEXT:    subq $56, %rsp76; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill77; CHECK-NEXT:    vpsllw $7, %xmm1, %xmm078; CHECK-NEXT:    vpmovb2m %xmm0, %k179; CHECK-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill80; CHECK-NEXT:    callq test_call_16@PLT81; CHECK-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 2-byte Reload82; CHECK-NEXT:    vcmpgtph {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %k0 {%k1} # 32-byte Folded Reload83; CHECK-NEXT:    vpmovm2b %k0, %xmm084; CHECK-NEXT:    addq $56, %rsp85; CHECK-NEXT:    vzeroupper86; CHECK-NEXT:    retq87    %lhs = call <16 x half> @test_call_16()88    %comp = fcmp olt <16 x half> %rhs, %lhs89    %res = and <16 x i1> %comp, %mask90    ret <16 x i1> %res91}92 93define <32 x i1> @test_cmp_v32half_oge(<32 x half> %rhs, <32 x i1> %mask) nounwind {94; CHECK-LABEL: test_cmp_v32half_oge:95; CHECK:       # %bb.0:96; CHECK-NEXT:    subq $88, %rsp97; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill98; CHECK-NEXT:    vpsllw $7, %ymm1, %ymm099; CHECK-NEXT:    vpmovb2m %ymm0, %k1100; CHECK-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill101; CHECK-NEXT:    callq test_call_32@PLT102; CHECK-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 4-byte Reload103; CHECK-NEXT:    vcmpgeph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %k0 {%k1} # 64-byte Folded Reload104; CHECK-NEXT:    vpmovm2b %k0, %ymm0105; CHECK-NEXT:    addq $88, %rsp106; CHECK-NEXT:    retq107    %lhs = call <32 x half> @test_call_32()108    %comp = fcmp oge <32 x half> %lhs, %rhs109    %res = and <32 x i1> %comp, %mask110    ret <32 x i1> %res111}112 113define <32 x i1> @test_cmp_v32half_oge_commute(<32 x half> %rhs, <32 x i1> %mask) nounwind {114; CHECK-LABEL: test_cmp_v32half_oge_commute:115; CHECK:       # %bb.0:116; CHECK-NEXT:    subq $88, %rsp117; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill118; CHECK-NEXT:    vpsllw $7, %ymm1, %ymm0119; CHECK-NEXT:    vpmovb2m %ymm0, %k1120; CHECK-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill121; CHECK-NEXT:    callq test_call_32@PLT122; CHECK-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 4-byte Reload123; CHECK-NEXT:    vcmpleph {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %k0 {%k1} # 64-byte Folded Reload124; CHECK-NEXT:    vpmovm2b %k0, %ymm0125; CHECK-NEXT:    addq $88, %rsp126; CHECK-NEXT:    retq127    %lhs = call <32 x half> @test_call_32()128    %comp = fcmp oge <32 x half> %rhs, %lhs129    %res = and <32 x i1> %comp, %mask130    ret <32 x i1> %res131}132