1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2 ; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+sse4.1 | FileCheck %s --check-prefix=CHECK --check-prefix=SSE41 3 ; RUN: llc < %s -mtriple=i386-apple-darwin -mcpu=knl | FileCheck %s --check-prefix=CHECK --check-prefix=KNL 4 5 define <2 x double> @test_x86_sse41_blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) { 6 ; SSE41-LABEL: test_x86_sse41_blendvpd: 7 ; SSE41: ## BB#0: 8 ; SSE41-NEXT: movapd %xmm0, %xmm3 9 ; SSE41-NEXT: movaps %xmm2, %xmm0 10 ; SSE41-NEXT: blendvpd %xmm1, %xmm3 11 ; SSE41-NEXT: movapd %xmm3, %xmm0 12 ; SSE41-NEXT: retl 13 ; 14 ; KNL-LABEL: test_x86_sse41_blendvpd: 15 ; KNL: ## BB#0: 16 ; KNL-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0 17 ; KNL-NEXT: retl 18 %res = call <2 x double> @llvm.x86.sse41.blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) ; <<2 x double>> [#uses=1] 19 ret <2 x double> %res 20 } 21 declare <2 x double> @llvm.x86.sse41.blendvpd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone 22 23 24 define <4 x float> @test_x86_sse41_blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) { 25 ; SSE41-LABEL: test_x86_sse41_blendvps: 26 ; SSE41: ## BB#0: 27 ; SSE41-NEXT: movaps %xmm0, %xmm3 28 ; SSE41-NEXT: movaps %xmm2, %xmm0 29 ; SSE41-NEXT: blendvps %xmm1, %xmm3 30 ; SSE41-NEXT: movaps %xmm3, %xmm0 31 ; SSE41-NEXT: retl 32 ; 33 ; KNL-LABEL: test_x86_sse41_blendvps: 34 ; KNL: ## BB#0: 35 ; KNL-NEXT: vblendvps %xmm2, %xmm1, %xmm0, %xmm0 36 ; KNL-NEXT: retl 37 %res = call <4 x float> @llvm.x86.sse41.blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) ; <<4 x float>> [#uses=1] 38 ret <4 x float> %res 39 } 40 declare <4 x float> @llvm.x86.sse41.blendvps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone 41 42 43 define <2 x double> @test_x86_sse41_dppd(<2 x double> %a0, <2 x double> %a1) { 44 ; SSE41-LABEL: test_x86_sse41_dppd: 45 ; SSE41: ## BB#0: 46 ; SSE41-NEXT: dppd $7, %xmm1, %xmm0 47 ; SSE41-NEXT: retl 48 ; 49 ; KNL-LABEL: test_x86_sse41_dppd: 50 ; KNL: ## BB#0: 51 ; KNL-NEXT: vdppd $7, %xmm1, %xmm0, %xmm0 52 ; KNL-NEXT: retl 53 %res = call <2 x double> @llvm.x86.sse41.dppd(<2 x double> %a0, <2 x double> %a1, i8 7) ; <<2 x double>> [#uses=1] 54 ret <2 x double> %res 55 } 56 declare <2 x double> @llvm.x86.sse41.dppd(<2 x double>, <2 x double>, i8) nounwind readnone 57 58 59 define <4 x float> @test_x86_sse41_dpps(<4 x float> %a0, <4 x float> %a1) { 60 ; SSE41-LABEL: test_x86_sse41_dpps: 61 ; SSE41: ## BB#0: 62 ; SSE41-NEXT: dpps $7, %xmm1, %xmm0 63 ; SSE41-NEXT: retl 64 ; 65 ; KNL-LABEL: test_x86_sse41_dpps: 66 ; KNL: ## BB#0: 67 ; KNL-NEXT: vdpps $7, %xmm1, %xmm0, %xmm0 68 ; KNL-NEXT: retl 69 %res = call <4 x float> @llvm.x86.sse41.dpps(<4 x float> %a0, <4 x float> %a1, i8 7) ; <<4 x float>> [#uses=1] 70 ret <4 x float> %res 71 } 72 declare <4 x float> @llvm.x86.sse41.dpps(<4 x float>, <4 x float>, i8) nounwind readnone 73 74 75 define <4 x float> @test_x86_sse41_insertps(<4 x float> %a0, <4 x float> %a1) { 76 ; SSE41-LABEL: test_x86_sse41_insertps: 77 ; SSE41: ## BB#0: 78 ; SSE41-NEXT: insertps {{.*#+}} xmm0 = zero,xmm1[0],xmm0[2,3] 79 ; SSE41-NEXT: retl 80 ; 81 ; KNL-LABEL: test_x86_sse41_insertps: 82 ; KNL: ## BB#0: 83 ; KNL-NEXT: vinsertps {{.*#+}} xmm0 = zero,xmm1[0],xmm0[2,3] 84 ; KNL-NEXT: retl 85 %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %a0, <4 x float> %a1, i8 17) ; <<4 x float>> [#uses=1] 86 ret <4 x float> %res 87 } 88 declare <4 x float> @llvm.x86.sse41.insertps(<4 x float>, <4 x float>, i8) nounwind readnone 89 90 91 92 define <8 x i16> @test_x86_sse41_mpsadbw(<16 x i8> %a0, <16 x i8> %a1) { 93 ; SSE41-LABEL: test_x86_sse41_mpsadbw: 94 ; SSE41: ## BB#0: 95 ; SSE41-NEXT: mpsadbw $7, %xmm1, %xmm0 96 ; SSE41-NEXT: retl 97 ; 98 ; KNL-LABEL: test_x86_sse41_mpsadbw: 99 ; KNL: ## BB#0: 100 ; KNL-NEXT: vmpsadbw $7, %xmm1, %xmm0, %xmm0 101 ; KNL-NEXT: retl 102 %res = call <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <<8 x i16>> [#uses=1] 103 ret <8 x i16> %res 104 } 105 declare <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8>, <16 x i8>, i8) nounwind readnone 106 107 108 define <8 x i16> @test_x86_sse41_packusdw(<4 x i32> %a0, <4 x i32> %a1) { 109 ; SSE41-LABEL: test_x86_sse41_packusdw: 110 ; SSE41: ## BB#0: 111 ; SSE41-NEXT: packusdw %xmm1, %xmm0 112 ; SSE41-NEXT: retl 113 ; 114 ; KNL-LABEL: test_x86_sse41_packusdw: 115 ; KNL: ## BB#0: 116 ; KNL-NEXT: vpackusdw %xmm1, %xmm0, %xmm0 117 ; KNL-NEXT: retl 118 %res = call <8 x i16> @llvm.x86.sse41.packusdw(<4 x i32> %a0, <4 x i32> %a1) ; <<8 x i16>> [#uses=1] 119 ret <8 x i16> %res 120 } 121 declare <8 x i16> @llvm.x86.sse41.packusdw(<4 x i32>, <4 x i32>) nounwind readnone 122 123 124 define <16 x i8> @test_x86_sse41_pblendvb(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) { 125 ; SSE41-LABEL: test_x86_sse41_pblendvb: 126 ; SSE41: ## BB#0: 127 ; SSE41-NEXT: movdqa %xmm0, %xmm3 128 ; SSE41-NEXT: movaps %xmm2, %xmm0 129 ; SSE41-NEXT: pblendvb %xmm1, %xmm3 130 ; SSE41-NEXT: movdqa %xmm3, %xmm0 131 ; SSE41-NEXT: retl 132 ; 133 ; KNL-LABEL: test_x86_sse41_pblendvb: 134 ; KNL: ## BB#0: 135 ; KNL-NEXT: vpblendvb %xmm2, %xmm1, %xmm0, %xmm0 136 ; KNL-NEXT: retl 137 %res = call <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) ; <<16 x i8>> [#uses=1] 138 ret <16 x i8> %res 139 } 140 declare <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8>, <16 x i8>, <16 x i8>) nounwind readnone 141 142 143 define <8 x i16> @test_x86_sse41_phminposuw(<8 x i16> %a0) { 144 ; SSE41-LABEL: test_x86_sse41_phminposuw: 145 ; SSE41: ## BB#0: 146 ; SSE41-NEXT: phminposuw %xmm0, %xmm0 147 ; SSE41-NEXT: retl 148 ; 149 ; KNL-LABEL: test_x86_sse41_phminposuw: 150 ; KNL: ## BB#0: 151 ; KNL-NEXT: vphminposuw %xmm0, %xmm0 152 ; KNL-NEXT: retl 153 %res = call <8 x i16> @llvm.x86.sse41.phminposuw(<8 x i16> %a0) ; <<8 x i16>> [#uses=1] 154 ret <8 x i16> %res 155 } 156 declare <8 x i16> @llvm.x86.sse41.phminposuw(<8 x i16>) nounwind readnone 157 158 159 define <16 x i8> @test_x86_sse41_pmaxsb(<16 x i8> %a0, <16 x i8> %a1) { 160 ; SSE41-LABEL: test_x86_sse41_pmaxsb: 161 ; SSE41: ## BB#0: 162 ; SSE41-NEXT: pmaxsb %xmm1, %xmm0 163 ; SSE41-NEXT: retl 164 ; 165 ; KNL-LABEL: test_x86_sse41_pmaxsb: 166 ; KNL: ## BB#0: 167 ; KNL-NEXT: vpmaxsb %xmm1, %xmm0, %xmm0 168 ; KNL-NEXT: retl 169 %res = call <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] 170 ret <16 x i8> %res 171 } 172 declare <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8>, <16 x i8>) nounwind readnone 173 174 175 define <4 x i32> @test_x86_sse41_pmaxsd(<4 x i32> %a0, <4 x i32> %a1) { 176 ; SSE41-LABEL: test_x86_sse41_pmaxsd: 177 ; SSE41: ## BB#0: 178 ; SSE41-NEXT: pmaxsd %xmm1, %xmm0 179 ; SSE41-NEXT: retl 180 ; 181 ; KNL-LABEL: test_x86_sse41_pmaxsd: 182 ; KNL: ## BB#0: 183 ; KNL-NEXT: vpmaxsd %xmm1, %xmm0, %xmm0 184 ; KNL-NEXT: retl 185 %res = call <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 186 ret <4 x i32> %res 187 } 188 declare <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32>, <4 x i32>) nounwind readnone 189 190 191 define <4 x i32> @test_x86_sse41_pmaxud(<4 x i32> %a0, <4 x i32> %a1) { 192 ; SSE41-LABEL: test_x86_sse41_pmaxud: 193 ; SSE41: ## BB#0: 194 ; SSE41-NEXT: pmaxud %xmm1, %xmm0 195 ; SSE41-NEXT: retl 196 ; 197 ; KNL-LABEL: test_x86_sse41_pmaxud: 198 ; KNL: ## BB#0: 199 ; KNL-NEXT: vpmaxud %xmm1, %xmm0, %xmm0 200 ; KNL-NEXT: retl 201 %res = call <4 x i32> @llvm.x86.sse41.pmaxud(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 202 ret <4 x i32> %res 203 } 204 declare <4 x i32> @llvm.x86.sse41.pmaxud(<4 x i32>, <4 x i32>) nounwind readnone 205 206 207 define <8 x i16> @test_x86_sse41_pmaxuw(<8 x i16> %a0, <8 x i16> %a1) { 208 ; SSE41-LABEL: test_x86_sse41_pmaxuw: 209 ; SSE41: ## BB#0: 210 ; SSE41-NEXT: pmaxuw %xmm1, %xmm0 211 ; SSE41-NEXT: retl 212 ; 213 ; KNL-LABEL: test_x86_sse41_pmaxuw: 214 ; KNL: ## BB#0: 215 ; KNL-NEXT: vpmaxuw %xmm1, %xmm0, %xmm0 216 ; KNL-NEXT: retl 217 %res = call <8 x i16> @llvm.x86.sse41.pmaxuw(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 218 ret <8 x i16> %res 219 } 220 declare <8 x i16> @llvm.x86.sse41.pmaxuw(<8 x i16>, <8 x i16>) nounwind readnone 221 222 223 define <16 x i8> @test_x86_sse41_pminsb(<16 x i8> %a0, <16 x i8> %a1) { 224 ; SSE41-LABEL: test_x86_sse41_pminsb: 225 ; SSE41: ## BB#0: 226 ; SSE41-NEXT: pminsb %xmm1, %xmm0 227 ; SSE41-NEXT: retl 228 ; 229 ; KNL-LABEL: test_x86_sse41_pminsb: 230 ; KNL: ## BB#0: 231 ; KNL-NEXT: vpminsb %xmm1, %xmm0, %xmm0 232 ; KNL-NEXT: retl 233 %res = call <16 x i8> @llvm.x86.sse41.pminsb(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] 234 ret <16 x i8> %res 235 } 236 declare <16 x i8> @llvm.x86.sse41.pminsb(<16 x i8>, <16 x i8>) nounwind readnone 237 238 239 define <4 x i32> @test_x86_sse41_pminsd(<4 x i32> %a0, <4 x i32> %a1) { 240 ; SSE41-LABEL: test_x86_sse41_pminsd: 241 ; SSE41: ## BB#0: 242 ; SSE41-NEXT: pminsd %xmm1, %xmm0 243 ; SSE41-NEXT: retl 244 ; 245 ; KNL-LABEL: test_x86_sse41_pminsd: 246 ; KNL: ## BB#0: 247 ; KNL-NEXT: vpminsd %xmm1, %xmm0, %xmm0 248 ; KNL-NEXT: retl 249 %res = call <4 x i32> @llvm.x86.sse41.pminsd(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 250 ret <4 x i32> %res 251 } 252 declare <4 x i32> @llvm.x86.sse41.pminsd(<4 x i32>, <4 x i32>) nounwind readnone 253 254 255 define <4 x i32> @test_x86_sse41_pminud(<4 x i32> %a0, <4 x i32> %a1) { 256 ; SSE41-LABEL: test_x86_sse41_pminud: 257 ; SSE41: ## BB#0: 258 ; SSE41-NEXT: pminud %xmm1, %xmm0 259 ; SSE41-NEXT: retl 260 ; 261 ; KNL-LABEL: test_x86_sse41_pminud: 262 ; KNL: ## BB#0: 263 ; KNL-NEXT: vpminud %xmm1, %xmm0, %xmm0 264 ; KNL-NEXT: retl 265 %res = call <4 x i32> @llvm.x86.sse41.pminud(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 266 ret <4 x i32> %res 267 } 268 declare <4 x i32> @llvm.x86.sse41.pminud(<4 x i32>, <4 x i32>) nounwind readnone 269 270 271 define <8 x i16> @test_x86_sse41_pminuw(<8 x i16> %a0, <8 x i16> %a1) { 272 ; SSE41-LABEL: test_x86_sse41_pminuw: 273 ; SSE41: ## BB#0: 274 ; SSE41-NEXT: pminuw %xmm1, %xmm0 275 ; SSE41-NEXT: retl 276 ; 277 ; KNL-LABEL: test_x86_sse41_pminuw: 278 ; KNL: ## BB#0: 279 ; KNL-NEXT: vpminuw %xmm1, %xmm0, %xmm0 280 ; KNL-NEXT: retl 281 %res = call <8 x i16> @llvm.x86.sse41.pminuw(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 282 ret <8 x i16> %res 283 } 284 declare <8 x i16> @llvm.x86.sse41.pminuw(<8 x i16>, <8 x i16>) nounwind readnone 285 286 287 define <2 x i64> @test_x86_sse41_pmuldq(<4 x i32> %a0, <4 x i32> %a1) { 288 ; SSE41-LABEL: test_x86_sse41_pmuldq: 289 ; SSE41: ## BB#0: 290 ; SSE41-NEXT: pmuldq %xmm1, %xmm0 291 ; SSE41-NEXT: retl 292 ; 293 ; KNL-LABEL: test_x86_sse41_pmuldq: 294 ; KNL: ## BB#0: 295 ; KNL-NEXT: vpmuldq %xmm1, %xmm0, %xmm0 296 ; KNL-NEXT: retl 297 %res = call <2 x i64> @llvm.x86.sse41.pmuldq(<4 x i32> %a0, <4 x i32> %a1) ; <<2 x i64>> [#uses=1] 298 ret <2 x i64> %res 299 } 300 declare <2 x i64> @llvm.x86.sse41.pmuldq(<4 x i32>, <4 x i32>) nounwind readnone 301 302 303 define i32 @test_x86_sse41_ptestc(<2 x i64> %a0, <2 x i64> %a1) { 304 ; SSE41-LABEL: test_x86_sse41_ptestc: 305 ; SSE41: ## BB#0: 306 ; SSE41-NEXT: ptest %xmm1, %xmm0 307 ; SSE41-NEXT: sbbl %eax, %eax 308 ; SSE41-NEXT: andl $1, %eax 309 ; SSE41-NEXT: retl 310 ; 311 ; KNL-LABEL: test_x86_sse41_ptestc: 312 ; KNL: ## BB#0: 313 ; KNL-NEXT: vptest %xmm1, %xmm0 314 ; KNL-NEXT: sbbl %eax, %eax 315 ; KNL-NEXT: andl $1, %eax 316 ; KNL-NEXT: retl 317 %res = call i32 @llvm.x86.sse41.ptestc(<2 x i64> %a0, <2 x i64> %a1) ; <i32> [#uses=1] 318 ret i32 %res 319 } 320 declare i32 @llvm.x86.sse41.ptestc(<2 x i64>, <2 x i64>) nounwind readnone 321 322 323 define i32 @test_x86_sse41_ptestnzc(<2 x i64> %a0, <2 x i64> %a1) { 324 ; SSE41-LABEL: test_x86_sse41_ptestnzc: 325 ; SSE41: ## BB#0: 326 ; SSE41-NEXT: xorl %eax, %eax 327 ; SSE41-NEXT: ptest %xmm1, %xmm0 328 ; SSE41-NEXT: seta %al 329 ; SSE41-NEXT: retl 330 ; 331 ; KNL-LABEL: test_x86_sse41_ptestnzc: 332 ; KNL: ## BB#0: 333 ; KNL-NEXT: xorl %eax, %eax 334 ; KNL-NEXT: vptest %xmm1, %xmm0 335 ; KNL-NEXT: seta %al 336 ; KNL-NEXT: retl 337 %res = call i32 @llvm.x86.sse41.ptestnzc(<2 x i64> %a0, <2 x i64> %a1) ; <i32> [#uses=1] 338 ret i32 %res 339 } 340 declare i32 @llvm.x86.sse41.ptestnzc(<2 x i64>, <2 x i64>) nounwind readnone 341 342 343 define i32 @test_x86_sse41_ptestz(<2 x i64> %a0, <2 x i64> %a1) { 344 ; SSE41-LABEL: test_x86_sse41_ptestz: 345 ; SSE41: ## BB#0: 346 ; SSE41-NEXT: xorl %eax, %eax 347 ; SSE41-NEXT: ptest %xmm1, %xmm0 348 ; SSE41-NEXT: sete %al 349 ; SSE41-NEXT: retl 350 ; 351 ; KNL-LABEL: test_x86_sse41_ptestz: 352 ; KNL: ## BB#0: 353 ; KNL-NEXT: xorl %eax, %eax 354 ; KNL-NEXT: vptest %xmm1, %xmm0 355 ; KNL-NEXT: sete %al 356 ; KNL-NEXT: retl 357 %res = call i32 @llvm.x86.sse41.ptestz(<2 x i64> %a0, <2 x i64> %a1) ; <i32> [#uses=1] 358 ret i32 %res 359 } 360 declare i32 @llvm.x86.sse41.ptestz(<2 x i64>, <2 x i64>) nounwind readnone 361 362 363 define <2 x double> @test_x86_sse41_round_pd(<2 x double> %a0) { 364 ; SSE41-LABEL: test_x86_sse41_round_pd: 365 ; SSE41: ## BB#0: 366 ; SSE41-NEXT: roundpd $7, %xmm0, %xmm0 367 ; SSE41-NEXT: retl 368 ; 369 ; KNL-LABEL: test_x86_sse41_round_pd: 370 ; KNL: ## BB#0: 371 ; KNL-NEXT: vroundpd $7, %xmm0, %xmm0 372 ; KNL-NEXT: retl 373 %res = call <2 x double> @llvm.x86.sse41.round.pd(<2 x double> %a0, i32 7) ; <<2 x double>> [#uses=1] 374 ret <2 x double> %res 375 } 376 declare <2 x double> @llvm.x86.sse41.round.pd(<2 x double>, i32) nounwind readnone 377 378 379 define <4 x float> @test_x86_sse41_round_ps(<4 x float> %a0) { 380 ; SSE41-LABEL: test_x86_sse41_round_ps: 381 ; SSE41: ## BB#0: 382 ; SSE41-NEXT: roundps $7, %xmm0, %xmm0 383 ; SSE41-NEXT: retl 384 ; 385 ; KNL-LABEL: test_x86_sse41_round_ps: 386 ; KNL: ## BB#0: 387 ; KNL-NEXT: vroundps $7, %xmm0, %xmm0 388 ; KNL-NEXT: retl 389 %res = call <4 x float> @llvm.x86.sse41.round.ps(<4 x float> %a0, i32 7) ; <<4 x float>> [#uses=1] 390 ret <4 x float> %res 391 } 392 declare <4 x float> @llvm.x86.sse41.round.ps(<4 x float>, i32) nounwind readnone 393 394 395 define <2 x double> @test_x86_sse41_round_sd(<2 x double> %a0, <2 x double> %a1) { 396 ; SSE41-LABEL: test_x86_sse41_round_sd: 397 ; SSE41: ## BB#0: 398 ; SSE41-NEXT: roundsd $7, %xmm1, %xmm0 399 ; SSE41-NEXT: retl 400 ; 401 ; KNL-LABEL: test_x86_sse41_round_sd: 402 ; KNL: ## BB#0: 403 ; KNL-NEXT: vroundsd $7, %xmm1, %xmm0, %xmm0 404 ; KNL-NEXT: retl 405 %res = call <2 x double> @llvm.x86.sse41.round.sd(<2 x double> %a0, <2 x double> %a1, i32 7) ; <<2 x double>> [#uses=1] 406 ret <2 x double> %res 407 } 408 declare <2 x double> @llvm.x86.sse41.round.sd(<2 x double>, <2 x double>, i32) nounwind readnone 409 410 411 define <4 x float> @test_x86_sse41_round_ss(<4 x float> %a0, <4 x float> %a1) { 412 ; SSE41-LABEL: test_x86_sse41_round_ss: 413 ; SSE41: ## BB#0: 414 ; SSE41-NEXT: roundss $7, %xmm1, %xmm0 415 ; SSE41-NEXT: retl 416 ; 417 ; KNL-LABEL: test_x86_sse41_round_ss: 418 ; KNL: ## BB#0: 419 ; KNL-NEXT: vroundss $7, %xmm1, %xmm0, %xmm0 420 ; KNL-NEXT: retl 421 %res = call <4 x float> @llvm.x86.sse41.round.ss(<4 x float> %a0, <4 x float> %a1, i32 7) ; <<4 x float>> [#uses=1] 422 ret <4 x float> %res 423 } 424 declare <4 x float> @llvm.x86.sse41.round.ss(<4 x float>, <4 x float>, i32) nounwind readnone 425