Skip to content

Commit

Permalink
Check that negative constants are printed properly in emitc (iree-org…
Browse files Browse the repository at this point in the history
  • Loading branch information
simon-camp authored Sep 15, 2021
1 parent 1a049bc commit 07ae2c4
Showing 1 changed file with 23 additions and 10 deletions.
33 changes: 23 additions & 10 deletions iree/compiler/Dialect/VM/Target/C/test/constant_ops.mlir
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
// RUN: iree-translate -iree-vm-ir-to-c-module -iree-vm-c-module-optimize=false %s | IreeFileCheck %s
// RUN: iree-translate -split-input-file -iree-vm-ir-to-c-module -iree-vm-c-module-optimize=false %s | IreeFileCheck %s

vm.module @constant_ops {
vm.module @rodata_ops {
// Check the generated arrays

// CHECK: iree_alignas(16) static const uint8_t constant_ops_buffer_1[] = {1, 2, 3};
// CHECK-NEXT: iree_alignas(16) static const uint8_t constant_ops_buffer_2[] = {1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0};
// CHECK: iree_alignas(16) static const uint8_t rodata_ops_buffer_1[] = {1, 2, 3};
// CHECK-NEXT: iree_alignas(16) static const uint8_t rodata_ops_buffer_2[] = {1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0};

// Check the generated state struct
// CHECK-LABEL: struct constant_ops_state_t {
// CHECK-LABEL: struct rodata_ops_state_t {
// CHECK-NEXT: iree_allocator_t allocator;
// CHECK-NEXT: uint8_t rwdata[1];
// CHECK-NEXT: iree_vm_ref_t refs[1];
Expand All @@ -21,22 +21,35 @@ vm.module @constant_ops {
vm.rodata public @buffer_2 dense<[1, 2, 3]> : tensor<3xi32>

// check state initialization inside the alloc_state function
// CHECK-LABEL: static iree_status_t constant_ops_alloc_state(
// CHECK-LABEL: static iree_status_t rodata_ops_alloc_state(
// CHECK: [[STATE:[^ ]*]] = NULL;

// CHECK: [[VOID_PTR_1:[^ ]*]] = EMITC_CAST(constant_ops_buffer_1, void*);
// CHECK-NEXT: [[SIZE_1:[^ ]*]] = sizeof(constant_ops_buffer_1);
// CHECK: [[VOID_PTR_1:[^ ]*]] = EMITC_CAST(rodata_ops_buffer_1, void*);
// CHECK-NEXT: [[SIZE_1:[^ ]*]] = sizeof(rodata_ops_buffer_1);
// CHECK-NEXT: [[BYTE_SPAN_1:[^ ]*]] = iree_make_byte_span([[VOID_PTR_1]], [[SIZE_1]]);
// CHECK-NEXT: [[ALLOCATOR_1:[^ ]*]] = iree_allocator_null();
// CHECK-NEXT: [[BUFFERS_1:[^ ]*]] = EMITC_STRUCT_PTR_MEMBER([[STATE]], rodata_buffers);
// CHECK-NEXT: [[BUFFER_1:[^ ]*]] = EMITC_ARRAY_ELEMENT_ADDRESS([[BUFFERS_1]], 0);
// CHECK-NEXT: iree_vm_buffer_initialize(IREE_VM_BUFFER_ACCESS_ORIGIN_MODULE, [[BYTE_SPAN_1]], [[ALLOCATOR_1]], [[BUFFER_1]]);

// CHECK: [[VOID_PTR_2:[^ ]*]] = EMITC_CAST(constant_ops_buffer_2, void*);
// CHECK-NEXT: [[SIZE_2:[^ ]*]] = sizeof(constant_ops_buffer_2);
// CHECK: [[VOID_PTR_2:[^ ]*]] = EMITC_CAST(rodata_ops_buffer_2, void*);
// CHECK-NEXT: [[SIZE_2:[^ ]*]] = sizeof(rodata_ops_buffer_2);
// CHECK-NEXT: [[BYTE_SPAN_2:[^ ]*]] = iree_make_byte_span([[VOID_PTR_2]], [[SIZE_2]]);
// CHECK-NEXT: [[ALLOCATOR_2:[^ ]*]] = iree_allocator_null();
// CHECK-NEXT: [[BUFFERS_2:[^ ]*]] = EMITC_STRUCT_PTR_MEMBER([[STATE]], rodata_buffers);
// CHECK-NEXT: [[BUFFER_2:[^ ]*]] = EMITC_ARRAY_ELEMENT_ADDRESS([[BUFFERS_2]], 1);
// CHECK-NEXT: iree_vm_buffer_initialize(IREE_VM_BUFFER_ACCESS_ORIGIN_MODULE, [[BYTE_SPAN_2]], [[ALLOCATOR_2]], [[BUFFER_2]]);
}

// -----

vm.module @constant_ops {
// CHECK-LABEL: constant_ops_neg_constant
vm.func @neg_constant() -> i32 {
// CHECK: int32_t [[CONST:[^ ]*]];
// CHECK-NOT: [[CONST]] = 4294967292;
// CHECK: [[CONST]] = -4;
%c-4_i32 = vm.const.i32 -4 : i32
vm.return %c-4_i32 : i32
}
}

0 comments on commit 07ae2c4

Please sign in to comment.