|  | // RUN: llvm-tblgen %s | FileCheck %s | 
|  | // XFAIL: vg_leak | 
|  |  | 
|  | class Instr<int i> { | 
|  | int index = i; | 
|  | } | 
|  |  | 
|  | multiclass Test { | 
|  | def Vx#NAME#PS : Instr<0>; | 
|  | def Vx#NAME#PD : Instr<1>; | 
|  | def Vy#NAME#PS : Instr<2>; | 
|  | def Vy#NAME#PD : Instr<3>; | 
|  | } | 
|  |  | 
|  | class Arithmetic<int i> { | 
|  | string name = "number"#!add(i, 1); | 
|  | } | 
|  |  | 
|  | def A : Arithmetic<5>; | 
|  |  | 
|  | // CHECK: def A { | 
|  | // CHECK:   string name = "number6"; | 
|  | // CHECK: } | 
|  |  | 
|  | defm ADD : Test; | 
|  | defm SUB : Test; | 
|  |  | 
|  | // CHECK: VxADDPD | 
|  | // CHECK: index = 1; | 
|  | // CHECK: VxADDPS | 
|  | // CHECK: index = 0; | 
|  |  | 
|  | // CHECK: VxSUBPD | 
|  | // CHECK: index = 1; | 
|  | // CHECK: VxSUBPS | 
|  | // CHECK: index = 0; | 
|  |  | 
|  | // CHECK: VyADDPD | 
|  | // CHECK: index = 3; | 
|  | // CHECK: VyADDPS | 
|  | // CHECK: index = 2; | 
|  |  | 
|  | // CHECK: VySUBPD | 
|  | // CHECK: index = 3; | 
|  | // CHECK: VySUBPS | 
|  | // CHECK: index = 2; |