79 lines · plain
1// RUN: llvm-tblgen -gen-intrinsic-impl -I %p/../../include -DTEST_INTRINSICS_SUPPRESS_DEFS %s | FileCheck %s2 3include "llvm/IR/Intrinsics.td"4 5def int_aarch64_get_target_mem0_mem1 : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrReadMem, IntrRead<[TargetMem0, TargetMem1]>]>;6 7def int_aarch64_get_target_mem0_set_target_mem1 : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrRead<[TargetMem0]>, IntrWrite<[TargetMem1]>]>;8 9def int_aarch64_get_target_mem1 : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrReadMem, IntrRead<[TargetMem1]>]>;10 11def int_aarch64_get_target_mem1_set_target_mem1 : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrRead<[TargetMem1]>, IntrWrite<[TargetMem1]>]>;12 13def int_aarch64_set_inaccessible_mem : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrWriteMem, IntrWrite<[InaccessibleMem]>]>;14 15def int_aarch64_set_target_mem0 : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrWriteMem, IntrWrite<[TargetMem0]>]>;16 17// CHECK: static AttributeSet getIntrinsicFnAttributeSet(LLVMContext &C, unsigned ID) {18// CHECK-NEXT: switch (ID) {19// CHECK-NEXT: default: llvm_unreachable("Invalid attribute set number");20// CHECK-NEXT: case 0: // llvm.aarch64.get.target.mem0.mem121// CHECK-NEXT: return AttributeSet::get(C, {22// CHECK-NEXT: Attribute::get(C, Attribute::NoUnwind),23// CHECK-NEXT: Attribute::get(C, Attribute::NoCallback),24// CHECK-NEXT: Attribute::get(C, Attribute::NoSync),25// CHECK-NEXT: Attribute::get(C, Attribute::NoFree),26// CHECK-NEXT: Attribute::get(C, Attribute::WillReturn),27// CHECK-NEXT: // ArgMem: NoModRef, InaccessibleMem: NoModRef, ErrnoMem: NoModRef, Other: NoModRef, TargetMem0: Ref, TargetMem1: Ref28// CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(1280)),29// CHECK-NEXT: });30// CHECK-NEXT: case 1: // llvm.aarch64.get.target.mem0.set.target.mem131// CHECK-NEXT: return AttributeSet::get(C, {32// CHECK-NEXT: Attribute::get(C, Attribute::NoUnwind),33// CHECK-NEXT: Attribute::get(C, Attribute::NoCallback),34// CHECK-NEXT: Attribute::get(C, Attribute::NoSync),35// CHECK-NEXT: Attribute::get(C, Attribute::NoFree),36// CHECK-NEXT: Attribute::get(C, Attribute::WillReturn),37// CHECK-NEXT: // ArgMem: NoModRef, InaccessibleMem: NoModRef, ErrnoMem: NoModRef, Other: NoModRef, TargetMem0: Ref, TargetMem1: Mod38// CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(2304)),39// CHECK-NEXT: });40// CHECK-NEXT: case 2: // llvm.aarch64.get.target.mem141// CHECK-NEXT: return AttributeSet::get(C, {42// CHECK-NEXT: Attribute::get(C, Attribute::NoUnwind),43// CHECK-NEXT: Attribute::get(C, Attribute::NoCallback),44// CHECK-NEXT: Attribute::get(C, Attribute::NoSync),45// CHECK-NEXT: Attribute::get(C, Attribute::NoFree),46// CHECK-NEXT: Attribute::get(C, Attribute::WillReturn),47// CHECK-NEXT: // ArgMem: NoModRef, InaccessibleMem: NoModRef, ErrnoMem: NoModRef, Other: NoModRef, TargetMem0: NoModRef, TargetMem1: Ref48// CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(1024)),49// CHECK-NEXT: });50// CHECK-NEXT: case 3: // llvm.aarch64.get.target.mem1.set.target.mem151// CHECK-NEXT: return AttributeSet::get(C, {52// CHECK-NEXT: Attribute::get(C, Attribute::NoUnwind),53// CHECK-NEXT: Attribute::get(C, Attribute::NoCallback),54// CHECK-NEXT: Attribute::get(C, Attribute::NoSync),55// CHECK-NEXT: Attribute::get(C, Attribute::NoFree),56// CHECK-NEXT: Attribute::get(C, Attribute::WillReturn),57// CHECK-NEXT: // ArgMem: NoModRef, InaccessibleMem: NoModRef, ErrnoMem: NoModRef, Other: NoModRef, TargetMem0: NoModRef, TargetMem1: ModRef58// CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(3072)),59// CHECK-NEXT: });60// CHECK-NEXT: case 4: // llvm.aarch64.set.inaccessible.mem61// CHECK-NEXT: return AttributeSet::get(C, {62// CHECK-NEXT: Attribute::get(C, Attribute::NoUnwind),63// CHECK-NEXT: Attribute::get(C, Attribute::NoCallback),64// CHECK-NEXT: Attribute::get(C, Attribute::NoSync),65// CHECK-NEXT: Attribute::get(C, Attribute::NoFree),66// CHECK-NEXT: Attribute::get(C, Attribute::WillReturn),67// CHECK-NEXT: // ArgMem: NoModRef, InaccessibleMem: Mod, ErrnoMem: NoModRef, Other: NoModRef, TargetMem0: NoModRef, TargetMem1: NoModRef68// CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(8)),69// CHECK-NEXT: });70// CHECK-NEXT: case 5: // llvm.aarch64.set.target.mem071// CHECK-NEXT: return AttributeSet::get(C, {72// CHECK-NEXT: Attribute::get(C, Attribute::NoUnwind),73// CHECK-NEXT: Attribute::get(C, Attribute::NoCallback),74// CHECK-NEXT: Attribute::get(C, Attribute::NoSync),75// CHECK-NEXT: Attribute::get(C, Attribute::NoFree),76// CHECK-NEXT: Attribute::get(C, Attribute::WillReturn),77// CHECK-NEXT: // ArgMem: NoModRef, InaccessibleMem: NoModRef, ErrnoMem: NoModRef, Other: NoModRef, TargetMem0: Mod, TargetMem1: NoModRef78// CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(512)),79