diff options
Diffstat (limited to 'test/CodeGen/Mips/msa/special.ll')
-rw-r--r-- | test/CodeGen/Mips/msa/special.ll | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/test/CodeGen/Mips/msa/special.ll b/test/CodeGen/Mips/msa/special.ll index 60a4369..f65a14f 100644 --- a/test/CodeGen/Mips/msa/special.ll +++ b/test/CodeGen/Mips/msa/special.ll @@ -1,6 +1,9 @@ ; Test the MSA intrinsics that are encoded with the SPECIAL instruction format. -; RUN: llc -march=mips -mattr=+msa,+fp64 < %s | FileCheck %s +; RUN: llc -march=mips -mattr=+msa,+fp64 < %s | \ +; RUN: FileCheck %s --check-prefix=MIPS32 +; RUN: llc -march=mips64 -mcpu=mips64r2 -mattr=+msa,+fp64 < %s | \ +; RUN: FileCheck %s --check-prefix=MIPS64 define i32 @llvm_mips_lsa_test(i32 %a, i32 %b) nounwind { entry: @@ -10,9 +13,9 @@ entry: declare i32 @llvm.mips.lsa(i32, i32, i32) nounwind -; CHECK: llvm_mips_lsa_test: -; CHECK: lsa {{\$[0-9]+}}, {{\$[0-9]+}}, {{\$[0-9]+}}, 2 -; CHECK: .size llvm_mips_lsa_test +; MIPS32: llvm_mips_lsa_test: +; MIPS32: lsa {{\$[0-9]+}}, $5, $4, 2 +; MIPS32: .size llvm_mips_lsa_test define i32 @lsa_test(i32 %a, i32 %b) nounwind { entry: @@ -21,6 +24,29 @@ entry: ret i32 %1 } -; CHECK: lsa_test: -; CHECK: lsa {{\$[0-9]+}}, {{\$[0-9]+}}, {{\$[0-9]+}}, 2 -; CHECK: .size lsa_test +; MIPS32: lsa_test: +; MIPS32: lsa {{\$[0-9]+}}, $5, $4, 2 +; MIPS32: .size lsa_test + +define i64 @llvm_mips_dlsa_test(i64 %a, i64 %b) nounwind { +entry: + %0 = tail call i64 @llvm.mips.dlsa(i64 %a, i64 %b, i32 2) + ret i64 %0 +} + +declare i64 @llvm.mips.dlsa(i64, i64, i32) nounwind + +; MIPS64: llvm_mips_dlsa_test: +; MIPS64: dlsa {{\$[0-9]+}}, $5, $4, 2 +; MIPS64: .size llvm_mips_dlsa_test + +define i64 @dlsa_test(i64 %a, i64 %b) nounwind { +entry: + %0 = shl i64 %b, 2 + %1 = add i64 %a, %0 + ret i64 %1 +} + +; MIPS64: dlsa_test: +; MIPS64: dlsa {{\$[0-9]+}}, $5, $4, 2 +; MIPS64: .size dlsa_test |