brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · eab1f5e Raw
72 lines · plain
1// RUN: llvm-tblgen -gen-intrinsic-impl -I %p/../../include %s | FileCheck %s2 3// Test ArgInfo property for pretty-printing intrinsic arguments.4// This test verifies that TableGen generates the correct pretty-printing code5// for intrinsics that use the ArgInfo property.6 7include "llvm/IR/Intrinsics.td"8 9// Simple intrinsic with two arguments that have ArgInfo.10def int_dummy_foo_bar : DefaultAttrsIntrinsic<11    [llvm_i32_ty],12    [llvm_i32_ty,      // data13     llvm_i32_ty,      // mode14     llvm_i32_ty],     // stride15    [IntrNoMem,16     ImmArg<ArgIndex<1>>,17     ArgInfo<ArgIndex<1>, [ArgName<"mode">, ImmArgPrinter<"printDummyMode">]>,18     ArgInfo<ArgIndex<2>, [ArgName<"stride">]>]>;19 20// A custom floating point add with rounding and sat mode.21def int_my_fadd_f32 : DefaultAttrsIntrinsic<22    [llvm_float_ty],23    [llvm_float_ty,    // a24     llvm_float_ty,    // b25     llvm_i32_ty,      // rounding_mode26     llvm_i1_ty],      // saturation_mode27    [IntrNoMem,28     ImmArg<ArgIndex<2>>,29     ImmArg<ArgIndex<3>>,30     ArgInfo<ArgIndex<2>, [ArgName<"rounding_mode">, ImmArgPrinter<"printRoundingMode">]>,31     ArgInfo<ArgIndex<3>, [ArgName<"saturation_mode">]>]>;32 33// CHECK: #ifdef GET_INTRINSIC_PRETTY_PRINT_TABLE34// CHECK-NEXT: static constexpr uint8_t PPTable[] = {35 36// CHECK: #endif // GET_INTRINSIC_PRETTY_PRINT_TABLE37 38// CHECK: #ifdef GET_INTRINSIC_PRETTY_PRINT_ARGUMENTS39// CHECK: void Intrinsic::printImmArg(ID IID, unsigned ArgIdx, raw_ostream &OS, const Constant *ImmArgVal) {40 41// CHECK: case dummy_foo_bar:42// CHECK-NEXT: switch (ArgIdx) {43 44// CHECK-NEXT: case 1:45// CHECK-NEXT: OS << "mode=";46// CHECK-NEXT: printDummyMode(OS, ImmArgVal);47// CHECK-NEXT: return;48 49// CHECK-NEXT: case 2:50// CHECK-NEXT: OS << "stride=";51// CHECK-NEXT: return;52 53// CHECK-NEXT: }54// CHECK-NEXT: break;55 56// CHECK: case my_fadd_f32:57// CHECK-NEXT: switch (ArgIdx) {58 59// CHECK-NEXT: case 2:60// CHECK-NEXT: OS << "rounding_mode=";61// CHECK-NEXT: printRoundingMode(OS, ImmArgVal);62// CHECK-NEXT: return;63 64// CHECK-NEXT: case 3:65// CHECK-NEXT: OS << "saturation_mode=";66// CHECK-NEXT: return;67 68// CHECK-NEXT: }69// CHECK-NEXT: break;70 71// CHECK: #endif // GET_INTRINSIC_PRETTY_PRINT_ARGUMENTS72