// 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 : tensor<100xi1> %0 = arith.constant dense : 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 : tensor<100xi1> %0 = arith.constant dense : 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 : tensor<8xi1> %0 = arith.constant dense : 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 : tensor<8xi1> %0 = arith.constant dense : 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 : tensor<32xi1> %0 = arith.extui %cst : tensor<32xi1> to tensor<32xi32> return %0 : tensor<32xi32> }