1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -fast-isel -mtriple=i686-unknown-unknown -mattr=+avx,+fma4,+xop | FileCheck %s --check-prefix=ALL --check-prefix=X32 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -fast-isel -mtriple=x86_64-unknown-unknown -mattr=+avx,+fma4,+xop | FileCheck %s --check-prefix=ALL --check-prefix=X64 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; NOTE: This should use IR equivalent to what is generated by clang/test/CodeGen/xop-builtins.c 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_maccs_epi16(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) nounwind { 8*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maccs_epi16: 9*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 10*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpmacssww %xmm2, %xmm1, %xmm0, %xmm0 11*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 12*9880d681SAndroid Build Coastguard Worker; 13*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maccs_epi16: 14*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 15*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpmacssww %xmm2, %xmm1, %xmm0, %xmm0 16*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 17*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 18*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 19*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <2 x i64> %a2 to <8 x i16> 20*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vpmacssww(<8 x i16> %arg0, <8 x i16> %arg1, <8 x i16> %arg2) 21*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 22*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpmacssww(<8 x i16>, <8 x i16>, <8 x i16>) nounwind readnone 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_macc_epi16(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) nounwind { 27*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_macc_epi16: 28*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 29*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpmacsww %xmm2, %xmm1, %xmm0, %xmm0 30*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 31*9880d681SAndroid Build Coastguard Worker; 32*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_macc_epi16: 33*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 34*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpmacsww %xmm2, %xmm1, %xmm0, %xmm0 35*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 36*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 37*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 38*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <2 x i64> %a2 to <8 x i16> 39*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vpmacsww(<8 x i16> %arg0, <8 x i16> %arg1, <8 x i16> %arg2) 40*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 41*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 42*9880d681SAndroid Build Coastguard Worker} 43*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpmacsww(<8 x i16>, <8 x i16>, <8 x i16>) nounwind readnone 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_maccsd_epi16(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) nounwind { 46*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maccsd_epi16: 47*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 48*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpmacsswd %xmm2, %xmm1, %xmm0, %xmm0 49*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 50*9880d681SAndroid Build Coastguard Worker; 51*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maccsd_epi16: 52*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 53*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpmacsswd %xmm2, %xmm1, %xmm0, %xmm0 54*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 55*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 56*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 57*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <2 x i64> %a2 to <4 x i32> 58*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpmacsswd(<8 x i16> %arg0, <8 x i16> %arg1, <4 x i32> %arg2) 59*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 60*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 61*9880d681SAndroid Build Coastguard Worker} 62*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmacsswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_maccd_epi16(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) nounwind { 65*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maccd_epi16: 66*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 67*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpmacswd %xmm2, %xmm1, %xmm0, %xmm0 68*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 69*9880d681SAndroid Build Coastguard Worker; 70*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maccd_epi16: 71*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 72*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpmacswd %xmm2, %xmm1, %xmm0, %xmm0 73*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 74*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 75*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 76*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <2 x i64> %a2 to <4 x i32> 77*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpmacswd(<8 x i16> %arg0, <8 x i16> %arg1, <4 x i32> %arg2) 78*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 79*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 80*9880d681SAndroid Build Coastguard Worker} 81*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmacswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_maccs_epi32(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) nounwind { 84*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maccs_epi32: 85*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 86*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpmacssdd %xmm2, %xmm1, %xmm0, %xmm0 87*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 88*9880d681SAndroid Build Coastguard Worker; 89*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maccs_epi32: 90*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 91*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpmacssdd %xmm2, %xmm1, %xmm0, %xmm0 92*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 93*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 94*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 95*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <2 x i64> %a2 to <4 x i32> 96*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpmacssdd(<4 x i32> %arg0, <4 x i32> %arg1, <4 x i32> %arg2) 97*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 98*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 99*9880d681SAndroid Build Coastguard Worker} 100*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmacssdd(<4 x i32>, <4 x i32>, <4 x i32>) nounwind readnone 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_macc_epi32(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) nounwind { 103*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_macc_epi32: 104*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 105*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpmacsdd %xmm2, %xmm1, %xmm0, %xmm0 106*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 107*9880d681SAndroid Build Coastguard Worker; 108*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_macc_epi32: 109*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 110*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpmacsdd %xmm2, %xmm1, %xmm0, %xmm0 111*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 112*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 113*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 114*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <2 x i64> %a2 to <4 x i32> 115*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpmacsdd(<4 x i32> %arg0, <4 x i32> %arg1, <4 x i32> %arg2) 116*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 117*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 118*9880d681SAndroid Build Coastguard Worker} 119*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmacsdd(<4 x i32>, <4 x i32>, <4 x i32>) nounwind readnone 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_maccslo_epi32(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) nounwind { 122*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maccslo_epi32: 123*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 124*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpmacssdql %xmm2, %xmm1, %xmm0, %xmm0 125*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 126*9880d681SAndroid Build Coastguard Worker; 127*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maccslo_epi32: 128*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 129*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpmacssdql %xmm2, %xmm1, %xmm0, %xmm0 130*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 131*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 132*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 133*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpmacssdql(<4 x i32> %arg0, <4 x i32> %arg1, <2 x i64> %a2) 134*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 135*9880d681SAndroid Build Coastguard Worker} 136*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpmacssdql(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_macclo_epi32(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) nounwind { 139*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_macclo_epi32: 140*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 141*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpmacsdql %xmm2, %xmm1, %xmm0, %xmm0 142*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 143*9880d681SAndroid Build Coastguard Worker; 144*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_macclo_epi32: 145*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 146*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpmacsdql %xmm2, %xmm1, %xmm0, %xmm0 147*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 148*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 149*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 150*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpmacsdql(<4 x i32> %arg0, <4 x i32> %arg1, <2 x i64> %a2) 151*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 152*9880d681SAndroid Build Coastguard Worker} 153*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpmacsdql(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone 154*9880d681SAndroid Build Coastguard Worker 155*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_maccshi_epi32(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) nounwind { 156*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maccshi_epi32: 157*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 158*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpmacssdqh %xmm2, %xmm1, %xmm0, %xmm0 159*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 160*9880d681SAndroid Build Coastguard Worker; 161*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maccshi_epi32: 162*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 163*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpmacssdqh %xmm2, %xmm1, %xmm0, %xmm0 164*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 165*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 166*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 167*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpmacssdqh(<4 x i32> %arg0, <4 x i32> %arg1, <2 x i64> %a2) 168*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 169*9880d681SAndroid Build Coastguard Worker} 170*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpmacssdqh(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone 171*9880d681SAndroid Build Coastguard Worker 172*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_macchi_epi32(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) nounwind { 173*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_macchi_epi32: 174*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 175*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpmacsdqh %xmm2, %xmm1, %xmm0, %xmm0 176*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 177*9880d681SAndroid Build Coastguard Worker; 178*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_macchi_epi32: 179*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 180*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpmacsdqh %xmm2, %xmm1, %xmm0, %xmm0 181*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 182*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 183*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 184*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpmacsdqh(<4 x i32> %arg0, <4 x i32> %arg1, <2 x i64> %a2) 185*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 186*9880d681SAndroid Build Coastguard Worker} 187*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpmacsdqh(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone 188*9880d681SAndroid Build Coastguard Worker 189*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_maddsd_epi16(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) nounwind { 190*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maddsd_epi16: 191*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 192*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpmadcsswd %xmm2, %xmm1, %xmm0, %xmm0 193*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 194*9880d681SAndroid Build Coastguard Worker; 195*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maddsd_epi16: 196*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 197*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpmadcsswd %xmm2, %xmm1, %xmm0, %xmm0 198*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 199*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 200*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 201*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <2 x i64> %a2 to <4 x i32> 202*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpmadcsswd(<8 x i16> %arg0, <8 x i16> %arg1, <4 x i32> %arg2) 203*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 204*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 205*9880d681SAndroid Build Coastguard Worker} 206*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmadcsswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone 207*9880d681SAndroid Build Coastguard Worker 208*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_maddd_epi16(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) nounwind { 209*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maddd_epi16: 210*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 211*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpmadcswd %xmm2, %xmm1, %xmm0, %xmm0 212*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 213*9880d681SAndroid Build Coastguard Worker; 214*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maddd_epi16: 215*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 216*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpmadcswd %xmm2, %xmm1, %xmm0, %xmm0 217*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 218*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 219*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 220*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <2 x i64> %a2 to <4 x i32> 221*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16> %arg0, <8 x i16> %arg1, <4 x i32> %arg2) 222*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 223*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 224*9880d681SAndroid Build Coastguard Worker} 225*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone 226*9880d681SAndroid Build Coastguard Worker 227*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_haddw_epi8(<2 x i64> %a0) { 228*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_haddw_epi8: 229*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 230*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphaddbw %xmm0, %xmm0 231*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 232*9880d681SAndroid Build Coastguard Worker; 233*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_haddw_epi8: 234*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 235*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphaddbw %xmm0, %xmm0 236*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 237*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 238*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vphaddbw(<16 x i8> %arg0) 239*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 240*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 241*9880d681SAndroid Build Coastguard Worker} 242*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vphaddbw(<16 x i8>) nounwind readnone 243*9880d681SAndroid Build Coastguard Worker 244*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_haddd_epi8(<2 x i64> %a0) { 245*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_haddd_epi8: 246*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 247*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphaddbd %xmm0, %xmm0 248*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 249*9880d681SAndroid Build Coastguard Worker; 250*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_haddd_epi8: 251*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 252*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphaddbd %xmm0, %xmm0 253*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 254*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 255*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vphaddbd(<16 x i8> %arg0) 256*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 257*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 258*9880d681SAndroid Build Coastguard Worker} 259*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphaddbd(<16 x i8>) nounwind readnone 260*9880d681SAndroid Build Coastguard Worker 261*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_haddq_epi8(<2 x i64> %a0) { 262*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_haddq_epi8: 263*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 264*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphaddbq %xmm0, %xmm0 265*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 266*9880d681SAndroid Build Coastguard Worker; 267*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_haddq_epi8: 268*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 269*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphaddbq %xmm0, %xmm0 270*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 271*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 272*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphaddbq(<16 x i8> %arg0) 273*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 274*9880d681SAndroid Build Coastguard Worker} 275*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphaddbq(<16 x i8>) nounwind readnone 276*9880d681SAndroid Build Coastguard Worker 277*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_haddd_epi16(<2 x i64> %a0) { 278*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_haddd_epi16: 279*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 280*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphaddwd %xmm0, %xmm0 281*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 282*9880d681SAndroid Build Coastguard Worker; 283*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_haddd_epi16: 284*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 285*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphaddwd %xmm0, %xmm0 286*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 287*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 288*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vphaddwd(<8 x i16> %arg0) 289*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 290*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 291*9880d681SAndroid Build Coastguard Worker} 292*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphaddwd(<8 x i16>) nounwind readnone 293*9880d681SAndroid Build Coastguard Worker 294*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_haddq_epi16(<2 x i64> %a0) { 295*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_haddq_epi16: 296*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 297*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphaddwq %xmm0, %xmm0 298*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 299*9880d681SAndroid Build Coastguard Worker; 300*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_haddq_epi16: 301*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 302*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphaddwq %xmm0, %xmm0 303*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 304*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 305*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphaddwq(<8 x i16> %arg0) 306*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 307*9880d681SAndroid Build Coastguard Worker} 308*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphaddwq(<8 x i16>) nounwind readnone 309*9880d681SAndroid Build Coastguard Worker 310*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_haddq_epi32(<2 x i64> %a0) { 311*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_haddq_epi32: 312*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 313*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphadddq %xmm0, %xmm0 314*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 315*9880d681SAndroid Build Coastguard Worker; 316*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_haddq_epi32: 317*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 318*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphadddq %xmm0, %xmm0 319*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 320*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 321*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphadddq(<4 x i32> %arg0) 322*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 323*9880d681SAndroid Build Coastguard Worker} 324*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphadddq(<4 x i32>) nounwind readnone 325*9880d681SAndroid Build Coastguard Worker 326*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_haddw_epu8(<2 x i64> %a0) { 327*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_haddw_epu8: 328*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 329*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphaddubw %xmm0, %xmm0 330*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 331*9880d681SAndroid Build Coastguard Worker; 332*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_haddw_epu8: 333*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 334*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphaddubw %xmm0, %xmm0 335*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 336*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 337*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vphaddubw(<16 x i8> %arg0) 338*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 339*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 340*9880d681SAndroid Build Coastguard Worker} 341*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vphaddubw(<16 x i8>) nounwind readnone 342*9880d681SAndroid Build Coastguard Worker 343*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_haddd_epu8(<2 x i64> %a0) { 344*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_haddd_epu8: 345*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 346*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphaddubd %xmm0, %xmm0 347*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 348*9880d681SAndroid Build Coastguard Worker; 349*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_haddd_epu8: 350*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 351*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphaddubd %xmm0, %xmm0 352*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 353*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 354*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vphaddubd(<16 x i8> %arg0) 355*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 356*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 357*9880d681SAndroid Build Coastguard Worker} 358*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphaddubd(<16 x i8>) nounwind readnone 359*9880d681SAndroid Build Coastguard Worker 360*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_haddq_epu8(<2 x i64> %a0) { 361*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_haddq_epu8: 362*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 363*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphaddubq %xmm0, %xmm0 364*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 365*9880d681SAndroid Build Coastguard Worker; 366*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_haddq_epu8: 367*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 368*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphaddubq %xmm0, %xmm0 369*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 370*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 371*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphaddubq(<16 x i8> %arg0) 372*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 373*9880d681SAndroid Build Coastguard Worker} 374*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphaddubq(<16 x i8>) nounwind readnone 375*9880d681SAndroid Build Coastguard Worker 376*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_haddd_epu16(<2 x i64> %a0) { 377*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_haddd_epu16: 378*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 379*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphadduwd %xmm0, %xmm0 380*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 381*9880d681SAndroid Build Coastguard Worker; 382*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_haddd_epu16: 383*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 384*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphadduwd %xmm0, %xmm0 385*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 386*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 387*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vphadduwd(<8 x i16> %arg0) 388*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 389*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 390*9880d681SAndroid Build Coastguard Worker} 391*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphadduwd(<8 x i16>) nounwind readnone 392*9880d681SAndroid Build Coastguard Worker 393*9880d681SAndroid Build Coastguard Worker 394*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_haddq_epu16(<2 x i64> %a0) { 395*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_haddq_epu16: 396*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 397*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphadduwq %xmm0, %xmm0 398*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 399*9880d681SAndroid Build Coastguard Worker; 400*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_haddq_epu16: 401*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 402*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphadduwq %xmm0, %xmm0 403*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 404*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 405*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphadduwq(<8 x i16> %arg0) 406*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 407*9880d681SAndroid Build Coastguard Worker} 408*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphadduwq(<8 x i16>) nounwind readnone 409*9880d681SAndroid Build Coastguard Worker 410*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_haddq_epu32(<2 x i64> %a0) { 411*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_haddq_epu32: 412*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 413*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphaddudq %xmm0, %xmm0 414*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 415*9880d681SAndroid Build Coastguard Worker; 416*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_haddq_epu32: 417*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 418*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphaddudq %xmm0, %xmm0 419*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 420*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 421*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphaddudq(<4 x i32> %arg0) 422*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 423*9880d681SAndroid Build Coastguard Worker} 424*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphaddudq(<4 x i32>) nounwind readnone 425*9880d681SAndroid Build Coastguard Worker 426*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_hsubw_epi8(<2 x i64> %a0) { 427*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_hsubw_epi8: 428*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 429*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphsubbw %xmm0, %xmm0 430*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 431*9880d681SAndroid Build Coastguard Worker; 432*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_hsubw_epi8: 433*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 434*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphsubbw %xmm0, %xmm0 435*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 436*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 437*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vphsubbw(<16 x i8> %arg0) 438*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 439*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 440*9880d681SAndroid Build Coastguard Worker} 441*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vphsubbw(<16 x i8>) nounwind readnone 442*9880d681SAndroid Build Coastguard Worker 443*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_hsubd_epi16(<2 x i64> %a0) { 444*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_hsubd_epi16: 445*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 446*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphsubwd %xmm0, %xmm0 447*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 448*9880d681SAndroid Build Coastguard Worker; 449*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_hsubd_epi16: 450*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 451*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphsubwd %xmm0, %xmm0 452*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 453*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 454*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16> %arg0) 455*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 456*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 457*9880d681SAndroid Build Coastguard Worker} 458*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16>) nounwind readnone 459*9880d681SAndroid Build Coastguard Worker 460*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_hsubq_epi32(<2 x i64> %a0) { 461*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_hsubq_epi32: 462*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 463*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vphsubdq %xmm0, %xmm0 464*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 465*9880d681SAndroid Build Coastguard Worker; 466*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_hsubq_epi32: 467*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 468*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vphsubdq %xmm0, %xmm0 469*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 470*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 471*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32> %arg0) 472*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 473*9880d681SAndroid Build Coastguard Worker} 474*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32>) nounwind readnone 475*9880d681SAndroid Build Coastguard Worker 476*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_cmov_si128(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) { 477*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_cmov_si128: 478*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 479*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3 480*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpxor %xmm3, %xmm2, %xmm3 481*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpand %xmm2, %xmm0, %xmm0 482*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpand %xmm3, %xmm1, %xmm1 483*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpor %xmm1, %xmm0, %xmm0 484*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 485*9880d681SAndroid Build Coastguard Worker; 486*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_cmov_si128: 487*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 488*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3 489*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpxor %xmm3, %xmm2, %xmm3 490*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpand %xmm2, %xmm0, %xmm0 491*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpand %xmm3, %xmm1, %xmm1 492*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpor %xmm1, %xmm0, %xmm0 493*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 494*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) 495*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 496*9880d681SAndroid Build Coastguard Worker} 497*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64>, <2 x i64>, <2 x i64>) nounwind readnone 498*9880d681SAndroid Build Coastguard Worker 499*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_cmov_si256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2) { 500*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_cmov_si256: 501*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 502*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpcmov %ymm2, %ymm1, %ymm0, %ymm0 503*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 504*9880d681SAndroid Build Coastguard Worker; 505*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_cmov_si256: 506*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 507*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpcmov %ymm2, %ymm1, %ymm0, %ymm0 508*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 509*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2) 510*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 511*9880d681SAndroid Build Coastguard Worker} 512*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64>, <4 x i64>, <4 x i64>) nounwind readnone 513*9880d681SAndroid Build Coastguard Worker 514*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_perm_epi8(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) { 515*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_perm_epi8: 516*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 517*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpperm %xmm2, %xmm1, %xmm0, %xmm0 518*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 519*9880d681SAndroid Build Coastguard Worker; 520*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_perm_epi8: 521*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 522*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpperm %xmm2, %xmm1, %xmm0, %xmm0 523*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 524*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 525*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 526*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <2 x i64> %a2 to <16 x i8> 527*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vpperm(<16 x i8> %arg0, <16 x i8> %arg1, <16 x i8> %arg2) 528*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 529*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 530*9880d681SAndroid Build Coastguard Worker} 531*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpperm(<16 x i8>, <16 x i8>, <16 x i8>) nounwind readnone 532*9880d681SAndroid Build Coastguard Worker 533*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_rot_epi8(<2 x i64> %a0, <2 x i64> %a1) { 534*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_rot_epi8: 535*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 536*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vprotb %xmm1, %xmm0, %xmm0 537*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 538*9880d681SAndroid Build Coastguard Worker; 539*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_rot_epi8: 540*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 541*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vprotb %xmm1, %xmm0, %xmm0 542*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 543*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 544*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 545*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vprotb(<16 x i8> %arg0, <16 x i8> %arg1) 546*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 547*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 548*9880d681SAndroid Build Coastguard Worker} 549*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vprotb(<16 x i8>, <16 x i8>) nounwind readnone 550*9880d681SAndroid Build Coastguard Worker 551*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_rot_epi16(<2 x i64> %a0, <2 x i64> %a1) { 552*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_rot_epi16: 553*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 554*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vprotw %xmm1, %xmm0, %xmm0 555*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 556*9880d681SAndroid Build Coastguard Worker; 557*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_rot_epi16: 558*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 559*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vprotw %xmm1, %xmm0, %xmm0 560*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 561*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 562*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 563*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vprotw(<8 x i16> %arg0, <8 x i16> %arg1) 564*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 565*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 566*9880d681SAndroid Build Coastguard Worker} 567*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vprotw(<8 x i16>, <8 x i16>) nounwind readnone 568*9880d681SAndroid Build Coastguard Worker 569*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_rot_epi32(<2 x i64> %a0, <2 x i64> %a1) { 570*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_rot_epi32: 571*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 572*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vprotd %xmm1, %xmm0, %xmm0 573*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 574*9880d681SAndroid Build Coastguard Worker; 575*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_rot_epi32: 576*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 577*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vprotd %xmm1, %xmm0, %xmm0 578*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 579*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 580*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 581*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vprotd(<4 x i32> %arg0, <4 x i32> %arg1) 582*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 583*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 584*9880d681SAndroid Build Coastguard Worker} 585*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vprotd(<4 x i32>, <4 x i32>) nounwind readnone 586*9880d681SAndroid Build Coastguard Worker 587*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_rot_epi64(<2 x i64> %a0, <2 x i64> %a1) { 588*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_rot_epi64: 589*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 590*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vprotq %xmm1, %xmm0, %xmm0 591*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 592*9880d681SAndroid Build Coastguard Worker; 593*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_rot_epi64: 594*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 595*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vprotq %xmm1, %xmm0, %xmm0 596*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 597*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vprotq(<2 x i64> %a0, <2 x i64> %a1) 598*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 599*9880d681SAndroid Build Coastguard Worker} 600*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vprotq(<2 x i64>, <2 x i64>) nounwind readnone 601*9880d681SAndroid Build Coastguard Worker 602*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_roti_epi8(<2 x i64> %a0) { 603*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_roti_epi8: 604*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 605*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vprotb $1, %xmm0, %xmm0 606*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 607*9880d681SAndroid Build Coastguard Worker; 608*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_roti_epi8: 609*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 610*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vprotb $1, %xmm0, %xmm0 611*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 612*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 613*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vprotbi(<16 x i8> %arg0, i8 1) 614*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 615*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 616*9880d681SAndroid Build Coastguard Worker} 617*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vprotbi(<16 x i8>, i8) nounwind readnone 618*9880d681SAndroid Build Coastguard Worker 619*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_roti_epi16(<2 x i64> %a0) { 620*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_roti_epi16: 621*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 622*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vprotw $50, %xmm0, %xmm0 623*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 624*9880d681SAndroid Build Coastguard Worker; 625*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_roti_epi16: 626*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 627*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vprotw $50, %xmm0, %xmm0 628*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 629*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 630*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vprotwi(<8 x i16> %arg0, i8 50) 631*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 632*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 633*9880d681SAndroid Build Coastguard Worker} 634*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vprotwi(<8 x i16>, i8) nounwind readnone 635*9880d681SAndroid Build Coastguard Worker 636*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_roti_epi32(<2 x i64> %a0) { 637*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_roti_epi32: 638*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 639*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vprotd $226, %xmm0, %xmm0 640*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 641*9880d681SAndroid Build Coastguard Worker; 642*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_roti_epi32: 643*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 644*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vprotd $226, %xmm0, %xmm0 645*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 646*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 647*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vprotdi(<4 x i32> %arg0, i8 -30) 648*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 649*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 650*9880d681SAndroid Build Coastguard Worker} 651*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vprotdi(<4 x i32>, i8) nounwind readnone 652*9880d681SAndroid Build Coastguard Worker 653*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_roti_epi64(<2 x i64> %a0) { 654*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_roti_epi64: 655*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 656*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vprotq $100, %xmm0, %xmm0 657*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 658*9880d681SAndroid Build Coastguard Worker; 659*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_roti_epi64: 660*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 661*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vprotq $100, %xmm0, %xmm0 662*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 663*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vprotqi(<2 x i64> %a0, i8 100) 664*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 665*9880d681SAndroid Build Coastguard Worker} 666*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vprotqi(<2 x i64>, i8) nounwind readnone 667*9880d681SAndroid Build Coastguard Worker 668*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_shl_epi8(<2 x i64> %a0, <2 x i64> %a1) { 669*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_shl_epi8: 670*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 671*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpshlb %xmm1, %xmm0, %xmm0 672*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 673*9880d681SAndroid Build Coastguard Worker; 674*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_shl_epi8: 675*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 676*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpshlb %xmm1, %xmm0, %xmm0 677*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 678*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 679*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 680*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vpshlb(<16 x i8> %arg0, <16 x i8> %arg1) 681*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 682*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 683*9880d681SAndroid Build Coastguard Worker} 684*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpshlb(<16 x i8>, <16 x i8>) nounwind readnone 685*9880d681SAndroid Build Coastguard Worker 686*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_shl_epi16(<2 x i64> %a0, <2 x i64> %a1) { 687*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_shl_epi16: 688*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 689*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpshlw %xmm1, %xmm0, %xmm0 690*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 691*9880d681SAndroid Build Coastguard Worker; 692*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_shl_epi16: 693*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 694*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpshlw %xmm1, %xmm0, %xmm0 695*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 696*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 697*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 698*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16> %arg0, <8 x i16> %arg1) 699*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 700*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 701*9880d681SAndroid Build Coastguard Worker} 702*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16>, <8 x i16>) nounwind readnone 703*9880d681SAndroid Build Coastguard Worker 704*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_shl_epi32(<2 x i64> %a0, <2 x i64> %a1) { 705*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_shl_epi32: 706*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 707*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpshld %xmm1, %xmm0, %xmm0 708*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 709*9880d681SAndroid Build Coastguard Worker; 710*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_shl_epi32: 711*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 712*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpshld %xmm1, %xmm0, %xmm0 713*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 714*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 715*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 716*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpshld(<4 x i32> %arg0, <4 x i32> %arg1) 717*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 718*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 719*9880d681SAndroid Build Coastguard Worker} 720*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpshld(<4 x i32>, <4 x i32>) nounwind readnone 721*9880d681SAndroid Build Coastguard Worker 722*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_shl_epi64(<2 x i64> %a0, <2 x i64> %a1) { 723*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_shl_epi64: 724*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 725*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpshlq %xmm1, %xmm0, %xmm0 726*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 727*9880d681SAndroid Build Coastguard Worker; 728*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_shl_epi64: 729*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 730*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpshlq %xmm1, %xmm0, %xmm0 731*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 732*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpshlq(<2 x i64> %a0, <2 x i64> %a1) 733*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 734*9880d681SAndroid Build Coastguard Worker} 735*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpshlq(<2 x i64>, <2 x i64>) nounwind readnone 736*9880d681SAndroid Build Coastguard Worker 737*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sha_epi8(<2 x i64> %a0, <2 x i64> %a1) { 738*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sha_epi8: 739*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 740*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpshab %xmm1, %xmm0, %xmm0 741*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 742*9880d681SAndroid Build Coastguard Worker; 743*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sha_epi8: 744*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 745*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpshab %xmm1, %xmm0, %xmm0 746*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 747*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 748*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 749*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vpshab(<16 x i8> %arg0, <16 x i8> %arg1) 750*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 751*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 752*9880d681SAndroid Build Coastguard Worker} 753*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpshab(<16 x i8>, <16 x i8>) nounwind readnone 754*9880d681SAndroid Build Coastguard Worker 755*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sha_epi16(<2 x i64> %a0, <2 x i64> %a1) { 756*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sha_epi16: 757*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 758*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpshaw %xmm1, %xmm0, %xmm0 759*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 760*9880d681SAndroid Build Coastguard Worker; 761*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sha_epi16: 762*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 763*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpshaw %xmm1, %xmm0, %xmm0 764*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 765*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 766*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 767*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vpshaw(<8 x i16> %arg0, <8 x i16> %arg1) 768*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 769*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 770*9880d681SAndroid Build Coastguard Worker} 771*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpshaw(<8 x i16>, <8 x i16>) nounwind readnone 772*9880d681SAndroid Build Coastguard Worker 773*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sha_epi32(<2 x i64> %a0, <2 x i64> %a1) { 774*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sha_epi32: 775*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 776*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpshad %xmm1, %xmm0, %xmm0 777*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 778*9880d681SAndroid Build Coastguard Worker; 779*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sha_epi32: 780*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 781*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpshad %xmm1, %xmm0, %xmm0 782*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 783*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 784*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 785*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpshad(<4 x i32> %arg0, <4 x i32> %arg1) 786*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 787*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 788*9880d681SAndroid Build Coastguard Worker} 789*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpshad(<4 x i32>, <4 x i32>) nounwind readnone 790*9880d681SAndroid Build Coastguard Worker 791*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_sha_epi64(<2 x i64> %a0, <2 x i64> %a1) { 792*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_sha_epi64: 793*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 794*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpshaq %xmm1, %xmm0, %xmm0 795*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 796*9880d681SAndroid Build Coastguard Worker; 797*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_sha_epi64: 798*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 799*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpshaq %xmm1, %xmm0, %xmm0 800*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 801*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpshaq(<2 x i64> %a0, <2 x i64> %a1) 802*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 803*9880d681SAndroid Build Coastguard Worker} 804*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpshaq(<2 x i64>, <2 x i64>) nounwind readnone 805*9880d681SAndroid Build Coastguard Worker 806*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_com_epu8(<2 x i64> %a0, <2 x i64> %a1) { 807*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_com_epu8: 808*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 809*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpcomltub %xmm1, %xmm0, %xmm0 810*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 811*9880d681SAndroid Build Coastguard Worker; 812*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_com_epu8: 813*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 814*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpcomltub %xmm1, %xmm0, %xmm0 815*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 816*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 817*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 818*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %arg0, <16 x i8> %arg1, i8 0) 819*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 820*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 821*9880d681SAndroid Build Coastguard Worker} 822*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8>, <16 x i8>, i8) nounwind readnone 823*9880d681SAndroid Build Coastguard Worker 824*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_com_epu16(<2 x i64> %a0, <2 x i64> %a1) { 825*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_com_epu16: 826*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 827*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpcomltuw %xmm1, %xmm0, %xmm0 828*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 829*9880d681SAndroid Build Coastguard Worker; 830*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_com_epu16: 831*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 832*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpcomltuw %xmm1, %xmm0, %xmm0 833*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 834*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 835*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 836*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %arg0, <8 x i16> %arg1, i8 0) 837*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 838*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 839*9880d681SAndroid Build Coastguard Worker} 840*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16>, <8 x i16>, i8) nounwind readnone 841*9880d681SAndroid Build Coastguard Worker 842*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_com_epu32(<2 x i64> %a0, <2 x i64> %a1) { 843*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_com_epu32: 844*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 845*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpcomltud %xmm1, %xmm0, %xmm0 846*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 847*9880d681SAndroid Build Coastguard Worker; 848*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_com_epu32: 849*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 850*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpcomltud %xmm1, %xmm0, %xmm0 851*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 852*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 853*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 854*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %arg0, <4 x i32> %arg1, i8 0) 855*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 856*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 857*9880d681SAndroid Build Coastguard Worker} 858*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32>, <4 x i32>, i8) nounwind readnone 859*9880d681SAndroid Build Coastguard Worker 860*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_com_epu64(<2 x i64> %a0, <2 x i64> %a1) { 861*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_com_epu64: 862*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 863*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpcomltuq %xmm1, %xmm0, %xmm0 864*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 865*9880d681SAndroid Build Coastguard Worker; 866*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_com_epu64: 867*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 868*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpcomltuq %xmm1, %xmm0, %xmm0 869*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 870*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %a0, <2 x i64> %a1, i8 0) 871*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 872*9880d681SAndroid Build Coastguard Worker} 873*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64>, <2 x i64>, i8) nounwind readnone 874*9880d681SAndroid Build Coastguard Worker 875*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_com_epi8(<2 x i64> %a0, <2 x i64> %a1) { 876*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_com_epi8: 877*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 878*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpcomltb %xmm1, %xmm0, %xmm0 879*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 880*9880d681SAndroid Build Coastguard Worker; 881*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_com_epi8: 882*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 883*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpcomltb %xmm1, %xmm0, %xmm0 884*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 885*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 886*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 887*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %arg0, <16 x i8> %arg1, i8 0) 888*9880d681SAndroid Build Coastguard Worker %bc = bitcast <16 x i8> %res to <2 x i64> 889*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 890*9880d681SAndroid Build Coastguard Worker} 891*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8>, <16 x i8>, i8) nounwind readnone 892*9880d681SAndroid Build Coastguard Worker 893*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_com_epi16(<2 x i64> %a0, <2 x i64> %a1) { 894*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_com_epi16: 895*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 896*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpcomltw %xmm1, %xmm0, %xmm0 897*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 898*9880d681SAndroid Build Coastguard Worker; 899*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_com_epi16: 900*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 901*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpcomltw %xmm1, %xmm0, %xmm0 902*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 903*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 904*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 905*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %arg0, <8 x i16> %arg1, i8 0) 906*9880d681SAndroid Build Coastguard Worker %bc = bitcast <8 x i16> %res to <2 x i64> 907*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 908*9880d681SAndroid Build Coastguard Worker} 909*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16>, <8 x i16>, i8) nounwind readnone 910*9880d681SAndroid Build Coastguard Worker 911*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_com_epi32(<2 x i64> %a0, <2 x i64> %a1) { 912*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_com_epi32: 913*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 914*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpcomltd %xmm1, %xmm0, %xmm0 915*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 916*9880d681SAndroid Build Coastguard Worker; 917*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_com_epi32: 918*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 919*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpcomltd %xmm1, %xmm0, %xmm0 920*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 921*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 922*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <4 x i32> 923*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %arg0, <4 x i32> %arg1, i8 0) 924*9880d681SAndroid Build Coastguard Worker %bc = bitcast <4 x i32> %res to <2 x i64> 925*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %bc 926*9880d681SAndroid Build Coastguard Worker} 927*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32>, <4 x i32>, i8) nounwind readnone 928*9880d681SAndroid Build Coastguard Worker 929*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_com_epi64(<2 x i64> %a0, <2 x i64> %a1) { 930*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_com_epi64: 931*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 932*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpcomltq %xmm1, %xmm0, %xmm0 933*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 934*9880d681SAndroid Build Coastguard Worker; 935*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_com_epi64: 936*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 937*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpcomltq %xmm1, %xmm0, %xmm0 938*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 939*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %a0, <2 x i64> %a1, i8 0) 940*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 941*9880d681SAndroid Build Coastguard Worker} 942*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64>, <2 x i64>, i8) nounwind readnone 943*9880d681SAndroid Build Coastguard Worker 944*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_permute2_pd(<2 x double> %a0, <2 x double> %a1, <2 x i64> %a2) { 945*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_permute2_pd: 946*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 947*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermil2pd $0, %xmm2, %xmm1, %xmm0, %xmm0 948*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 949*9880d681SAndroid Build Coastguard Worker; 950*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_permute2_pd: 951*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 952*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermil2pd $0, %xmm2, %xmm1, %xmm0, %xmm0 953*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 954*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x i64> %a2, i8 0) 955*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 956*9880d681SAndroid Build Coastguard Worker} 957*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double>, <2 x double>, <2 x i64>, i8) nounwind readnone 958*9880d681SAndroid Build Coastguard Worker 959*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_permute2_pd(<4 x double> %a0, <4 x double> %a1, <4 x i64> %a2) { 960*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_permute2_pd: 961*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 962*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermil2pd $0, %ymm2, %ymm1, %ymm0, %ymm0 963*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 964*9880d681SAndroid Build Coastguard Worker; 965*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_permute2_pd: 966*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 967*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermil2pd $0, %ymm2, %ymm1, %ymm0, %ymm0 968*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 969*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %a1, <4 x i64> %a2, i8 0) 970*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 971*9880d681SAndroid Build Coastguard Worker} 972*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double>, <4 x double>, <4 x i64>, i8) nounwind readnone 973*9880d681SAndroid Build Coastguard Worker 974*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_permute2_ps(<4 x float> %a0, <4 x float> %a1, <2 x i64> %a2) { 975*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_permute2_ps: 976*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 977*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermil2ps $0, %xmm2, %xmm1, %xmm0, %xmm0 978*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 979*9880d681SAndroid Build Coastguard Worker; 980*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_permute2_ps: 981*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 982*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermil2ps $0, %xmm2, %xmm1, %xmm0, %xmm0 983*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 984*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <2 x i64> %a2 to <4 x i32> 985*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float> %a0, <4 x float> %a1, <4 x i32> %arg2, i8 0) 986*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 987*9880d681SAndroid Build Coastguard Worker} 988*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float>, <4 x float>, <4 x i32>, i8) nounwind readnone 989*9880d681SAndroid Build Coastguard Worker 990*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_permute2_ps(<8 x float> %a0, <8 x float> %a1, <4 x i64> %a2) { 991*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_permute2_ps: 992*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 993*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermil2ps $0, %ymm2, %ymm1, %ymm0, %ymm0 994*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 995*9880d681SAndroid Build Coastguard Worker; 996*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_permute2_ps: 997*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 998*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermil2ps $0, %ymm2, %ymm1, %ymm0, %ymm0 999*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1000*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <4 x i64> %a2 to <8 x i32> 1001*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float> %a0, <8 x float> %a1, <8 x i32> %arg2, i8 0) 1002*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 1003*9880d681SAndroid Build Coastguard Worker} 1004*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float>, <8 x float>, <8 x i32>, i8) nounwind readnone 1005*9880d681SAndroid Build Coastguard Worker 1006*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_frcz_ss(<4 x float> %a0) { 1007*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_frcz_ss: 1008*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1009*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vfrczss %xmm0, %xmm0 1010*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1011*9880d681SAndroid Build Coastguard Worker; 1012*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_frcz_ss: 1013*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1014*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vfrczss %xmm0, %xmm0 1015*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1016*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float> %a0) 1017*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1018*9880d681SAndroid Build Coastguard Worker} 1019*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float>) nounwind readnone 1020*9880d681SAndroid Build Coastguard Worker 1021*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_frcz_sd(<2 x double> %a0) { 1022*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_frcz_sd: 1023*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1024*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vfrczsd %xmm0, %xmm0 1025*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1026*9880d681SAndroid Build Coastguard Worker; 1027*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_frcz_sd: 1028*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1029*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vfrczsd %xmm0, %xmm0 1030*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1031*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.xop.vfrcz.sd(<2 x double> %a0) 1032*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1033*9880d681SAndroid Build Coastguard Worker} 1034*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.xop.vfrcz.sd(<2 x double>) nounwind readnone 1035*9880d681SAndroid Build Coastguard Worker 1036*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mm_frcz_ps(<4 x float> %a0) { 1037*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_frcz_ps: 1038*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1039*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vfrczps %xmm0, %xmm0 1040*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1041*9880d681SAndroid Build Coastguard Worker; 1042*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_frcz_ps: 1043*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1044*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vfrczps %xmm0, %xmm0 1045*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1046*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float> %a0) 1047*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1048*9880d681SAndroid Build Coastguard Worker} 1049*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float>) nounwind readnone 1050*9880d681SAndroid Build Coastguard Worker 1051*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mm_frcz_pd(<2 x double> %a0) { 1052*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_frcz_pd: 1053*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1054*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vfrczpd %xmm0, %xmm0 1055*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1056*9880d681SAndroid Build Coastguard Worker; 1057*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_frcz_pd: 1058*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1059*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vfrczpd %xmm0, %xmm0 1060*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1061*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double> %a0) 1062*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1063*9880d681SAndroid Build Coastguard Worker} 1064*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double>) nounwind readnone 1065*9880d681SAndroid Build Coastguard Worker 1066*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mm256_frcz_ps(<8 x float> %a0) { 1067*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_frcz_ps: 1068*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1069*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vfrczps %ymm0, %ymm0 1070*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1071*9880d681SAndroid Build Coastguard Worker; 1072*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_frcz_ps: 1073*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1074*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vfrczps %ymm0, %ymm0 1075*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1076*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float> %a0) 1077*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 1078*9880d681SAndroid Build Coastguard Worker} 1079*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float>) nounwind readnone 1080*9880d681SAndroid Build Coastguard Worker 1081*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mm256_frcz_pd(<4 x double> %a0) { 1082*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_frcz_pd: 1083*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1084*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vfrczpd %ymm0, %ymm0 1085*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1086*9880d681SAndroid Build Coastguard Worker; 1087*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_frcz_pd: 1088*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1089*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vfrczpd %ymm0, %ymm0 1090*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1091*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double> %a0) 1092*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 1093*9880d681SAndroid Build Coastguard Worker} 1094*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double>) nounwind readnone 1095*9880d681SAndroid Build Coastguard Worker 1096*9880d681SAndroid Build Coastguard Worker 1097*9880d681SAndroid Build Coastguard Worker 1098*9880d681SAndroid Build Coastguard Worker 1099*9880d681SAndroid Build Coastguard Worker 1100*9880d681SAndroid Build Coastguard Worker 1101*9880d681SAndroid Build Coastguard Worker 1102*9880d681SAndroid Build Coastguard Worker 1103*9880d681SAndroid Build Coastguard Worker 1104*9880d681SAndroid Build Coastguard Worker 1105*9880d681SAndroid Build Coastguard Worker 1106*9880d681SAndroid Build Coastguard Worker 1107*9880d681SAndroid Build Coastguard Worker 1108*9880d681SAndroid Build Coastguard Worker 1109*9880d681SAndroid Build Coastguard Worker 1110*9880d681SAndroid Build Coastguard Worker 1111*9880d681SAndroid Build Coastguard Worker 1112