diff options
author | Akira Hatanaka <ahatanaka@mips.com> | 2013-05-03 18:37:49 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanaka@mips.com> | 2013-05-03 18:37:49 +0000 |
commit | a2b2200ff8684ba23c64b24c0128a78f4b6e3c73 (patch) | |
tree | d2449ab47f16331a31b2a270ec1e133e0651a845 /test/CodeGen | |
parent | 4bcd5f888fa762613cf8096a79ba7b8a72665de2 (diff) | |
download | llvm-a2b2200ff8684ba23c64b24c0128a78f4b6e3c73.tar.gz llvm-a2b2200ff8684ba23c64b24c0128a78f4b6e3c73.tar.bz2 llvm-a2b2200ff8684ba23c64b24c0128a78f4b6e3c73.tar.xz |
[mips] Split the DSP control register and define one register for each field of
its fields.
This removes false dependencies between DSP instructions which access different
fields of the the control register. Implicit register operands are added to
instructions RDDSP and WRDSP after instruction selection, depending on the
value of the mask operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181041 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen')
-rw-r--r-- | test/CodeGen/Mips/dsp-r1.ll | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/test/CodeGen/Mips/dsp-r1.ll b/test/CodeGen/Mips/dsp-r1.ll index c9dc8cfd0b..acdd17d1af 100644 --- a/test/CodeGen/Mips/dsp-r1.ll +++ b/test/CodeGen/Mips/dsp-r1.ll @@ -772,6 +772,7 @@ entry: %0 = bitcast i32 %a0.coerce to <4 x i8> %1 = bitcast i32 %a1.coerce to <4 x i8> + tail call void @llvm.mips.wrdsp(i32 %i0, i32 16) %2 = tail call <4 x i8> @llvm.mips.pick.qb(<4 x i8> %0, <4 x i8> %1) %3 = bitcast <4 x i8> %2 to i32 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 @@ -786,6 +787,7 @@ entry: %0 = bitcast i32 %a0.coerce to <2 x i16> %1 = bitcast i32 %a1.coerce to <2 x i16> + tail call void @llvm.mips.wrdsp(i32 %i0, i32 16) %2 = tail call <2 x i16> @llvm.mips.pick.ph(<2 x i16> %0, <2 x i16> %1) %3 = bitcast <2 x i16> %2 to i32 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 @@ -808,14 +810,6 @@ entry: declare <2 x i16> @llvm.mips.packrl.ph(<2 x i16>, <2 x i16>) nounwind readnone -define i32 @test__builtin_mips_rddsp1(i32 %i0) nounwind readonly { -entry: -; CHECK: rddsp ${{[0-9]+}} - - %0 = tail call i32 @llvm.mips.rddsp(i32 31) - ret i32 %0 -} - define { i32 } @test__builtin_mips_shll_qb1(i32 %i0, i32 %a0.coerce) nounwind { entry: ; CHECK: shll.qb @@ -1232,6 +1226,7 @@ declare i32 @llvm.mips.lwx(i8*, i32) nounwind readonly define i32 @test__builtin_mips_wrdsp1(i32 %i0, i32 %a0) nounwind { entry: ; CHECK: wrdsp ${{[0-9]+}} +; CHECK: rddsp ${{[0-9]+}} tail call void @llvm.mips.wrdsp(i32 %a0, i32 31) %0 = tail call i32 @llvm.mips.rddsp(i32 31) |