1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx,+fma4,+xop | FileCheck %s 3 4define <2 x double> @test_int_x86_xop_vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x i64> %a2) { 5; CHECK-LABEL: test_int_x86_xop_vpermil2pd: 6; CHECK: # BB#0: 7; CHECK-NEXT: vpermil2pd $1, %xmm2, %xmm1, %xmm0, %xmm0 8; CHECK-NEXT: retq 9 %res = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x i64> %a2, i8 1) ; [#uses=1] 10 ret <2 x double> %res 11} 12define <2 x double> @test_int_x86_xop_vpermil2pd_mr(<2 x double> %a0, <2 x double>* %a1, <2 x i64> %a2) { 13; CHECK-LABEL: test_int_x86_xop_vpermil2pd_mr: 14; CHECK: # BB#0: 15; CHECK-NEXT: vpermil2pd $1, %xmm1, (%rdi), %xmm0, %xmm0 16; CHECK-NEXT: retq 17 %vec = load <2 x double>, <2 x double>* %a1 18 %res = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %vec, <2 x i64> %a2, i8 1) ; [#uses=1] 19 ret <2 x double> %res 20} 21define <2 x double> @test_int_x86_xop_vpermil2pd_rm(<2 x double> %a0, <2 x double> %a1, <2 x i64>* %a2) { 22; CHECK-LABEL: test_int_x86_xop_vpermil2pd_rm: 23; CHECK: # BB#0: 24; CHECK-NEXT: vpermil2pd $1, (%rdi), %xmm1, %xmm0, %xmm0 25; CHECK-NEXT: retq 26 %vec = load <2 x i64>, <2 x i64>* %a2 27 %res = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x i64> %vec, i8 1) ; [#uses=1] 28 ret <2 x double> %res 29} 30declare <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double>, <2 x double>, <2 x i64>, i8) nounwind readnone 31 32define <4 x double> @test_int_x86_xop_vpermil2pd_256(<4 x double> %a0, <4 x double> %a1, <4 x i64> %a2) { 33; CHECK-LABEL: test_int_x86_xop_vpermil2pd_256: 34; CHECK: # BB#0: 35; CHECK-NEXT: vpermil2pd $2, %ymm2, %ymm1, %ymm0, %ymm0 36; CHECK-NEXT: retq 37 %res = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %a1, <4 x i64> %a2, i8 2) ; 38 ret <4 x double> %res 39} 40define <4 x double> @test_int_x86_xop_vpermil2pd_256_mr(<4 x double> %a0, <4 x double>* %a1, <4 x i64> %a2) { 41; CHECK-LABEL: test_int_x86_xop_vpermil2pd_256_mr: 42; CHECK: # BB#0: 43; CHECK-NEXT: vpermil2pd $2, %ymm1, (%rdi), %ymm0, %ymm0 44; CHECK-NEXT: retq 45 %vec = load <4 x double>, <4 x double>* %a1 46 %res = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %vec, <4 x i64> %a2, i8 2) ; 47 ret <4 x double> %res 48} 49define <4 x double> @test_int_x86_xop_vpermil2pd_256_rm(<4 x double> %a0, <4 x double> %a1, <4 x i64>* %a2) { 50; CHECK-LABEL: test_int_x86_xop_vpermil2pd_256_rm: 51; CHECK: # BB#0: 52; CHECK-NEXT: vpermil2pd $2, (%rdi), %ymm1, %ymm0, %ymm0 53; CHECK-NEXT: retq 54 %vec = load <4 x i64>, <4 x i64>* %a2 55 %res = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %a1, <4 x i64> %vec, i8 2) ; 56 ret <4 x double> %res 57} 58declare <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double>, <4 x double>, <4 x i64>, i8) nounwind readnone 59 60define <4 x float> @test_int_x86_xop_vpermil2ps(<4 x float> %a0, <4 x float> %a1, <4 x i32> %a2) { 61; CHECK-LABEL: test_int_x86_xop_vpermil2ps: 62; CHECK: # BB#0: 63; CHECK-NEXT: vpermil2ps $3, %xmm2, %xmm1, %xmm0, %xmm0 64; CHECK-NEXT: retq 65 %res = call <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float> %a0, <4 x float> %a1, <4 x i32> %a2, i8 3) ; 66 ret <4 x float> %res 67} 68declare <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float>, <4 x float>, <4 x i32>, i8) nounwind readnone 69 70define <8 x float> @test_int_x86_xop_vpermil2ps_256(<8 x float> %a0, <8 x float> %a1, <8 x i32> %a2) { 71; CHECK-LABEL: test_int_x86_xop_vpermil2ps_256: 72; CHECK: # BB#0: 73; CHECK-NEXT: vpermil2ps $4, %ymm2, %ymm1, %ymm0, %ymm0 74; CHECK-NEXT: retq 75 %res = call <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float> %a0, <8 x float> %a1, <8 x i32> %a2, i8 4) ; 76 ret <8 x float> %res 77} 78declare <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float>, <8 x float>, <8 x i32>, i8) nounwind readnone 79 80define <2 x i64> @test_int_x86_xop_vpcmov(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) { 81; CHECK-LABEL: test_int_x86_xop_vpcmov: 82; CHECK: # BB#0: 83; CHECK-NEXT: vpcmov %xmm2, %xmm1, %xmm0, %xmm0 84; CHECK-NEXT: retq 85 %res = call <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) ; 86 ret <2 x i64> %res 87} 88declare <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64>, <2 x i64>, <2 x i64>) nounwind readnone 89 90define <4 x i64> @test_int_x86_xop_vpcmov_256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2) { 91; CHECK-LABEL: test_int_x86_xop_vpcmov_256: 92; CHECK: # BB#0: 93; CHECK-NEXT: vpcmov %ymm2, %ymm1, %ymm0, %ymm0 94; CHECK-NEXT: retq 95 %res = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2) ; 96 ret <4 x i64> %res 97} 98define <4 x i64> @test_int_x86_xop_vpcmov_256_mr(<4 x i64> %a0, <4 x i64>* %a1, <4 x i64> %a2) { 99; CHECK-LABEL: test_int_x86_xop_vpcmov_256_mr: 100; CHECK: # BB#0: 101; CHECK-NEXT: vpcmov %ymm1, (%rdi), %ymm0, %ymm0 102; CHECK-NEXT: retq 103 %vec = load <4 x i64>, <4 x i64>* %a1 104 %res = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %vec, <4 x i64> %a2) ; 105 ret <4 x i64> %res 106} 107define <4 x i64> @test_int_x86_xop_vpcmov_256_rm(<4 x i64> %a0, <4 x i64> %a1, <4 x i64>* %a2) { 108; CHECK-LABEL: test_int_x86_xop_vpcmov_256_rm: 109; CHECK: # BB#0: 110; CHECK-NEXT: vpcmov (%rdi), %ymm1, %ymm0, %ymm0 111; CHECK-NEXT: retq 112 %vec = load <4 x i64>, <4 x i64>* %a2 113 %res = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %vec) ; 114 ret <4 x i64> %res 115} 116declare <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64>, <4 x i64>, <4 x i64>) nounwind readnone 117 118define <4 x i32> @test_int_x86_xop_vphaddbd(<16 x i8> %a0) { 119; CHECK-LABEL: test_int_x86_xop_vphaddbd: 120; CHECK: # BB#0: 121; CHECK-NEXT: vphaddbd %xmm0, %xmm0 122; CHECK-NEXT: retq 123 %res = call <4 x i32> @llvm.x86.xop.vphaddbd(<16 x i8> %a0) ; 124 ret <4 x i32> %res 125} 126declare <4 x i32> @llvm.x86.xop.vphaddbd(<16 x i8>) nounwind readnone 127 128define <2 x i64> @test_int_x86_xop_vphaddbq(<16 x i8> %a0) { 129; CHECK-LABEL: test_int_x86_xop_vphaddbq: 130; CHECK: # BB#0: 131; CHECK-NEXT: vphaddbq %xmm0, %xmm0 132; CHECK-NEXT: retq 133 %res = call <2 x i64> @llvm.x86.xop.vphaddbq(<16 x i8> %a0) ; 134 ret <2 x i64> %res 135} 136declare <2 x i64> @llvm.x86.xop.vphaddbq(<16 x i8>) nounwind readnone 137 138define <8 x i16> @test_int_x86_xop_vphaddbw(<16 x i8> %a0) { 139; CHECK-LABEL: test_int_x86_xop_vphaddbw: 140; CHECK: # BB#0: 141; CHECK-NEXT: vphaddbw %xmm0, %xmm0 142; CHECK-NEXT: retq 143 %res = call <8 x i16> @llvm.x86.xop.vphaddbw(<16 x i8> %a0) ; 144 ret <8 x i16> %res 145} 146declare <8 x i16> @llvm.x86.xop.vphaddbw(<16 x i8>) nounwind readnone 147 148define <2 x i64> @test_int_x86_xop_vphadddq(<4 x i32> %a0) { 149; CHECK-LABEL: test_int_x86_xop_vphadddq: 150; CHECK: # BB#0: 151; CHECK-NEXT: vphadddq %xmm0, %xmm0 152; CHECK-NEXT: retq 153 %res = call <2 x i64> @llvm.x86.xop.vphadddq(<4 x i32> %a0) ; 154 ret <2 x i64> %res 155} 156declare <2 x i64> @llvm.x86.xop.vphadddq(<4 x i32>) nounwind readnone 157 158define <4 x i32> @test_int_x86_xop_vphaddubd(<16 x i8> %a0) { 159; CHECK-LABEL: test_int_x86_xop_vphaddubd: 160; CHECK: # BB#0: 161; CHECK-NEXT: vphaddubd %xmm0, %xmm0 162; CHECK-NEXT: retq 163 %res = call <4 x i32> @llvm.x86.xop.vphaddubd(<16 x i8> %a0) ; 164 ret <4 x i32> %res 165} 166declare <4 x i32> @llvm.x86.xop.vphaddubd(<16 x i8>) nounwind readnone 167 168define <2 x i64> @test_int_x86_xop_vphaddubq(<16 x i8> %a0) { 169; CHECK-LABEL: test_int_x86_xop_vphaddubq: 170; CHECK: # BB#0: 171; CHECK-NEXT: vphaddubq %xmm0, %xmm0 172; CHECK-NEXT: retq 173 %res = call <2 x i64> @llvm.x86.xop.vphaddubq(<16 x i8> %a0) ; 174 ret <2 x i64> %res 175} 176declare <2 x i64> @llvm.x86.xop.vphaddubq(<16 x i8>) nounwind readnone 177 178define <8 x i16> @test_int_x86_xop_vphaddubw(<16 x i8> %a0) { 179; CHECK-LABEL: test_int_x86_xop_vphaddubw: 180; CHECK: # BB#0: 181; CHECK-NEXT: vphaddubw %xmm0, %xmm0 182; CHECK-NEXT: retq 183 %res = call <8 x i16> @llvm.x86.xop.vphaddubw(<16 x i8> %a0) ; 184 ret <8 x i16> %res 185} 186declare <8 x i16> @llvm.x86.xop.vphaddubw(<16 x i8>) nounwind readnone 187 188define <2 x i64> @test_int_x86_xop_vphaddudq(<4 x i32> %a0) { 189; CHECK-LABEL: test_int_x86_xop_vphaddudq: 190; CHECK: # BB#0: 191; CHECK-NEXT: vphaddudq %xmm0, %xmm0 192; CHECK-NEXT: retq 193 %res = call <2 x i64> @llvm.x86.xop.vphaddudq(<4 x i32> %a0) ; 194 ret <2 x i64> %res 195} 196declare <2 x i64> @llvm.x86.xop.vphaddudq(<4 x i32>) nounwind readnone 197 198define <4 x i32> @test_int_x86_xop_vphadduwd(<8 x i16> %a0) { 199; CHECK-LABEL: test_int_x86_xop_vphadduwd: 200; CHECK: # BB#0: 201; CHECK-NEXT: vphadduwd %xmm0, %xmm0 202; CHECK-NEXT: retq 203 %res = call <4 x i32> @llvm.x86.xop.vphadduwd(<8 x i16> %a0) ; 204 ret <4 x i32> %res 205} 206declare <4 x i32> @llvm.x86.xop.vphadduwd(<8 x i16>) nounwind readnone 207 208define <2 x i64> @test_int_x86_xop_vphadduwq(<8 x i16> %a0) { 209; CHECK-LABEL: test_int_x86_xop_vphadduwq: 210; CHECK: # BB#0: 211; CHECK-NEXT: vphadduwq %xmm0, %xmm0 212; CHECK-NEXT: retq 213 %res = call <2 x i64> @llvm.x86.xop.vphadduwq(<8 x i16> %a0) ; 214 ret <2 x i64> %res 215} 216declare <2 x i64> @llvm.x86.xop.vphadduwq(<8 x i16>) nounwind readnone 217 218define <4 x i32> @test_int_x86_xop_vphaddwd(<8 x i16> %a0) { 219; CHECK-LABEL: test_int_x86_xop_vphaddwd: 220; CHECK: # BB#0: 221; CHECK-NEXT: vphaddwd %xmm0, %xmm0 222; CHECK-NEXT: retq 223 %res = call <4 x i32> @llvm.x86.xop.vphaddwd(<8 x i16> %a0) ; 224 ret <4 x i32> %res 225} 226declare <4 x i32> @llvm.x86.xop.vphaddwd(<8 x i16>) nounwind readnone 227 228define <2 x i64> @test_int_x86_xop_vphaddwq(<8 x i16> %a0) { 229; CHECK-LABEL: test_int_x86_xop_vphaddwq: 230; CHECK: # BB#0: 231; CHECK-NEXT: vphaddwq %xmm0, %xmm0 232; CHECK-NEXT: retq 233 %res = call <2 x i64> @llvm.x86.xop.vphaddwq(<8 x i16> %a0) ; 234 ret <2 x i64> %res 235} 236declare <2 x i64> @llvm.x86.xop.vphaddwq(<8 x i16>) nounwind readnone 237 238define <8 x i16> @test_int_x86_xop_vphsubbw(<16 x i8> %a0) { 239; CHECK-LABEL: test_int_x86_xop_vphsubbw: 240; CHECK: # BB#0: 241; CHECK-NEXT: vphsubbw %xmm0, %xmm0 242; CHECK-NEXT: retq 243 %res = call <8 x i16> @llvm.x86.xop.vphsubbw(<16 x i8> %a0) ; 244 ret <8 x i16> %res 245} 246declare <8 x i16> @llvm.x86.xop.vphsubbw(<16 x i8>) nounwind readnone 247 248define <2 x i64> @test_int_x86_xop_vphsubdq(<4 x i32> %a0) { 249; CHECK-LABEL: test_int_x86_xop_vphsubdq: 250; CHECK: # BB#0: 251; CHECK-NEXT: vphsubdq %xmm0, %xmm0 252; CHECK-NEXT: retq 253 %res = call <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32> %a0) ; 254 ret <2 x i64> %res 255} 256define <2 x i64> @test_int_x86_xop_vphsubdq_mem(<4 x i32>* %a0) { 257; CHECK-LABEL: test_int_x86_xop_vphsubdq_mem: 258; CHECK: # BB#0: 259; CHECK-NEXT: vphsubdq (%rdi), %xmm0 260; CHECK-NEXT: retq 261 %vec = load <4 x i32>, <4 x i32>* %a0 262 %res = call <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32> %vec) ; 263 ret <2 x i64> %res 264} 265declare <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32>) nounwind readnone 266 267define <4 x i32> @test_int_x86_xop_vphsubwd(<8 x i16> %a0) { 268; CHECK-LABEL: test_int_x86_xop_vphsubwd: 269; CHECK: # BB#0: 270; CHECK-NEXT: vphsubwd %xmm0, %xmm0 271; CHECK-NEXT: retq 272 %res = call <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16> %a0) ; 273 ret <4 x i32> %res 274} 275define <4 x i32> @test_int_x86_xop_vphsubwd_mem(<8 x i16>* %a0) { 276; CHECK-LABEL: test_int_x86_xop_vphsubwd_mem: 277; CHECK: # BB#0: 278; CHECK-NEXT: vphsubwd (%rdi), %xmm0 279; CHECK-NEXT: retq 280 %vec = load <8 x i16>, <8 x i16>* %a0 281 %res = call <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16> %vec) ; 282 ret <4 x i32> %res 283} 284declare <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16>) nounwind readnone 285 286define <4 x i32> @test_int_x86_xop_vpmacsdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) { 287; CHECK-LABEL: test_int_x86_xop_vpmacsdd: 288; CHECK: # BB#0: 289; CHECK-NEXT: vpmacsdd %xmm2, %xmm1, %xmm0, %xmm0 290; CHECK-NEXT: retq 291 %res = call <4 x i32> @llvm.x86.xop.vpmacsdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) ; 292 ret <4 x i32> %res 293} 294declare <4 x i32> @llvm.x86.xop.vpmacsdd(<4 x i32>, <4 x i32>, <4 x i32>) nounwind readnone 295 296define <2 x i64> @test_int_x86_xop_vpmacsdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) { 297; CHECK-LABEL: test_int_x86_xop_vpmacsdqh: 298; CHECK: # BB#0: 299; CHECK-NEXT: vpmacsdqh %xmm2, %xmm1, %xmm0, %xmm0 300; CHECK-NEXT: retq 301 %res = call <2 x i64> @llvm.x86.xop.vpmacsdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) ; 302 ret <2 x i64> %res 303} 304declare <2 x i64> @llvm.x86.xop.vpmacsdqh(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone 305 306define <2 x i64> @test_int_x86_xop_vpmacsdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) { 307; CHECK-LABEL: test_int_x86_xop_vpmacsdql: 308; CHECK: # BB#0: 309; CHECK-NEXT: vpmacsdql %xmm2, %xmm1, %xmm0, %xmm0 310; CHECK-NEXT: retq 311 %res = call <2 x i64> @llvm.x86.xop.vpmacsdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) ; 312 ret <2 x i64> %res 313} 314declare <2 x i64> @llvm.x86.xop.vpmacsdql(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone 315 316define <4 x i32> @test_int_x86_xop_vpmacssdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) { 317; CHECK-LABEL: test_int_x86_xop_vpmacssdd: 318; CHECK: # BB#0: 319; CHECK-NEXT: vpmacssdd %xmm2, %xmm1, %xmm0, %xmm0 320; CHECK-NEXT: retq 321 %res = call <4 x i32> @llvm.x86.xop.vpmacssdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) ; 322 ret <4 x i32> %res 323} 324declare <4 x i32> @llvm.x86.xop.vpmacssdd(<4 x i32>, <4 x i32>, <4 x i32>) nounwind readnone 325 326define <2 x i64> @test_int_x86_xop_vpmacssdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) { 327; CHECK-LABEL: test_int_x86_xop_vpmacssdqh: 328; CHECK: # BB#0: 329; CHECK-NEXT: vpmacssdqh %xmm2, %xmm1, %xmm0, %xmm0 330; CHECK-NEXT: retq 331 %res = call <2 x i64> @llvm.x86.xop.vpmacssdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) ; 332 ret <2 x i64> %res 333} 334declare <2 x i64> @llvm.x86.xop.vpmacssdqh(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone 335 336define <2 x i64> @test_int_x86_xop_vpmacssdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) { 337; CHECK-LABEL: test_int_x86_xop_vpmacssdql: 338; CHECK: # BB#0: 339; CHECK-NEXT: vpmacssdql %xmm2, %xmm1, %xmm0, %xmm0 340; CHECK-NEXT: retq 341 %res = call <2 x i64> @llvm.x86.xop.vpmacssdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) ; 342 ret <2 x i64> %res 343} 344declare <2 x i64> @llvm.x86.xop.vpmacssdql(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone 345 346define <4 x i32> @test_int_x86_xop_vpmacsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) { 347; CHECK-LABEL: test_int_x86_xop_vpmacsswd: 348; CHECK: # BB#0: 349; CHECK-NEXT: vpmacsswd %xmm2, %xmm1, %xmm0, %xmm0 350; CHECK-NEXT: retq 351 %res = call <4 x i32> @llvm.x86.xop.vpmacsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) ; 352 ret <4 x i32> %res 353} 354declare <4 x i32> @llvm.x86.xop.vpmacsswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone 355 356define <8 x i16> @test_int_x86_xop_vpmacssww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) { 357; CHECK-LABEL: test_int_x86_xop_vpmacssww: 358; CHECK: # BB#0: 359; CHECK-NEXT: vpmacssww %xmm2, %xmm1, %xmm0, %xmm0 360; CHECK-NEXT: retq 361 %res = call <8 x i16> @llvm.x86.xop.vpmacssww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) ; 362 ret <8 x i16> %res 363} 364declare <8 x i16> @llvm.x86.xop.vpmacssww(<8 x i16>, <8 x i16>, <8 x i16>) nounwind readnone 365 366define <4 x i32> @test_int_x86_xop_vpmacswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) { 367; CHECK-LABEL: test_int_x86_xop_vpmacswd: 368; CHECK: # BB#0: 369; CHECK-NEXT: vpmacswd %xmm2, %xmm1, %xmm0, %xmm0 370; CHECK-NEXT: retq 371 %res = call <4 x i32> @llvm.x86.xop.vpmacswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) ; 372 ret <4 x i32> %res 373} 374declare <4 x i32> @llvm.x86.xop.vpmacswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone 375 376define <8 x i16> @test_int_x86_xop_vpmacsww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) { 377; CHECK-LABEL: test_int_x86_xop_vpmacsww: 378; CHECK: # BB#0: 379; CHECK-NEXT: vpmacsww %xmm2, %xmm1, %xmm0, %xmm0 380; CHECK-NEXT: retq 381 %res = call <8 x i16> @llvm.x86.xop.vpmacsww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) ; 382 ret <8 x i16> %res 383} 384declare <8 x i16> @llvm.x86.xop.vpmacsww(<8 x i16>, <8 x i16>, <8 x i16>) nounwind readnone 385 386define <4 x i32> @test_int_x86_xop_vpmadcsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) { 387; CHECK-LABEL: test_int_x86_xop_vpmadcsswd: 388; CHECK: # BB#0: 389; CHECK-NEXT: vpmadcsswd %xmm2, %xmm1, %xmm0, %xmm0 390; CHECK-NEXT: retq 391 %res = call <4 x i32> @llvm.x86.xop.vpmadcsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) ; 392 ret <4 x i32> %res 393} 394declare <4 x i32> @llvm.x86.xop.vpmadcsswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone 395 396define <4 x i32> @test_int_x86_xop_vpmadcswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) { 397; CHECK-LABEL: test_int_x86_xop_vpmadcswd: 398; CHECK: # BB#0: 399; CHECK-NEXT: vpmadcswd %xmm2, %xmm1, %xmm0, %xmm0 400; CHECK-NEXT: retq 401 %res = call <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) ; 402 ret <4 x i32> %res 403} 404define <4 x i32> @test_int_x86_xop_vpmadcswd_mem(<8 x i16> %a0, <8 x i16>* %a1, <4 x i32> %a2) { 405; CHECK-LABEL: test_int_x86_xop_vpmadcswd_mem: 406; CHECK: # BB#0: 407; CHECK-NEXT: vpmadcswd %xmm1, (%rdi), %xmm0, %xmm0 408; CHECK-NEXT: retq 409 %vec = load <8 x i16>, <8 x i16>* %a1 410 %res = call <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16> %a0, <8 x i16> %vec, <4 x i32> %a2) ; 411 ret <4 x i32> %res 412} 413declare <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone 414 415define <16 x i8> @test_int_x86_xop_vpperm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) { 416; CHECK-LABEL: test_int_x86_xop_vpperm: 417; CHECK: # BB#0: 418; CHECK-NEXT: vpperm %xmm2, %xmm1, %xmm0, %xmm0 419; CHECK-NEXT: retq 420 %res = call <16 x i8> @llvm.x86.xop.vpperm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) ; 421 ret <16 x i8> %res 422} 423define <16 x i8> @test_int_x86_xop_vpperm_rm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8>* %a2) { 424; CHECK-LABEL: test_int_x86_xop_vpperm_rm: 425; CHECK: # BB#0: 426; CHECK-NEXT: vpperm (%rdi), %xmm1, %xmm0, %xmm0 427; CHECK-NEXT: retq 428 %vec = load <16 x i8>, <16 x i8>* %a2 429 %res = call <16 x i8> @llvm.x86.xop.vpperm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %vec) ; 430 ret <16 x i8> %res 431} 432define <16 x i8> @test_int_x86_xop_vpperm_mr(<16 x i8> %a0, <16 x i8>* %a1, <16 x i8> %a2) { 433; CHECK-LABEL: test_int_x86_xop_vpperm_mr: 434; CHECK: # BB#0: 435; CHECK-NEXT: vpperm %xmm1, (%rdi), %xmm0, %xmm0 436; CHECK-NEXT: retq 437 %vec = load <16 x i8>, <16 x i8>* %a1 438 %res = call <16 x i8> @llvm.x86.xop.vpperm(<16 x i8> %a0, <16 x i8> %vec, <16 x i8> %a2) ; 439 ret <16 x i8> %res 440} 441declare <16 x i8> @llvm.x86.xop.vpperm(<16 x i8>, <16 x i8>, <16 x i8>) nounwind readnone 442 443define <16 x i8> @test_int_x86_xop_vprotb(<16 x i8> %a0, <16 x i8> %a1) { 444; CHECK-LABEL: test_int_x86_xop_vprotb: 445; CHECK: # BB#0: 446; CHECK-NEXT: vprotb %xmm1, %xmm0, %xmm0 447; CHECK-NEXT: retq 448 %res = call <16 x i8> @llvm.x86.xop.vprotb(<16 x i8> %a0, <16 x i8> %a1) ; 449 ret <16 x i8> %res 450} 451declare <16 x i8> @llvm.x86.xop.vprotb(<16 x i8>, <16 x i8>) nounwind readnone 452 453define <4 x i32> @test_int_x86_xop_vprotd(<4 x i32> %a0, <4 x i32> %a1) { 454; CHECK-LABEL: test_int_x86_xop_vprotd: 455; CHECK: # BB#0: 456; CHECK-NEXT: vprotd %xmm1, %xmm0, %xmm0 457; CHECK-NEXT: retq 458 %res = call <4 x i32> @llvm.x86.xop.vprotd(<4 x i32> %a0, <4 x i32> %a1) ; 459 ret <4 x i32> %res 460} 461declare <4 x i32> @llvm.x86.xop.vprotd(<4 x i32>, <4 x i32>) nounwind readnone 462 463define <2 x i64> @test_int_x86_xop_vprotq(<2 x i64> %a0, <2 x i64> %a1) { 464; CHECK-LABEL: test_int_x86_xop_vprotq: 465; CHECK: # BB#0: 466; CHECK-NEXT: vprotq %xmm1, %xmm0, %xmm0 467; CHECK-NEXT: retq 468 %res = call <2 x i64> @llvm.x86.xop.vprotq(<2 x i64> %a0, <2 x i64> %a1) ; 469 ret <2 x i64> %res 470} 471declare <2 x i64> @llvm.x86.xop.vprotq(<2 x i64>, <2 x i64>) nounwind readnone 472 473define <8 x i16> @test_int_x86_xop_vprotw(<8 x i16> %a0, <8 x i16> %a1) { 474; CHECK-LABEL: test_int_x86_xop_vprotw: 475; CHECK: # BB#0: 476; CHECK-NEXT: vprotw %xmm1, %xmm0, %xmm0 477; CHECK-NEXT: retq 478 %res = call <8 x i16> @llvm.x86.xop.vprotw(<8 x i16> %a0, <8 x i16> %a1) ; 479 ret <8 x i16> %res 480} 481declare <8 x i16> @llvm.x86.xop.vprotw(<8 x i16>, <8 x i16>) nounwind readnone 482 483define <16 x i8> @test_int_x86_xop_vprotbi(<16 x i8> %a0) { 484; CHECK-LABEL: test_int_x86_xop_vprotbi: 485; CHECK: # BB#0: 486; CHECK-NEXT: vprotb $1, %xmm0, %xmm0 487; CHECK-NEXT: retq 488 %res = call <16 x i8> @llvm.x86.xop.vprotbi(<16 x i8> %a0, i8 1) ; 489 ret <16 x i8> %res 490} 491declare <16 x i8> @llvm.x86.xop.vprotbi(<16 x i8>, i8) nounwind readnone 492 493define <4 x i32> @test_int_x86_xop_vprotdi(<4 x i32> %a0) { 494; CHECK-LABEL: test_int_x86_xop_vprotdi: 495; CHECK: # BB#0: 496; CHECK-NEXT: vprotd $254, %xmm0, %xmm0 497; CHECK-NEXT: retq 498 %res = call <4 x i32> @llvm.x86.xop.vprotdi(<4 x i32> %a0, i8 -2) ; 499 ret <4 x i32> %res 500} 501declare <4 x i32> @llvm.x86.xop.vprotdi(<4 x i32>, i8) nounwind readnone 502 503define <2 x i64> @test_int_x86_xop_vprotqi(<2 x i64> %a0) { 504; CHECK-LABEL: test_int_x86_xop_vprotqi: 505; CHECK: # BB#0: 506; CHECK-NEXT: vprotq $3, %xmm0, %xmm0 507; CHECK-NEXT: retq 508 %res = call <2 x i64> @llvm.x86.xop.vprotqi(<2 x i64> %a0, i8 3) ; 509 ret <2 x i64> %res 510} 511declare <2 x i64> @llvm.x86.xop.vprotqi(<2 x i64>, i8) nounwind readnone 512 513define <8 x i16> @test_int_x86_xop_vprotwi(<8 x i16> %a0) { 514; CHECK-LABEL: test_int_x86_xop_vprotwi: 515; CHECK: # BB#0: 516; CHECK-NEXT: vprotw $252, %xmm0, %xmm0 517; CHECK-NEXT: retq 518 %res = call <8 x i16> @llvm.x86.xop.vprotwi(<8 x i16> %a0, i8 -4) ; 519 ret <8 x i16> %res 520} 521declare <8 x i16> @llvm.x86.xop.vprotwi(<8 x i16>, i8) nounwind readnone 522 523define <16 x i8> @test_int_x86_xop_vpshab(<16 x i8> %a0, <16 x i8> %a1) { 524; CHECK-LABEL: test_int_x86_xop_vpshab: 525; CHECK: # BB#0: 526; CHECK-NEXT: vpshab %xmm1, %xmm0, %xmm0 527; CHECK-NEXT: retq 528 %res = call <16 x i8> @llvm.x86.xop.vpshab(<16 x i8> %a0, <16 x i8> %a1) ; 529 ret <16 x i8> %res 530} 531declare <16 x i8> @llvm.x86.xop.vpshab(<16 x i8>, <16 x i8>) nounwind readnone 532 533define <4 x i32> @test_int_x86_xop_vpshad(<4 x i32> %a0, <4 x i32> %a1) { 534; CHECK-LABEL: test_int_x86_xop_vpshad: 535; CHECK: # BB#0: 536; CHECK-NEXT: vpshad %xmm1, %xmm0, %xmm0 537; CHECK-NEXT: retq 538 %res = call <4 x i32> @llvm.x86.xop.vpshad(<4 x i32> %a0, <4 x i32> %a1) ; 539 ret <4 x i32> %res 540} 541declare <4 x i32> @llvm.x86.xop.vpshad(<4 x i32>, <4 x i32>) nounwind readnone 542 543define <2 x i64> @test_int_x86_xop_vpshaq(<2 x i64> %a0, <2 x i64> %a1) { 544; CHECK-LABEL: test_int_x86_xop_vpshaq: 545; CHECK: # BB#0: 546; CHECK-NEXT: vpshaq %xmm1, %xmm0, %xmm0 547; CHECK-NEXT: retq 548 %res = call <2 x i64> @llvm.x86.xop.vpshaq(<2 x i64> %a0, <2 x i64> %a1) ; 549 ret <2 x i64> %res 550} 551declare <2 x i64> @llvm.x86.xop.vpshaq(<2 x i64>, <2 x i64>) nounwind readnone 552 553define <8 x i16> @test_int_x86_xop_vpshaw(<8 x i16> %a0, <8 x i16> %a1) { 554; CHECK-LABEL: test_int_x86_xop_vpshaw: 555; CHECK: # BB#0: 556; CHECK-NEXT: vpshaw %xmm1, %xmm0, %xmm0 557; CHECK-NEXT: retq 558 %res = call <8 x i16> @llvm.x86.xop.vpshaw(<8 x i16> %a0, <8 x i16> %a1) ; 559 ret <8 x i16> %res 560} 561declare <8 x i16> @llvm.x86.xop.vpshaw(<8 x i16>, <8 x i16>) nounwind readnone 562 563define <16 x i8> @test_int_x86_xop_vpshlb(<16 x i8> %a0, <16 x i8> %a1) { 564; CHECK-LABEL: test_int_x86_xop_vpshlb: 565; CHECK: # BB#0: 566; CHECK-NEXT: vpshlb %xmm1, %xmm0, %xmm0 567; CHECK-NEXT: retq 568 %res = call <16 x i8> @llvm.x86.xop.vpshlb(<16 x i8> %a0, <16 x i8> %a1) ; 569 ret <16 x i8> %res 570} 571declare <16 x i8> @llvm.x86.xop.vpshlb(<16 x i8>, <16 x i8>) nounwind readnone 572 573define <4 x i32> @test_int_x86_xop_vpshld(<4 x i32> %a0, <4 x i32> %a1) { 574; CHECK-LABEL: test_int_x86_xop_vpshld: 575; CHECK: # BB#0: 576; CHECK-NEXT: vpshld %xmm1, %xmm0, %xmm0 577; CHECK-NEXT: retq 578 %res = call <4 x i32> @llvm.x86.xop.vpshld(<4 x i32> %a0, <4 x i32> %a1) ; 579 ret <4 x i32> %res 580} 581declare <4 x i32> @llvm.x86.xop.vpshld(<4 x i32>, <4 x i32>) nounwind readnone 582 583define <2 x i64> @test_int_x86_xop_vpshlq(<2 x i64> %a0, <2 x i64> %a1) { 584; CHECK-LABEL: test_int_x86_xop_vpshlq: 585; CHECK: # BB#0: 586; CHECK-NEXT: vpshlq %xmm1, %xmm0, %xmm0 587; CHECK-NEXT: retq 588 %res = call <2 x i64> @llvm.x86.xop.vpshlq(<2 x i64> %a0, <2 x i64> %a1) ; 589 ret <2 x i64> %res 590} 591declare <2 x i64> @llvm.x86.xop.vpshlq(<2 x i64>, <2 x i64>) nounwind readnone 592 593define <8 x i16> @test_int_x86_xop_vpshlw(<8 x i16> %a0, <8 x i16> %a1) { 594; CHECK-LABEL: test_int_x86_xop_vpshlw: 595; CHECK: # BB#0: 596; CHECK-NEXT: vpshlw %xmm1, %xmm0, %xmm0 597; CHECK-NEXT: retq 598 %res = call <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16> %a0, <8 x i16> %a1) ; 599 ret <8 x i16> %res 600} 601define <8 x i16> @test_int_x86_xop_vpshlw_rm(<8 x i16> %a0, <8 x i16>* %a1) { 602; CHECK-LABEL: test_int_x86_xop_vpshlw_rm: 603; CHECK: # BB#0: 604; CHECK-NEXT: vpshlw (%rdi), %xmm0, %xmm0 605; CHECK-NEXT: retq 606 %vec = load <8 x i16>, <8 x i16>* %a1 607 %res = call <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16> %a0, <8 x i16> %vec) ; 608 ret <8 x i16> %res 609} 610define <8 x i16> @test_int_x86_xop_vpshlw_mr(<8 x i16>* %a0, <8 x i16> %a1) { 611; CHECK-LABEL: test_int_x86_xop_vpshlw_mr: 612; CHECK: # BB#0: 613; CHECK-NEXT: vpshlw %xmm0, (%rdi), %xmm0 614; CHECK-NEXT: retq 615 %vec = load <8 x i16>, <8 x i16>* %a0 616 %res = call <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16> %vec, <8 x i16> %a1) ; 617 ret <8 x i16> %res 618} 619declare <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16>, <8 x i16>) nounwind readnone 620 621define <4 x float> @test_int_x86_xop_vfrcz_ss(<4 x float> %a0) { 622; CHECK-LABEL: test_int_x86_xop_vfrcz_ss: 623; CHECK: # BB#0: 624; CHECK-NEXT: vfrczss %xmm0, %xmm0 625; CHECK-NEXT: retq 626 %res = call <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float> %a0) ; 627 ret <4 x float> %res 628} 629define <4 x float> @test_int_x86_xop_vfrcz_ss_mem(float* %a0) { 630; CHECK-LABEL: test_int_x86_xop_vfrcz_ss_mem: 631; CHECK: # BB#0: 632; CHECK-NEXT: vfrczss (%rdi), %xmm0 633; CHECK-NEXT: retq 634 %elem = load float, float* %a0 635 %vec = insertelement <4 x float> undef, float %elem, i32 0 636 %res = call <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float> %vec) ; 637 ret <4 x float> %res 638} 639declare <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float>) nounwind readnone 640 641define <2 x double> @test_int_x86_xop_vfrcz_sd(<2 x double> %a0) { 642; CHECK-LABEL: test_int_x86_xop_vfrcz_sd: 643; CHECK: # BB#0: 644; CHECK-NEXT: vfrczsd %xmm0, %xmm0 645; CHECK-NEXT: retq 646 %res = call <2 x double> @llvm.x86.xop.vfrcz.sd(<2 x double> %a0) ; 647 ret <2 x double> %res 648} 649define <2 x double> @test_int_x86_xop_vfrcz_sd_mem(double* %a0) { 650; CHECK-LABEL: test_int_x86_xop_vfrcz_sd_mem: 651; CHECK: # BB#0: 652; CHECK-NEXT: vfrczsd (%rdi), %xmm0 653; CHECK-NEXT: retq 654 %elem = load double, double* %a0 655 %vec = insertelement <2 x double> undef, double %elem, i32 0 656 %res = call <2 x double> @llvm.x86.xop.vfrcz.sd(<2 x double> %vec) ; 657 ret <2 x double> %res 658} 659declare <2 x double> @llvm.x86.xop.vfrcz.sd(<2 x double>) nounwind readnone 660 661define <2 x double> @test_int_x86_xop_vfrcz_pd(<2 x double> %a0) { 662; CHECK-LABEL: test_int_x86_xop_vfrcz_pd: 663; CHECK: # BB#0: 664; CHECK-NEXT: vfrczpd %xmm0, %xmm0 665; CHECK-NEXT: retq 666 %res = call <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double> %a0) ; 667 ret <2 x double> %res 668} 669define <2 x double> @test_int_x86_xop_vfrcz_pd_mem(<2 x double>* %a0) { 670; CHECK-LABEL: test_int_x86_xop_vfrcz_pd_mem: 671; CHECK: # BB#0: 672; CHECK-NEXT: vfrczpd (%rdi), %xmm0 673; CHECK-NEXT: retq 674 %vec = load <2 x double>, <2 x double>* %a0 675 %res = call <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double> %vec) ; 676 ret <2 x double> %res 677} 678declare <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double>) nounwind readnone 679 680define <4 x double> @test_int_x86_xop_vfrcz_pd_256(<4 x double> %a0) { 681; CHECK-LABEL: test_int_x86_xop_vfrcz_pd_256: 682; CHECK: # BB#0: 683; CHECK-NEXT: vfrczpd %ymm0, %ymm0 684; CHECK-NEXT: retq 685 %res = call <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double> %a0) ; 686 ret <4 x double> %res 687} 688define <4 x double> @test_int_x86_xop_vfrcz_pd_256_mem(<4 x double>* %a0) { 689; CHECK-LABEL: test_int_x86_xop_vfrcz_pd_256_mem: 690; CHECK: # BB#0: 691; CHECK-NEXT: vfrczpd (%rdi), %ymm0 692; CHECK-NEXT: retq 693 %vec = load <4 x double>, <4 x double>* %a0 694 %res = call <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double> %vec) ; 695 ret <4 x double> %res 696} 697declare <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double>) nounwind readnone 698 699define <4 x float> @test_int_x86_xop_vfrcz_ps(<4 x float> %a0) { 700; CHECK-LABEL: test_int_x86_xop_vfrcz_ps: 701; CHECK: # BB#0: 702; CHECK-NEXT: vfrczps %xmm0, %xmm0 703; CHECK-NEXT: retq 704 %res = call <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float> %a0) ; 705 ret <4 x float> %res 706} 707define <4 x float> @test_int_x86_xop_vfrcz_ps_mem(<4 x float>* %a0) { 708; CHECK-LABEL: test_int_x86_xop_vfrcz_ps_mem: 709; CHECK: # BB#0: 710; CHECK-NEXT: vfrczps (%rdi), %xmm0 711; CHECK-NEXT: retq 712 %vec = load <4 x float>, <4 x float>* %a0 713 %res = call <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float> %vec) ; 714 ret <4 x float> %res 715} 716declare <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float>) nounwind readnone 717 718define <8 x float> @test_int_x86_xop_vfrcz_ps_256(<8 x float> %a0) { 719; CHECK-LABEL: test_int_x86_xop_vfrcz_ps_256: 720; CHECK: # BB#0: 721; CHECK-NEXT: vfrczps %ymm0, %ymm0 722; CHECK-NEXT: retq 723 %res = call <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float> %a0) ; 724 ret <8 x float> %res 725} 726define <8 x float> @test_int_x86_xop_vfrcz_ps_256_mem(<8 x float>* %a0) { 727; CHECK-LABEL: test_int_x86_xop_vfrcz_ps_256_mem: 728; CHECK: # BB#0: 729; CHECK-NEXT: vfrczps (%rdi), %ymm0 730; CHECK-NEXT: retq 731 %vec = load <8 x float>, <8 x float>* %a0 732 %res = call <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float> %vec) ; 733 ret <8 x float> %res 734} 735declare <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float>) nounwind readnone 736 737define <16 x i8> @test_int_x86_xop_vpcomb(<16 x i8> %a0, <16 x i8> %a1) { 738; CHECK-LABEL: test_int_x86_xop_vpcomb: 739; CHECK: # BB#0: 740; CHECK-NEXT: vpcomltb %xmm1, %xmm0, %xmm0 741; CHECK-NEXT: retq 742 %res = call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %a0, <16 x i8> %a1, i8 0) ; 743 ret <16 x i8> %res 744} 745declare <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8>, <16 x i8>, i8) nounwind readnone 746 747define <8 x i16> @test_int_x86_xop_vpcomw(<8 x i16> %a0, <8 x i16> %a1) { 748; CHECK-LABEL: test_int_x86_xop_vpcomw: 749; CHECK: # BB#0: 750; CHECK-NEXT: vpcomltw %xmm1, %xmm0, %xmm0 751; CHECK-NEXT: retq 752 %res = call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %a0, <8 x i16> %a1, i8 0) ; 753 ret <8 x i16> %res 754} 755declare <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16>, <8 x i16>, i8) nounwind readnone 756 757define <4 x i32> @test_int_x86_xop_vpcomd(<4 x i32> %a0, <4 x i32> %a1) { 758; CHECK-LABEL: test_int_x86_xop_vpcomd: 759; CHECK: # BB#0: 760; CHECK-NEXT: vpcomltd %xmm1, %xmm0, %xmm0 761; CHECK-NEXT: retq 762 %res = call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %a0, <4 x i32> %a1, i8 0) ; 763 ret <4 x i32> %res 764} 765declare <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32>, <4 x i32>, i8) nounwind readnone 766 767define <2 x i64> @test_int_x86_xop_vpcomq(<2 x i64> %a0, <2 x i64> %a1) { 768; CHECK-LABEL: test_int_x86_xop_vpcomq: 769; CHECK: # BB#0: 770; CHECK-NEXT: vpcomltq %xmm1, %xmm0, %xmm0 771; CHECK-NEXT: retq 772 %res = call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %a0, <2 x i64> %a1, i8 0) ; 773 ret <2 x i64> %res 774} 775declare <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64>, <2 x i64>, i8) nounwind readnone 776 777define <16 x i8> @test_int_x86_xop_vpcomub(<16 x i8> %a0, <16 x i8> %a1) { 778; CHECK-LABEL: test_int_x86_xop_vpcomub: 779; CHECK: # BB#0: 780; CHECK-NEXT: vpcomltub %xmm1, %xmm0, %xmm0 781; CHECK-NEXT: retq 782 %res = call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %a0, <16 x i8> %a1, i8 0) ; 783 ret <16 x i8> %res 784} 785declare <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8>, <16 x i8>, i8) nounwind readnone 786 787define <8 x i16> @test_int_x86_xop_vpcomuw(<8 x i16> %a0, <8 x i16> %a1) { 788; CHECK-LABEL: test_int_x86_xop_vpcomuw: 789; CHECK: # BB#0: 790; CHECK-NEXT: vpcomltuw %xmm1, %xmm0, %xmm0 791; CHECK-NEXT: retq 792 %res = call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %a0, <8 x i16> %a1, i8 0) ; 793 ret <8 x i16> %res 794} 795declare <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16>, <8 x i16>, i8) nounwind readnone 796 797define <4 x i32> @test_int_x86_xop_vpcomud(<4 x i32> %a0, <4 x i32> %a1) { 798; CHECK-LABEL: test_int_x86_xop_vpcomud: 799; CHECK: # BB#0: 800; CHECK-NEXT: vpcomltud %xmm1, %xmm0, %xmm0 801; CHECK-NEXT: retq 802 %res = call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %a0, <4 x i32> %a1, i8 0) ; 803 ret <4 x i32> %res 804} 805declare <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32>, <4 x i32>, i8) nounwind readnone 806 807define <2 x i64> @test_int_x86_xop_vpcomuq(<2 x i64> %a0, <2 x i64> %a1) { 808; CHECK-LABEL: test_int_x86_xop_vpcomuq: 809; CHECK: # BB#0: 810; CHECK-NEXT: vpcomltuq %xmm1, %xmm0, %xmm0 811; CHECK-NEXT: retq 812 %res = call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %a0, <2 x i64> %a1, i8 0) ; 813 ret <2 x i64> %res 814} 815declare <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64>, <2 x i64>, i8) nounwind readnone 816 817