diff options
Diffstat (limited to 'test/CodeGen/X86/vec_unsafe-fp-math.ll')
-rw-r--r-- | test/CodeGen/X86/vec_unsafe-fp-math.ll | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/CodeGen/X86/vec_unsafe-fp-math.ll b/test/CodeGen/X86/vec_unsafe-fp-math.ll new file mode 100644 index 0000000000..827d4184d1 --- /dev/null +++ b/test/CodeGen/X86/vec_unsafe-fp-math.ll @@ -0,0 +1,23 @@ +; RUN: llc < %s -enable-unsafe-fp-math -mtriple=x86_64-unknown-unknown -mcpu=corei7 | FileCheck %s + +; Make sure that vectors get the same benefits as scalars when using unsafe-fp-math. + +; Subtracting zero is free. +define <4 x float> @vec_fsub_zero(<4 x float> %x) { +; CHECK-LABEL: vec_fsub_zero: +; CHECK-NOT: subps +; CHECK-NOT: xorps +; CHECK: retq + %sub = fsub <4 x float> %x, zeroinitializer + ret <4 x float> %sub +} + +; Negating doesn't require subtraction. +define <4 x float> @vec_fneg(<4 x float> %x) { +; CHECK-LABEL: vec_fneg: +; CHECK: xorps {{.*}}LCP{{.*}}, %xmm0 +; CHECK-NOT: subps +; CHECK-NEXT: retq + %sub = fsub <4 x float> zeroinitializer, %x + ret <4 x float> %sub +} |