diff options
author | Serge Pavlov <sepavloff@gmail.com> | 2024-06-25 16:13:52 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-25 16:13:52 +0700 |
commit | f9795f34a6b358bdf02389ba01765924a2ad0b9f (patch) | |
tree | 39e4667ec6406ec8203cedd60a683e4436a1e916 /llvm/unittests | |
parent | 5feb32ba929f9e517c530217cabb09d1d734a763 (diff) | |
download | llvm-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.cpp | 31 |
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; +} |