aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests
diff options
context:
space:
mode:
authorSerge Pavlov <sepavloff@gmail.com>2024-06-25 16:13:52 +0700
committerGitHub <noreply@github.com>2024-06-25 16:13:52 +0700
commitf9795f34a6b358bdf02389ba01765924a2ad0b9f (patch)
tree39e4667ec6406ec8203cedd60a683e4436a1e916 /llvm/unittests
parent5feb32ba929f9e517c530217cabb09d1d734a763 (diff)
downloadllvm-f9795f34a6b358bdf02389ba01765924a2ad0b9f.zip
llvm-f9795f34a6b358bdf02389ba01765924a2ad0b9f.tar.gz
llvm-f9795f34a6b358bdf02389ba01765924a2ad0b9f.tar.bz2
[GlobalISel] Add build methods for FP environment intrinsics (#96607)
This change adds methods like buildGetFPEnv and similar for opcodes that represent manipulation on floating-point state.
Diffstat (limited to 'llvm/unittests')
-rw-r--r--llvm/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/llvm/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp b/llvm/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp
index 7b4a06f..2c068ba 100644
--- a/llvm/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp
+++ b/llvm/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp
@@ -449,3 +449,34 @@ TEST_F(AArch64GISelMITest, BuildBitfieldExtract) {
EXPECT_TRUE(CheckMachineFunction(*MF, CheckStr)) << *MF;
}
+
+TEST_F(AArch64GISelMITest, BuildFPEnv) {
+ setUp();
+ if (!TM)
+ GTEST_SKIP();
+
+ LLT S32 = LLT::scalar(32);
+ SmallVector<Register, 4> Copies;
+ collectCopies(Copies, MF);
+
+ B.buildGetFPEnv(Copies[0]);
+ B.buildSetFPEnv(Copies[1]);
+ B.buildResetFPEnv();
+ auto GetFPMode = B.buildGetFPMode(S32);
+ B.buildSetFPMode(GetFPMode);
+ B.buildResetFPMode();
+
+ auto CheckStr = R"(
+ ; CHECK: [[COPY0:%[0-9]+]]:_(s64) = COPY $x0
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
+ ; CHECK: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2
+ ; CHECK: [[COPY0]]:_(s64) = G_GET_FPENV
+ ; CHECK: G_SET_FPENV [[COPY1]]:_(s64)
+ ; CHECK: G_RESET_FPENV
+ ; CHECK: [[FPMODE:%[0-9]+]]:_(s32) = G_GET_FPMODE
+ ; CHECK: G_SET_FPMODE [[FPMODE]]:_(s32)
+ ; CHECK: G_RESET_FPMODE
+ )";
+
+ EXPECT_TRUE(CheckMachineFunction(*MF, CheckStr)) << *MF;
+}