1*49921d1cSStefan Pintilie; RUN: llc -verify-machineinstrs -mcpu=pwr10 -mtriple=powerpc64le-unknown-unknown \ 2*49921d1cSStefan Pintilie; RUN: -ppc-asm-full-reg-names --ppc-vsr-nums-as-vr < %s | FileCheck %s 3*49921d1cSStefan Pintilie 4*49921d1cSStefan Pintilie; Function Attrs: nounwind 5*49921d1cSStefan Pintilie; CHECK-LABEL: and_not 6*49921d1cSStefan Pintilie; CHECK: xxlandc v2, v2, v3 7*49921d1cSStefan Pintilie; CHECK-NEXT: blr 8*49921d1cSStefan Pintiliedefine dso_local <4 x i32> @and_not(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 { 9*49921d1cSStefan Pintilieentry: 10*49921d1cSStefan Pintilie %neg = xor <4 x i32> %B, <i32 -1, i32 -1, i32 -1, i32 -1> 11*49921d1cSStefan Pintilie %and = and <4 x i32> %neg, %A 12*49921d1cSStefan Pintilie ret <4 x i32> %and 13*49921d1cSStefan Pintilie} 14*49921d1cSStefan Pintilie 15*49921d1cSStefan Pintilie; Function Attrs: nounwind 16*49921d1cSStefan Pintilie; CHECK-LABEL: and_and8 17*49921d1cSStefan Pintilie; CHECK: xxeval v2, v3, v2, v4, 1 18*49921d1cSStefan Pintilie; CHECK-NEXT: blr 19*49921d1cSStefan Pintiliedefine dso_local <16 x i8> @and_and8(<16 x i8> %A, <16 x i8> %B, <16 x i8> %C) local_unnamed_addr #0 { 20*49921d1cSStefan Pintilieentry: 21*49921d1cSStefan Pintilie %and = and <16 x i8> %B, %A 22*49921d1cSStefan Pintilie %and1 = and <16 x i8> %and, %C 23*49921d1cSStefan Pintilie ret <16 x i8> %and1 24*49921d1cSStefan Pintilie} 25*49921d1cSStefan Pintilie 26*49921d1cSStefan Pintilie; Function Attrs: nounwind 27*49921d1cSStefan Pintilie; CHECK-LABEL: and_and16 28*49921d1cSStefan Pintilie; CHECK: xxeval v2, v3, v2, v4, 1 29*49921d1cSStefan Pintilie; CHECK-NEXT: blr 30*49921d1cSStefan Pintiliedefine dso_local <8 x i16> @and_and16(<8 x i16> %A, <8 x i16> %B, <8 x i16> %C) local_unnamed_addr #0 { 31*49921d1cSStefan Pintilieentry: 32*49921d1cSStefan Pintilie %and = and <8 x i16> %B, %A 33*49921d1cSStefan Pintilie %and1 = and <8 x i16> %and, %C 34*49921d1cSStefan Pintilie ret <8 x i16> %and1 35*49921d1cSStefan Pintilie} 36*49921d1cSStefan Pintilie 37*49921d1cSStefan Pintilie; Function Attrs: nounwind 38*49921d1cSStefan Pintilie; CHECK-LABEL: and_and32 39*49921d1cSStefan Pintilie; CHECK: xxeval v2, v3, v2, v4, 1 40*49921d1cSStefan Pintilie; CHECK-NEXT: blr 41*49921d1cSStefan Pintiliedefine dso_local <4 x i32> @and_and32(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 { 42*49921d1cSStefan Pintilieentry: 43*49921d1cSStefan Pintilie %and = and <4 x i32> %B, %A 44*49921d1cSStefan Pintilie %and1 = and <4 x i32> %and, %C 45*49921d1cSStefan Pintilie ret <4 x i32> %and1 46*49921d1cSStefan Pintilie} 47*49921d1cSStefan Pintilie 48*49921d1cSStefan Pintilie; Function Attrs: nounwind 49*49921d1cSStefan Pintilie; CHECK-LABEL: and_and64 50*49921d1cSStefan Pintilie; CHECK: xxeval v2, v3, v2, v4, 1 51*49921d1cSStefan Pintilie; CHECK-NEXT: blr 52*49921d1cSStefan Pintiliedefine dso_local <2 x i64> @and_and64(<2 x i64> %A, <2 x i64> %B, <2 x i64> %C) local_unnamed_addr #0 { 53*49921d1cSStefan Pintilieentry: 54*49921d1cSStefan Pintilie %and = and <2 x i64> %B, %A 55*49921d1cSStefan Pintilie %and1 = and <2 x i64> %and, %C 56*49921d1cSStefan Pintilie ret <2 x i64> %and1 57*49921d1cSStefan Pintilie} 58*49921d1cSStefan Pintilie 59*49921d1cSStefan Pintilie; Function Attrs: nounwind 60*49921d1cSStefan Pintilie; CHECK-LABEL: and_nand 61*49921d1cSStefan Pintilie; CHECK: xxeval v2, v2, v4, v3, 14 62*49921d1cSStefan Pintilie; CHECK-NEXT: blr 63*49921d1cSStefan Pintiliedefine dso_local <4 x i32> @and_nand(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 { 64*49921d1cSStefan Pintilieentry: 65*49921d1cSStefan Pintilie %and = and <4 x i32> %C, %B 66*49921d1cSStefan Pintilie %neg = xor <4 x i32> %and, <i32 -1, i32 -1, i32 -1, i32 -1> 67*49921d1cSStefan Pintilie %and1 = and <4 x i32> %neg, %A 68*49921d1cSStefan Pintilie ret <4 x i32> %and1 69*49921d1cSStefan Pintilie} 70*49921d1cSStefan Pintilie 71*49921d1cSStefan Pintilie; Function Attrs: nounwind 72*49921d1cSStefan Pintilie; CHECK-LABEL: and_or 73*49921d1cSStefan Pintilie; CHECK: xxeval v2, v2, v4, v3, 7 74*49921d1cSStefan Pintilie; CHECK-NEXT: blr 75*49921d1cSStefan Pintiliedefine dso_local <4 x i32> @and_or(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 { 76*49921d1cSStefan Pintilieentry: 77*49921d1cSStefan Pintilie %or = or <4 x i32> %C, %B 78*49921d1cSStefan Pintilie %and = and <4 x i32> %or, %A 79*49921d1cSStefan Pintilie ret <4 x i32> %and 80*49921d1cSStefan Pintilie} 81*49921d1cSStefan Pintilie 82*49921d1cSStefan Pintilie; Function Attrs: nounwind 83*49921d1cSStefan Pintilie; CHECK-LABEL: and_nor 84*49921d1cSStefan Pintilie; CHECK: xxeval v2, v2, v4, v3, 8 85*49921d1cSStefan Pintilie; CHECK-NEXT: blr 86*49921d1cSStefan Pintiliedefine dso_local <4 x i32> @and_nor(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 { 87*49921d1cSStefan Pintilieentry: 88*49921d1cSStefan Pintilie %or = or <4 x i32> %C, %B 89*49921d1cSStefan Pintilie %neg = xor <4 x i32> %or, <i32 -1, i32 -1, i32 -1, i32 -1> 90*49921d1cSStefan Pintilie %and = and <4 x i32> %neg, %A 91*49921d1cSStefan Pintilie ret <4 x i32> %and 92*49921d1cSStefan Pintilie} 93*49921d1cSStefan Pintilie 94*49921d1cSStefan Pintilie; Function Attrs: nounwind 95*49921d1cSStefan Pintilie; CHECK-LABEL: and_xor 96*49921d1cSStefan Pintilie; CHECK: xxeval v2, v2, v4, v3, 6 97*49921d1cSStefan Pintilie; CHECK-NEXT: blr 98*49921d1cSStefan Pintiliedefine dso_local <4 x i32> @and_xor(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 { 99*49921d1cSStefan Pintilieentry: 100*49921d1cSStefan Pintilie %xor = xor <4 x i32> %C, %B 101*49921d1cSStefan Pintilie %and = and <4 x i32> %xor, %A 102*49921d1cSStefan Pintilie ret <4 x i32> %and 103*49921d1cSStefan Pintilie} 104*49921d1cSStefan Pintilie 105*49921d1cSStefan Pintilie; Function Attrs: nounwind 106*49921d1cSStefan Pintilie; CHECK-LABEL: and_eqv 107*49921d1cSStefan Pintilie; CHECK: xxeval v2, v2, v3, v4, 9 108*49921d1cSStefan Pintilie; CHECK-NEXT: blr 109*49921d1cSStefan Pintiliedefine dso_local <4 x i32> @and_eqv(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 { 110*49921d1cSStefan Pintilieentry: 111*49921d1cSStefan Pintilie %xor = xor <4 x i32> %B, <i32 -1, i32 -1, i32 -1, i32 -1> 112*49921d1cSStefan Pintilie %neg = xor <4 x i32> %xor, %C 113*49921d1cSStefan Pintilie %and = and <4 x i32> %neg, %A 114*49921d1cSStefan Pintilie ret <4 x i32> %and 115*49921d1cSStefan Pintilie} 116*49921d1cSStefan Pintilie 117*49921d1cSStefan Pintilie; Function Attrs: nounwind 118*49921d1cSStefan Pintilie; CHECK-LABEL: nand_nand 119*49921d1cSStefan Pintilie; CHECK: xxeval v2, v2, v4, v3, 241 120*49921d1cSStefan Pintilie; CHECK-NEXT: blr 121*49921d1cSStefan Pintiliedefine dso_local <4 x i32> @nand_nand(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 { 122*49921d1cSStefan Pintilieentry: 123*49921d1cSStefan Pintilie %and = and <4 x i32> %C, %B 124*49921d1cSStefan Pintilie %A.not = xor <4 x i32> %A, <i32 -1, i32 -1, i32 -1, i32 -1> 125*49921d1cSStefan Pintilie %neg2 = or <4 x i32> %and, %A.not 126*49921d1cSStefan Pintilie ret <4 x i32> %neg2 127*49921d1cSStefan Pintilie} 128*49921d1cSStefan Pintilie 129*49921d1cSStefan Pintilie; Function Attrs: nounwind 130*49921d1cSStefan Pintilie; CHECK-LABEL: nand_and 131*49921d1cSStefan Pintilie; CHECK: xxeval v2, v3, v2, v4, 254 132*49921d1cSStefan Pintilie; CHECK-NEXT: blr 133*49921d1cSStefan Pintiliedefine dso_local <4 x i32> @nand_and(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 { 134*49921d1cSStefan Pintilieentry: 135*49921d1cSStefan Pintilie %and = and <4 x i32> %B, %A 136*49921d1cSStefan Pintilie %and1 = and <4 x i32> %and, %C 137*49921d1cSStefan Pintilie %neg = xor <4 x i32> %and1, <i32 -1, i32 -1, i32 -1, i32 -1> 138*49921d1cSStefan Pintilie ret <4 x i32> %neg 139*49921d1cSStefan Pintilie} 140*49921d1cSStefan Pintilie 141*49921d1cSStefan Pintilie; Function Attrs: nounwind 142*49921d1cSStefan Pintilie; CHECK-LABEL: nand_xor 143*49921d1cSStefan Pintilie; CHECK: xxeval v2, v2, v4, v3, 249 144*49921d1cSStefan Pintilie; CHECK-NEXT: blr 145*49921d1cSStefan Pintiliedefine dso_local <4 x i32> @nand_xor(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 { 146*49921d1cSStefan Pintilieentry: 147*49921d1cSStefan Pintilie %xor = xor <4 x i32> %C, %B 148*49921d1cSStefan Pintilie %and = and <4 x i32> %xor, %A 149*49921d1cSStefan Pintilie %neg = xor <4 x i32> %and, <i32 -1, i32 -1, i32 -1, i32 -1> 150*49921d1cSStefan Pintilie ret <4 x i32> %neg 151*49921d1cSStefan Pintilie} 152*49921d1cSStefan Pintilie 153*49921d1cSStefan Pintilie; Function Attrs: nounwind 154*49921d1cSStefan Pintilie; CHECK-LABEL: nand_eqv 155*49921d1cSStefan Pintilie; CHECK: xxeval v2, v2, v4, v3, 246 156*49921d1cSStefan Pintilie; CHECK-NEXT: blr 157*49921d1cSStefan Pintiliedefine dso_local <4 x i32> @nand_eqv(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 { 158*49921d1cSStefan Pintilieentry: 159*49921d1cSStefan Pintilie %xor = xor <4 x i32> %C, %B 160*49921d1cSStefan Pintilie %A.not = xor <4 x i32> %A, <i32 -1, i32 -1, i32 -1, i32 -1> 161*49921d1cSStefan Pintilie %neg1 = or <4 x i32> %xor, %A.not 162*49921d1cSStefan Pintilie ret <4 x i32> %neg1 163*49921d1cSStefan Pintilie} 164*49921d1cSStefan Pintilie 165*49921d1cSStefan Pintilie; Function Attrs: nounwind 166*49921d1cSStefan Pintilie; CHECK-LABEL: nand_or 167*49921d1cSStefan Pintilie; CHECK: xxeval v2, v2, v4, v3, 248 168*49921d1cSStefan Pintilie; CHECK-NEXT: blr 169*49921d1cSStefan Pintiliedefine dso_local <4 x i32> @nand_or(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 { 170*49921d1cSStefan Pintilieentry: 171*49921d1cSStefan Pintilie %or = or <4 x i32> %C, %B 172*49921d1cSStefan Pintilie %and = and <4 x i32> %or, %A 173*49921d1cSStefan Pintilie %neg = xor <4 x i32> %and, <i32 -1, i32 -1, i32 -1, i32 -1> 174*49921d1cSStefan Pintilie ret <4 x i32> %neg 175*49921d1cSStefan Pintilie} 176*49921d1cSStefan Pintilie 177*49921d1cSStefan Pintilie; Function Attrs: nounwind 178*49921d1cSStefan Pintilie; CHECK-LABEL: nand_nor 179*49921d1cSStefan Pintilie; CHECK: xxeval v2, v2, v3, v4, 247 180*49921d1cSStefan Pintilie; CHECK-NEXT: blr 181*49921d1cSStefan Pintiliedefine dso_local <4 x i32> @nand_nor(<4 x i32> %A, <4 x i32> %B, <4 x i32> %C) local_unnamed_addr #0 { 182*49921d1cSStefan Pintilieentry: 183*49921d1cSStefan Pintilie %A.not = xor <4 x i32> %A, <i32 -1, i32 -1, i32 -1, i32 -1> 184*49921d1cSStefan Pintilie %or = or <4 x i32> %A.not, %B 185*49921d1cSStefan Pintilie %neg1 = or <4 x i32> %or, %C 186*49921d1cSStefan Pintilie ret <4 x i32> %neg1 187*49921d1cSStefan Pintilie} 188*49921d1cSStefan Pintilie 189*49921d1cSStefan Pintilieattributes #0 = { nounwind } 190