1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt < %s -passes=instcombine -mtriple=x86_64-unknown-unknown -S | FileCheck %s 3 4declare <2 x i64> @llvm.x86.pclmulqdq(<2 x i64>, <2 x i64>, i8) 5declare <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64>, <4 x i64>, i8) 6declare <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64>, <8 x i64>, i8) 7 8define <2 x i64> @test_demanded_elts_pclmulqdq_0(<2 x i64> %a0, <2 x i64> %a1) { 9; CHECK-LABEL: @test_demanded_elts_pclmulqdq_0( 10; CHECK-NEXT: [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> [[A0:%.*]], <2 x i64> [[A1:%.*]], i8 0) 11; CHECK-NEXT: ret <2 x i64> [[TMP1]] 12; 13 %1 = insertelement <2 x i64> %a0, i64 1, i64 1 14 %2 = insertelement <2 x i64> %a1, i64 1, i64 1 15 %3 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %1, <2 x i64> %2, i8 0) 16 ret <2 x i64> %3 17} 18 19define <2 x i64> @test_demanded_elts_pclmulqdq_1(<2 x i64> %a0, <2 x i64> %a1) { 20; CHECK-LABEL: @test_demanded_elts_pclmulqdq_1( 21; CHECK-NEXT: [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 poison, i64 1>, <2 x i64> [[A1:%.*]], i8 1) 22; CHECK-NEXT: ret <2 x i64> [[TMP1]] 23; 24 %1 = insertelement <2 x i64> %a0, i64 1, i64 1 25 %2 = insertelement <2 x i64> %a1, i64 1, i64 1 26 %3 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %1, <2 x i64> %2, i8 1) 27 ret <2 x i64> %3 28} 29 30define <2 x i64> @test_demanded_elts_pclmulqdq_16(<2 x i64> %a0, <2 x i64> %a1) { 31; CHECK-LABEL: @test_demanded_elts_pclmulqdq_16( 32; CHECK-NEXT: [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> [[A0:%.*]], <2 x i64> <i64 poison, i64 1>, i8 16) 33; CHECK-NEXT: ret <2 x i64> [[TMP1]] 34; 35 %1 = insertelement <2 x i64> %a0, i64 1, i64 1 36 %2 = insertelement <2 x i64> %a1, i64 1, i64 1 37 %3 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %1, <2 x i64> %2, i8 16) 38 ret <2 x i64> %3 39} 40 41define <2 x i64> @test_demanded_elts_pclmulqdq_17(<2 x i64> %a0, <2 x i64> %a1) { 42; CHECK-LABEL: @test_demanded_elts_pclmulqdq_17( 43; CHECK-NEXT: [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 poison, i64 1>, <2 x i64> <i64 poison, i64 1>, i8 17) 44; CHECK-NEXT: ret <2 x i64> [[TMP1]] 45; 46 %1 = insertelement <2 x i64> %a0, i64 1, i64 1 47 %2 = insertelement <2 x i64> %a1, i64 1, i64 1 48 %3 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %1, <2 x i64> %2, i8 17) 49 ret <2 x i64> %3 50} 51 52define <2 x i64> @test_demanded_elts_pclmulqdq_undef_0() { 53; CHECK-LABEL: @test_demanded_elts_pclmulqdq_undef_0( 54; CHECK-NEXT: [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 undef, i64 poison>, <2 x i64> <i64 undef, i64 poison>, i8 0) 55; CHECK-NEXT: ret <2 x i64> [[TMP1]] 56; 57 %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 undef, i64 1>, <2 x i64> <i64 undef, i64 1>, i8 0) 58 ret <2 x i64> %1 59} 60 61define <2 x i64> @test_demanded_elts_pclmulqdq_undef_1() { 62; CHECK-LABEL: @test_demanded_elts_pclmulqdq_undef_1( 63; CHECK-NEXT: [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 poison, i64 undef>, <2 x i64> <i64 undef, i64 poison>, i8 1) 64; CHECK-NEXT: ret <2 x i64> [[TMP1]] 65; 66 %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 1, i64 undef>, <2 x i64> <i64 undef, i64 1>, i8 1) 67 ret <2 x i64> %1 68} 69 70define <2 x i64> @test_demanded_elts_pclmulqdq_undef_16() { 71; CHECK-LABEL: @test_demanded_elts_pclmulqdq_undef_16( 72; CHECK-NEXT: [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 undef, i64 poison>, <2 x i64> <i64 poison, i64 undef>, i8 16) 73; CHECK-NEXT: ret <2 x i64> [[TMP1]] 74; 75 %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 undef, i64 1>, <2 x i64> <i64 1, i64 undef>, i8 16) 76 ret <2 x i64> %1 77} 78 79define <2 x i64> @test_demanded_elts_pclmulqdq_undef_17() { 80; CHECK-LABEL: @test_demanded_elts_pclmulqdq_undef_17( 81; CHECK-NEXT: [[TMP1:%.*]] = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 poison, i64 undef>, <2 x i64> <i64 poison, i64 undef>, i8 17) 82; CHECK-NEXT: ret <2 x i64> [[TMP1]] 83; 84 %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 1, i64 undef>, <2 x i64> <i64 1, i64 undef>, i8 17) 85 ret <2 x i64> %1 86} 87 88define <2 x i64> @test_demanded_elts_pclmulqdq_poison_0() { 89; CHECK-LABEL: @test_demanded_elts_pclmulqdq_poison_0( 90; CHECK-NEXT: ret <2 x i64> zeroinitializer 91; 92 %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 poison, i64 1>, <2 x i64> <i64 poison, i64 1>, i8 0) 93 ret <2 x i64> %1 94} 95 96define <2 x i64> @test_demanded_elts_pclmulqdq_poison_1() { 97; CHECK-LABEL: @test_demanded_elts_pclmulqdq_poison_1( 98; CHECK-NEXT: ret <2 x i64> zeroinitializer 99; 100 %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 1, i64 poison>, <2 x i64> <i64 poison, i64 1>, i8 1) 101 ret <2 x i64> %1 102} 103 104define <2 x i64> @test_demanded_elts_pclmulqdq_poison_16() { 105; CHECK-LABEL: @test_demanded_elts_pclmulqdq_poison_16( 106; CHECK-NEXT: ret <2 x i64> zeroinitializer 107; 108 %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 poison, i64 1>, <2 x i64> <i64 1, i64 poison>, i8 16) 109 ret <2 x i64> %1 110} 111 112define <2 x i64> @test_demanded_elts_pclmulqdq_poison_17() { 113; CHECK-LABEL: @test_demanded_elts_pclmulqdq_poison_17( 114; CHECK-NEXT: ret <2 x i64> zeroinitializer 115; 116 %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> <i64 1, i64 poison>, <2 x i64> <i64 1, i64 poison>, i8 17) 117 ret <2 x i64> %1 118} 119 120define <4 x i64> @test_demanded_elts_pclmulqdq_256_0(<4 x i64> %a0, <4 x i64> %a1) { 121; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_0( 122; CHECK-NEXT: [[RES:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> [[A0:%.*]], <4 x i64> [[A1:%.*]], i8 0) 123; CHECK-NEXT: ret <4 x i64> [[RES]] 124; 125 %1 = insertelement <4 x i64> %a0, i64 1, i64 1 126 %2 = insertelement <4 x i64> %a1, i64 1, i64 1 127 %3 = insertelement <4 x i64> %1, i64 1, i64 3 128 %4 = insertelement <4 x i64> %2, i64 1, i64 3 129 %res = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> %3, <4 x i64> %4, i8 0) 130 ret <4 x i64> %res 131} 132 133define <4 x i64> @test_demanded_elts_pclmulqdq_256_1(<4 x i64> %a0, <4 x i64> %a1) { 134; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_1( 135; CHECK-NEXT: [[RES:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, <4 x i64> [[A1:%.*]], i8 1) 136; CHECK-NEXT: ret <4 x i64> [[RES]] 137; 138 %1 = insertelement <4 x i64> %a0, i64 1, i64 1 139 %2 = insertelement <4 x i64> %a1, i64 1, i64 1 140 %3 = insertelement <4 x i64> %1, i64 1, i64 3 141 %4 = insertelement <4 x i64> %2, i64 1, i64 3 142 %res = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> %3, <4 x i64> %4, i8 1) 143 ret <4 x i64> %res 144} 145 146define <4 x i64> @test_demanded_elts_pclmulqdq_256_16(<4 x i64> %a0, <4 x i64> %a1) { 147; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_16( 148; CHECK-NEXT: [[RES:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> [[A0:%.*]], <4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, i8 16) 149; CHECK-NEXT: ret <4 x i64> [[RES]] 150; 151 %1 = insertelement <4 x i64> %a0, i64 1, i64 1 152 %2 = insertelement <4 x i64> %a1, i64 1, i64 1 153 %3 = insertelement <4 x i64> %1, i64 1, i64 3 154 %4 = insertelement <4 x i64> %2, i64 1, i64 3 155 %res = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> %3, <4 x i64> %4, i8 16) 156 ret <4 x i64> %res 157} 158 159define <4 x i64> @test_demanded_elts_pclmulqdq_256_17(<4 x i64> %a0, <4 x i64> %a1) { 160; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_17( 161; CHECK-NEXT: [[RES:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, <4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, i8 17) 162; CHECK-NEXT: ret <4 x i64> [[RES]] 163; 164 %1 = insertelement <4 x i64> %a0, i64 1, i64 1 165 %2 = insertelement <4 x i64> %a1, i64 1, i64 1 166 %3 = insertelement <4 x i64> %1, i64 1, i64 3 167 %4 = insertelement <4 x i64> %2, i64 1, i64 3 168 %res = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> %3, <4 x i64> %4, i8 17) 169 ret <4 x i64> %res 170} 171 172define <4 x i64> @test_demanded_elts_pclmulqdq_256_undef_0() { 173; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_undef_0( 174; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 undef, i64 poison, i64 undef, i64 poison>, <4 x i64> <i64 undef, i64 poison, i64 undef, i64 poison>, i8 0) 175; CHECK-NEXT: ret <4 x i64> [[TMP1]] 176; 177 %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 undef, i64 1, i64 undef, i64 1>, <4 x i64> <i64 undef, i64 1, i64 undef, i64 1>, i8 0) 178 ret <4 x i64> %1 179} 180 181define <4 x i64> @test_demanded_elts_pclmulqdq_256_undef_1() { 182; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_undef_1( 183; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 poison, i64 undef, i64 poison, i64 undef>, <4 x i64> <i64 undef, i64 poison, i64 undef, i64 poison>, i8 1) 184; CHECK-NEXT: ret <4 x i64> [[TMP1]] 185; 186 %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 1, i64 undef, i64 1, i64 undef>, <4 x i64> <i64 undef, i64 1, i64 undef, i64 1>, i8 1) 187 ret <4 x i64> %1 188} 189 190define <4 x i64> @test_demanded_elts_pclmulqdq_256_undef_16() { 191; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_undef_16( 192; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 undef, i64 poison, i64 undef, i64 poison>, <4 x i64> <i64 poison, i64 undef, i64 poison, i64 undef>, i8 16) 193; CHECK-NEXT: ret <4 x i64> [[TMP1]] 194; 195 %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 undef, i64 1, i64 undef, i64 1>, <4 x i64> <i64 1, i64 undef, i64 1, i64 undef>, i8 16) 196 ret <4 x i64> %1 197} 198 199define <4 x i64> @test_demanded_elts_pclmulqdq_256_undef_17() { 200; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_undef_17( 201; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 poison, i64 undef, i64 poison, i64 undef>, <4 x i64> <i64 poison, i64 undef, i64 poison, i64 undef>, i8 17) 202; CHECK-NEXT: ret <4 x i64> [[TMP1]] 203; 204 %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 1, i64 undef, i64 1, i64 undef>, <4 x i64> <i64 1, i64 undef, i64 1, i64 undef>, i8 17) 205 ret <4 x i64> %1 206} 207 208define <4 x i64> @test_demanded_elts_pclmulqdq_256_poison_0() { 209; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_poison_0( 210; CHECK-NEXT: ret <4 x i64> zeroinitializer 211; 212 %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, <4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, i8 0) 213 ret <4 x i64> %1 214} 215 216define <4 x i64> @test_demanded_elts_pclmulqdq_256_poison_1() { 217; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_poison_1( 218; CHECK-NEXT: ret <4 x i64> zeroinitializer 219; 220 %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 1, i64 poison, i64 1, i64 poison>, <4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, i8 1) 221 ret <4 x i64> %1 222} 223 224define <4 x i64> @test_demanded_elts_pclmulqdq_256_poison_16() { 225; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_poison_16( 226; CHECK-NEXT: ret <4 x i64> zeroinitializer 227; 228 %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, <4 x i64> <i64 1, i64 poison, i64 1, i64 poison>, i8 16) 229 ret <4 x i64> %1 230} 231 232define <4 x i64> @test_demanded_elts_pclmulqdq_256_poison_17() { 233; CHECK-LABEL: @test_demanded_elts_pclmulqdq_256_poison_17( 234; CHECK-NEXT: ret <4 x i64> zeroinitializer 235; 236 %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> <i64 1, i64 poison, i64 1, i64 poison>, <4 x i64> <i64 1, i64 poison, i64 1, i64 poison>, i8 17) 237 ret <4 x i64> %1 238} 239 240define <8 x i64> @test_demanded_elts_pclmulqdq_512_0(<8 x i64> %a0, <8 x i64> %a1) { 241; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_0( 242; CHECK-NEXT: [[RES:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> [[A0:%.*]], <8 x i64> [[A1:%.*]], i8 0) 243; CHECK-NEXT: ret <8 x i64> [[RES]] 244; 245 %1 = insertelement <8 x i64> %a0, i64 1, i64 1 246 %2 = insertelement <8 x i64> %a1, i64 1, i64 1 247 %3 = insertelement <8 x i64> %1, i64 1, i64 3 248 %4 = insertelement <8 x i64> %2, i64 1, i64 3 249 %5 = insertelement <8 x i64> %3, i64 1, i64 5 250 %6 = insertelement <8 x i64> %4, i64 1, i64 5 251 %7 = insertelement <8 x i64> %5, i64 1, i64 7 252 %8 = insertelement <8 x i64> %6, i64 1, i64 7 253 %res = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> %7, <8 x i64> %8, i8 0) 254 ret <8 x i64> %res 255} 256 257define <8 x i64> @test_demanded_elts_pclmulqdq_512_1(<8 x i64> %a0, <8 x i64> %a1) { 258; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_1( 259; CHECK-NEXT: [[RES:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, <8 x i64> [[A1:%.*]], i8 1) 260; CHECK-NEXT: ret <8 x i64> [[RES]] 261; 262 %1 = insertelement <8 x i64> %a0, i64 1, i64 1 263 %2 = insertelement <8 x i64> %a1, i64 1, i64 1 264 %3 = insertelement <8 x i64> %1, i64 1, i64 3 265 %4 = insertelement <8 x i64> %2, i64 1, i64 3 266 %5 = insertelement <8 x i64> %3, i64 1, i64 5 267 %6 = insertelement <8 x i64> %4, i64 1, i64 5 268 %7 = insertelement <8 x i64> %5, i64 1, i64 7 269 %8 = insertelement <8 x i64> %6, i64 1, i64 7 270 %res = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> %7, <8 x i64> %8, i8 1) 271 ret <8 x i64> %res 272} 273 274define <8 x i64> @test_demanded_elts_pclmulqdq_512_16(<8 x i64> %a0, <8 x i64> %a1) { 275; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_16( 276; CHECK-NEXT: [[RES:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> [[A0:%.*]], <8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, i8 16) 277; CHECK-NEXT: ret <8 x i64> [[RES]] 278; 279 %1 = insertelement <8 x i64> %a0, i64 1, i64 1 280 %2 = insertelement <8 x i64> %a1, i64 1, i64 1 281 %3 = insertelement <8 x i64> %1, i64 1, i64 3 282 %4 = insertelement <8 x i64> %2, i64 1, i64 3 283 %5 = insertelement <8 x i64> %3, i64 1, i64 5 284 %6 = insertelement <8 x i64> %4, i64 1, i64 5 285 %7 = insertelement <8 x i64> %5, i64 1, i64 7 286 %8 = insertelement <8 x i64> %6, i64 1, i64 7 287 %res = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> %7, <8 x i64> %8, i8 16) 288 ret <8 x i64> %res 289} 290 291define <8 x i64> @test_demanded_elts_pclmulqdq_512_17(<8 x i64> %a0, <8 x i64> %a1) { 292; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_17( 293; CHECK-NEXT: [[RES:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, <8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, i8 17) 294; CHECK-NEXT: ret <8 x i64> [[RES]] 295; 296 %1 = insertelement <8 x i64> %a0, i64 1, i64 1 297 %2 = insertelement <8 x i64> %a1, i64 1, i64 1 298 %3 = insertelement <8 x i64> %1, i64 1, i64 3 299 %4 = insertelement <8 x i64> %2, i64 1, i64 3 300 %5 = insertelement <8 x i64> %3, i64 1, i64 5 301 %6 = insertelement <8 x i64> %4, i64 1, i64 5 302 %7 = insertelement <8 x i64> %5, i64 1, i64 7 303 %8 = insertelement <8 x i64> %6, i64 1, i64 7 304 %res = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> %7, <8 x i64> %8, i8 17) 305 ret <8 x i64> %res 306} 307 308define <8 x i64> @test_demanded_elts_pclmulqdq_512_undef_0() { 309; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_undef_0( 310; CHECK-NEXT: [[TMP1:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison>, <8 x i64> <i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison>, i8 0) 311; CHECK-NEXT: ret <8 x i64> [[TMP1]] 312; 313 %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1>, <8 x i64> <i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1>, i8 0) 314 ret <8 x i64> %1 315} 316 317define <8 x i64> @test_demanded_elts_pclmulqdq_512_undef_1() { 318; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_undef_1( 319; CHECK-NEXT: [[TMP1:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef>, <8 x i64> <i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison>, i8 1) 320; CHECK-NEXT: ret <8 x i64> [[TMP1]] 321; 322 %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef>, <8 x i64> <i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1>, i8 1) 323 ret <8 x i64> %1 324} 325 326define <8 x i64> @test_demanded_elts_pclmulqdq_512_undef_16() { 327; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_undef_16( 328; CHECK-NEXT: [[TMP1:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison>, <8 x i64> <i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef>, i8 16) 329; CHECK-NEXT: ret <8 x i64> [[TMP1]] 330; 331 %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1>, <8 x i64> <i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef>, i8 16) 332 ret <8 x i64> %1 333} 334 335define <8 x i64> @test_demanded_elts_pclmulqdq_512_undef_17() { 336; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_undef_17( 337; CHECK-NEXT: [[TMP1:%.*]] = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef>, <8 x i64> <i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef, i64 poison, i64 undef>, i8 17) 338; CHECK-NEXT: ret <8 x i64> [[TMP1]] 339; 340 %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef>, <8 x i64> <i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef, i64 1, i64 undef>, i8 17) 341 ret <8 x i64> %1 342} 343 344define <8 x i64> @test_demanded_elts_pclmulqdq_512_poison_0() { 345; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_poison_0( 346; CHECK-NEXT: ret <8 x i64> zeroinitializer 347; 348 %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, <8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, i8 0) 349 ret <8 x i64> %1 350} 351 352define <8 x i64> @test_demanded_elts_pclmulqdq_512_poison_1() { 353; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_poison_1( 354; CHECK-NEXT: ret <8 x i64> zeroinitializer 355; 356 %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison>, <8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, i8 1) 357 ret <8 x i64> %1 358} 359 360define <8 x i64> @test_demanded_elts_pclmulqdq_512_poison_16() { 361; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_poison_16( 362; CHECK-NEXT: ret <8 x i64> zeroinitializer 363; 364 %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1>, <8 x i64> <i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison>, i8 16) 365 ret <8 x i64> %1 366} 367 368define <8 x i64> @test_demanded_elts_pclmulqdq_512_poison_17() { 369; CHECK-LABEL: @test_demanded_elts_pclmulqdq_512_poison_17( 370; CHECK-NEXT: ret <8 x i64> zeroinitializer 371; 372 %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> <i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison>, <8 x i64> <i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison, i64 1, i64 poison>, i8 17) 373 ret <8 x i64> %1 374} 375