194 lines
7.1 KiB
MLIR
194 lines
7.1 KiB
MLIR
// RUN: mlir-opt -emit-bytecode -allow-unregistered-dialect %s | mlir-opt -allow-unregistered-dialect -mlir-print-local-scope | FileCheck %s
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// ArrayAttr
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestArray
|
|
module @TestArray attributes {
|
|
// CHECK: bytecode.array = [unit]
|
|
bytecode.array = [unit]
|
|
} {}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// DenseArrayAttr
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestDenseArray
|
|
module @TestDenseArray attributes {
|
|
// CHECK: bytecode.test1 = array<i1: true, false, true, false, false>
|
|
// CHECK: bytecode.test2 = array<i8: 10, 32, -1>
|
|
// CHECK: bytecode.test3 = array<f64: 1.{{.*}}e+01, 3.2{{.*}}e+01, 1.809{{.*}}e+03
|
|
bytecode.test1 = array<i1: true, false, true, false, false>,
|
|
bytecode.test2 = array<i8: 10, 32, 255>,
|
|
bytecode.test3 = array<f64: 10.0, 32.0, 1809.0>
|
|
} {}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// DenseIntOfFPElementsAttr
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestDenseIntOrFPElements
|
|
// CHECK: bytecode.test1 = dense<true> : tensor<256xi1>
|
|
// CHECK: bytecode.test2 = dense<[10, 32, -1]> : tensor<3xi8>
|
|
// CHECK: bytecode.test3 = dense<[1.{{.*}}e+01, 3.2{{.*}}e+01, 1.809{{.*}}e+03]> : tensor<3xf64>
|
|
module @TestDenseIntOrFPElements attributes {
|
|
bytecode.test1 = dense<true> : tensor<256xi1>,
|
|
bytecode.test2 = dense<[10, 32, 255]> : tensor<3xi8>,
|
|
bytecode.test3 = dense<[10.0, 32.0, 1809.0]> : tensor<3xf64>
|
|
} {}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// DenseStringElementsAttr
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestDenseStringElementsAttr
|
|
module @TestDenseStringElementsAttr attributes {
|
|
bytecode.test1 = dense<"splat"> : tensor<256x!bytecode.string>,
|
|
bytecode.test2 = dense<["foo", "bar", "baz"]> : tensor<3x!bytecode.string>
|
|
} {}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// FloatAttr
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestFloat
|
|
module @TestFloat attributes {
|
|
// CHECK: bytecode.float = 1.000000e+01 : f64
|
|
// CHECK: bytecode.float1 = 0.10000{{.*}} : f80
|
|
// CHECK: bytecode.float2 = 0.10000{{.*}} : f128
|
|
// CHECK: bytecode.float3 = -5.000000e-01 : bf16
|
|
bytecode.float = 10.0 : f64,
|
|
bytecode.float1 = 0.1 : f80,
|
|
bytecode.float2 = 0.1 : f128,
|
|
bytecode.float3 = -0.5 : bf16
|
|
} {}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// IntegerAttr
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestInt
|
|
module @TestInt attributes {
|
|
// CHECK: bytecode.int = false
|
|
// CHECK: bytecode.int1 = -1 : i8
|
|
// CHECK: bytecode.int2 = 800 : ui64
|
|
// CHECK: bytecode.int3 = 90000000000000000300000000000000000001 : i128
|
|
bytecode.int = false,
|
|
bytecode.int1 = -1 : i8,
|
|
bytecode.int2 = 800 : ui64,
|
|
bytecode.int3 = 90000000000000000300000000000000000001 : i128
|
|
} {}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// SparseElementsAttr
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestSparseElements
|
|
module @TestSparseElements attributes {
|
|
// CHECK-LITERAL: bytecode.sparse = sparse<[[0, 0], [1, 2]], [1, 5]> : tensor<3x4xi32>
|
|
bytecode.sparse = sparse<[[0, 0], [1, 2]], [1, 5]> : tensor<3x4xi32>
|
|
} {}
|
|
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// StringAttr
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestString
|
|
module @TestString attributes {
|
|
// CHECK: bytecode.string = "hello"
|
|
// CHECK: bytecode.string2 = "hello" : i32
|
|
bytecode.string = "hello",
|
|
bytecode.string2 = "hello" : i32
|
|
} {}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// SymbolRefAttr
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestSymbolRef
|
|
module @TestSymbolRef attributes {
|
|
// CHECK: bytecode.ref = @foo
|
|
// CHECK: bytecode.ref2 = @foo::@bar::@foo
|
|
bytecode.ref = @foo,
|
|
bytecode.ref2 = @foo::@bar::@foo
|
|
} {}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// TypeAttr
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestType
|
|
module @TestType attributes {
|
|
// CHECK: bytecode.type = i178
|
|
bytecode.type = i178
|
|
} {}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// DistinctAttr
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestDistinct
|
|
module @TestDistinct attributes {
|
|
// CHECK: bytecode.distinct = distinct[0]<42 : i32>
|
|
// CHECK: bytecode.distinct2 = distinct[0]<42 : i32>
|
|
// CHECK: bytecode.distinct3 = distinct[1]<42 : i32>
|
|
bytecode.distinct = distinct[0]<42 : i32>,
|
|
bytecode.distinct2 = distinct[0]<42 : i32>,
|
|
bytecode.distinct3 = distinct[1]<42 : i32>
|
|
} {}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// CallSiteLoc
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestLocCallSite
|
|
module @TestLocCallSite attributes {
|
|
// CHECK: bytecode.loc = loc(callsite("foo" at "mysource.cc":10:8))
|
|
bytecode.loc = loc(callsite("foo" at "mysource.cc":10:8))
|
|
} {}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// FileLineColLoc
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestLocFileLineCol
|
|
module @TestLocFileLineCol attributes {
|
|
// CHECK: bytecode.loc = loc("mysource.cc":10:8)
|
|
bytecode.loc = loc("mysource.cc":10:8)
|
|
} {}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// FusedLoc
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestLocFused
|
|
module @TestLocFused attributes {
|
|
// CHECK: bytecode.loc = loc(fused["foo", "mysource.cc":10:8])
|
|
// CHECK: bytecode.loc2 = loc(fused<"myPass">["foo", "foo2"])
|
|
bytecode.loc = loc(fused["foo", "mysource.cc":10:8]),
|
|
bytecode.loc2 = loc(fused<"myPass">["foo", "foo2"])
|
|
} {}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// NameLoc
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestLocName
|
|
module @TestLocName attributes {
|
|
// CHECK: bytecode.loc = loc("foo")
|
|
// CHECK: bytecode.loc2 = loc("foo"("mysource.cc":10:8))
|
|
bytecode.loc = loc("foo"),
|
|
bytecode.loc2 = loc("foo"("mysource.cc":10:8))
|
|
} {}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// UnknownLoc
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// CHECK-LABEL: @TestLocUnknown
|
|
module @TestLocUnknown attributes {
|
|
// CHECK: bytecode.loc = loc(unknown)
|
|
bytecode.loc = loc(unknown)
|
|
} {}
|