; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4 ; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr +avx < %s | FileCheck %s ; The C source used as a base for generating this test:. ; unsigned test(float f) ; { ; unsigned i; ; // Copies f into the output operand i ; asm volatile ("" : "=r" (i) : "0" (f)); ; return i; ; } define i32 @test_int_float(float %f) { ; CHECK-LABEL: test_int_float: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vmovd %xmm0, %eax ; CHECK-NEXT: #APP ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: retq entry: %asm_call = call i32 asm sideeffect "", "=r,0,~{dirflag},~{fpsr},~{flags}"(float %f) ret i32 %asm_call } define i32 @test_int_ptr(ptr %f) { ; CHECK-LABEL: test_int_ptr: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rdi, %rax ; CHECK-NEXT: #APP ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: # kill: def $eax killed $eax killed $rax ; CHECK-NEXT: retq entry: %asm_call = call i32 asm sideeffect "", "=r,0,~{dirflag},~{fpsr},~{flags}"(ptr %f) ret i32 %asm_call } define i64 @test_int_vec(<4 x i16> %v) { ; CHECK-LABEL: test_int_vec: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: #APP ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: vmovq %xmm0, %rax ; CHECK-NEXT: retq entry: %asm_call = call i64 asm sideeffect "", "=v,0,~{dirflag},~{fpsr},~{flags}"(<4 x i16> %v) ret i64 %asm_call } define <4 x i32> @test_int_vec_float_vec(<4 x float> %f) { ; CHECK-LABEL: test_int_vec_float_vec: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: #APP ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: retq entry: %asm_call = call <4 x i32> asm sideeffect "", "=v,0,~{dirflag},~{fpsr},~{flags}"(<4 x float> %f) ret <4 x i32> %asm_call }