brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · 1f7507c Raw
175 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+sse4.1 -O3 | FileCheck %s --check-prefixes=SSE413; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.1 -O3 | FileCheck %s --check-prefixes=SSE414; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx -O3 | FileCheck %s --check-prefixes=AVX5; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx -O3 | FileCheck %s --check-prefixes=AVX6; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f -O3 | FileCheck %s --check-prefixes=AVX7; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -O3 | FileCheck %s --check-prefixes=AVX8 9declare <4 x float> @llvm.experimental.constrained.ceil.v4f32(<4 x float>, metadata)10declare <2 x double>  @llvm.experimental.constrained.ceil.v2f64(<2 x double>, metadata)11declare <4 x float> @llvm.experimental.constrained.floor.v4f32(<4 x float>, metadata)12declare <2 x double> @llvm.experimental.constrained.floor.v2f64(<2 x double>, metadata)13declare <4 x float> @llvm.experimental.constrained.trunc.v4f32(<4 x float>, metadata)14declare <2 x double> @llvm.experimental.constrained.trunc.v2f64(<2 x double>, metadata)15declare <4 x float> @llvm.experimental.constrained.rint.v4f32(<4 x float>, metadata, metadata)16declare <2 x double> @llvm.experimental.constrained.rint.v2f64(<2 x double>, metadata, metadata)17declare <4 x float> @llvm.experimental.constrained.nearbyint.v4f32(<4 x float>, metadata, metadata)18declare <2 x double> @llvm.experimental.constrained.nearbyint.v2f64(<2 x double>, metadata, metadata)19 20define <4 x float> @fceilv4f32(<4 x float> %f) #0 {21; SSE41-LABEL: fceilv4f32:22; SSE41:       # %bb.0:23; SSE41-NEXT:    roundps $10, %xmm0, %xmm024; SSE41-NEXT:    ret{{[l|q]}}25;26; AVX-LABEL: fceilv4f32:27; AVX:       # %bb.0:28; AVX-NEXT:    vroundps $10, %xmm0, %xmm029; AVX-NEXT:    ret{{[l|q]}}30  %res = call <4 x float> @llvm.experimental.constrained.ceil.v4f32(31                          <4 x float> %f, metadata !"fpexcept.strict") #032  ret <4 x float> %res33}34 35define <2 x double> @fceilv2f64(<2 x double> %f) #0 {36; SSE41-LABEL: fceilv2f64:37; SSE41:       # %bb.0:38; SSE41-NEXT:    roundpd $10, %xmm0, %xmm039; SSE41-NEXT:    ret{{[l|q]}}40;41; AVX-LABEL: fceilv2f64:42; AVX:       # %bb.0:43; AVX-NEXT:    vroundpd $10, %xmm0, %xmm044; AVX-NEXT:    ret{{[l|q]}}45  %res = call <2 x double> @llvm.experimental.constrained.ceil.v2f64(46                        <2 x double> %f, metadata !"fpexcept.strict") #047  ret <2 x double> %res48}49 50define <4 x float> @ffloorv4f32(<4 x float> %f) #0 {51; SSE41-LABEL: ffloorv4f32:52; SSE41:       # %bb.0:53; SSE41-NEXT:    roundps $9, %xmm0, %xmm054; SSE41-NEXT:    ret{{[l|q]}}55;56; AVX-LABEL: ffloorv4f32:57; AVX:       # %bb.0:58; AVX-NEXT:    vroundps $9, %xmm0, %xmm059; AVX-NEXT:    ret{{[l|q]}}60  %res = call <4 x float> @llvm.experimental.constrained.floor.v4f32(61                          <4 x float> %f, metadata !"fpexcept.strict") #062  ret <4 x float> %res63}64 65define <2 x double> @ffloorv2f64(<2 x double> %f) #0 {66; SSE41-LABEL: ffloorv2f64:67; SSE41:       # %bb.0:68; SSE41-NEXT:    roundpd $9, %xmm0, %xmm069; SSE41-NEXT:    ret{{[l|q]}}70;71; AVX-LABEL: ffloorv2f64:72; AVX:       # %bb.0:73; AVX-NEXT:    vroundpd $9, %xmm0, %xmm074; AVX-NEXT:    ret{{[l|q]}}75  %res = call <2 x double> @llvm.experimental.constrained.floor.v2f64(76                        <2 x double> %f, metadata !"fpexcept.strict") #077  ret <2 x double> %res78}79 80define <4 x float> @ftruncv4f32(<4 x float> %f) #0 {81; SSE41-LABEL: ftruncv4f32:82; SSE41:       # %bb.0:83; SSE41-NEXT:    roundps $11, %xmm0, %xmm084; SSE41-NEXT:    ret{{[l|q]}}85;86; AVX-LABEL: ftruncv4f32:87; AVX:       # %bb.0:88; AVX-NEXT:    vroundps $11, %xmm0, %xmm089; AVX-NEXT:    ret{{[l|q]}}90  %res = call <4 x float> @llvm.experimental.constrained.trunc.v4f32(91                          <4 x float> %f, metadata !"fpexcept.strict") #092  ret <4 x float> %res93}94 95define <2 x double> @ftruncv2f64(<2 x double> %f) #0 {96; SSE41-LABEL: ftruncv2f64:97; SSE41:       # %bb.0:98; SSE41-NEXT:    roundpd $11, %xmm0, %xmm099; SSE41-NEXT:    ret{{[l|q]}}100;101; AVX-LABEL: ftruncv2f64:102; AVX:       # %bb.0:103; AVX-NEXT:    vroundpd $11, %xmm0, %xmm0104; AVX-NEXT:    ret{{[l|q]}}105  %res = call <2 x double> @llvm.experimental.constrained.trunc.v2f64(106                        <2 x double> %f, metadata !"fpexcept.strict") #0107  ret <2 x double> %res108}109 110define <4 x float> @frintv4f32(<4 x float> %f) #0 {111; SSE41-LABEL: frintv4f32:112; SSE41:       # %bb.0:113; SSE41-NEXT:    roundps $4, %xmm0, %xmm0114; SSE41-NEXT:    ret{{[l|q]}}115;116; AVX-LABEL: frintv4f32:117; AVX:       # %bb.0:118; AVX-NEXT:    vroundps $4, %xmm0, %xmm0119; AVX-NEXT:    ret{{[l|q]}}120  %res = call <4 x float> @llvm.experimental.constrained.rint.v4f32(121                          <4 x float> %f,122                          metadata !"round.dynamic", metadata !"fpexcept.strict") #0123  ret <4 x float> %res124}125 126define <2 x double> @frintv2f64(<2 x double> %f) #0 {127; SSE41-LABEL: frintv2f64:128; SSE41:       # %bb.0:129; SSE41-NEXT:    roundpd $4, %xmm0, %xmm0130; SSE41-NEXT:    ret{{[l|q]}}131;132; AVX-LABEL: frintv2f64:133; AVX:       # %bb.0:134; AVX-NEXT:    vroundpd $4, %xmm0, %xmm0135; AVX-NEXT:    ret{{[l|q]}}136  %res = call <2 x double> @llvm.experimental.constrained.rint.v2f64(137                        <2 x double> %f,138                        metadata !"round.dynamic", metadata !"fpexcept.strict") #0139  ret <2 x double> %res140}141 142define <4 x float> @fnearbyintv4f32(<4 x float> %f) #0 {143; SSE41-LABEL: fnearbyintv4f32:144; SSE41:       # %bb.0:145; SSE41-NEXT:    roundps $12, %xmm0, %xmm0146; SSE41-NEXT:    ret{{[l|q]}}147;148; AVX-LABEL: fnearbyintv4f32:149; AVX:       # %bb.0:150; AVX-NEXT:    vroundps $12, %xmm0, %xmm0151; AVX-NEXT:    ret{{[l|q]}}152  %res = call <4 x float> @llvm.experimental.constrained.nearbyint.v4f32(153                          <4 x float> %f,154                          metadata !"round.dynamic", metadata !"fpexcept.strict") #0155  ret <4 x float> %res156}157 158define <2 x double> @fnearbyintv2f64(<2 x double> %f) #0 {159; SSE41-LABEL: fnearbyintv2f64:160; SSE41:       # %bb.0:161; SSE41-NEXT:    roundpd $12, %xmm0, %xmm0162; SSE41-NEXT:    ret{{[l|q]}}163;164; AVX-LABEL: fnearbyintv2f64:165; AVX:       # %bb.0:166; AVX-NEXT:    vroundpd $12, %xmm0, %xmm0167; AVX-NEXT:    ret{{[l|q]}}168  %res = call <2 x double> @llvm.experimental.constrained.nearbyint.v2f64(169                        <2 x double> %f,170                        metadata !"round.dynamic", metadata !"fpexcept.strict") #0171  ret <2 x double> %res172}173 174attributes #0 = { strictfp }175