<commit_before>//===- CodeGen/ValueTypes.h - Low-Level Target independ. types --*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines the set of low-level target independent types which various
// values in the code generator are.  This allows the target specific behavior
// of instructions to be described to target independent passes.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CODEGEN_VALUETYPES_H
#define LLVM_CODEGEN_VALUETYPES_H

#include <cassert>
#include <string>
#include "llvm/Support/DataTypes.h"
#include "llvm/Support/MathExtras.h"

namespace llvm {
  class Type;

  struct MVT { // MVT = Machine Value Type
  public:

    enum SimpleValueType {
      // If you change this numbering, you must change the values in
      // ValueTypes.td well!
      Other          =   0,   // This is a non-standard value
      i1             =   1,   // This is a 1 bit integer value
      i8             =   2,   // This is an 8 bit integer value
      i16            =   3,   // This is a 16 bit integer value
      i32            =   4,   // This is a 32 bit integer value
      i64            =   5,   // This is a 64 bit integer value
      i128           =   6,   // This is a 128 bit integer value

      FIRST_INTEGER_VALUETYPE = i1,
      LAST_INTEGER_VALUETYPE  = i128,

      f32            =   7,   // This is a 32 bit floating point value
      f64            =   8,   // This is a 64 bit floating point value
      f80            =   9,   // This is a 80 bit floating point value
      f128           =  10,   // This is a 128 bit floating point value
      ppcf128        =  11,   // This is a PPC 128-bit floating point value
      Flag           =  12,   // This is a condition code or machine flag.

      isVoid         =  13,   // This has no value

      v8i8           =  14,   //  8 x i8
      v4i16          =  15,   //  4 x i16
      v2i32          =  16,   //  2 x i32
      v1i64          =  17,   //  1 x i64
      v16i8          =  18,   // 16 x i8
      v8i16          =  19,   //  8 x i16
      v3i32          =  20,   //  3 x i32
      v4i32          =  21,   //  4 x i32
      v2i64          =  22,   //  2 x i64

      v2f32          =  23,   //  2 x f32
      v3f32          =  24,   //  3 x f32
      v4f32          =  25,   //  4 x f32
      v2f64          =  26,   //  2 x f64

      FIRST_VECTOR_VALUETYPE = v8i8,
      LAST_VECTOR_VALUETYPE  = v2f64,

      LAST_VALUETYPE =  27,   // This always remains at the end of the list.

      // fAny - Any floating-point or vector floating-point value. This is used
      // for intrinsics that have overloadings based on floating-point types.
      // This is only for tblgen's consumption!
      fAny           =  253,

      // iAny - An integer or vector integer value of any bit width. This is
      // used for intrinsics that have overloadings based on integer bit widths.
      // This is only for tblgen's consumption!
      iAny           =  254,

      // iPTR - An int value the size of the pointer of the current
      // target.  This should only be used internal to tblgen!
      iPTR           =  255
    };

    /// MVT - This type holds low-level value types. Valid values include any of
    /// the values in the SimpleValueType enum, or any value returned from one
    /// of the MVT methods.  Any value type equal to one of the SimpleValueType
    /// enum values is a "simple" value type.  All others are "extended".
    ///
    /// Note that simple doesn't necessary mean legal for the target machine.
    /// All legal value types must be simple, but often there are some simple
    /// value types that are not legal.
    ///
    /// @internal
    /// Extended types are either vector types or arbitrary precision integers.
    /// Arbitrary precision integers have iAny in the first SimpleTypeBits bits,
    /// and the bit-width in the next PrecisionBits bits, offset by minus one.
    /// Vector types are encoded by having the first SimpleTypeBits+PrecisionBits
    /// bits encode the vector element type (which must be a scalar type, possibly
    /// an arbitrary precision integer) and the remaining VectorBits upper bits
    /// encode the vector length, offset by one.
    ///
    /// 31--------------16-----------8-------------0
    ///  | Vector length | Precision | Simple type |
    ///  |               |      Vector element     |
    ///

  private:

