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 -mtriple=i386-apple-darwin -mattr=-avx,+sse4.2 | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestri128(<16 x i8> %a0, <16 x i8> %a2) { 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpestri128: 6*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %eax 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %edx 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpestri $7, %xmm1, %xmm0 10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl %ecx, %eax 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 12*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpestri128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1] 13*9880d681SAndroid Build Coastguard Worker ret i32 %res 14*9880d681SAndroid Build Coastguard Worker} 15*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestri128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestri128_load(<16 x i8>* %a0, <16 x i8>* %a2) { 19*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpestri128_load: 20*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx 22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax 23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movdqa (%eax), %xmm0 24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %eax 25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %edx 26*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpestri $7, (%ecx), %xmm0 27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl %ecx, %eax 28*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 29*9880d681SAndroid Build Coastguard Worker %1 = load <16 x i8>, <16 x i8>* %a0 30*9880d681SAndroid Build Coastguard Worker %2 = load <16 x i8>, <16 x i8>* %a2 31*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpestri128(<16 x i8> %1, i32 7, <16 x i8> %2, i32 7, i8 7) ; <i32> [#uses=1] 32*9880d681SAndroid Build Coastguard Worker ret i32 %res 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestria128(<16 x i8> %a0, <16 x i8> %a2) nounwind { 37*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpestria128: 38*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 39*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pushl %ebx 40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %eax 41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %edx 42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xorl %ebx, %ebx 43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpestri $7, %xmm1, %xmm0 44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: seta %bl 45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl %ebx, %eax 46*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: popl %ebx 47*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 48*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpestria128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1] 49*9880d681SAndroid Build Coastguard Worker ret i32 %res 50*9880d681SAndroid Build Coastguard Worker} 51*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestria128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestric128(<16 x i8> %a0, <16 x i8> %a2) { 55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpestric128: 56*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %eax 58*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %edx 59*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpestri $7, %xmm1, %xmm0 60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sbbl %eax, %eax 61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %eax 62*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 63*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpestric128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1] 64*9880d681SAndroid Build Coastguard Worker ret i32 %res 65*9880d681SAndroid Build Coastguard Worker} 66*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestric128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestrio128(<16 x i8> %a0, <16 x i8> %a2) nounwind { 70*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpestrio128: 71*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 72*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pushl %ebx 73*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %eax 74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %edx 75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xorl %ebx, %ebx 76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpestri $7, %xmm1, %xmm0 77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: seto %bl 78*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl %ebx, %eax 79*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: popl %ebx 80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 81*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpestrio128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1] 82*9880d681SAndroid Build Coastguard Worker ret i32 %res 83*9880d681SAndroid Build Coastguard Worker} 84*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestrio128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestris128(<16 x i8> %a0, <16 x i8> %a2) nounwind { 88*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpestris128: 89*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 90*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pushl %ebx 91*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %eax 92*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %edx 93*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xorl %ebx, %ebx 94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpestri $7, %xmm1, %xmm0 95*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sets %bl 96*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl %ebx, %eax 97*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: popl %ebx 98*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 99*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpestris128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1] 100*9880d681SAndroid Build Coastguard Worker ret i32 %res 101*9880d681SAndroid Build Coastguard Worker} 102*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestris128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestriz128(<16 x i8> %a0, <16 x i8> %a2) nounwind { 106*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpestriz128: 107*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pushl %ebx 109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %eax 110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %edx 111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xorl %ebx, %ebx 112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpestri $7, %xmm1, %xmm0 113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sete %bl 114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl %ebx, %eax 115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: popl %ebx 116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 117*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpestriz128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1] 118*9880d681SAndroid Build Coastguard Worker ret i32 %res 119*9880d681SAndroid Build Coastguard Worker} 120*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestriz128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse42_pcmpestrm128(<16 x i8> %a0, <16 x i8> %a2) { 124*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpestrm128: 125*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %eax 127*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %edx 128*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpestrm $7, %xmm1, %xmm0 129*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 130*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <<16 x i8>> [#uses=1] 131*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 132*9880d681SAndroid Build Coastguard Worker} 133*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Worker 136*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse42_pcmpestrm128_load(<16 x i8> %a0, <16 x i8>* %a2) { 137*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpestrm128_load: 138*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx 140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %eax 141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $7, %edx 142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpestrm $7, (%ecx), %xmm0 143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 144*9880d681SAndroid Build Coastguard Worker %1 = load <16 x i8>, <16 x i8>* %a2 145*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8> %a0, i32 7, <16 x i8> %1, i32 7, i8 7) ; <<16 x i8>> [#uses=1] 146*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 147*9880d681SAndroid Build Coastguard Worker} 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Worker 150*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistri128(<16 x i8> %a0, <16 x i8> %a1) { 151*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpistri128: 152*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpistri $7, %xmm1, %xmm0 154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl %ecx, %eax 155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 156*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpistri128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1] 157*9880d681SAndroid Build Coastguard Worker ret i32 %res 158*9880d681SAndroid Build Coastguard Worker} 159*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistri128(<16 x i8>, <16 x i8>, i8) nounwind readnone 160*9880d681SAndroid Build Coastguard Worker 161*9880d681SAndroid Build Coastguard Worker 162*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistri128_load(<16 x i8>* %a0, <16 x i8>* %a1) { 163*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpistri128_load: 164*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax 166*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx 167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movdqa (%ecx), %xmm0 168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpistri $7, (%eax), %xmm0 169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl %ecx, %eax 170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 171*9880d681SAndroid Build Coastguard Worker %1 = load <16 x i8>, <16 x i8>* %a0 172*9880d681SAndroid Build Coastguard Worker %2 = load <16 x i8>, <16 x i8>* %a1 173*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpistri128(<16 x i8> %1, <16 x i8> %2, i8 7) ; <i32> [#uses=1] 174*9880d681SAndroid Build Coastguard Worker ret i32 %res 175*9880d681SAndroid Build Coastguard Worker} 176*9880d681SAndroid Build Coastguard Worker 177*9880d681SAndroid Build Coastguard Worker 178*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistria128(<16 x i8> %a0, <16 x i8> %a1) { 179*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpistria128: 180*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xorl %eax, %eax 182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpistri $7, %xmm1, %xmm0 183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: seta %al 184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 185*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpistria128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1] 186*9880d681SAndroid Build Coastguard Worker ret i32 %res 187*9880d681SAndroid Build Coastguard Worker} 188*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistria128(<16 x i8>, <16 x i8>, i8) nounwind readnone 189*9880d681SAndroid Build Coastguard Worker 190*9880d681SAndroid Build Coastguard Worker 191*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistric128(<16 x i8> %a0, <16 x i8> %a1) { 192*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpistric128: 193*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpistri $7, %xmm1, %xmm0 195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sbbl %eax, %eax 196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %eax 197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 198*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpistric128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1] 199*9880d681SAndroid Build Coastguard Worker ret i32 %res 200*9880d681SAndroid Build Coastguard Worker} 201*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistric128(<16 x i8>, <16 x i8>, i8) nounwind readnone 202*9880d681SAndroid Build Coastguard Worker 203*9880d681SAndroid Build Coastguard Worker 204*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistrio128(<16 x i8> %a0, <16 x i8> %a1) { 205*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpistrio128: 206*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xorl %eax, %eax 208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpistri $7, %xmm1, %xmm0 209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: seto %al 210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 211*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpistrio128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1] 212*9880d681SAndroid Build Coastguard Worker ret i32 %res 213*9880d681SAndroid Build Coastguard Worker} 214*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistrio128(<16 x i8>, <16 x i8>, i8) nounwind readnone 215*9880d681SAndroid Build Coastguard Worker 216*9880d681SAndroid Build Coastguard Worker 217*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistris128(<16 x i8> %a0, <16 x i8> %a1) { 218*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpistris128: 219*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xorl %eax, %eax 221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpistri $7, %xmm1, %xmm0 222*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sets %al 223*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 224*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpistris128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1] 225*9880d681SAndroid Build Coastguard Worker ret i32 %res 226*9880d681SAndroid Build Coastguard Worker} 227*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistris128(<16 x i8>, <16 x i8>, i8) nounwind readnone 228*9880d681SAndroid Build Coastguard Worker 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistriz128(<16 x i8> %a0, <16 x i8> %a1) { 231*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpistriz128: 232*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 233*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xorl %eax, %eax 234*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpistri $7, %xmm1, %xmm0 235*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sete %al 236*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 237*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpistriz128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1] 238*9880d681SAndroid Build Coastguard Worker ret i32 %res 239*9880d681SAndroid Build Coastguard Worker} 240*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistriz128(<16 x i8>, <16 x i8>, i8) nounwind readnone 241*9880d681SAndroid Build Coastguard Worker 242*9880d681SAndroid Build Coastguard Worker 243*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse42_pcmpistrm128(<16 x i8> %a0, <16 x i8> %a1) { 244*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpistrm128: 245*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 246*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpistrm $7, %xmm1, %xmm0 247*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 248*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <<16 x i8>> [#uses=1] 249*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 250*9880d681SAndroid Build Coastguard Worker} 251*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8>, <16 x i8>, i8) nounwind readnone 252*9880d681SAndroid Build Coastguard Worker 253*9880d681SAndroid Build Coastguard Worker 254*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse42_pcmpistrm128_load(<16 x i8> %a0, <16 x i8>* %a1) { 255*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse42_pcmpistrm128_load: 256*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 257*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax 258*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pcmpistrm $7, (%eax), %xmm0 259*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retl 260*9880d681SAndroid Build Coastguard Worker %1 = load <16 x i8>, <16 x i8>* %a1 261*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8> %a0, <16 x i8> %1, i8 7) ; <<16 x i8>> [#uses=1] 262*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 263*9880d681SAndroid Build Coastguard Worker} 264