Chromium Code Reviews| Index: tests_lit/llvm2ice_tests/nacl-other-intrinsics-mips.ll |
| diff --git a/tests_lit/llvm2ice_tests/nacl-other-intrinsics-mips.ll b/tests_lit/llvm2ice_tests/nacl-other-intrinsics-mips.ll |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..efef99308d724102fd960787d5dfd63e366ec760 |
| --- /dev/null |
| +++ b/tests_lit/llvm2ice_tests/nacl-other-intrinsics-mips.ll |
| @@ -0,0 +1,101 @@ |
| +; RUN: %if --need=target_MIPS32 --need=allow_dump \ |
| +; RUN: --command %p2i --filetype=asm --assemble --disassemble --target mips32\ |
| +; RUN: -i %s --args -Om1 --skip-unimplemented \ |
| +; RUN: -allow-externally-defined-symbols \ |
| +; RUN: | %if --need=target_MIPS32 --need=allow_dump \ |
| +; RUN: --command FileCheck --check-prefix MIPS32 %s |
| + |
| +declare float @llvm.sqrt.f32(float) |
| +declare double @llvm.sqrt.f64(double) |
| +declare float @llvm.fabs.f32(float) |
| +declare double @llvm.fabs.f64(double) |
| + |
| +define internal float @test_sqrt_float(float %x, i32 %iptr) { |
| +entry: |
| + %r = call float @llvm.sqrt.f32(float %x) |
| + %r2 = call float @llvm.sqrt.f32(float %r) |
| + %r3 = call float @llvm.sqrt.f32(float -0.0) |
| + %r4 = fadd float %r2, %r3 |
| + ret float %r4 |
| +} |
| +; MIPS32-LABEL: test_sqrt_float |
| +; MIPS32: sqrt.s |
| +; MIPS32: sqrt.s |
| +; MIPS32: sqrt.s |
| +; MIPS32: add.s |
| + |
| +define internal float @test_sqrt_float_mergeable_load(float %x, i32 %iptr) { |
|
Jim Stichnoth
2016/09/09 17:12:41
Do you need these "mergeable_load" tests?
I think
obucinac
2016/09/09 17:39:40
Removed
|
| +entry: |
| + %__2 = inttoptr i32 %iptr to float* |
| + %y = load float, float* %__2, align 4 |
| + %r5 = call float @llvm.sqrt.f32(float %y) |
| + %r6 = fadd float %x, %r5 |
| + ret float %r6 |
| +} |
| +; MIPS32-LABEL: test_sqrt_float_mergeable_load |
| +; MIPS32: sqrt.s |
| +; MIPS32: add.s |
| + |
| +define internal double @test_sqrt_double(double %x, i32 %iptr) { |
| +entry: |
| + %r = call double @llvm.sqrt.f64(double %x) |
| + %r2 = call double @llvm.sqrt.f64(double %r) |
| + %r3 = call double @llvm.sqrt.f64(double -0.0) |
| + %r4 = fadd double %r2, %r3 |
| + ret double %r4 |
| +} |
| +; MIPS32-LABEL: test_sqrt_double |
| +; MIPS32: sqrt.d |
| +; MIPS32: sqrt.d |
| +; MIPS32: sqrt.d |
| +; MIPS32: add.d |
| + |
| +define internal double @test_sqrt_double_mergeable_load(double %x, i32 %iptr) { |
| +entry: |
| + %__2 = inttoptr i32 %iptr to double* |
| + %y = load double, double* %__2, align 8 |
| + %r5 = call double @llvm.sqrt.f64(double %y) |
| + %r6 = fadd double %x, %r5 |
| + ret double %r6 |
| +} |
| +; MIPS32-LABEL: test_sqrt_double_mergeable_load |
| +; MIPS32: sqrt.d |
| +; MIPS32: add.d |
| + |
| +define internal float @test_sqrt_ignored(float %x, double %y) { |
| +entry: |
| + %ignored1 = call float @llvm.sqrt.f32(float %x) |
| + %ignored2 = call double @llvm.sqrt.f64(double %y) |
| + ret float 0.0 |
| +} |
| +; MIPS32-LABEL: test_sqrt_ignored |
| +; MIPS32: sqrt.s |
| +; MIPS32: sqrt.d |
| + |
| +define internal float @test_fabs_float(float %x) { |
| +entry: |
| + %r = call float @llvm.fabs.f32(float %x) |
| + %r2 = call float @llvm.fabs.f32(float %r) |
| + %r3 = call float @llvm.fabs.f32(float -0.0) |
| + %r4 = fadd float %r2, %r3 |
| + ret float %r4 |
| +} |
| +; MIPS32-LABEL: test_fabs_float |
| +; MIPS32: abs.s |
| +; MIPS32: abs.s |
| +; MIPS32: abs.s |
| +; MIPS32: add.s |
| + |
| +define internal double @test_fabs_double(double %x) { |
| +entry: |
| + %r = call double @llvm.fabs.f64(double %x) |
| + %r2 = call double @llvm.fabs.f64(double %r) |
| + %r3 = call double @llvm.fabs.f64(double -0.0) |
| + %r4 = fadd double %r2, %r3 |
| + ret double %r4 |
| +} |
| +; MIPS32-LABEL: test_fabs_double |
| +; MIPS32: abs.d |
| +; MIPS32: abs.d |
| +; MIPS32: abs.d |
| +; MIPS32: add.d |