brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.4 KiB · 710d402 Raw
339 lines · c
1//===- pdl.c - Test of PDL dialect C API ----------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM4// Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7//8//===----------------------------------------------------------------------===//9 10// RUN: mlir-capi-pdl-test 2>&1 | FileCheck %s11 12#include "mlir-c/Dialect/PDL.h"13#include "mlir-c/BuiltinTypes.h"14#include "mlir-c/IR.h"15 16#include <assert.h>17#include <inttypes.h>18#include <stdio.h>19#include <stdlib.h>20 21// CHECK-LABEL: testAttributeType22void testAttributeType(MlirContext ctx) {23  fprintf(stderr, "testAttributeType\n");24 25  MlirType parsedType = mlirTypeParseGet(26      ctx, mlirStringRefCreateFromCString("!pdl.attribute"));27  MlirType constructedType = mlirPDLAttributeTypeGet(ctx);28 29  assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType");30  assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType");31 32  // CHECK: parsedType isa PDLType: 133  fprintf(stderr, "parsedType isa PDLType: %d\n", 34      mlirTypeIsAPDLType(parsedType));35  // CHECK: parsedType isa PDLAttributeType: 136  fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", 37      mlirTypeIsAPDLAttributeType(parsedType));38  // CHECK: parsedType isa PDLOperationType: 039  fprintf(stderr, "parsedType isa PDLOperationType: %d\n", 40      mlirTypeIsAPDLOperationType(parsedType));41  // CHECK: parsedType isa PDLRangeType: 042  fprintf(stderr, "parsedType isa PDLRangeType: %d\n", 43      mlirTypeIsAPDLRangeType(parsedType));44  // CHECK: parsedType isa PDLTypeType: 045  fprintf(stderr, "parsedType isa PDLTypeType: %d\n", 46      mlirTypeIsAPDLTypeType(parsedType));47  // CHECK: parsedType isa PDLValueType: 048  fprintf(stderr, "parsedType isa PDLValueType: %d\n", 49      mlirTypeIsAPDLValueType(parsedType));50 51  // CHECK: constructedType isa PDLType: 152  fprintf(stderr, "constructedType isa PDLType: %d\n", 53      mlirTypeIsAPDLType(constructedType));54  // CHECK: constructedType isa PDLAttributeType: 155  fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", 56      mlirTypeIsAPDLAttributeType(constructedType));57  // CHECK: constructedType isa PDLOperationType: 058  fprintf(stderr, "constructedType isa PDLOperationType: %d\n", 59      mlirTypeIsAPDLOperationType(constructedType));60  // CHECK: constructedType isa PDLRangeType: 061  fprintf(stderr, "constructedType isa PDLRangeType: %d\n", 62      mlirTypeIsAPDLRangeType(constructedType));63  // CHECK: constructedType isa PDLTypeType: 064  fprintf(stderr, "constructedType isa PDLTypeType: %d\n", 65      mlirTypeIsAPDLTypeType(constructedType));66  // CHECK: constructedType isa PDLValueType: 067  fprintf(stderr, "constructedType isa PDLValueType: %d\n", 68      mlirTypeIsAPDLValueType(constructedType));69 70  // CHECK: equal: 171  fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType));72 73  // CHECK: !pdl.attribute74  mlirTypeDump(parsedType);75  // CHECK: !pdl.attribute76  mlirTypeDump(constructedType);77 78  fprintf(stderr, "\n\n");79}80 81// CHECK-LABEL: testOperationType82void testOperationType(MlirContext ctx) {83  fprintf(stderr, "testOperationType\n");84 85  MlirType parsedType = mlirTypeParseGet(86      ctx, mlirStringRefCreateFromCString("!pdl.operation"));87  MlirType constructedType = mlirPDLOperationTypeGet(ctx);88 89  assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType");90  assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType");91 92  // CHECK: parsedType isa PDLType: 193  fprintf(stderr, "parsedType isa PDLType: %d\n", 94      mlirTypeIsAPDLType(parsedType));95  // CHECK: parsedType isa PDLAttributeType: 096  fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", 97      mlirTypeIsAPDLAttributeType(parsedType));98  // CHECK: parsedType isa PDLOperationType: 1 99  fprintf(stderr, "parsedType isa PDLOperationType: %d\n", 100      mlirTypeIsAPDLOperationType(parsedType));101  // CHECK: parsedType isa PDLRangeType: 0102  fprintf(stderr, "parsedType isa PDLRangeType: %d\n", 103      mlirTypeIsAPDLRangeType(parsedType));104  // CHECK: parsedType isa PDLTypeType: 0105  fprintf(stderr, "parsedType isa PDLTypeType: %d\n", 106      mlirTypeIsAPDLTypeType(parsedType));107  // CHECK: parsedType isa PDLValueType: 0108  fprintf(stderr, "parsedType isa PDLValueType: %d\n", 109      mlirTypeIsAPDLValueType(parsedType));110 111  // CHECK: constructedType isa PDLType: 1112  fprintf(stderr, "constructedType isa PDLType: %d\n", 113      mlirTypeIsAPDLType(constructedType));114  // CHECK: constructedType isa PDLAttributeType: 0115  fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", 116      mlirTypeIsAPDLAttributeType(constructedType));117  // CHECK: constructedType isa PDLOperationType: 1118  fprintf(stderr, "constructedType isa PDLOperationType: %d\n", 119      mlirTypeIsAPDLOperationType(constructedType));120  // CHECK: constructedType isa PDLRangeType: 0121  fprintf(stderr, "constructedType isa PDLRangeType: %d\n", 122      mlirTypeIsAPDLRangeType(constructedType));123  // CHECK: constructedType isa PDLTypeType: 0124  fprintf(stderr, "constructedType isa PDLTypeType: %d\n", 125      mlirTypeIsAPDLTypeType(constructedType));126  // CHECK: constructedType isa PDLValueType: 0127  fprintf(stderr, "constructedType isa PDLValueType: %d\n", 128      mlirTypeIsAPDLValueType(constructedType));129 130  // CHECK: equal: 1131  fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType));132 133  // CHECK: !pdl.operation134  mlirTypeDump(parsedType);135  // CHECK: !pdl.operation136  mlirTypeDump(constructedType);137 138  fprintf(stderr, "\n\n");139}140 141// CHECK-LABEL: testRangeType142void testRangeType(MlirContext ctx) {143  fprintf(stderr, "testRangeType\n");144 145  MlirType typeType = mlirPDLTypeTypeGet(ctx);146  MlirType parsedType = mlirTypeParseGet(147      ctx, mlirStringRefCreateFromCString("!pdl.range<type>"));148  MlirType constructedType = mlirPDLRangeTypeGet(typeType);149  MlirType elementType = mlirPDLRangeTypeGetElementType(constructedType);150 151  assert(!mlirTypeIsNull(typeType) && "couldn't get PDLTypeType");152  assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType");153  assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType");154 155  // CHECK: parsedType isa PDLType: 1156  fprintf(stderr, "parsedType isa PDLType: %d\n", 157      mlirTypeIsAPDLType(parsedType));158  // CHECK: parsedType isa PDLAttributeType: 0159  fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", 160      mlirTypeIsAPDLAttributeType(parsedType));161  // CHECK: parsedType isa PDLOperationType: 0162  fprintf(stderr, "parsedType isa PDLOperationType: %d\n", 163      mlirTypeIsAPDLOperationType(parsedType));164  // CHECK: parsedType isa PDLRangeType: 1 165  fprintf(stderr, "parsedType isa PDLRangeType: %d\n", 166      mlirTypeIsAPDLRangeType(parsedType));167  // CHECK: parsedType isa PDLTypeType: 0168  fprintf(stderr, "parsedType isa PDLTypeType: %d\n", 169      mlirTypeIsAPDLTypeType(parsedType));170  // CHECK: parsedType isa PDLValueType: 0171  fprintf(stderr, "parsedType isa PDLValueType: %d\n", 172      mlirTypeIsAPDLValueType(parsedType));173 174  // CHECK: constructedType isa PDLType: 1175  fprintf(stderr, "constructedType isa PDLType: %d\n", 176      mlirTypeIsAPDLType(constructedType));177  // CHECK: constructedType isa PDLAttributeType: 0178  fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", 179      mlirTypeIsAPDLAttributeType(constructedType));180  // CHECK: constructedType isa PDLOperationType: 0181  fprintf(stderr, "constructedType isa PDLOperationType: %d\n", 182      mlirTypeIsAPDLOperationType(constructedType));183  // CHECK: constructedType isa PDLRangeType: 1 184  fprintf(stderr, "constructedType isa PDLRangeType: %d\n", 185      mlirTypeIsAPDLRangeType(constructedType));186  // CHECK: constructedType isa PDLTypeType: 0187  fprintf(stderr, "constructedType isa PDLTypeType: %d\n", 188      mlirTypeIsAPDLTypeType(constructedType));189  // CHECK: constructedType isa PDLValueType: 0190  fprintf(stderr, "constructedType isa PDLValueType: %d\n", 191      mlirTypeIsAPDLValueType(constructedType));192 193  // CHECK: equal: 1194  fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType));195  // CHECK: equal: 1196  fprintf(stderr, "equal: %d\n", mlirTypeEqual(typeType, elementType));197 198  // CHECK: !pdl.range<type>199  mlirTypeDump(parsedType);200  // CHECK: !pdl.range<type>201  mlirTypeDump(constructedType);202  // CHECK: !pdl.type203  mlirTypeDump(elementType);204 205  fprintf(stderr, "\n\n");206}207 208// CHECK-LABEL: testTypeType209void testTypeType(MlirContext ctx) {210  fprintf(stderr, "testTypeType\n");211 212  MlirType parsedType = mlirTypeParseGet(213      ctx, mlirStringRefCreateFromCString("!pdl.type"));214  MlirType constructedType = mlirPDLTypeTypeGet(ctx);215 216  assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType");217  assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType");218 219  // CHECK: parsedType isa PDLType: 1220  fprintf(stderr, "parsedType isa PDLType: %d\n", 221      mlirTypeIsAPDLType(parsedType));222  // CHECK: parsedType isa PDLAttributeType: 0223  fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", 224      mlirTypeIsAPDLAttributeType(parsedType));225  // CHECK: parsedType isa PDLOperationType: 0226  fprintf(stderr, "parsedType isa PDLOperationType: %d\n", 227      mlirTypeIsAPDLOperationType(parsedType));228  // CHECK: parsedType isa PDLRangeType: 0229  fprintf(stderr, "parsedType isa PDLRangeType: %d\n", 230      mlirTypeIsAPDLRangeType(parsedType));231  // CHECK: parsedType isa PDLTypeType: 1 232  fprintf(stderr, "parsedType isa PDLTypeType: %d\n", 233      mlirTypeIsAPDLTypeType(parsedType));234  // CHECK: parsedType isa PDLValueType: 0235  fprintf(stderr, "parsedType isa PDLValueType: %d\n", 236      mlirTypeIsAPDLValueType(parsedType));237 238  // CHECK: constructedType isa PDLType: 1239  fprintf(stderr, "constructedType isa PDLType: %d\n", 240      mlirTypeIsAPDLType(constructedType));241  // CHECK: constructedType isa PDLAttributeType: 0242  fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", 243      mlirTypeIsAPDLAttributeType(constructedType));244  // CHECK: constructedType isa PDLOperationType: 0245  fprintf(stderr, "constructedType isa PDLOperationType: %d\n", 246      mlirTypeIsAPDLOperationType(constructedType));247  // CHECK: constructedType isa PDLRangeType: 0248  fprintf(stderr, "constructedType isa PDLRangeType: %d\n", 249      mlirTypeIsAPDLRangeType(constructedType));250  // CHECK: constructedType isa PDLTypeType: 1251  fprintf(stderr, "constructedType isa PDLTypeType: %d\n", 252      mlirTypeIsAPDLTypeType(constructedType));253  // CHECK: constructedType isa PDLValueType: 0254  fprintf(stderr, "constructedType isa PDLValueType: %d\n", 255      mlirTypeIsAPDLValueType(constructedType));256 257  // CHECK: equal: 1258  fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType));259 260  // CHECK: !pdl.type261  mlirTypeDump(parsedType);262  // CHECK: !pdl.type263  mlirTypeDump(constructedType);264 265  fprintf(stderr, "\n\n");266}267 268// CHECK-LABEL: testValueType269void testValueType(MlirContext ctx) {270  fprintf(stderr, "testValueType\n");271 272  MlirType parsedType = mlirTypeParseGet(273      ctx, mlirStringRefCreateFromCString("!pdl.value"));274  MlirType constructedType = mlirPDLValueTypeGet(ctx);275 276  assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType");277  assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType");278 279  // CHECK: parsedType isa PDLType: 1280  fprintf(stderr, "parsedType isa PDLType: %d\n", 281      mlirTypeIsAPDLType(parsedType));282  // CHECK: parsedType isa PDLAttributeType: 0283  fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", 284      mlirTypeIsAPDLAttributeType(parsedType));285  // CHECK: parsedType isa PDLOperationType: 0286  fprintf(stderr, "parsedType isa PDLOperationType: %d\n", 287      mlirTypeIsAPDLOperationType(parsedType));288  // CHECK: parsedType isa PDLRangeType: 0289  fprintf(stderr, "parsedType isa PDLRangeType: %d\n", 290      mlirTypeIsAPDLRangeType(parsedType));291  // CHECK: parsedType isa PDLTypeType: 0292  fprintf(stderr, "parsedType isa PDLTypeType: %d\n", 293      mlirTypeIsAPDLTypeType(parsedType));294  // CHECK: parsedType isa PDLValueType: 1295  fprintf(stderr, "parsedType isa PDLValueType: %d\n", 296      mlirTypeIsAPDLValueType(parsedType));297 298  // CHECK: constructedType isa PDLType: 1299  fprintf(stderr, "constructedType isa PDLType: %d\n", 300      mlirTypeIsAPDLType(constructedType));301  // CHECK: constructedType isa PDLAttributeType: 0302  fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", 303      mlirTypeIsAPDLAttributeType(constructedType));304  // CHECK: constructedType isa PDLOperationType: 0305  fprintf(stderr, "constructedType isa PDLOperationType: %d\n", 306      mlirTypeIsAPDLOperationType(constructedType));307  // CHECK: constructedType isa PDLRangeType: 0308  fprintf(stderr, "constructedType isa PDLRangeType: %d\n", 309      mlirTypeIsAPDLRangeType(constructedType));310  // CHECK: constructedType isa PDLTypeType: 0311  fprintf(stderr, "constructedType isa PDLTypeType: %d\n", 312      mlirTypeIsAPDLTypeType(constructedType));313  // CHECK: constructedType isa PDLValueType: 1314  fprintf(stderr, "constructedType isa PDLValueType: %d\n", 315      mlirTypeIsAPDLValueType(constructedType));316 317  // CHECK: equal: 1318  fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType));319 320  // CHECK: !pdl.value321  mlirTypeDump(parsedType);322  // CHECK: !pdl.value323  mlirTypeDump(constructedType);324 325  fprintf(stderr, "\n\n");326}327 328int main(void) {329  MlirContext ctx = mlirContextCreate();330  mlirDialectHandleRegisterDialect(mlirGetDialectHandle__pdl__(), ctx);331  testAttributeType(ctx);332  testOperationType(ctx);333  testRangeType(ctx);334  testTypeType(ctx);335  testValueType(ctx);336  mlirContextDestroy(ctx);337  return EXIT_SUCCESS;338}339