#include #include #include extern "C" { #include } TEST(QUALCOMM, snapdragon_410_msm) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8916, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD030), &chipset, 0, 8, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(512 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(QUALCOMM, snapdragon_410_apq) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_apq, .model = 8016, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD030), &chipset, 0, 8, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(512 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(QUALCOMM, snapdragon_415) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8929, }; for (uint32_t cluster = 0; cluster < 2; cluster++) { struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD031), &chipset, cluster, 8, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(512 * 1024, l2.size); EXPECT_EQ(0, l3.size); } } TEST(QUALCOMM, snapdragon_425) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8917, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 0, 8, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(512 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(QUALCOMM, snapdragon_427) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8920, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 0, 8, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(512 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(QUALCOMM, snapdragon_430) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8937, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_435) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8940, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_450) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_snapdragon, .model = 450, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_617) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8952, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(512 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(256 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_625) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8953, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_626) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8953, .suffix = { [0] = 'P', [1] = 'R', [2] = 'O', }, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_630) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_snapdragon, .model = 630, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x51AF8014), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x51AF8014), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_636) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_snapdragon, .model = 636, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a73, 4, UINT32_C(0x51AF8002), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x51AF8014), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(64 * 1024, big_l1i.size); EXPECT_EQ(64 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(1024 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_650) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8956, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a72, 2, UINT32_C(0x410FD080), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(48 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_652) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8976, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a72, 4, UINT32_C(0x410FD080), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(48 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_653) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8976, .suffix = { [0] = 'P', [1] = 'R', [2] = 'O', }, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a72, 4, UINT32_C(0x410FD080), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(48 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_660) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_snapdragon, .model = 660, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a73, 4, UINT32_C(0x51AF8002), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x51AF8014), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(64 * 1024, big_l1i.size); EXPECT_EQ(64 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(1024 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_808) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8992, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a57, 2, UINT32_C(0x410FD033), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD033), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(48 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_810) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8994, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a57, 4, UINT32_C(0x410FD033), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD033), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(48 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(2 * 1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_820) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8996, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_kryo, 4, UINT32_C(0x511F2052), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_kryo, 4, UINT32_C(0x511F2112), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(24 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(24 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_821) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8996, .suffix = { [0] = 'P', [1] = 'R', [2] = 'O', [3] = '-', [4] = 'A', [5] = 'C', }, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_kryo, 4, UINT32_C(0x512F2051), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_kryo, 4, UINT32_C(0x512F2011), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(24 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(24 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_835) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_msm, .model = 8998, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a73, 4, UINT32_C(0x51AF8001), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x51AF8014), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(64 * 1024, big_l1i.size); EXPECT_EQ(64 * 1024, big_l1d.size); EXPECT_EQ(2 * 1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(1024 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(QUALCOMM, snapdragon_845) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_qualcomm, .series = cpuinfo_arm_chipset_series_qualcomm_snapdragon, .model = 845, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a75, 4, UINT32_C(0x518F802D), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a55r0, 4, UINT32_C(0x518F803C), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(64 * 1024, big_l1i.size); EXPECT_EQ(64 * 1024, big_l1d.size); EXPECT_EQ(256 * 1024, big_l2.size); EXPECT_EQ(2 * 1024 * 1024, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(128 * 1024, little_l2.size); EXPECT_EQ(2 * 1024 * 1024, little_l3.size); } TEST(SAMSUNG, exynos_7885) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_samsung, .series = cpuinfo_arm_chipset_series_samsung_exynos, .model = 7885, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a73, 2, UINT32_C(0x410FD092), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 6, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(64 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(512 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(256 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(SAMSUNG, exynos_8890) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_samsung, .series = cpuinfo_arm_chipset_series_samsung_exynos, .model = 8890, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_exynos_m1, 4, UINT32_C(0x531F0011), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(64 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(2 * 1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(256 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(SAMSUNG, exynos_8895) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_samsung, .series = cpuinfo_arm_chipset_series_samsung_exynos, .model = 8890, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_exynos_m2, 4, UINT32_C(0x534F0010), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(64 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(2 * 1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(256 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(SAMSUNG, exynos_9810) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_samsung, .series = cpuinfo_arm_chipset_series_samsung_exynos, .model = 9810, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_exynos_m3, 4, UINT32_C(0x531F0020), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a55r0, 4, UINT32_C(0x410FD051), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(64 * 1024, big_l1i.size); EXPECT_EQ(64 * 1024, big_l1d.size); EXPECT_EQ(512 * 1024, big_l2.size); EXPECT_EQ(4 * 1024 * 1024, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(MEDIATEK, mediatek_mt8173) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_mediatek, .series = cpuinfo_arm_chipset_series_mediatek_mt, .model = 8173, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a72, 2, UINT32_C(0x410FD080), &chipset, 0, 4, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 2, UINT32_C(0x410FD032), &chipset, 1, 4, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(48 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(MEDIATEK, mediatek_mt8173c) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_mediatek, .series = cpuinfo_arm_chipset_series_mediatek_mt, .model = 8173, .suffix = { [0] = 'C', }, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a72, 2, UINT32_C(0x410FD080), &chipset, 0, 4, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 2, UINT32_C(0x410FD032), &chipset, 1, 4, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(48 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(HISILICON, kirin_650) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_hisilicon, .series = cpuinfo_arm_chipset_series_hisilicon_kirin, .model = 650, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(512 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(HISILICON, kirin_659) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_hisilicon, .series = cpuinfo_arm_chipset_series_hisilicon_kirin, .model = 659, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(512 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } #if CPUINFO_ARCH_ARM TEST(HISILICON, kirin_920) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_hisilicon, .series = cpuinfo_arm_chipset_series_hisilicon_kirin, .model = 920, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a15, 4, UINT32_C(0x413FC0F3), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a7, 4, UINT32_C(0x410FC075), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(2 * 1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); /* TODO: verify */ EXPECT_EQ(32 * 1024, little_l1d.size); /* TODO: verify */ EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(HISILICON, kirin_925) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_hisilicon, .series = cpuinfo_arm_chipset_series_hisilicon_kirin, .model = 925, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a15, 4, UINT32_C(0x413FC0F3), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a7, 4, UINT32_C(0x410FC075), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(2 * 1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); /* TODO: verify */ EXPECT_EQ(32 * 1024, little_l1d.size); /* TODO: verify */ EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(HISILICON, kirin_928) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_hisilicon, .series = cpuinfo_arm_chipset_series_hisilicon_kirin, .model = 928, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a15, 4, UINT32_C(0x413FC0F3), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a7, 4, UINT32_C(0x410FC075), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(2 * 1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); /* TODO: verify */ EXPECT_EQ(32 * 1024, little_l1d.size); /* TODO: verify */ EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } #endif /* CPUINFO_ARCH_ARM */ TEST(HISILICON, kirin_950) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_hisilicon, .series = cpuinfo_arm_chipset_series_hisilicon_kirin, .model = 950, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a72, 4, UINT32_C(0x410FD080), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(48 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(2 * 1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(HISILICON, kirin_955) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_hisilicon, .series = cpuinfo_arm_chipset_series_hisilicon_kirin, .model = 955, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a72, 4, UINT32_C(0x410FD080), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(48 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(2 * 1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(HISILICON, kirin_960) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_hisilicon, .series = cpuinfo_arm_chipset_series_hisilicon_kirin, .model = 960, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a73, 4, UINT32_C(0x410FD091), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(64 * 1024, big_l1i.size); EXPECT_EQ(64 * 1024, big_l1d.size); EXPECT_EQ(2 * 1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(512 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(HISILICON, kirin_970) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_hisilicon, .series = cpuinfo_arm_chipset_series_hisilicon_kirin, .model = 970, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a73, 4, UINT32_C(0x410FD092), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(64 * 1024, big_l1i.size); EXPECT_EQ(64 * 1024, big_l1d.size); EXPECT_EQ(2 * 1024 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(1024 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(HISILICON, kirin_980) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_hisilicon, .series = cpuinfo_arm_chipset_series_hisilicon_kirin, .model = 980, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a76, 2, UINT32_C(0x481FD400), &chipset, 0, 2, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache middle_l1i = { 0 }; struct cpuinfo_cache middle_l1d = { 0 }; struct cpuinfo_cache middle_l2 = { 0 }; struct cpuinfo_cache middle_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a76, 2, UINT32_C(0x481FD400), &chipset, 1, 2, &middle_l1i, &middle_l1d, &middle_l2, &middle_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a55, 4, UINT32_C(0x411FD050), &chipset, 2, 4, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(64 * 1024, big_l1i.size); EXPECT_EQ(64 * 1024, big_l1d.size); EXPECT_EQ(512 * 1024, big_l2.size); EXPECT_EQ(4 * 1024 * 1024, big_l3.size); EXPECT_EQ(64 * 1024, middle_l1i.size); EXPECT_EQ(64 * 1024, middle_l1d.size); EXPECT_EQ(512 * 1024, middle_l2.size); EXPECT_EQ(4 * 1024 * 1024, middle_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(128 * 1024, little_l2.size); EXPECT_EQ(4 * 1024 * 1024, little_l3.size); } #if CPUINFO_ARCH_ARM TEST(NVIDIA, tegra_ap20h) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_nvidia, .series = cpuinfo_arm_chipset_series_nvidia_tegra_ap, .model = 20, .suffix = { [0] = 'H', }, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a9, 2, UINT32_C(0x411FC090), &chipset, 0, 7, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(1024 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(NVIDIA, tegra_t20) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_nvidia, .series = cpuinfo_arm_chipset_series_nvidia_tegra_t, .model = 20, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a9, 2, UINT32_C(0x411FC090), &chipset, 0, 7, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(1024 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(NVIDIA, tegra_t30l) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_nvidia, .series = cpuinfo_arm_chipset_series_nvidia_tegra_t, .model = 30, .suffix = { [0] = 'L', }, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a9, 4, UINT32_C(0x412FC099), &chipset, 0, 7, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(1024 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(NVIDIA, tegra_t30) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_nvidia, .series = cpuinfo_arm_chipset_series_nvidia_tegra_t, .model = 30, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a9, 4, UINT32_C(0x412FC099), &chipset, 0, 7, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(1024 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(NVIDIA, tegra_t33) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_nvidia, .series = cpuinfo_arm_chipset_series_nvidia_tegra_t, .model = 33, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a9, 4, UINT32_C(0x412FC099), &chipset, 0, 7, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(1024 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(NVIDIA, tegra_ap33) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_nvidia, .series = cpuinfo_arm_chipset_series_nvidia_tegra_ap, .model = 33, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a9, 4, UINT32_C(0x412FC099), &chipset, 0, 7, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(1024 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(NVIDIA, tegra_t114) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_nvidia, .series = cpuinfo_arm_chipset_series_nvidia_tegra_t, .model = 114, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a15, 4, UINT32_C(0x412FC0F2), &chipset, 0, 7, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(2 * 1024 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(NVIDIA, tegra_sl460n) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_nvidia, .series = cpuinfo_arm_chipset_series_nvidia_tegra_sl, .model = 460, .suffix = { [0] = 'N', }, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a9, 4, UINT32_C(0x414FC091), &chipset, 0, 7, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(1 * 1024 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(NVIDIA, tegra_t124) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_nvidia, .series = cpuinfo_arm_chipset_series_nvidia_tegra_t, .model = 124, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a15, 4, UINT32_C(0x413FC0F3), &chipset, 0, 7, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(2 * 1024 * 1024, l2.size); EXPECT_EQ(0, l3.size); } #endif /* CPUINFO_ARCH_ARM */ TEST(NVIDIA, tegra_t132) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_nvidia, .series = cpuinfo_arm_chipset_series_nvidia_tegra_t, .model = 132, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_denver, 2, UINT32_C(0x4E0F0000), &chipset, 0, 8, &l1i, &l1d, &l2, &l3); EXPECT_EQ(128 * 1024, l1i.size); EXPECT_EQ(64 * 1024, l1d.size); EXPECT_EQ(2 * 1024 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(NVIDIA, tegra_t210) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_nvidia, .series = cpuinfo_arm_chipset_series_nvidia_tegra_t, .model = 210, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a57, 4, UINT32_C(0x411FD071), &chipset, 0, 8, &l1i, &l1d, &l2, &l3); EXPECT_EQ(48 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(2 * 1024 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(ROCKCHIP, rk3368) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_rockchip, .series = cpuinfo_arm_chipset_series_rockchip_rk, .model = 3368, }; struct cpuinfo_cache big_l1i = { 0 }; struct cpuinfo_cache big_l1d = { 0 }; struct cpuinfo_cache big_l2 = { 0 }; struct cpuinfo_cache big_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD033), &chipset, 0, 8, &big_l1i, &big_l1d, &big_l2, &big_l3); struct cpuinfo_cache little_l1i = { 0 }; struct cpuinfo_cache little_l1d = { 0 }; struct cpuinfo_cache little_l2 = { 0 }; struct cpuinfo_cache little_l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD033), &chipset, 1, 8, &little_l1i, &little_l1d, &little_l2, &little_l3); EXPECT_EQ(32 * 1024, big_l1i.size); EXPECT_EQ(32 * 1024, big_l1d.size); EXPECT_EQ(512 * 1024, big_l2.size); EXPECT_EQ(0, big_l3.size); EXPECT_EQ(32 * 1024, little_l1i.size); EXPECT_EQ(32 * 1024, little_l1d.size); EXPECT_EQ(256 * 1024, little_l2.size); EXPECT_EQ(0, little_l3.size); } TEST(BROADCOM, bcm2835) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_broadcom, .series = cpuinfo_arm_chipset_series_broadcom_bcm, .model = 2835, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_arm11, 4, UINT32_C(0x410FB767), &chipset, 0, 4, &l1i, &l1d, &l2, &l3); EXPECT_EQ(16 * 1024, l1i.size); EXPECT_EQ(16 * 1024, l1d.size); EXPECT_EQ(0, l2.size); EXPECT_EQ(0, l3.size); } TEST(BROADCOM, bcm2836) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_broadcom, .series = cpuinfo_arm_chipset_series_broadcom_bcm, .model = 2836, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a7, 4, UINT32_C(0x410FC075), &chipset, 0, 4, &l1i, &l1d, &l2, &l3); EXPECT_EQ(32 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(512 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(BROADCOM, bcm2837) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_broadcom, .series = cpuinfo_arm_chipset_series_broadcom_bcm, .model = 2837, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a53, 4, UINT32_C(0x410FD034), &chipset, 0, 4, &l1i, &l1d, &l2, &l3); EXPECT_EQ(16 * 1024, l1i.size); EXPECT_EQ(16 * 1024, l1d.size); EXPECT_EQ(512 * 1024, l2.size); EXPECT_EQ(0, l3.size); } TEST(BROADCOM, bcm2711) { const struct cpuinfo_arm_chipset chipset = { .vendor = cpuinfo_arm_chipset_vendor_broadcom, .series = cpuinfo_arm_chipset_series_broadcom_bcm, .model = 2711, }; struct cpuinfo_cache l1i = { 0 }; struct cpuinfo_cache l1d = { 0 }; struct cpuinfo_cache l2 = { 0 }; struct cpuinfo_cache l3 = { 0 }; cpuinfo_arm_decode_cache( cpuinfo_uarch_cortex_a72, 4, UINT32_C(0x410FD083), &chipset, 0, 4, &l1i, &l1d, &l2, &l3); EXPECT_EQ(48 * 1024, l1i.size); EXPECT_EQ(32 * 1024, l1d.size); EXPECT_EQ(1024 * 1024, l2.size); EXPECT_EQ(0, l3.size); }