diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/test/CodeGen/X86/sse41-intrinsics-fast-isel.ll | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/X86/sse41-intrinsics-fast-isel.ll b/llvm/test/CodeGen/X86/sse41-intrinsics-fast-isel.ll index f106f7ec5cc..acf91cbeea1 100644 --- a/llvm/test/CodeGen/X86/sse41-intrinsics-fast-isel.ll +++ b/llvm/test/CodeGen/X86/sse41-intrinsics-fast-isel.ll @@ -468,7 +468,22 @@ define i64 @test_mm_extract_epi64(<2 x i64> %a0) { ret i64 %ext } -; TODO test_mm_extract_ps +define i32 @test_mm_extract_ps(<4 x float> %a0) { +; X32-LABEL: test_mm_extract_ps: +; X32: # BB#0: +; X32-NEXT: movshdup {{.*#+}} xmm0 = xmm0[1,1,3,3] +; X32-NEXT: movd %xmm0, %eax +; X32-NEXT: retl +; +; X64-LABEL: test_mm_extract_ps: +; X64: # BB#0: +; X64-NEXT: movshdup {{.*#+}} xmm0 = xmm0[1,1,3,3] +; X64-NEXT: movd %xmm0, %eax +; X64-NEXT: retq + %ext = extractelement <4 x float> %a0, i32 1 + %bc = bitcast float %ext to i32 + ret i32 %bc +} define <2 x double> @test_mm_floor_pd(<2 x double> %a0) { ; X32-LABEL: test_mm_floor_pd: |

