Skip to content

Commit 507e931

Browse files
committed
Update MOVI tests in AArch64SelectionDAGTest to use vector types
1 parent 7366510 commit 507e931

File tree

1 file changed

+88
-34
lines changed

1 file changed

+88
-34
lines changed

llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp

Lines changed: 88 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -321,57 +321,111 @@ TEST_F(AArch64SelectionDAGTest, ComputeKnownBits_UADDO_CARRY) {
321321
// Piggy-backing on the AArch64 tests to verify SelectionDAG::computeKnownBits.
322322
TEST_F(AArch64SelectionDAGTest, ComputeKnownBits_MOVI) {
323323
SDLoc Loc;
324-
auto Int8VT = EVT::getIntegerVT(Context, 8);
325-
auto Int16VT = EVT::getIntegerVT(Context, 16);
326-
auto Int32VT = EVT::getIntegerVT(Context, 32);
327-
auto Int64VT = EVT::getIntegerVT(Context, 64);
328-
auto N0 = DAG->getConstant(0xA5, Loc, Int8VT);
324+
auto IntSca32VT = MVT::i32;
325+
auto Int8Vec8VT = MVT::v8i8;
326+
auto Int16Vec8VT = MVT::v16i8;
327+
auto Int4Vec16VT = MVT::v4i16;
328+
auto Int8Vec16VT = MVT::v8i16;
329+
auto Int2Vec32VT = MVT::v2i32;
330+
auto Int4Vec32VT = MVT::v4i32;
331+
auto IntVec64VT = MVT::v1i64;
332+
auto Int2Vec64VT = MVT::v2i64;
333+
auto N0 = DAG->getConstant(0x000000A5, Loc, IntSca32VT);
329334
KnownBits Known;
330335

331-
auto OpMOVIedit = DAG->getNode(AArch64ISD::MOVIedit, Loc, Int64VT, N0);
332-
Known = DAG->computeKnownBits(OpMOVIedit);
336+
auto OpMOVIedit64 = DAG->getNode(AArch64ISD::MOVIedit, Loc, IntVec64VT, N0);
337+
Known = DAG->computeKnownBits(OpMOVIedit64);
333338
EXPECT_EQ(Known.Zero, APInt(64, 0x00FF00FFFF00FF00));
334339
EXPECT_EQ(Known.One, APInt(64, 0xFF00FF0000FF00FF));
335340

336-
auto N1 = DAG->getConstant(16, Loc, Int8VT);
337-
auto OpMOVImsl = DAG->getNode(AArch64ISD::MOVImsl, Loc, Int32VT, N0, N1);
338-
Known = DAG->computeKnownBits(OpMOVImsl);
341+
auto OpMOVIedit128 = DAG->getNode(AArch64ISD::MOVIedit, Loc, Int2Vec64VT, N0);
342+
Known = DAG->computeKnownBits(OpMOVIedit128);
343+
EXPECT_EQ(Known.Zero, APInt(64, 0x00FF00FFFF00FF00));
344+
EXPECT_EQ(Known.One, APInt(64, 0xFF00FF0000FF00FF));
345+
346+
auto N1 = DAG->getConstant(264, Loc, IntSca32VT);
347+
auto OpMOVImsl64 =
348+
DAG->getNode(AArch64ISD::MOVImsl, Loc, Int2Vec32VT, N0, N1);
349+
Known = DAG->computeKnownBits(OpMOVImsl64);
350+
EXPECT_EQ(Known.Zero, APInt(32, 0xFFFF5A00));
351+
EXPECT_EQ(Known.One, APInt(32, 0x0000A5FF));
352+
353+
auto N2 = DAG->getConstant(272, Loc, IntSca32VT);
354+
auto OpMOVImsl128 =
355+
DAG->getNode(AArch64ISD::MOVImsl, Loc, Int4Vec32VT, N0, N2);
356+
Known = DAG->computeKnownBits(OpMOVImsl128);
339357
EXPECT_EQ(Known.Zero, APInt(32, 0xFF5A0000));
340358
EXPECT_EQ(Known.One, APInt(32, 0x00A5FFFF));
341359

342-
auto OpMVNImsl = DAG->getNode(AArch64ISD::MVNImsl, Loc, Int32VT, N0, N1);
343-
Known = DAG->computeKnownBits(OpMVNImsl);
360+
auto OpMVNImsl64 =
361+
DAG->getNode(AArch64ISD::MVNImsl, Loc, Int2Vec32VT, N0, N2);
362+
Known = DAG->computeKnownBits(OpMVNImsl64);
344363
EXPECT_EQ(Known.Zero, APInt(32, 0x00A50000));
345364
EXPECT_EQ(Known.One, APInt(32, 0xFF5AFFFF));
346365

347-
auto N2 = DAG->getConstant(16, Loc, Int8VT);
348-
auto OpMOVIshift32 =
349-
DAG->getNode(AArch64ISD::MOVIshift, Loc, Int32VT, N0, N2);
350-
Known = DAG->computeKnownBits(OpMOVIshift32);
351-
EXPECT_EQ(Known.Zero, APInt(32, 0xFF5AFFFF));
352-
EXPECT_EQ(Known.One, APInt(32, 0x00A50000));
353-
354-
auto OpMVNIshift32 =
355-
DAG->getNode(AArch64ISD::MVNIshift, Loc, Int32VT, N0, N2);
356-
Known = DAG->computeKnownBits(OpMVNIshift32);
357-
EXPECT_EQ(Known.Zero, APInt(32, 0x00A5FFFF));
358-
EXPECT_EQ(Known.One, APInt(32, 0xFF5A0000));
359-
360-
auto N3 = DAG->getConstant(8, Loc, Int8VT);
361-
auto OpMOVIshift16 =
362-
DAG->getNode(AArch64ISD::MOVIshift, Loc, Int16VT, N0, N3);
363-
Known = DAG->computeKnownBits(OpMOVIshift16);
366+
auto OpMVNImsl128 =
367+
DAG->getNode(AArch64ISD::MVNImsl, Loc, Int4Vec32VT, N0, N1);
368+
Known = DAG->computeKnownBits(OpMVNImsl128);
369+
EXPECT_EQ(Known.Zero, APInt(32, 0x0000A500));
370+
EXPECT_EQ(Known.One, APInt(32, 0xFFFF5AFF));
371+
372+
auto N3 = DAG->getConstant(0, Loc, IntSca32VT);
373+
auto OpMOVIshift2Vec32 =
374+
DAG->getNode(AArch64ISD::MOVIshift, Loc, Int2Vec32VT, N0, N3);
375+
Known = DAG->computeKnownBits(OpMOVIshift2Vec32);
376+
EXPECT_EQ(Known.Zero, APInt(32, 0xFFFFFF5A));
377+
EXPECT_EQ(Known.One, APInt(32, 0x000000A5));
378+
379+
auto N4 = DAG->getConstant(24, Loc, IntSca32VT);
380+
auto OpMOVIshift4Vec32 =
381+
DAG->getNode(AArch64ISD::MOVIshift, Loc, Int4Vec32VT, N0, N4);
382+
Known = DAG->computeKnownBits(OpMOVIshift4Vec32);
383+
EXPECT_EQ(Known.Zero, APInt(32, 0x5AFFFFFF));
384+
EXPECT_EQ(Known.One, APInt(32, 0xA5000000));
385+
386+
auto OpMVNIshift2Vec32 =
387+
DAG->getNode(AArch64ISD::MVNIshift, Loc, Int2Vec32VT, N0, N4);
388+
Known = DAG->computeKnownBits(OpMVNIshift2Vec32);
389+
EXPECT_EQ(Known.Zero, APInt(32, 0xA5FFFFFF));
390+
EXPECT_EQ(Known.One, APInt(32, 0x5A000000));
391+
392+
auto OpMVNIshift4Vec32 =
393+
DAG->getNode(AArch64ISD::MVNIshift, Loc, Int4Vec32VT, N0, N3);
394+
Known = DAG->computeKnownBits(OpMVNIshift4Vec32);
395+
EXPECT_EQ(Known.Zero, APInt(32, 0x000000A5));
396+
EXPECT_EQ(Known.One, APInt(32, 0xFFFFFF5A));
397+
398+
auto OpMOVIshift4Vec16 =
399+
DAG->getNode(AArch64ISD::MOVIshift, Loc, Int4Vec16VT, N0, N3);
400+
Known = DAG->computeKnownBits(OpMOVIshift4Vec16);
401+
EXPECT_EQ(Known.One, APInt(16, 0x00A5));
402+
EXPECT_EQ(Known.Zero, APInt(16, 0xFF5A));
403+
404+
auto OpMOVIshift8Vec16 =
405+
DAG->getNode(AArch64ISD::MOVIshift, Loc, Int8Vec16VT, N0, N1);
406+
Known = DAG->computeKnownBits(OpMOVIshift8Vec16);
364407
EXPECT_EQ(Known.One, APInt(16, 0xA500));
365408
EXPECT_EQ(Known.Zero, APInt(16, 0x5AFF));
366409

367-
auto OpMVNIshift16 =
368-
DAG->getNode(AArch64ISD::MVNIshift, Loc, Int16VT, N0, N3);
369-
Known = DAG->computeKnownBits(OpMVNIshift16);
410+
auto OpMVNIshift4Vec16 =
411+
DAG->getNode(AArch64ISD::MVNIshift, Loc, Int4Vec16VT, N0, N1);
412+
Known = DAG->computeKnownBits(OpMVNIshift4Vec16);
370413
EXPECT_EQ(Known.Zero, APInt(16, 0xA5FF));
371414
EXPECT_EQ(Known.One, APInt(16, 0x5A00));
372415

373-
auto OpMOVI = DAG->getNode(AArch64ISD::MOVI, Loc, Int8VT, N0);
374-
Known = DAG->computeKnownBits(OpMOVI);
416+
auto OpMVNIshift8Vec16 =
417+
DAG->getNode(AArch64ISD::MVNIshift, Loc, Int8Vec16VT, N0, N3);
418+
Known = DAG->computeKnownBits(OpMVNIshift8Vec16);
419+
EXPECT_EQ(Known.Zero, APInt(16, 0x00A5));
420+
EXPECT_EQ(Known.One, APInt(16, 0xFF5A));
421+
422+
auto OpMOVI8Vec8 = DAG->getNode(AArch64ISD::MOVI, Loc, Int8Vec8VT, N0);
423+
Known = DAG->computeKnownBits(OpMOVI8Vec8);
424+
EXPECT_EQ(Known.Zero, APInt(8, 0x5A));
425+
EXPECT_EQ(Known.One, APInt(8, 0xA5));
426+
427+
auto OpMOVI16Vec8 = DAG->getNode(AArch64ISD::MOVI, Loc, Int16Vec8VT, N0);
428+
Known = DAG->computeKnownBits(OpMOVI16Vec8);
375429
EXPECT_EQ(Known.Zero, APInt(8, 0x5A));
376430
EXPECT_EQ(Known.One, APInt(8, 0xA5));
377431
}

0 commit comments

Comments
 (0)