1f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar/* 2f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar * Copyright (C) 2016 The Android Open Source Project 3f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar * 4f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar * Licensed under the Apache License, Version 2.0 (the "License"); 5f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar * you may not use this file except in compliance with the License. 6f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar * You may obtain a copy of the License at 7f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar * 8f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar * http://www.apache.org/licenses/LICENSE-2.0 9f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar * 10f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar * Unless required by applicable law or agreed to in writing, software 11f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar * distributed under the License is distributed on an "AS IS" BASIS, 12f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar * See the License for the specific language governing permissions and 14f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar * limitations under the License. 15f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar */ 16f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar 17f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar#ifndef RS_RUNTIME_RS_F16_UTIL 18f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar#define RS_RUNTIME_RS_F16_UTIL 19f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar 20f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainartypedef union { 21f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar half hval; 22f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar short sval; 23f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar} fp16_shape_type; 24f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar 25f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar/* half h = unsigned short s; */ 26f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar#define SET_HALF_WORD(h, s) \ 27f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainardo { \ 28f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar fp16_shape_type fp16_u; \ 29f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar fp16_u.sval = (s); \ 30f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar (h) = fp16_u.hval; \ 31f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar} while (0) 32f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar 33f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar/* unsigned short s = half h; */ 34f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar#define GET_HALF_WORD(s, h) \ 35f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainardo { \ 36f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar fp16_shape_type fp16_u; \ 37f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar fp16_u.hval = (h); \ 38f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar (s) = fp16_u.sval; \ 39f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar} while (0) 40f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar 41f9760483073d9f452e4701fbf367dc518f7e6531Pirama Arumuga Nainar#endif // RS_RUNTIME_RS_F16_UTIL 42