    static const int SimpleTypeBits = 8;
    static const int PrecisionBits  = 8;
    static const int VectorBits     = 32 - SimpleTypeBits - PrecisionBits;<commit_msg>Small doc fix.<commit_after>//===- CodeGen/ValueTypes.h - Low-Level Target independ. types --*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines the set of low-level target independent types which various
// values in the code generator are.  This allows the target specific behavior
// of instructions to be described to target independent passes.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CODEGEN_VALUETYPES_H
#define LLVM_CODEGEN_VALUETYPES_H

#include <cassert>
#include <string>
#include "llvm/Support/DataTypes.h"
#include "llvm/Support/MathExtras.h"

namespace llvm {
  class Type;

  struct MVT { // MVT = Machine Value Type
  public:

    enum SimpleValueType {
      // If you change this numbering, you must change the values in
      // ValueTypes.td well!
      Other          =   0,   // This is a non-standard value
      i1             =   1,   // This is a 1 bit integer value
      i8             =   2,   // This is an 8 bit integer value
      i16            =   3,   // This is a 16 bit integer value
      i32            =   4,   // This is a 32 bit integer value
      i64            =   5,   // This is a 64 bit integer value
      i128           =   6,   // This is a 128 bit integer value

      FIRST_INTEGER_VALUETYPE = i1,
      LAST_INTEGER_VALUETYPE  = i128,

      f32            =   7,   // This is a 32 bit floating point value
      f64            =   8,   // This is a 64 bit floating point value
      f80            =   9,   // This is a 80 bit floating point value
      f128           =  10,   // This is a 128 bit floating point value
      ppcf128        =  11,   // This is a PPC 128-bit floating point value
      Flag           =  12,   // This is a condition code or machine flag.

      isVoid         =  13,   // This has no value

      v8i8           =  14,   //  8 x i8
      v4i16          =  15,   //  4 x i16
      v2i32          =  16,   //  2 x i32
      v1i64          =  17,   //  1 x i64
      v16i8          =  18,   // 16 x i8
      v8i16          =  19,   //  8 x i16
      v3i32          =  20,   //  3 x i32
      v4i32          =  21,   //  4 x i32
      v2i64          =  22,   //  2 x i64

      v2f32          =  23,   //  2 x f32
      v3f32          =  24,   //  3 x f32
      v4f32          =  25,   //  4 x f32
      v2f64          =  26,   //  2 x f64

      FIRST_VECTOR_VALUETYPE = v8i8,
      LAST_VECTOR_VALUETYPE  = v2f64,

      LAST_VALUETYPE =  27,   // This always remains at the end of the list.

      // fAny - Any floating-point or vector floating-point value. This is used
      // for intrinsics that have overloadings based on floating-point types.
      // This is only for tblgen's consumption!
      fAny           =  253,

      // iAny - An integer or vector integer value of any bit width. This is
      // used for intrinsics that have overloadings based on integer bit widths.
      // This is only for tblgen's consumption!
      iAny           =  254,

      // iPTR - An int value the size of the pointer of the current
      // target.  This should only be used internal to tblgen!
      iPTR           =  255
    };

    /// MVT - This type holds low-level value types. Valid values include any of
    /// the values in the SimpleValueType enum, or any value returned from one
    /// of the MVT methods.  Any value type equal to one of the SimpleValueType
    /// enum values is a "simple" value type.  All others are "extended".
    ///
    /// Note that simple doesn't necessary mean legal for the target machine.
    /// All legal value types must be simple, but often there are some simple
    /// value types that are not legal.
    ///
    /// @internal
    /// Extended types are either vector types or arbitrary precision integers.
    /// Arbitrary precision integers have iAny in the first SimpleTypeBits bits,
    /// and the bit-width in the next PrecisionBits bits, offset by minus one.
    /// Vector types are encoded by having the first SimpleTypeBits+PrecisionBits
    /// bits encode the vector element type (which must be a scalar type, possibly
    /// an arbitrary precision integer) and the remaining VectorBits upper bits
    /// encode the vector length, offset by one.
    ///
    /// 32--------------16-----------8-------------0
    ///  | Vector length | Precision | Simple type |
    ///  |               |      Vector element     |
    ///

  private:

    static const int SimpleTypeBits = 8;
    static const int PrecisionBits  = 8;
    static const int VectorBits     = 32 - SimpleTypeBits - PrecisionBits;
{'fraction_non_alphanumeric': 0.11590463412116833, 'fraction_numerical': 0.040458251625554754, 'mean_word_length': 1.4581430745814308, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '798951', 'n_tokens_mistral': 2955, 'n_tokens_neox': 2695, 'n_words': 1135}