| 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..cafa2db8ebf298345229b86593bcbb28b730ba5c
|
| --- /dev/null
|
| +++ b/tests_lit/llvm2ice_tests/nacl-other-intrinsics-mips.ll
|
| @@ -0,0 +1,105 @@
|
| +; 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
|
| +
|
| +; RUN: %if --need=target_MIPS32 --need=allow_dump \
|
| +; RUN: --command %p2i --filetype=asm --assemble --disassemble --target mips32\
|
| +; RUN: -i %s --args -O2 --skip-unimplemented \
|
| +; RUN: -allow-externally-defined-symbols \
|
| +; RUN: | %if --need=target_MIPS32 --need=allow_dump \
|
| +; RUN: --command FileCheck --check-prefix MIPS32-O2 %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
|
| +; MIPS32-O2-LABEL: test_sqrt_float
|
| +; MIPS32-O2: sqrt.s
|
| +; MIPS32-O2: sqrt.s
|
| +; MIPS32-O2: sqrt.s
|
| +; MIPS32-O2: 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
|
| +; MIPS32-O2-LABEL: test_sqrt_double
|
| +; MIPS32-O2: sqrt.d
|
| +; MIPS32-O2: sqrt.d
|
| +; MIPS32-O2: sqrt.d
|
| +; MIPS32-O2: 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
|
| +; MIPS32-O2-LABEL: test_sqrt_ignored
|
| +
|
| +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
|
| +; MIPS32-O2-LABEL: test_fabs_float
|
| +; MIPS32-O2: abs.s
|
| +; MIPS32-O2: abs.s
|
| +; MIPS32-O2: abs.s
|
| +; MIPS32-O2: 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
|
| +; MIPS32-O2-LABEL: test_fabs_double
|
| +; MIPS32-O2: abs.d
|
| +; MIPS32-O2: abs.d
|
| +; MIPS32-O2: abs.d
|
| +; MIPS32-O2: add.d
|
|
|