diff options
Diffstat (limited to 'src/compiler/nir/nir_range_analysis.h')
-rw-r--r-- | src/compiler/nir/nir_range_analysis.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/compiler/nir/nir_range_analysis.h b/src/compiler/nir/nir_range_analysis.h new file mode 100644 index 00000000000..240ae74cf6c --- /dev/null +++ b/src/compiler/nir/nir_range_analysis.h @@ -0,0 +1,47 @@ +/* + * Copyright © 2018 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#ifndef _NIR_RANGE_ANALYSIS_H_ +#define _NIR_RANGE_ANALYSIS_H_ + +enum PACKED ssa_ranges { + unknown = 0, + lt_zero, + le_zero, + gt_zero, + ge_zero, + ne_zero, + eq_zero, + last_range = eq_zero +}; + +struct ssa_result_range { + enum ssa_ranges range; + + /** A floating-point value that can only have integer values. */ + bool is_integral; +}; + +extern struct ssa_result_range +nir_analyze_range(const nir_alu_instr *instr, unsigned src); + +#endif /* _NIR_RANGE_ANALYSIS_H_ */ |