10f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis//===- llvm/unittest/ADT/PackedVectorTest.cpp - PackedVector tests --------===// 20f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis// 30f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis// The LLVM Compiler Infrastructure 40f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis// 50f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis// This file is distributed under the University of Illinois Open Source 60f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis// License. See LICENSE.TXT for details. 70f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis// 80f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis//===----------------------------------------------------------------------===// 90f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 100f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis// BitVectorTest tests fail on PowerPC for unknown reasons, so disable this 110f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis// as well since it depends on a BitVector. 120f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis#ifndef __ppc__ 130f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 140f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis#include "llvm/ADT/PackedVector.h" 150f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis#include "gtest/gtest.h" 160f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 170f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidisusing namespace llvm; 180f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 190f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidisnamespace { 200f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 210f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios KyrtzidisTEST(PackedVectorTest, Operation) { 220f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis PackedVector<unsigned, 2> Vec; 230f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(0U, Vec.size()); 240f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_TRUE(Vec.empty()); 250f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 260f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec.resize(5); 270f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(5U, Vec.size()); 280f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_FALSE(Vec.empty()); 290f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 300f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec.resize(11); 310f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(11U, Vec.size()); 320f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_FALSE(Vec.empty()); 330f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 340f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis PackedVector<unsigned, 2> Vec2(3); 350f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(3U, Vec2.size()); 360f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_FALSE(Vec2.empty()); 370f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 380f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec.clear(); 390f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(0U, Vec.size()); 400f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_TRUE(Vec.empty()); 410f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 420f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec.push_back(2); 430f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec.push_back(0); 440f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec.push_back(1); 450f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec.push_back(3); 460f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 470f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(2U, Vec[0]); 480f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(0U, Vec[1]); 490f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(1U, Vec[2]); 500f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(3U, Vec[3]); 510f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 520f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_FALSE(Vec == Vec2); 530f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_TRUE(Vec != Vec2); 540f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 550f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec2.swap(Vec); 560f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(3U, Vec.size()); 570f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_FALSE(Vec.empty()); 580f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(0U, Vec[0]); 590f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(0U, Vec[1]); 600f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(0U, Vec[2]); 610f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 620f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(2U, Vec2[0]); 630f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(0U, Vec2[1]); 640f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(1U, Vec2[2]); 650f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(3U, Vec2[3]); 660f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 670f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec = Vec2; 680f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_TRUE(Vec == Vec2); 690f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_FALSE(Vec != Vec2); 700f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 710f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec[1] = 1; 720f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec2[1] = 2; 730f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec |= Vec2; 740f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_EQ(3U, Vec[1]); 750f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis} 760f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 775cf34feb6775e6528c728e8d0c359aa68561a373Argyrios Kyrtzidis#ifdef EXPECT_DEBUG_DEATH 785cf34feb6775e6528c728e8d0c359aa68561a373Argyrios Kyrtzidis 790f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios KyrtzidisTEST(PackedVectorTest, UnsignedValues) { 800f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis PackedVector<unsigned, 2> Vec(1); 810f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec[0] = 0; 820f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec[0] = 1; 830f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec[0] = 2; 840f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec[0] = 3; 850f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_DEBUG_DEATH(Vec[0] = 4, "value is too big"); 860f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_DEBUG_DEATH(Vec[0] = -1, "value is too big"); 870f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_DEBUG_DEATH(Vec[0] = 0x100, "value is too big"); 880f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 890f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis PackedVector<unsigned, 3> Vec2(1); 900f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec2[0] = 0; 910f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec2[0] = 7; 920f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_DEBUG_DEATH(Vec[0] = 8, "value is too big"); 930f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis} 940f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 950f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios KyrtzidisTEST(PackedVectorTest, SignedValues) { 960f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis PackedVector<signed, 2> Vec(1); 970f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec[0] = -2; 980f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec[0] = -1; 990f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec[0] = 0; 1000f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec[0] = 1; 1010f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_DEBUG_DEATH(Vec[0] = -3, "value is too big"); 1020f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_DEBUG_DEATH(Vec[0] = 2, "value is too big"); 1030f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 1040f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis PackedVector<signed, 3> Vec2(1); 1050f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec2[0] = -4; 1060f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis Vec2[0] = 3; 1070f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_DEBUG_DEATH(Vec[0] = -5, "value is too big"); 1080f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis EXPECT_DEBUG_DEATH(Vec[0] = 4, "value is too big"); 1090f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis} 1100f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 1115cf34feb6775e6528c728e8d0c359aa68561a373Argyrios Kyrtzidis#endif 1125cf34feb6775e6528c728e8d0c359aa68561a373Argyrios Kyrtzidis 1130f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis} 1140f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis 1150f5b687075181dbbb3ea2d177d0f66eb57df71c6Argyrios Kyrtzidis#endif 116