1//===- subzero/crosstest/test_icmp.cpp - Implementation for tests ---------===// 2// 3// The Subzero Code Generator 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This aims to test the icmp bitcode instruction across all PNaCl primitive 11// and SIMD integer types. 12// 13//===----------------------------------------------------------------------===// 14 15#include <stdint.h> 16 17#include "test_icmp.h" 18#include "xdefs.h" 19 20#define X(cmp, op) \ 21 bool icmp##cmp(uint8_t a, uint8_t b) { return a op b; } \ 22 bool icmp##cmp(uint16_t a, uint16_t b) { return a op b; } \ 23 bool icmp##cmp(uint32_t a, uint32_t b) { return a op b; } \ 24 bool icmp##cmp(uint64 a, uint64 b) { return a op b; } \ 25 v4ui32 icmp##cmp(v4ui32 a, v4ui32 b) { return a op b; } \ 26 v8ui16 icmp##cmp(v8ui16 a, v8ui16 b) { return a op b; } \ 27 v16ui8 icmp##cmp(v16ui8 a, v16ui8 b) { return a op b; } \ 28 bool icmp_zero##cmp(uint8_t a) { return a op 0; } \ 29 bool icmp_zero##cmp(uint16_t a) { return a op 0; } \ 30 bool icmp_zero##cmp(uint32_t a) { return a op 0; } \ 31 bool icmp_zero##cmp(uint64 a) { return a op 0; } 32ICMP_U_TABLE 33#undef X 34 35#define X(cmp, op) \ 36 bool icmp##cmp(myint8_t a, myint8_t b) { return a op b; } \ 37 bool icmp##cmp(int16_t a, int16_t b) { return a op b; } \ 38 bool icmp##cmp(int32_t a, int32_t b) { return a op b; } \ 39 bool icmp##cmp(int64 a, int64 b) { return a op b; } \ 40 v4si32 icmp##cmp(v4si32 a, v4si32 b) { return a op b; } \ 41 v8si16 icmp##cmp(v8si16 a, v8si16 b) { return a op b; } \ 42 v16si8 icmp##cmp(v16si8 a, v16si8 b) { return a op b; } \ 43 bool icmp_zero##cmp(myint8_t a) { return a op 0; } \ 44 bool icmp_zero##cmp(int16_t a) { return a op 0; } \ 45 bool icmp_zero##cmp(int32_t a) { return a op 0; } \ 46 bool icmp_zero##cmp(int64 a) { return a op 0; } 47ICMP_S_TABLE 48#undef X 49