brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · 6161009 Raw
65 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=x86_64-unknown-unknown -verify-machineinstrs | FileCheck %s --check-prefixes=SSE23; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx -verify-machineinstrs | FileCheck %s --check-prefixes=AVX4; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -verify-machineinstrs | FileCheck %s --check-prefixes=AVX5125 6define half @test(float %f, ptr %p) nounwind {7; SSE2-LABEL: test:8; SSE2:       # %bb.0:9; SSE2-NEXT:    pushq %rbx10; SSE2-NEXT:    subq $16, %rsp11; SSE2-NEXT:    movq %rdi, %rbx12; SSE2-NEXT:    callq __truncsfhf2@PLT13; SSE2-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill14; SSE2-NEXT:    callq __extendhfsf2@PLT15; SSE2-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill16; SSE2-NEXT:    #APP17; SSE2-NEXT:    #NO_APP18; SSE2-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload19; SSE2-NEXT:    # xmm0 = mem[0],zero,zero,zero20; SSE2-NEXT:    movss %xmm0, (%rbx)21; SSE2-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload22; SSE2-NEXT:    # xmm0 = mem[0],zero,zero,zero23; SSE2-NEXT:    addq $16, %rsp24; SSE2-NEXT:    popq %rbx25; SSE2-NEXT:    retq26;27; AVX-LABEL: test:28; AVX:       # %bb.0:29; AVX-NEXT:    pushq %rbx30; AVX-NEXT:    subq $16, %rsp31; AVX-NEXT:    movq %rdi, %rbx32; AVX-NEXT:    callq __truncsfhf2@PLT33; AVX-NEXT:    vmovss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill34; AVX-NEXT:    callq __extendhfsf2@PLT35; AVX-NEXT:    vmovss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill36; AVX-NEXT:    #APP37; AVX-NEXT:    #NO_APP38; AVX-NEXT:    vmovss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload39; AVX-NEXT:    # xmm0 = mem[0],zero,zero,zero40; AVX-NEXT:    vmovss %xmm0, (%rbx)41; AVX-NEXT:    vmovss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload42; AVX-NEXT:    # xmm0 = mem[0],zero,zero,zero43; AVX-NEXT:    addq $16, %rsp44; AVX-NEXT:    popq %rbx45; AVX-NEXT:    retq46;47; AVX512-LABEL: test:48; AVX512:       # %bb.0:49; AVX512-NEXT:    vcvtps2ph $4, %xmm0, %xmm050; AVX512-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill51; AVX512-NEXT:    vcvtph2ps %xmm0, %xmm052; AVX512-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill53; AVX512-NEXT:    #APP54; AVX512-NEXT:    #NO_APP55; AVX512-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload56; AVX512-NEXT:    vmovss %xmm0, (%rdi)57; AVX512-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload58; AVX512-NEXT:    retq59  %t = fptrunc float %f to half60  %t2 = fpext half %t to float61  tail call void asm sideeffect "", "~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{dirflag},~{fpsr},~{flags}"()62  store float %t2, ptr %p63  ret half %t64}65