| // Copyright (c) 2015-2016 The Khronos Group Inc. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| #include "test/unit_spirv.h" |
| |
| namespace spvtools { |
| namespace { |
| |
| TEST(FixWord, Default) { |
| spv_endianness_t endian; |
| if (I32_ENDIAN_HOST == I32_ENDIAN_LITTLE) { |
| endian = SPV_ENDIANNESS_LITTLE; |
| } else { |
| endian = SPV_ENDIANNESS_BIG; |
| } |
| uint32_t word = 0x53780921; |
| ASSERT_EQ(word, spvFixWord(word, endian)); |
| } |
| |
| TEST(FixWord, Reorder) { |
| spv_endianness_t endian; |
| if (I32_ENDIAN_HOST == I32_ENDIAN_LITTLE) { |
| endian = SPV_ENDIANNESS_BIG; |
| } else { |
| endian = SPV_ENDIANNESS_LITTLE; |
| } |
| uint32_t word = 0x53780921; |
| uint32_t result = 0x21097853; |
| ASSERT_EQ(result, spvFixWord(word, endian)); |
| } |
| |
| TEST(FixDoubleWord, Default) { |
| spv_endianness_t endian = |
| (I32_ENDIAN_HOST == I32_ENDIAN_LITTLE ? SPV_ENDIANNESS_LITTLE |
| : SPV_ENDIANNESS_BIG); |
| uint32_t low = 0x53780921; |
| uint32_t high = 0xdeadbeef; |
| uint64_t result = 0xdeadbeef53780921; |
| ASSERT_EQ(result, spvFixDoubleWord(low, high, endian)); |
| } |
| |
| TEST(FixDoubleWord, Reorder) { |
| spv_endianness_t endian = |
| (I32_ENDIAN_HOST == I32_ENDIAN_LITTLE ? SPV_ENDIANNESS_BIG |
| : SPV_ENDIANNESS_LITTLE); |
| uint32_t low = 0x53780921; |
| uint32_t high = 0xdeadbeef; |
| uint64_t result = 0xefbeadde21097853; |
| ASSERT_EQ(result, spvFixDoubleWord(low, high, endian)); |
| } |
| |
| } // namespace |
| } // namespace spvtools |