mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
fd97bfd063
Summary: Returns the size of a list. I have found this to be rather useful in some development for the AMDGPU backend where we could simplify our .td files by concatenating list<LLVMType> for complex intrinsics. Doing so requires us to compute the position argument for LLVMMatchType. Basically, the usage is in a pattern that looks somewhat like this: list<LLVMType> argtypes = !listconcat(base, [llvm_any_ty, LLVMMatchType<!size(base)>]); Change-Id: I360a0b000fd488d18bea412228230fd93722bd2c Reviewers: arsenm, craig.topper, tra, MartinO Subscribers: wdng, llvm-commits, tpr Differential Revision: https://reviews.llvm.org/D43553 llvm-svn: 325883
35 lines
488 B
TableGen
35 lines
488 B
TableGen
// RUN: llvm-tblgen %s | FileCheck %s
|
|
// XFAIL: vg_leak
|
|
|
|
// CHECK: --- Defs ---
|
|
|
|
// CHECK: def A1 {
|
|
// CHECK: int Val = 0;
|
|
// CHECK: }
|
|
|
|
// CHECK: def A2 {
|
|
// CHECK: int Val = 3;
|
|
// CHECK: }
|
|
|
|
// CHECK: def B1 {
|
|
// CHECK: int Val = 0;
|
|
// CHECK: }
|
|
|
|
// CHECK: def B2 {
|
|
// CHECK: int Val = 2;
|
|
// CHECK: }
|
|
|
|
class A<list<int> L> {
|
|
int Val = !size(L);
|
|
}
|
|
|
|
class B<list<string> L> {
|
|
int Val = !size(L);
|
|
}
|
|
|
|
def A1 : A<[]>;
|
|
def A2 : A<[1, 1, 2]>;
|
|
|
|
def B1 : B<[]>;
|
|
def B2 : B<["a", "b"]>;
|