blob: aa11b66b3c07336f89554e732ba245199e0918b9 [file]
// RUN: mlir-opt %s -emit-bytecode | mlir-opt | FileCheck %s
// RUN: mlir-opt %s -canonicalize | FileCheck %s --check-prefix=CHECK-FOLD
// RUN: mlir-opt %s -emit-bytecode | mlir-opt -canonicalize | FileCheck %s --check-prefix=CHECK-FOLD
// CHECK-LABEL: func.func @test_i1_splat_true
func.func @test_i1_splat_true() -> tensor<100xi1> {
// CHECK: arith.constant dense<true> : tensor<100xi1>
%0 = arith.constant dense<true> : tensor<100xi1>
return %0 : tensor<100xi1>
}
// CHECK-LABEL: func.func @test_i1_splat_false
func.func @test_i1_splat_false() -> tensor<100xi1> {
// CHECK: arith.constant dense<false> : tensor<100xi1>
%0 = arith.constant dense<false> : tensor<100xi1>
return %0 : tensor<100xi1>
}
// CHECK-LABEL: func.func @test_8xi1_splat_true
func.func @test_8xi1_splat_true() -> tensor<8xi1> {
// CHECK: arith.constant dense<true> : tensor<8xi1>
%0 = arith.constant dense<true> : tensor<8xi1>
return %0 : tensor<8xi1>
}
// CHECK-LABEL: func.func @test_8xi1_splat_false
func.func @test_8xi1_splat_false() -> tensor<8xi1> {
// CHECK: arith.constant dense<false> : tensor<8xi1>
%0 = arith.constant dense<false> : tensor<8xi1>
return %0 : tensor<8xi1>
}
// CHECK-LABEL: func.func @test_i8_mixed()
func.func @test_i8_mixed() {
// CHECK: arith.constant dense<[true, false, true, false, true, false, true, false]> : tensor<8xi1>
%0 = arith.constant dense<[true, false, true, false, true, false, true, false]> : tensor<8xi1>
return
}
// CHECK-LABEL: func.func @test_i9_mixed()
func.func @test_i9_mixed() {
// CHECK: arith.constant dense<[true, false, true, false, true, false, true, false, true]> : tensor<9xi1>
%0 = arith.constant dense<[true, false, true, false, true, false, true, false, true]> : tensor<9xi1>
return
}
// Test that the in-memory representation of i1 values is correctly handled
// during bytecode roundtrip (must be unpacked to 0x01 not 0xFF).
// See llvm/llvm-project#186178.
func.func public @test_in_memory_repr() -> (tensor<32xi32> {jax.result_info = "result"}) {
// CHECK-FOLD: dense<1> : tensor<32xi32>
%cst = arith.constant dense<true> : tensor<32xi1>
%0 = arith.extui %cst : tensor<32xi1> to tensor<32xi32>
return %0 : tensor<32xi32>
}