19f3f6d7bSStella Laurenzo# RUN: %PYTHON %s | FileCheck %s
29f3f6d7bSStella Laurenzo# Note that this is separate from ir_attributes.py since it depends on numpy,
39f3f6d7bSStella Laurenzo# and we may want to disable if not available.
49f3f6d7bSStella Laurenzo
59f3f6d7bSStella Laurenzoimport gc
69f3f6d7bSStella Laurenzofrom mlir.ir import *
79f3f6d7bSStella Laurenzoimport numpy as np
89f3f6d7bSStella Laurenzo
99f3f6d7bSStella Laurenzodef run(f):
109f3f6d7bSStella Laurenzo  print("\nTEST:", f.__name__)
119f3f6d7bSStella Laurenzo  f()
129f3f6d7bSStella Laurenzo  gc.collect()
139f3f6d7bSStella Laurenzo  assert Context._get_live_count() == 0
145d6d30edSStella Laurenzo  return f
159f3f6d7bSStella Laurenzo
169f3f6d7bSStella Laurenzo################################################################################
179f3f6d7bSStella Laurenzo# Tests of the array/buffer .get() factory method on unsupported dtype.
189f3f6d7bSStella Laurenzo################################################################################
199f3f6d7bSStella Laurenzo
205d6d30edSStella Laurenzo@run
219f3f6d7bSStella Laurenzodef testGetDenseElementsUnsupported():
229f3f6d7bSStella Laurenzo  with Context():
239f3f6d7bSStella Laurenzo    array = np.array([["hello", "goodbye"]])
249f3f6d7bSStella Laurenzo    try:
259f3f6d7bSStella Laurenzo      attr = DenseElementsAttr.get(array)
269f3f6d7bSStella Laurenzo    except ValueError as e:
279f3f6d7bSStella Laurenzo      # CHECK: unimplemented array format conversion from format:
289f3f6d7bSStella Laurenzo      print(e)
299f3f6d7bSStella Laurenzo
309f3f6d7bSStella Laurenzo################################################################################
319f3f6d7bSStella Laurenzo# Splats.
329f3f6d7bSStella Laurenzo################################################################################
339f3f6d7bSStella Laurenzo
349f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsSplatInt
355d6d30edSStella Laurenzo@run
369f3f6d7bSStella Laurenzodef testGetDenseElementsSplatInt():
379f3f6d7bSStella Laurenzo  with Context(), Location.unknown():
389f3f6d7bSStella Laurenzo    t = IntegerType.get_signless(32)
399f3f6d7bSStella Laurenzo    element = IntegerAttr.get(t, 555)
409f3f6d7bSStella Laurenzo    shaped_type = RankedTensorType.get((2, 3, 4), t)
419f3f6d7bSStella Laurenzo    attr = DenseElementsAttr.get_splat(shaped_type, element)
429f3f6d7bSStella Laurenzo    # CHECK: dense<555> : tensor<2x3x4xi32>
439f3f6d7bSStella Laurenzo    print(attr)
449f3f6d7bSStella Laurenzo    # CHECK: is_splat: True
459f3f6d7bSStella Laurenzo    print("is_splat:", attr.is_splat)
469f3f6d7bSStella Laurenzo
479f3f6d7bSStella Laurenzo
489f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsSplatFloat
495d6d30edSStella Laurenzo@run
509f3f6d7bSStella Laurenzodef testGetDenseElementsSplatFloat():
519f3f6d7bSStella Laurenzo  with Context(), Location.unknown():
529f3f6d7bSStella Laurenzo    t = F32Type.get()
539f3f6d7bSStella Laurenzo    element = FloatAttr.get(t, 1.2)
549f3f6d7bSStella Laurenzo    shaped_type = RankedTensorType.get((2, 3, 4), t)
559f3f6d7bSStella Laurenzo    attr = DenseElementsAttr.get_splat(shaped_type, element)
569f3f6d7bSStella Laurenzo    # CHECK: dense<1.200000e+00> : tensor<2x3x4xf32>
579f3f6d7bSStella Laurenzo    print(attr)
589f3f6d7bSStella Laurenzo
599f3f6d7bSStella Laurenzo
609f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsSplatErrors
615d6d30edSStella Laurenzo@run
629f3f6d7bSStella Laurenzodef testGetDenseElementsSplatErrors():
639f3f6d7bSStella Laurenzo  with Context(), Location.unknown():
649f3f6d7bSStella Laurenzo    t = F32Type.get()
659f3f6d7bSStella Laurenzo    other_t = F64Type.get()
669f3f6d7bSStella Laurenzo    element = FloatAttr.get(t, 1.2)
679f3f6d7bSStella Laurenzo    other_element = FloatAttr.get(other_t, 1.2)
689f3f6d7bSStella Laurenzo    shaped_type = RankedTensorType.get((2, 3, 4), t)
699f3f6d7bSStella Laurenzo    dynamic_shaped_type = UnrankedTensorType.get(t)
709f3f6d7bSStella Laurenzo    non_shaped_type = t
719f3f6d7bSStella Laurenzo
729f3f6d7bSStella Laurenzo    try:
739f3f6d7bSStella Laurenzo      attr = DenseElementsAttr.get_splat(non_shaped_type, element)
749f3f6d7bSStella Laurenzo    except ValueError as e:
759f3f6d7bSStella Laurenzo      # CHECK: Expected a static ShapedType for the shaped_type parameter: Type(f32)
769f3f6d7bSStella Laurenzo      print(e)
779f3f6d7bSStella Laurenzo
789f3f6d7bSStella Laurenzo    try:
799f3f6d7bSStella Laurenzo      attr = DenseElementsAttr.get_splat(dynamic_shaped_type, element)
809f3f6d7bSStella Laurenzo    except ValueError as e:
819f3f6d7bSStella Laurenzo      # CHECK: Expected a static ShapedType for the shaped_type parameter: Type(tensor<*xf32>)
829f3f6d7bSStella Laurenzo      print(e)
839f3f6d7bSStella Laurenzo
849f3f6d7bSStella Laurenzo    try:
859f3f6d7bSStella Laurenzo      attr = DenseElementsAttr.get_splat(shaped_type, other_element)
869f3f6d7bSStella Laurenzo    except ValueError as e:
879f3f6d7bSStella Laurenzo      # CHECK: Shaped element type and attribute type must be equal: shaped=Type(tensor<2x3x4xf32>), element=Attribute(1.200000e+00 : f64)
889f3f6d7bSStella Laurenzo      print(e)
899f3f6d7bSStella Laurenzo
905d6d30edSStella Laurenzo
915d6d30edSStella Laurenzo# CHECK-LABEL: TEST: testRepeatedValuesSplat
925d6d30edSStella Laurenzo@run
935d6d30edSStella Laurenzodef testRepeatedValuesSplat():
945d6d30edSStella Laurenzo  with Context():
955d6d30edSStella Laurenzo    array = np.array([[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]], dtype=np.float32)
965d6d30edSStella Laurenzo    attr = DenseElementsAttr.get(array)
975d6d30edSStella Laurenzo    # CHECK: dense<1.000000e+00> : tensor<2x3xf32>
985d6d30edSStella Laurenzo    print(attr)
995d6d30edSStella Laurenzo    # CHECK: is_splat: True
1005d6d30edSStella Laurenzo    print("is_splat:", attr.is_splat)
101*c5f445d1SStella Laurenzo    # TODO: Re-enable this once a solution is found to raising an exception
102*c5f445d1SStella Laurenzo    # from buffer protocol.
103*c5f445d1SStella Laurenzo    # Reported as https://github.com/pybind/pybind11/issues/3336
104*c5f445d1SStella Laurenzo    # print(np.array(attr))
1055d6d30edSStella Laurenzo
1065d6d30edSStella Laurenzo
1075d6d30edSStella Laurenzo# CHECK-LABEL: TEST: testNonSplat
1085d6d30edSStella Laurenzo@run
1095d6d30edSStella Laurenzodef testNonSplat():
1105d6d30edSStella Laurenzo  with Context():
1115d6d30edSStella Laurenzo    array = np.array([2.0, 1.0, 1.0], dtype=np.float32)
1125d6d30edSStella Laurenzo    attr = DenseElementsAttr.get(array)
1135d6d30edSStella Laurenzo    # CHECK: is_splat: False
1145d6d30edSStella Laurenzo    print("is_splat:", attr.is_splat)
1159f3f6d7bSStella Laurenzo
1169f3f6d7bSStella Laurenzo
1179f3f6d7bSStella Laurenzo################################################################################
1189f3f6d7bSStella Laurenzo# Tests of the array/buffer .get() factory method, in all of its permutations.
1199f3f6d7bSStella Laurenzo################################################################################
1209f3f6d7bSStella Laurenzo
1215d6d30edSStella Laurenzo### explicitly provided types
1225d6d30edSStella Laurenzo
1235d6d30edSStella Laurenzo@run
1245d6d30edSStella Laurenzodef testGetDenseElementsBF16():
1255d6d30edSStella Laurenzo  with Context():
1265d6d30edSStella Laurenzo    array = np.array([[2, 4, 8], [16, 32, 64]], dtype=np.uint16)
1275d6d30edSStella Laurenzo    attr = DenseElementsAttr.get(array, type=BF16Type.get())
1285d6d30edSStella Laurenzo    # Note: These values don't mean much since just bit-casting. But they
1295d6d30edSStella Laurenzo    # shouldn't change.
1305d6d30edSStella Laurenzo    # CHECK: dense<{{\[}}[1.836710e-40, 3.673420e-40, 7.346840e-40], [1.469370e-39, 2.938740e-39, 5.877470e-39]]> : tensor<2x3xbf16>
1315d6d30edSStella Laurenzo    print(attr)
1325d6d30edSStella Laurenzo
1335d6d30edSStella Laurenzo@run
1345d6d30edSStella Laurenzodef testGetDenseElementsInteger4():
1355d6d30edSStella Laurenzo  with Context():
1365d6d30edSStella Laurenzo    array = np.array([[2, 4, 7], [-2, -4, -8]], dtype=np.uint8)
1375d6d30edSStella Laurenzo    attr = DenseElementsAttr.get(array, type=IntegerType.get_signless(4))
1385d6d30edSStella Laurenzo    # Note: These values don't mean much since just bit-casting. But they
1395d6d30edSStella Laurenzo    # shouldn't change.
1405d6d30edSStella Laurenzo    # CHECK: dense<{{\[}}[2, 4, 7], [-2, -4, -8]]> : tensor<2x3xi4>
1415d6d30edSStella Laurenzo    print(attr)
1425d6d30edSStella Laurenzo
1435d6d30edSStella Laurenzo
1445d6d30edSStella Laurenzo@run
1455d6d30edSStella Laurenzodef testGetDenseElementsBool():
1465d6d30edSStella Laurenzo  with Context():
1475d6d30edSStella Laurenzo    bool_array = np.array([[1, 0, 1], [0, 1, 0]], dtype=np.bool_)
1485d6d30edSStella Laurenzo    array = np.packbits(bool_array, axis=None, bitorder="little")
1495d6d30edSStella Laurenzo    attr = DenseElementsAttr.get(
1505d6d30edSStella Laurenzo        array, type=IntegerType.get_signless(1), shape=bool_array.shape)
1515d6d30edSStella Laurenzo    # CHECK: dense<{{\[}}[true, false, true], [false, true, false]]> : tensor<2x3xi1>
1525d6d30edSStella Laurenzo    print(attr)
1535d6d30edSStella Laurenzo
1545d6d30edSStella Laurenzo
1555d6d30edSStella Laurenzo@run
1565d6d30edSStella Laurenzodef testGetDenseElementsBoolSplat():
1575d6d30edSStella Laurenzo  with Context():
1585d6d30edSStella Laurenzo    zero = np.array(0, dtype=np.uint8)
1595d6d30edSStella Laurenzo    one = np.array(255, dtype=np.uint8)
1605d6d30edSStella Laurenzo    print(one)
1615d6d30edSStella Laurenzo    # CHECK: dense<false> : tensor<4x2x5xi1>
1625d6d30edSStella Laurenzo    print(DenseElementsAttr.get(
1635d6d30edSStella Laurenzo        zero, type=IntegerType.get_signless(1), shape=(4, 2, 5)))
1645d6d30edSStella Laurenzo    # CHECK: dense<true> : tensor<4x2x5xi1>
1655d6d30edSStella Laurenzo    print(DenseElementsAttr.get(
1665d6d30edSStella Laurenzo        one, type=IntegerType.get_signless(1), shape=(4, 2, 5)))
1675d6d30edSStella Laurenzo
1685d6d30edSStella Laurenzo
1699f3f6d7bSStella Laurenzo### float and double arrays.
1709f3f6d7bSStella Laurenzo
1715d6d30edSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsF16
1725d6d30edSStella Laurenzo@run
1735d6d30edSStella Laurenzodef testGetDenseElementsF16():
1745d6d30edSStella Laurenzo  with Context():
1755d6d30edSStella Laurenzo    array = np.array([[2.0, 4.0, 8.0], [16.0, 32.0, 64.0]], dtype=np.float16)
1765d6d30edSStella Laurenzo    attr = DenseElementsAttr.get(array)
1775d6d30edSStella Laurenzo    # CHECK: dense<{{\[}}[2.000000e+00, 4.000000e+00, 8.000000e+00], [1.600000e+01, 3.200000e+01, 6.400000e+01]]> : tensor<2x3xf16>
1785d6d30edSStella Laurenzo    print(attr)
1795d6d30edSStella Laurenzo    # CHECK: {{\[}}[ 2. 4. 8.]
1805d6d30edSStella Laurenzo    # CHECK: {{\[}}16. 32. 64.]]
1815d6d30edSStella Laurenzo    print(np.array(attr))
1825d6d30edSStella Laurenzo
1835d6d30edSStella Laurenzo
1849f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsF32
1855d6d30edSStella Laurenzo@run
1869f3f6d7bSStella Laurenzodef testGetDenseElementsF32():
1879f3f6d7bSStella Laurenzo  with Context():
1889f3f6d7bSStella Laurenzo    array = np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]], dtype=np.float32)
1899f3f6d7bSStella Laurenzo    attr = DenseElementsAttr.get(array)
1909f3f6d7bSStella Laurenzo    # CHECK: dense<{{\[}}[1.100000e+00, 2.200000e+00, 3.300000e+00], [4.400000e+00, 5.500000e+00, 6.600000e+00]]> : tensor<2x3xf32>
1919f3f6d7bSStella Laurenzo    print(attr)
1929f3f6d7bSStella Laurenzo    # CHECK: {{\[}}[1.1 2.2 3.3]
1939f3f6d7bSStella Laurenzo    # CHECK: {{\[}}4.4 5.5 6.6]]
1949f3f6d7bSStella Laurenzo    print(np.array(attr))
1959f3f6d7bSStella Laurenzo
1969f3f6d7bSStella Laurenzo
1979f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsF64
1985d6d30edSStella Laurenzo@run
1999f3f6d7bSStella Laurenzodef testGetDenseElementsF64():
2009f3f6d7bSStella Laurenzo  with Context():
2019f3f6d7bSStella Laurenzo    array = np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]], dtype=np.float64)
2029f3f6d7bSStella Laurenzo    attr = DenseElementsAttr.get(array)
2039f3f6d7bSStella Laurenzo    # CHECK: dense<{{\[}}[1.100000e+00, 2.200000e+00, 3.300000e+00], [4.400000e+00, 5.500000e+00, 6.600000e+00]]> : tensor<2x3xf64>
2049f3f6d7bSStella Laurenzo    print(attr)
2059f3f6d7bSStella Laurenzo    # CHECK: {{\[}}[1.1 2.2 3.3]
2069f3f6d7bSStella Laurenzo    # CHECK: {{\[}}4.4 5.5 6.6]]
2079f3f6d7bSStella Laurenzo    print(np.array(attr))
2089f3f6d7bSStella Laurenzo
2099f3f6d7bSStella Laurenzo
2105d6d30edSStella Laurenzo### 16 bit integer arrays
2115d6d30edSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsI16Signless
2125d6d30edSStella Laurenzo@run
2135d6d30edSStella Laurenzodef testGetDenseElementsI16Signless():
2145d6d30edSStella Laurenzo  with Context():
2155d6d30edSStella Laurenzo    array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int16)
2165d6d30edSStella Laurenzo    attr = DenseElementsAttr.get(array)
2175d6d30edSStella Laurenzo    # CHECK: dense<{{\[}}[1, 2, 3], [4, 5, 6]]> : tensor<2x3xi16>
2185d6d30edSStella Laurenzo    print(attr)
2195d6d30edSStella Laurenzo    # CHECK: {{\[}}[1 2 3]
2205d6d30edSStella Laurenzo    # CHECK: {{\[}}4 5 6]]
2215d6d30edSStella Laurenzo    print(np.array(attr))
2225d6d30edSStella Laurenzo
2235d6d30edSStella Laurenzo
2245d6d30edSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsUI16Signless
2255d6d30edSStella Laurenzo@run
2265d6d30edSStella Laurenzodef testGetDenseElementsUI16Signless():
2275d6d30edSStella Laurenzo  with Context():
2285d6d30edSStella Laurenzo    array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.uint16)
2295d6d30edSStella Laurenzo    attr = DenseElementsAttr.get(array)
2305d6d30edSStella Laurenzo    # CHECK: dense<{{\[}}[1, 2, 3], [4, 5, 6]]> : tensor<2x3xi16>
2315d6d30edSStella Laurenzo    print(attr)
2325d6d30edSStella Laurenzo    # CHECK: {{\[}}[1 2 3]
2335d6d30edSStella Laurenzo    # CHECK: {{\[}}4 5 6]]
2345d6d30edSStella Laurenzo    print(np.array(attr))
2355d6d30edSStella Laurenzo
2365d6d30edSStella Laurenzo
2375d6d30edSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsI16
2385d6d30edSStella Laurenzo@run
2395d6d30edSStella Laurenzodef testGetDenseElementsI16():
2405d6d30edSStella Laurenzo  with Context():
2415d6d30edSStella Laurenzo    array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int16)
2425d6d30edSStella Laurenzo    attr = DenseElementsAttr.get(array, signless=False)
2435d6d30edSStella Laurenzo    # CHECK: dense<{{\[}}[1, 2, 3], [4, 5, 6]]> : tensor<2x3xsi16>
2445d6d30edSStella Laurenzo    print(attr)
2455d6d30edSStella Laurenzo    # CHECK: {{\[}}[1 2 3]
2465d6d30edSStella Laurenzo    # CHECK: {{\[}}4 5 6]]
2475d6d30edSStella Laurenzo    print(np.array(attr))
2485d6d30edSStella Laurenzo
2495d6d30edSStella Laurenzo
2505d6d30edSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsUI16
2515d6d30edSStella Laurenzo@run
2525d6d30edSStella Laurenzodef testGetDenseElementsUI16():
2535d6d30edSStella Laurenzo  with Context():
2545d6d30edSStella Laurenzo    array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.uint16)
2555d6d30edSStella Laurenzo    attr = DenseElementsAttr.get(array, signless=False)
2565d6d30edSStella Laurenzo    # CHECK: dense<{{\[}}[1, 2, 3], [4, 5, 6]]> : tensor<2x3xui16>
2575d6d30edSStella Laurenzo    print(attr)
2585d6d30edSStella Laurenzo    # CHECK: {{\[}}[1 2 3]
2595d6d30edSStella Laurenzo    # CHECK: {{\[}}4 5 6]]
2605d6d30edSStella Laurenzo    print(np.array(attr))
2619f3f6d7bSStella Laurenzo
2629f3f6d7bSStella Laurenzo### 32 bit integer arrays
2639f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsI32Signless
2645d6d30edSStella Laurenzo@run
2659f3f6d7bSStella Laurenzodef testGetDenseElementsI32Signless():
2669f3f6d7bSStella Laurenzo  with Context():
2679f3f6d7bSStella Laurenzo    array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int32)
2689f3f6d7bSStella Laurenzo    attr = DenseElementsAttr.get(array)
2699f3f6d7bSStella Laurenzo    # CHECK: dense<{{\[}}[1, 2, 3], [4, 5, 6]]> : tensor<2x3xi32>
2709f3f6d7bSStella Laurenzo    print(attr)
2719f3f6d7bSStella Laurenzo    # CHECK: {{\[}}[1 2 3]
2729f3f6d7bSStella Laurenzo    # CHECK: {{\[}}4 5 6]]
2739f3f6d7bSStella Laurenzo    print(np.array(attr))
2749f3f6d7bSStella Laurenzo
2759f3f6d7bSStella Laurenzo
2769f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsUI32Signless
2775d6d30edSStella Laurenzo@run
2789f3f6d7bSStella Laurenzodef testGetDenseElementsUI32Signless():
2799f3f6d7bSStella Laurenzo  with Context():
2809f3f6d7bSStella Laurenzo    array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.uint32)
2819f3f6d7bSStella Laurenzo    attr = DenseElementsAttr.get(array)
2829f3f6d7bSStella Laurenzo    # CHECK: dense<{{\[}}[1, 2, 3], [4, 5, 6]]> : tensor<2x3xi32>
2839f3f6d7bSStella Laurenzo    print(attr)
2849f3f6d7bSStella Laurenzo    # CHECK: {{\[}}[1 2 3]
2859f3f6d7bSStella Laurenzo    # CHECK: {{\[}}4 5 6]]
2869f3f6d7bSStella Laurenzo    print(np.array(attr))
2879f3f6d7bSStella Laurenzo
2889f3f6d7bSStella Laurenzo
2899f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsI32
2905d6d30edSStella Laurenzo@run
2919f3f6d7bSStella Laurenzodef testGetDenseElementsI32():
2929f3f6d7bSStella Laurenzo  with Context():
2939f3f6d7bSStella Laurenzo    array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int32)
2949f3f6d7bSStella Laurenzo    attr = DenseElementsAttr.get(array, signless=False)
2959f3f6d7bSStella Laurenzo    # CHECK: dense<{{\[}}[1, 2, 3], [4, 5, 6]]> : tensor<2x3xsi32>
2969f3f6d7bSStella Laurenzo    print(attr)
2979f3f6d7bSStella Laurenzo    # CHECK: {{\[}}[1 2 3]
2989f3f6d7bSStella Laurenzo    # CHECK: {{\[}}4 5 6]]
2999f3f6d7bSStella Laurenzo    print(np.array(attr))
3009f3f6d7bSStella Laurenzo
3019f3f6d7bSStella Laurenzo
3029f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsUI32
3035d6d30edSStella Laurenzo@run
3049f3f6d7bSStella Laurenzodef testGetDenseElementsUI32():
3059f3f6d7bSStella Laurenzo  with Context():
3069f3f6d7bSStella Laurenzo    array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.uint32)
3079f3f6d7bSStella Laurenzo    attr = DenseElementsAttr.get(array, signless=False)
3089f3f6d7bSStella Laurenzo    # CHECK: dense<{{\[}}[1, 2, 3], [4, 5, 6]]> : tensor<2x3xui32>
3099f3f6d7bSStella Laurenzo    print(attr)
3109f3f6d7bSStella Laurenzo    # CHECK: {{\[}}[1 2 3]
3119f3f6d7bSStella Laurenzo    # CHECK: {{\[}}4 5 6]]
3129f3f6d7bSStella Laurenzo    print(np.array(attr))
3139f3f6d7bSStella Laurenzo
3149f3f6d7bSStella Laurenzo
3159f3f6d7bSStella Laurenzo## 64bit integer arrays
3169f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsI64Signless
3175d6d30edSStella Laurenzo@run
3189f3f6d7bSStella Laurenzodef testGetDenseElementsI64Signless():
3199f3f6d7bSStella Laurenzo  with Context():
3209f3f6d7bSStella Laurenzo    array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int64)
3219f3f6d7bSStella Laurenzo    attr = DenseElementsAttr.get(array)
3229f3f6d7bSStella Laurenzo    # CHECK: dense<{{\[}}[1, 2, 3], [4, 5, 6]]> : tensor<2x3xi64>
3239f3f6d7bSStella Laurenzo    print(attr)
3249f3f6d7bSStella Laurenzo    # CHECK: {{\[}}[1 2 3]
3259f3f6d7bSStella Laurenzo    # CHECK: {{\[}}4 5 6]]
3269f3f6d7bSStella Laurenzo    print(np.array(attr))
3279f3f6d7bSStella Laurenzo
3289f3f6d7bSStella Laurenzo
3299f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsUI64Signless
3305d6d30edSStella Laurenzo@run
3319f3f6d7bSStella Laurenzodef testGetDenseElementsUI64Signless():
3329f3f6d7bSStella Laurenzo  with Context():
3339f3f6d7bSStella Laurenzo    array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.uint64)
3349f3f6d7bSStella Laurenzo    attr = DenseElementsAttr.get(array)
3359f3f6d7bSStella Laurenzo    # CHECK: dense<{{\[}}[1, 2, 3], [4, 5, 6]]> : tensor<2x3xi64>
3369f3f6d7bSStella Laurenzo    print(attr)
3379f3f6d7bSStella Laurenzo    # CHECK: {{\[}}[1 2 3]
3389f3f6d7bSStella Laurenzo    # CHECK: {{\[}}4 5 6]]
3399f3f6d7bSStella Laurenzo    print(np.array(attr))
3409f3f6d7bSStella Laurenzo
3419f3f6d7bSStella Laurenzo
3429f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsI64
3435d6d30edSStella Laurenzo@run
3449f3f6d7bSStella Laurenzodef testGetDenseElementsI64():
3459f3f6d7bSStella Laurenzo  with Context():
3469f3f6d7bSStella Laurenzo    array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int64)
3479f3f6d7bSStella Laurenzo    attr = DenseElementsAttr.get(array, signless=False)
3489f3f6d7bSStella Laurenzo    # CHECK: dense<{{\[}}[1, 2, 3], [4, 5, 6]]> : tensor<2x3xsi64>
3499f3f6d7bSStella Laurenzo    print(attr)
3509f3f6d7bSStella Laurenzo    # CHECK: {{\[}}[1 2 3]
3519f3f6d7bSStella Laurenzo    # CHECK: {{\[}}4 5 6]]
3529f3f6d7bSStella Laurenzo    print(np.array(attr))
3539f3f6d7bSStella Laurenzo
3549f3f6d7bSStella Laurenzo
3559f3f6d7bSStella Laurenzo# CHECK-LABEL: TEST: testGetDenseElementsUI64
3565d6d30edSStella Laurenzo@run
3579f3f6d7bSStella Laurenzodef testGetDenseElementsUI64():
3589f3f6d7bSStella Laurenzo  with Context():
3599f3f6d7bSStella Laurenzo    array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.uint64)
3609f3f6d7bSStella Laurenzo    attr = DenseElementsAttr.get(array, signless=False)
3619f3f6d7bSStella Laurenzo    # CHECK: dense<{{\[}}[1, 2, 3], [4, 5, 6]]> : tensor<2x3xui64>
3629f3f6d7bSStella Laurenzo    print(attr)
3639f3f6d7bSStella Laurenzo    # CHECK: {{\[}}[1 2 3]
3649f3f6d7bSStella Laurenzo    # CHECK: {{\[}}4 5 6]]
3659f3f6d7bSStella Laurenzo    print(np.array(attr))
3669f3f6d7bSStella Laurenzo
367