brintos

brintos / llvm-project-archived public Read only

0
0
Text · 156.7 KiB · 3da6410 Raw
2160 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -mtriple=x86_64-unknown -passes=slp-vectorizer -S | FileCheck %s --check-prefix=SSE23; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=corei7 -passes=slp-vectorizer -S | FileCheck %s --check-prefix=SSE414; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=corei7-avx -passes=slp-vectorizer -S | FileCheck %s --check-prefix=AVX --check-prefix=AVX15; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=core-avx2 -passes=slp-vectorizer -S | FileCheck %s --check-prefix=AVX --check-prefix=AVX26; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=skylake-avx512 -mattr=-prefer-256-bit -passes=slp-vectorizer -S | FileCheck %s --check-prefix=AVX --check-prefix=AVX5127; RUN: opt < %s -mtriple=x86_64-unknown -mcpu=skylake-avx512 -mattr=+prefer-256-bit -passes=slp-vectorizer -S | FileCheck %s --check-prefix=AVX --check-prefix=AVX28 9target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"10 11@src64 = common global [8 x double] zeroinitializer, align 6412@dst64 = common global [8 x double] zeroinitializer, align 6413@src32 = common global [16 x float] zeroinitializer, align 6414@dst32 = common global [16 x float] zeroinitializer, align 6415 16declare double @llvm.ceil.f64(double %p)17declare double @llvm.floor.f64(double %p)18declare double @llvm.nearbyint.f64(double %p)19declare double @llvm.rint.f64(double %p)20declare double @llvm.trunc.f64(double %p)21 22declare float @llvm.ceil.f32(float %p)23declare float @llvm.floor.f32(float %p)24declare float @llvm.nearbyint.f32(float %p)25declare float @llvm.rint.f32(float %p)26declare float @llvm.trunc.f32(float %p)27 28define void @ceil_2f64() #0 {29; SSE2-LABEL: @ceil_2f64(30; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 831; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 832; SSE2-NEXT:    [[CEIL0:%.*]] = call double @llvm.ceil.f64(double [[LD0]])33; SSE2-NEXT:    [[CEIL1:%.*]] = call double @llvm.ceil.f64(double [[LD1]])34; SSE2-NEXT:    store double [[CEIL0]], ptr @dst64, align 835; SSE2-NEXT:    store double [[CEIL1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 836; SSE2-NEXT:    ret void37;38; SSE41-LABEL: @ceil_2f64(39; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 840; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.ceil.v2f64(<2 x double> [[TMP1]])41; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 842; SSE41-NEXT:    ret void43;44; AVX-LABEL: @ceil_2f64(45; AVX-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 846; AVX-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.ceil.v2f64(<2 x double> [[TMP1]])47; AVX-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 848; AVX-NEXT:    ret void49;50  %ld0 = load double, ptr @src64, align 851  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 852  %ceil0 = call double @llvm.ceil.f64(double %ld0)53  %ceil1 = call double @llvm.ceil.f64(double %ld1)54  store double %ceil0, ptr @dst64, align 855  store double %ceil1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 856  ret void57}58 59define void @ceil_4f64() #0 {60; SSE2-LABEL: @ceil_4f64(61; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 862; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 863; SSE2-NEXT:    [[LD2:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 864; SSE2-NEXT:    [[LD3:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 865; SSE2-NEXT:    [[CEIL0:%.*]] = call double @llvm.ceil.f64(double [[LD0]])66; SSE2-NEXT:    [[CEIL1:%.*]] = call double @llvm.ceil.f64(double [[LD1]])67; SSE2-NEXT:    [[CEIL2:%.*]] = call double @llvm.ceil.f64(double [[LD2]])68; SSE2-NEXT:    [[CEIL3:%.*]] = call double @llvm.ceil.f64(double [[LD3]])69; SSE2-NEXT:    store double [[CEIL0]], ptr @dst64, align 870; SSE2-NEXT:    store double [[CEIL1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 871; SSE2-NEXT:    store double [[CEIL2]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 872; SSE2-NEXT:    store double [[CEIL3]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 873; SSE2-NEXT:    ret void74;75; SSE41-LABEL: @ceil_4f64(76; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 877; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.ceil.v2f64(<2 x double> [[TMP1]])78; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 879; SSE41-NEXT:    [[TMP3:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 880; SSE41-NEXT:    [[TMP4:%.*]] = call <2 x double> @llvm.ceil.v2f64(<2 x double> [[TMP3]])81; SSE41-NEXT:    store <2 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 882; SSE41-NEXT:    ret void83;84; AVX-LABEL: @ceil_4f64(85; AVX-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 886; AVX-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.ceil.v4f64(<4 x double> [[TMP1]])87; AVX-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 888; AVX-NEXT:    ret void89;90  %ld0 = load double, ptr @src64, align 891  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 892  %ld2 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 893  %ld3 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 894  %ceil0 = call double @llvm.ceil.f64(double %ld0)95  %ceil1 = call double @llvm.ceil.f64(double %ld1)96  %ceil2 = call double @llvm.ceil.f64(double %ld2)97  %ceil3 = call double @llvm.ceil.f64(double %ld3)98  store double %ceil0, ptr @dst64, align 899  store double %ceil1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8100  store double %ceil2, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8101  store double %ceil3, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8102  ret void103}104 105define void @ceil_8f64() #0 {106; SSE2-LABEL: @ceil_8f64(107; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 8108; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8109; SSE2-NEXT:    [[LD2:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8110; SSE2-NEXT:    [[LD3:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8111; SSE2-NEXT:    [[LD4:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8112; SSE2-NEXT:    [[LD5:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 5), align 8113; SSE2-NEXT:    [[LD6:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8114; SSE2-NEXT:    [[LD7:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 7), align 8115; SSE2-NEXT:    [[CEIL0:%.*]] = call double @llvm.ceil.f64(double [[LD0]])116; SSE2-NEXT:    [[CEIL1:%.*]] = call double @llvm.ceil.f64(double [[LD1]])117; SSE2-NEXT:    [[CEIL2:%.*]] = call double @llvm.ceil.f64(double [[LD2]])118; SSE2-NEXT:    [[CEIL3:%.*]] = call double @llvm.ceil.f64(double [[LD3]])119; SSE2-NEXT:    [[CEIL4:%.*]] = call double @llvm.ceil.f64(double [[LD4]])120; SSE2-NEXT:    [[CEIL5:%.*]] = call double @llvm.ceil.f64(double [[LD5]])121; SSE2-NEXT:    [[CEIL6:%.*]] = call double @llvm.ceil.f64(double [[LD6]])122; SSE2-NEXT:    [[CEIL7:%.*]] = call double @llvm.ceil.f64(double [[LD7]])123; SSE2-NEXT:    store double [[CEIL0]], ptr @dst64, align 8124; SSE2-NEXT:    store double [[CEIL1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8125; SSE2-NEXT:    store double [[CEIL2]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8126; SSE2-NEXT:    store double [[CEIL3]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8127; SSE2-NEXT:    store double [[CEIL4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8128; SSE2-NEXT:    store double [[CEIL5]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 5), align 8129; SSE2-NEXT:    store double [[CEIL6]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8130; SSE2-NEXT:    store double [[CEIL7]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 7), align 8131; SSE2-NEXT:    ret void132;133; SSE41-LABEL: @ceil_8f64(134; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8135; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.ceil.v2f64(<2 x double> [[TMP1]])136; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8137; SSE41-NEXT:    [[TMP3:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8138; SSE41-NEXT:    [[TMP4:%.*]] = call <2 x double> @llvm.ceil.v2f64(<2 x double> [[TMP3]])139; SSE41-NEXT:    store <2 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8140; SSE41-NEXT:    [[TMP5:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8141; SSE41-NEXT:    [[TMP6:%.*]] = call <2 x double> @llvm.ceil.v2f64(<2 x double> [[TMP5]])142; SSE41-NEXT:    store <2 x double> [[TMP6]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8143; SSE41-NEXT:    [[TMP7:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8144; SSE41-NEXT:    [[TMP8:%.*]] = call <2 x double> @llvm.ceil.v2f64(<2 x double> [[TMP7]])145; SSE41-NEXT:    store <2 x double> [[TMP8]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8146; SSE41-NEXT:    ret void147;148; AVX1-LABEL: @ceil_8f64(149; AVX1-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 8150; AVX1-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.ceil.v4f64(<4 x double> [[TMP1]])151; AVX1-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 8152; AVX1-NEXT:    [[TMP3:%.*]] = load <4 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8153; AVX1-NEXT:    [[TMP4:%.*]] = call <4 x double> @llvm.ceil.v4f64(<4 x double> [[TMP3]])154; AVX1-NEXT:    store <4 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8155; AVX1-NEXT:    ret void156;157; AVX2-LABEL: @ceil_8f64(158; AVX2-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 8159; AVX2-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.ceil.v4f64(<4 x double> [[TMP1]])160; AVX2-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 8161; AVX2-NEXT:    [[TMP3:%.*]] = load <4 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8162; AVX2-NEXT:    [[TMP4:%.*]] = call <4 x double> @llvm.ceil.v4f64(<4 x double> [[TMP3]])163; AVX2-NEXT:    store <4 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8164; AVX2-NEXT:    ret void165;166; AVX512-LABEL: @ceil_8f64(167; AVX512-NEXT:    [[TMP1:%.*]] = load <8 x double>, ptr @src64, align 8168; AVX512-NEXT:    [[TMP2:%.*]] = call <8 x double> @llvm.ceil.v8f64(<8 x double> [[TMP1]])169; AVX512-NEXT:    store <8 x double> [[TMP2]], ptr @dst64, align 8170; AVX512-NEXT:    ret void171;172  %ld0 = load double, ptr @src64, align 8173  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8174  %ld2 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8175  %ld3 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8176  %ld4 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8177  %ld5 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 5), align 8178  %ld6 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8179  %ld7 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 7), align 8180  %ceil0 = call double @llvm.ceil.f64(double %ld0)181  %ceil1 = call double @llvm.ceil.f64(double %ld1)182  %ceil2 = call double @llvm.ceil.f64(double %ld2)183  %ceil3 = call double @llvm.ceil.f64(double %ld3)184  %ceil4 = call double @llvm.ceil.f64(double %ld4)185  %ceil5 = call double @llvm.ceil.f64(double %ld5)186  %ceil6 = call double @llvm.ceil.f64(double %ld6)187  %ceil7 = call double @llvm.ceil.f64(double %ld7)188  store double %ceil0, ptr @dst64, align 8189  store double %ceil1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8190  store double %ceil2, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8191  store double %ceil3, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8192  store double %ceil4, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8193  store double %ceil5, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 5), align 8194  store double %ceil6, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8195  store double %ceil7, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 7), align 8196  ret void197}198 199define void @floor_2f64() #0 {200; SSE2-LABEL: @floor_2f64(201; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 8202; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8203; SSE2-NEXT:    [[FLOOR0:%.*]] = call double @llvm.floor.f64(double [[LD0]])204; SSE2-NEXT:    [[FLOOR1:%.*]] = call double @llvm.floor.f64(double [[LD1]])205; SSE2-NEXT:    store double [[FLOOR0]], ptr @dst64, align 8206; SSE2-NEXT:    store double [[FLOOR1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8207; SSE2-NEXT:    ret void208;209; SSE41-LABEL: @floor_2f64(210; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8211; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.floor.v2f64(<2 x double> [[TMP1]])212; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8213; SSE41-NEXT:    ret void214;215; AVX-LABEL: @floor_2f64(216; AVX-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8217; AVX-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.floor.v2f64(<2 x double> [[TMP1]])218; AVX-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8219; AVX-NEXT:    ret void220;221  %ld0 = load double, ptr @src64, align 8222  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8223  %floor0 = call double @llvm.floor.f64(double %ld0)224  %floor1 = call double @llvm.floor.f64(double %ld1)225  store double %floor0, ptr @dst64, align 8226  store double %floor1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8227  ret void228}229 230define void @floor_4f64() #0 {231; SSE2-LABEL: @floor_4f64(232; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 8233; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8234; SSE2-NEXT:    [[LD2:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8235; SSE2-NEXT:    [[LD3:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8236; SSE2-NEXT:    [[FLOOR0:%.*]] = call double @llvm.floor.f64(double [[LD0]])237; SSE2-NEXT:    [[FLOOR1:%.*]] = call double @llvm.floor.f64(double [[LD1]])238; SSE2-NEXT:    [[FLOOR2:%.*]] = call double @llvm.floor.f64(double [[LD2]])239; SSE2-NEXT:    [[FLOOR3:%.*]] = call double @llvm.floor.f64(double [[LD3]])240; SSE2-NEXT:    store double [[FLOOR0]], ptr @dst64, align 8241; SSE2-NEXT:    store double [[FLOOR1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8242; SSE2-NEXT:    store double [[FLOOR2]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8243; SSE2-NEXT:    store double [[FLOOR3]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8244; SSE2-NEXT:    ret void245;246; SSE41-LABEL: @floor_4f64(247; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8248; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.floor.v2f64(<2 x double> [[TMP1]])249; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8250; SSE41-NEXT:    [[TMP3:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8251; SSE41-NEXT:    [[TMP4:%.*]] = call <2 x double> @llvm.floor.v2f64(<2 x double> [[TMP3]])252; SSE41-NEXT:    store <2 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8253; SSE41-NEXT:    ret void254;255; AVX-LABEL: @floor_4f64(256; AVX-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 8257; AVX-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.floor.v4f64(<4 x double> [[TMP1]])258; AVX-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 8259; AVX-NEXT:    ret void260;261  %ld0 = load double, ptr @src64, align 8262  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8263  %ld2 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8264  %ld3 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8265  %floor0 = call double @llvm.floor.f64(double %ld0)266  %floor1 = call double @llvm.floor.f64(double %ld1)267  %floor2 = call double @llvm.floor.f64(double %ld2)268  %floor3 = call double @llvm.floor.f64(double %ld3)269  store double %floor0, ptr @dst64, align 8270  store double %floor1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8271  store double %floor2, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8272  store double %floor3, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8273  ret void274}275 276define void @floor_8f64() #0 {277; SSE2-LABEL: @floor_8f64(278; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 8279; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8280; SSE2-NEXT:    [[LD2:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8281; SSE2-NEXT:    [[LD3:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8282; SSE2-NEXT:    [[LD4:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8283; SSE2-NEXT:    [[LD5:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 5), align 8284; SSE2-NEXT:    [[LD6:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8285; SSE2-NEXT:    [[LD7:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 7), align 8286; SSE2-NEXT:    [[FLOOR0:%.*]] = call double @llvm.floor.f64(double [[LD0]])287; SSE2-NEXT:    [[FLOOR1:%.*]] = call double @llvm.floor.f64(double [[LD1]])288; SSE2-NEXT:    [[FLOOR2:%.*]] = call double @llvm.floor.f64(double [[LD2]])289; SSE2-NEXT:    [[FLOOR3:%.*]] = call double @llvm.floor.f64(double [[LD3]])290; SSE2-NEXT:    [[FLOOR4:%.*]] = call double @llvm.floor.f64(double [[LD4]])291; SSE2-NEXT:    [[FLOOR5:%.*]] = call double @llvm.floor.f64(double [[LD5]])292; SSE2-NEXT:    [[FLOOR6:%.*]] = call double @llvm.floor.f64(double [[LD6]])293; SSE2-NEXT:    [[FLOOR7:%.*]] = call double @llvm.floor.f64(double [[LD7]])294; SSE2-NEXT:    store double [[FLOOR0]], ptr @dst64, align 8295; SSE2-NEXT:    store double [[FLOOR1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8296; SSE2-NEXT:    store double [[FLOOR2]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8297; SSE2-NEXT:    store double [[FLOOR3]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8298; SSE2-NEXT:    store double [[FLOOR4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8299; SSE2-NEXT:    store double [[FLOOR5]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 5), align 8300; SSE2-NEXT:    store double [[FLOOR6]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8301; SSE2-NEXT:    store double [[FLOOR7]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 7), align 8302; SSE2-NEXT:    ret void303;304; SSE41-LABEL: @floor_8f64(305; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8306; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.floor.v2f64(<2 x double> [[TMP1]])307; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8308; SSE41-NEXT:    [[TMP3:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8309; SSE41-NEXT:    [[TMP4:%.*]] = call <2 x double> @llvm.floor.v2f64(<2 x double> [[TMP3]])310; SSE41-NEXT:    store <2 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8311; SSE41-NEXT:    [[TMP5:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8312; SSE41-NEXT:    [[TMP6:%.*]] = call <2 x double> @llvm.floor.v2f64(<2 x double> [[TMP5]])313; SSE41-NEXT:    store <2 x double> [[TMP6]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8314; SSE41-NEXT:    [[TMP7:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8315; SSE41-NEXT:    [[TMP8:%.*]] = call <2 x double> @llvm.floor.v2f64(<2 x double> [[TMP7]])316; SSE41-NEXT:    store <2 x double> [[TMP8]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8317; SSE41-NEXT:    ret void318;319; AVX1-LABEL: @floor_8f64(320; AVX1-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 8321; AVX1-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.floor.v4f64(<4 x double> [[TMP1]])322; AVX1-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 8323; AVX1-NEXT:    [[TMP3:%.*]] = load <4 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8324; AVX1-NEXT:    [[TMP4:%.*]] = call <4 x double> @llvm.floor.v4f64(<4 x double> [[TMP3]])325; AVX1-NEXT:    store <4 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8326; AVX1-NEXT:    ret void327;328; AVX2-LABEL: @floor_8f64(329; AVX2-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 8330; AVX2-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.floor.v4f64(<4 x double> [[TMP1]])331; AVX2-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 8332; AVX2-NEXT:    [[TMP3:%.*]] = load <4 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8333; AVX2-NEXT:    [[TMP4:%.*]] = call <4 x double> @llvm.floor.v4f64(<4 x double> [[TMP3]])334; AVX2-NEXT:    store <4 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8335; AVX2-NEXT:    ret void336;337; AVX512-LABEL: @floor_8f64(338; AVX512-NEXT:    [[TMP1:%.*]] = load <8 x double>, ptr @src64, align 8339; AVX512-NEXT:    [[TMP2:%.*]] = call <8 x double> @llvm.floor.v8f64(<8 x double> [[TMP1]])340; AVX512-NEXT:    store <8 x double> [[TMP2]], ptr @dst64, align 8341; AVX512-NEXT:    ret void342;343  %ld0 = load double, ptr @src64, align 8344  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8345  %ld2 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8346  %ld3 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8347  %ld4 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8348  %ld5 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 5), align 8349  %ld6 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8350  %ld7 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 7), align 8351  %floor0 = call double @llvm.floor.f64(double %ld0)352  %floor1 = call double @llvm.floor.f64(double %ld1)353  %floor2 = call double @llvm.floor.f64(double %ld2)354  %floor3 = call double @llvm.floor.f64(double %ld3)355  %floor4 = call double @llvm.floor.f64(double %ld4)356  %floor5 = call double @llvm.floor.f64(double %ld5)357  %floor6 = call double @llvm.floor.f64(double %ld6)358  %floor7 = call double @llvm.floor.f64(double %ld7)359  store double %floor0, ptr @dst64, align 8360  store double %floor1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8361  store double %floor2, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8362  store double %floor3, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8363  store double %floor4, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8364  store double %floor5, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 5), align 8365  store double %floor6, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8366  store double %floor7, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 7), align 8367  ret void368}369 370define void @nearbyint_2f64() #0 {371; SSE2-LABEL: @nearbyint_2f64(372; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 8373; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8374; SSE2-NEXT:    [[NEARBYINT0:%.*]] = call double @llvm.nearbyint.f64(double [[LD0]])375; SSE2-NEXT:    [[NEARBYINT1:%.*]] = call double @llvm.nearbyint.f64(double [[LD1]])376; SSE2-NEXT:    store double [[NEARBYINT0]], ptr @dst64, align 8377; SSE2-NEXT:    store double [[NEARBYINT1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8378; SSE2-NEXT:    ret void379;380; SSE41-LABEL: @nearbyint_2f64(381; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8382; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> [[TMP1]])383; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8384; SSE41-NEXT:    ret void385;386; AVX-LABEL: @nearbyint_2f64(387; AVX-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8388; AVX-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> [[TMP1]])389; AVX-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8390; AVX-NEXT:    ret void391;392  %ld0 = load double, ptr @src64, align 8393  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8394  %nearbyint0 = call double @llvm.nearbyint.f64(double %ld0)395  %nearbyint1 = call double @llvm.nearbyint.f64(double %ld1)396  store double %nearbyint0, ptr @dst64, align 8397  store double %nearbyint1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8398  ret void399}400 401define void @nearbyint_4f64() #0 {402; SSE2-LABEL: @nearbyint_4f64(403; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 8404; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8405; SSE2-NEXT:    [[LD2:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8406; SSE2-NEXT:    [[LD3:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8407; SSE2-NEXT:    [[NEARBYINT0:%.*]] = call double @llvm.nearbyint.f64(double [[LD0]])408; SSE2-NEXT:    [[NEARBYINT1:%.*]] = call double @llvm.nearbyint.f64(double [[LD1]])409; SSE2-NEXT:    [[NEARBYINT2:%.*]] = call double @llvm.nearbyint.f64(double [[LD2]])410; SSE2-NEXT:    [[NEARBYINT3:%.*]] = call double @llvm.nearbyint.f64(double [[LD3]])411; SSE2-NEXT:    store double [[NEARBYINT0]], ptr @dst64, align 8412; SSE2-NEXT:    store double [[NEARBYINT1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8413; SSE2-NEXT:    store double [[NEARBYINT2]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8414; SSE2-NEXT:    store double [[NEARBYINT3]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8415; SSE2-NEXT:    ret void416;417; SSE41-LABEL: @nearbyint_4f64(418; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8419; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> [[TMP1]])420; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8421; SSE41-NEXT:    [[TMP3:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8422; SSE41-NEXT:    [[TMP4:%.*]] = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> [[TMP3]])423; SSE41-NEXT:    store <2 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8424; SSE41-NEXT:    ret void425;426; AVX-LABEL: @nearbyint_4f64(427; AVX-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 8428; AVX-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> [[TMP1]])429; AVX-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 8430; AVX-NEXT:    ret void431;432  %ld0 = load double, ptr @src64, align 8433  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8434  %ld2 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8435  %ld3 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8436  %nearbyint0 = call double @llvm.nearbyint.f64(double %ld0)437  %nearbyint1 = call double @llvm.nearbyint.f64(double %ld1)438  %nearbyint2 = call double @llvm.nearbyint.f64(double %ld2)439  %nearbyint3 = call double @llvm.nearbyint.f64(double %ld3)440  store double %nearbyint0, ptr @dst64, align 8441  store double %nearbyint1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8442  store double %nearbyint2, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8443  store double %nearbyint3, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8444  ret void445}446 447define void @nearbyint_8f64() #0 {448; SSE2-LABEL: @nearbyint_8f64(449; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 8450; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8451; SSE2-NEXT:    [[LD2:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8452; SSE2-NEXT:    [[LD3:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8453; SSE2-NEXT:    [[LD4:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8454; SSE2-NEXT:    [[LD5:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 5), align 8455; SSE2-NEXT:    [[LD6:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8456; SSE2-NEXT:    [[LD7:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 7), align 8457; SSE2-NEXT:    [[NEARBYINT0:%.*]] = call double @llvm.nearbyint.f64(double [[LD0]])458; SSE2-NEXT:    [[NEARBYINT1:%.*]] = call double @llvm.nearbyint.f64(double [[LD1]])459; SSE2-NEXT:    [[NEARBYINT2:%.*]] = call double @llvm.nearbyint.f64(double [[LD2]])460; SSE2-NEXT:    [[NEARBYINT3:%.*]] = call double @llvm.nearbyint.f64(double [[LD3]])461; SSE2-NEXT:    [[NEARBYINT4:%.*]] = call double @llvm.nearbyint.f64(double [[LD4]])462; SSE2-NEXT:    [[NEARBYINT5:%.*]] = call double @llvm.nearbyint.f64(double [[LD5]])463; SSE2-NEXT:    [[NEARBYINT6:%.*]] = call double @llvm.nearbyint.f64(double [[LD6]])464; SSE2-NEXT:    [[NEARBYINT7:%.*]] = call double @llvm.nearbyint.f64(double [[LD7]])465; SSE2-NEXT:    store double [[NEARBYINT0]], ptr @dst64, align 8466; SSE2-NEXT:    store double [[NEARBYINT1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8467; SSE2-NEXT:    store double [[NEARBYINT2]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8468; SSE2-NEXT:    store double [[NEARBYINT3]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8469; SSE2-NEXT:    store double [[NEARBYINT4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8470; SSE2-NEXT:    store double [[NEARBYINT5]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 5), align 8471; SSE2-NEXT:    store double [[NEARBYINT6]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8472; SSE2-NEXT:    store double [[NEARBYINT7]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 7), align 8473; SSE2-NEXT:    ret void474;475; SSE41-LABEL: @nearbyint_8f64(476; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8477; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> [[TMP1]])478; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8479; SSE41-NEXT:    [[TMP3:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8480; SSE41-NEXT:    [[TMP4:%.*]] = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> [[TMP3]])481; SSE41-NEXT:    store <2 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8482; SSE41-NEXT:    [[TMP5:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8483; SSE41-NEXT:    [[TMP6:%.*]] = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> [[TMP5]])484; SSE41-NEXT:    store <2 x double> [[TMP6]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8485; SSE41-NEXT:    [[TMP7:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8486; SSE41-NEXT:    [[TMP8:%.*]] = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> [[TMP7]])487; SSE41-NEXT:    store <2 x double> [[TMP8]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8488; SSE41-NEXT:    ret void489;490; AVX1-LABEL: @nearbyint_8f64(491; AVX1-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 8492; AVX1-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> [[TMP1]])493; AVX1-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 8494; AVX1-NEXT:    [[TMP3:%.*]] = load <4 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8495; AVX1-NEXT:    [[TMP4:%.*]] = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> [[TMP3]])496; AVX1-NEXT:    store <4 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8497; AVX1-NEXT:    ret void498;499; AVX2-LABEL: @nearbyint_8f64(500; AVX2-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 8501; AVX2-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> [[TMP1]])502; AVX2-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 8503; AVX2-NEXT:    [[TMP3:%.*]] = load <4 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8504; AVX2-NEXT:    [[TMP4:%.*]] = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> [[TMP3]])505; AVX2-NEXT:    store <4 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8506; AVX2-NEXT:    ret void507;508; AVX512-LABEL: @nearbyint_8f64(509; AVX512-NEXT:    [[TMP1:%.*]] = load <8 x double>, ptr @src64, align 8510; AVX512-NEXT:    [[TMP2:%.*]] = call <8 x double> @llvm.nearbyint.v8f64(<8 x double> [[TMP1]])511; AVX512-NEXT:    store <8 x double> [[TMP2]], ptr @dst64, align 8512; AVX512-NEXT:    ret void513;514  %ld0 = load double, ptr @src64, align 8515  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8516  %ld2 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8517  %ld3 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8518  %ld4 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8519  %ld5 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 5), align 8520  %ld6 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8521  %ld7 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 7), align 8522  %nearbyint0 = call double @llvm.nearbyint.f64(double %ld0)523  %nearbyint1 = call double @llvm.nearbyint.f64(double %ld1)524  %nearbyint2 = call double @llvm.nearbyint.f64(double %ld2)525  %nearbyint3 = call double @llvm.nearbyint.f64(double %ld3)526  %nearbyint4 = call double @llvm.nearbyint.f64(double %ld4)527  %nearbyint5 = call double @llvm.nearbyint.f64(double %ld5)528  %nearbyint6 = call double @llvm.nearbyint.f64(double %ld6)529  %nearbyint7 = call double @llvm.nearbyint.f64(double %ld7)530  store double %nearbyint0, ptr @dst64, align 8531  store double %nearbyint1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8532  store double %nearbyint2, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8533  store double %nearbyint3, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8534  store double %nearbyint4, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8535  store double %nearbyint5, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 5), align 8536  store double %nearbyint6, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8537  store double %nearbyint7, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 7), align 8538  ret void539}540 541define void @rint_2f64() #0 {542; SSE2-LABEL: @rint_2f64(543; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 8544; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8545; SSE2-NEXT:    [[RINT0:%.*]] = call double @llvm.rint.f64(double [[LD0]])546; SSE2-NEXT:    [[RINT1:%.*]] = call double @llvm.rint.f64(double [[LD1]])547; SSE2-NEXT:    store double [[RINT0]], ptr @dst64, align 8548; SSE2-NEXT:    store double [[RINT1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8549; SSE2-NEXT:    ret void550;551; SSE41-LABEL: @rint_2f64(552; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8553; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.rint.v2f64(<2 x double> [[TMP1]])554; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8555; SSE41-NEXT:    ret void556;557; AVX-LABEL: @rint_2f64(558; AVX-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8559; AVX-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.rint.v2f64(<2 x double> [[TMP1]])560; AVX-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8561; AVX-NEXT:    ret void562;563  %ld0 = load double, ptr @src64, align 8564  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8565  %rint0 = call double @llvm.rint.f64(double %ld0)566  %rint1 = call double @llvm.rint.f64(double %ld1)567  store double %rint0, ptr @dst64, align 8568  store double %rint1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8569  ret void570}571 572define void @rint_4f64() #0 {573; SSE2-LABEL: @rint_4f64(574; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 8575; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8576; SSE2-NEXT:    [[LD2:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8577; SSE2-NEXT:    [[LD3:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8578; SSE2-NEXT:    [[RINT0:%.*]] = call double @llvm.rint.f64(double [[LD0]])579; SSE2-NEXT:    [[RINT1:%.*]] = call double @llvm.rint.f64(double [[LD1]])580; SSE2-NEXT:    [[RINT2:%.*]] = call double @llvm.rint.f64(double [[LD2]])581; SSE2-NEXT:    [[RINT3:%.*]] = call double @llvm.rint.f64(double [[LD3]])582; SSE2-NEXT:    store double [[RINT0]], ptr @dst64, align 8583; SSE2-NEXT:    store double [[RINT1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8584; SSE2-NEXT:    store double [[RINT2]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8585; SSE2-NEXT:    store double [[RINT3]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8586; SSE2-NEXT:    ret void587;588; SSE41-LABEL: @rint_4f64(589; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8590; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.rint.v2f64(<2 x double> [[TMP1]])591; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8592; SSE41-NEXT:    [[TMP3:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8593; SSE41-NEXT:    [[TMP4:%.*]] = call <2 x double> @llvm.rint.v2f64(<2 x double> [[TMP3]])594; SSE41-NEXT:    store <2 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8595; SSE41-NEXT:    ret void596;597; AVX-LABEL: @rint_4f64(598; AVX-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 8599; AVX-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.rint.v4f64(<4 x double> [[TMP1]])600; AVX-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 8601; AVX-NEXT:    ret void602;603  %ld0 = load double, ptr @src64, align 8604  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8605  %ld2 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8606  %ld3 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8607  %rint0 = call double @llvm.rint.f64(double %ld0)608  %rint1 = call double @llvm.rint.f64(double %ld1)609  %rint2 = call double @llvm.rint.f64(double %ld2)610  %rint3 = call double @llvm.rint.f64(double %ld3)611  store double %rint0, ptr @dst64, align 8612  store double %rint1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8613  store double %rint2, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8614  store double %rint3, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8615  ret void616}617 618define void @rint_8f64() #0 {619; SSE2-LABEL: @rint_8f64(620; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 8621; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8622; SSE2-NEXT:    [[LD2:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8623; SSE2-NEXT:    [[LD3:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8624; SSE2-NEXT:    [[LD4:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8625; SSE2-NEXT:    [[LD5:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 5), align 8626; SSE2-NEXT:    [[LD6:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8627; SSE2-NEXT:    [[LD7:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 7), align 8628; SSE2-NEXT:    [[RINT0:%.*]] = call double @llvm.rint.f64(double [[LD0]])629; SSE2-NEXT:    [[RINT1:%.*]] = call double @llvm.rint.f64(double [[LD1]])630; SSE2-NEXT:    [[RINT2:%.*]] = call double @llvm.rint.f64(double [[LD2]])631; SSE2-NEXT:    [[RINT3:%.*]] = call double @llvm.rint.f64(double [[LD3]])632; SSE2-NEXT:    [[RINT4:%.*]] = call double @llvm.rint.f64(double [[LD4]])633; SSE2-NEXT:    [[RINT5:%.*]] = call double @llvm.rint.f64(double [[LD5]])634; SSE2-NEXT:    [[RINT6:%.*]] = call double @llvm.rint.f64(double [[LD6]])635; SSE2-NEXT:    [[RINT7:%.*]] = call double @llvm.rint.f64(double [[LD7]])636; SSE2-NEXT:    store double [[RINT0]], ptr @dst64, align 8637; SSE2-NEXT:    store double [[RINT1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8638; SSE2-NEXT:    store double [[RINT2]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8639; SSE2-NEXT:    store double [[RINT3]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8640; SSE2-NEXT:    store double [[RINT4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8641; SSE2-NEXT:    store double [[RINT5]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 5), align 8642; SSE2-NEXT:    store double [[RINT6]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8643; SSE2-NEXT:    store double [[RINT7]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 7), align 8644; SSE2-NEXT:    ret void645;646; SSE41-LABEL: @rint_8f64(647; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8648; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.rint.v2f64(<2 x double> [[TMP1]])649; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8650; SSE41-NEXT:    [[TMP3:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8651; SSE41-NEXT:    [[TMP4:%.*]] = call <2 x double> @llvm.rint.v2f64(<2 x double> [[TMP3]])652; SSE41-NEXT:    store <2 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8653; SSE41-NEXT:    [[TMP5:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8654; SSE41-NEXT:    [[TMP6:%.*]] = call <2 x double> @llvm.rint.v2f64(<2 x double> [[TMP5]])655; SSE41-NEXT:    store <2 x double> [[TMP6]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8656; SSE41-NEXT:    [[TMP7:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8657; SSE41-NEXT:    [[TMP8:%.*]] = call <2 x double> @llvm.rint.v2f64(<2 x double> [[TMP7]])658; SSE41-NEXT:    store <2 x double> [[TMP8]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8659; SSE41-NEXT:    ret void660;661; AVX1-LABEL: @rint_8f64(662; AVX1-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 8663; AVX1-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.rint.v4f64(<4 x double> [[TMP1]])664; AVX1-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 8665; AVX1-NEXT:    [[TMP3:%.*]] = load <4 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8666; AVX1-NEXT:    [[TMP4:%.*]] = call <4 x double> @llvm.rint.v4f64(<4 x double> [[TMP3]])667; AVX1-NEXT:    store <4 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8668; AVX1-NEXT:    ret void669;670; AVX2-LABEL: @rint_8f64(671; AVX2-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 8672; AVX2-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.rint.v4f64(<4 x double> [[TMP1]])673; AVX2-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 8674; AVX2-NEXT:    [[TMP3:%.*]] = load <4 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8675; AVX2-NEXT:    [[TMP4:%.*]] = call <4 x double> @llvm.rint.v4f64(<4 x double> [[TMP3]])676; AVX2-NEXT:    store <4 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8677; AVX2-NEXT:    ret void678;679; AVX512-LABEL: @rint_8f64(680; AVX512-NEXT:    [[TMP1:%.*]] = load <8 x double>, ptr @src64, align 8681; AVX512-NEXT:    [[TMP2:%.*]] = call <8 x double> @llvm.rint.v8f64(<8 x double> [[TMP1]])682; AVX512-NEXT:    store <8 x double> [[TMP2]], ptr @dst64, align 8683; AVX512-NEXT:    ret void684;685  %ld0 = load double, ptr @src64, align 8686  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8687  %ld2 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8688  %ld3 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8689  %ld4 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8690  %ld5 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 5), align 8691  %ld6 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8692  %ld7 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 7), align 8693  %rint0 = call double @llvm.rint.f64(double %ld0)694  %rint1 = call double @llvm.rint.f64(double %ld1)695  %rint2 = call double @llvm.rint.f64(double %ld2)696  %rint3 = call double @llvm.rint.f64(double %ld3)697  %rint4 = call double @llvm.rint.f64(double %ld4)698  %rint5 = call double @llvm.rint.f64(double %ld5)699  %rint6 = call double @llvm.rint.f64(double %ld6)700  %rint7 = call double @llvm.rint.f64(double %ld7)701  store double %rint0, ptr @dst64, align 8702  store double %rint1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8703  store double %rint2, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8704  store double %rint3, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8705  store double %rint4, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8706  store double %rint5, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 5), align 8707  store double %rint6, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8708  store double %rint7, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 7), align 8709  ret void710}711 712define void @trunc_2f64() #0 {713; SSE2-LABEL: @trunc_2f64(714; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 8715; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8716; SSE2-NEXT:    [[TRUNC0:%.*]] = call double @llvm.trunc.f64(double [[LD0]])717; SSE2-NEXT:    [[TRUNC1:%.*]] = call double @llvm.trunc.f64(double [[LD1]])718; SSE2-NEXT:    store double [[TRUNC0]], ptr @dst64, align 8719; SSE2-NEXT:    store double [[TRUNC1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8720; SSE2-NEXT:    ret void721;722; SSE41-LABEL: @trunc_2f64(723; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8724; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.trunc.v2f64(<2 x double> [[TMP1]])725; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8726; SSE41-NEXT:    ret void727;728; AVX-LABEL: @trunc_2f64(729; AVX-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8730; AVX-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.trunc.v2f64(<2 x double> [[TMP1]])731; AVX-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8732; AVX-NEXT:    ret void733;734  %ld0 = load double, ptr @src64, align 8735  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8736  %trunc0 = call double @llvm.trunc.f64(double %ld0)737  %trunc1 = call double @llvm.trunc.f64(double %ld1)738  store double %trunc0, ptr @dst64, align 8739  store double %trunc1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8740  ret void741}742 743define void @trunc_4f64() #0 {744; SSE2-LABEL: @trunc_4f64(745; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 8746; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8747; SSE2-NEXT:    [[LD2:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8748; SSE2-NEXT:    [[LD3:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8749; SSE2-NEXT:    [[TRUNC0:%.*]] = call double @llvm.trunc.f64(double [[LD0]])750; SSE2-NEXT:    [[TRUNC1:%.*]] = call double @llvm.trunc.f64(double [[LD1]])751; SSE2-NEXT:    [[TRUNC2:%.*]] = call double @llvm.trunc.f64(double [[LD2]])752; SSE2-NEXT:    [[TRUNC3:%.*]] = call double @llvm.trunc.f64(double [[LD3]])753; SSE2-NEXT:    store double [[TRUNC0]], ptr @dst64, align 8754; SSE2-NEXT:    store double [[TRUNC1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8755; SSE2-NEXT:    store double [[TRUNC2]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8756; SSE2-NEXT:    store double [[TRUNC3]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8757; SSE2-NEXT:    ret void758;759; SSE41-LABEL: @trunc_4f64(760; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8761; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.trunc.v2f64(<2 x double> [[TMP1]])762; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8763; SSE41-NEXT:    [[TMP3:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8764; SSE41-NEXT:    [[TMP4:%.*]] = call <2 x double> @llvm.trunc.v2f64(<2 x double> [[TMP3]])765; SSE41-NEXT:    store <2 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8766; SSE41-NEXT:    ret void767;768; AVX-LABEL: @trunc_4f64(769; AVX-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 8770; AVX-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.trunc.v4f64(<4 x double> [[TMP1]])771; AVX-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 8772; AVX-NEXT:    ret void773;774  %ld0 = load double, ptr @src64, align 8775  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8776  %ld2 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8777  %ld3 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8778  %trunc0 = call double @llvm.trunc.f64(double %ld0)779  %trunc1 = call double @llvm.trunc.f64(double %ld1)780  %trunc2 = call double @llvm.trunc.f64(double %ld2)781  %trunc3 = call double @llvm.trunc.f64(double %ld3)782  store double %trunc0, ptr @dst64, align 8783  store double %trunc1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8784  store double %trunc2, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8785  store double %trunc3, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8786  ret void787}788 789define void @trunc_8f64() #0 {790; SSE2-LABEL: @trunc_8f64(791; SSE2-NEXT:    [[LD0:%.*]] = load double, ptr @src64, align 8792; SSE2-NEXT:    [[LD1:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8793; SSE2-NEXT:    [[LD2:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8794; SSE2-NEXT:    [[LD3:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8795; SSE2-NEXT:    [[LD4:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8796; SSE2-NEXT:    [[LD5:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 5), align 8797; SSE2-NEXT:    [[LD6:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8798; SSE2-NEXT:    [[LD7:%.*]] = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 7), align 8799; SSE2-NEXT:    [[TRUNC0:%.*]] = call double @llvm.trunc.f64(double [[LD0]])800; SSE2-NEXT:    [[TRUNC1:%.*]] = call double @llvm.trunc.f64(double [[LD1]])801; SSE2-NEXT:    [[TRUNC2:%.*]] = call double @llvm.trunc.f64(double [[LD2]])802; SSE2-NEXT:    [[TRUNC3:%.*]] = call double @llvm.trunc.f64(double [[LD3]])803; SSE2-NEXT:    [[TRUNC4:%.*]] = call double @llvm.trunc.f64(double [[LD4]])804; SSE2-NEXT:    [[TRUNC5:%.*]] = call double @llvm.trunc.f64(double [[LD5]])805; SSE2-NEXT:    [[TRUNC6:%.*]] = call double @llvm.trunc.f64(double [[LD6]])806; SSE2-NEXT:    [[TRUNC7:%.*]] = call double @llvm.trunc.f64(double [[LD7]])807; SSE2-NEXT:    store double [[TRUNC0]], ptr @dst64, align 8808; SSE2-NEXT:    store double [[TRUNC1]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8809; SSE2-NEXT:    store double [[TRUNC2]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8810; SSE2-NEXT:    store double [[TRUNC3]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8811; SSE2-NEXT:    store double [[TRUNC4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8812; SSE2-NEXT:    store double [[TRUNC5]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 5), align 8813; SSE2-NEXT:    store double [[TRUNC6]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8814; SSE2-NEXT:    store double [[TRUNC7]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 7), align 8815; SSE2-NEXT:    ret void816;817; SSE41-LABEL: @trunc_8f64(818; SSE41-NEXT:    [[TMP1:%.*]] = load <2 x double>, ptr @src64, align 8819; SSE41-NEXT:    [[TMP2:%.*]] = call <2 x double> @llvm.trunc.v2f64(<2 x double> [[TMP1]])820; SSE41-NEXT:    store <2 x double> [[TMP2]], ptr @dst64, align 8821; SSE41-NEXT:    [[TMP3:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8822; SSE41-NEXT:    [[TMP4:%.*]] = call <2 x double> @llvm.trunc.v2f64(<2 x double> [[TMP3]])823; SSE41-NEXT:    store <2 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8824; SSE41-NEXT:    [[TMP5:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8825; SSE41-NEXT:    [[TMP6:%.*]] = call <2 x double> @llvm.trunc.v2f64(<2 x double> [[TMP5]])826; SSE41-NEXT:    store <2 x double> [[TMP6]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8827; SSE41-NEXT:    [[TMP7:%.*]] = load <2 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8828; SSE41-NEXT:    [[TMP8:%.*]] = call <2 x double> @llvm.trunc.v2f64(<2 x double> [[TMP7]])829; SSE41-NEXT:    store <2 x double> [[TMP8]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8830; SSE41-NEXT:    ret void831;832; AVX1-LABEL: @trunc_8f64(833; AVX1-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 8834; AVX1-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.trunc.v4f64(<4 x double> [[TMP1]])835; AVX1-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 8836; AVX1-NEXT:    [[TMP3:%.*]] = load <4 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8837; AVX1-NEXT:    [[TMP4:%.*]] = call <4 x double> @llvm.trunc.v4f64(<4 x double> [[TMP3]])838; AVX1-NEXT:    store <4 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8839; AVX1-NEXT:    ret void840;841; AVX2-LABEL: @trunc_8f64(842; AVX2-NEXT:    [[TMP1:%.*]] = load <4 x double>, ptr @src64, align 8843; AVX2-NEXT:    [[TMP2:%.*]] = call <4 x double> @llvm.trunc.v4f64(<4 x double> [[TMP1]])844; AVX2-NEXT:    store <4 x double> [[TMP2]], ptr @dst64, align 8845; AVX2-NEXT:    [[TMP3:%.*]] = load <4 x double>, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8846; AVX2-NEXT:    [[TMP4:%.*]] = call <4 x double> @llvm.trunc.v4f64(<4 x double> [[TMP3]])847; AVX2-NEXT:    store <4 x double> [[TMP4]], ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8848; AVX2-NEXT:    ret void849;850; AVX512-LABEL: @trunc_8f64(851; AVX512-NEXT:    [[TMP1:%.*]] = load <8 x double>, ptr @src64, align 8852; AVX512-NEXT:    [[TMP2:%.*]] = call <8 x double> @llvm.trunc.v8f64(<8 x double> [[TMP1]])853; AVX512-NEXT:    store <8 x double> [[TMP2]], ptr @dst64, align 8854; AVX512-NEXT:    ret void855;856  %ld0 = load double, ptr @src64, align 8857  %ld1 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 1), align 8858  %ld2 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 2), align 8859  %ld3 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 3), align 8860  %ld4 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 4), align 8861  %ld5 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 5), align 8862  %ld6 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 6), align 8863  %ld7 = load double, ptr getelementptr inbounds ([8 x double], ptr @src64, i32 0, i64 7), align 8864  %trunc0 = call double @llvm.trunc.f64(double %ld0)865  %trunc1 = call double @llvm.trunc.f64(double %ld1)866  %trunc2 = call double @llvm.trunc.f64(double %ld2)867  %trunc3 = call double @llvm.trunc.f64(double %ld3)868  %trunc4 = call double @llvm.trunc.f64(double %ld4)869  %trunc5 = call double @llvm.trunc.f64(double %ld5)870  %trunc6 = call double @llvm.trunc.f64(double %ld6)871  %trunc7 = call double @llvm.trunc.f64(double %ld7)872  store double %trunc0, ptr @dst64, align 8873  store double %trunc1, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 1), align 8874  store double %trunc2, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 2), align 8875  store double %trunc3, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 3), align 8876  store double %trunc4, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 4), align 8877  store double %trunc5, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 5), align 8878  store double %trunc6, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 6), align 8879  store double %trunc7, ptr getelementptr inbounds ([8 x double], ptr @dst64, i32 0, i64 7), align 8880  ret void881}882 883define void @ceil_4f32() #0 {884; SSE2-LABEL: @ceil_4f32(885; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 4886; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 4887; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 4888; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 4889; SSE2-NEXT:    [[CEIL0:%.*]] = call float @llvm.ceil.f32(float [[LD0]])890; SSE2-NEXT:    [[CEIL1:%.*]] = call float @llvm.ceil.f32(float [[LD1]])891; SSE2-NEXT:    [[CEIL2:%.*]] = call float @llvm.ceil.f32(float [[LD2]])892; SSE2-NEXT:    [[CEIL3:%.*]] = call float @llvm.ceil.f32(float [[LD3]])893; SSE2-NEXT:    store float [[CEIL0]], ptr @dst32, align 4894; SSE2-NEXT:    store float [[CEIL1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 4895; SSE2-NEXT:    store float [[CEIL2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 4896; SSE2-NEXT:    store float [[CEIL3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 4897; SSE2-NEXT:    ret void898;899; SSE41-LABEL: @ceil_4f32(900; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 4901; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.ceil.v4f32(<4 x float> [[TMP1]])902; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 4903; SSE41-NEXT:    ret void904;905; AVX-LABEL: @ceil_4f32(906; AVX-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 4907; AVX-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.ceil.v4f32(<4 x float> [[TMP1]])908; AVX-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 4909; AVX-NEXT:    ret void910;911  %ld0 = load float, ptr @src32, align 4912  %ld1 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 4913  %ld2 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 4914  %ld3 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 4915  %ceil0 = call float @llvm.ceil.f32(float %ld0)916  %ceil1 = call float @llvm.ceil.f32(float %ld1)917  %ceil2 = call float @llvm.ceil.f32(float %ld2)918  %ceil3 = call float @llvm.ceil.f32(float %ld3)919  store float %ceil0, ptr @dst32, align 4920  store float %ceil1, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 4921  store float %ceil2, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 4922  store float %ceil3, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 4923  ret void924}925 926define void @ceil_8f32() #0 {927; SSE2-LABEL: @ceil_8f32(928; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 4929; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 4930; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 4931; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 4932; SSE2-NEXT:    [[LD4:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 4933; SSE2-NEXT:    [[LD5:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 4934; SSE2-NEXT:    [[LD6:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 4935; SSE2-NEXT:    [[LD7:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 4936; SSE2-NEXT:    [[CEIL0:%.*]] = call float @llvm.ceil.f32(float [[LD0]])937; SSE2-NEXT:    [[CEIL1:%.*]] = call float @llvm.ceil.f32(float [[LD1]])938; SSE2-NEXT:    [[CEIL2:%.*]] = call float @llvm.ceil.f32(float [[LD2]])939; SSE2-NEXT:    [[CEIL3:%.*]] = call float @llvm.ceil.f32(float [[LD3]])940; SSE2-NEXT:    [[CEIL4:%.*]] = call float @llvm.ceil.f32(float [[LD4]])941; SSE2-NEXT:    [[CEIL5:%.*]] = call float @llvm.ceil.f32(float [[LD5]])942; SSE2-NEXT:    [[CEIL6:%.*]] = call float @llvm.ceil.f32(float [[LD6]])943; SSE2-NEXT:    [[CEIL7:%.*]] = call float @llvm.ceil.f32(float [[LD7]])944; SSE2-NEXT:    store float [[CEIL0]], ptr @dst32, align 4945; SSE2-NEXT:    store float [[CEIL1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 4946; SSE2-NEXT:    store float [[CEIL2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 4947; SSE2-NEXT:    store float [[CEIL3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 4948; SSE2-NEXT:    store float [[CEIL4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 4949; SSE2-NEXT:    store float [[CEIL5]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 4950; SSE2-NEXT:    store float [[CEIL6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 4951; SSE2-NEXT:    store float [[CEIL7]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 4952; SSE2-NEXT:    ret void953;954; SSE41-LABEL: @ceil_8f32(955; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 4956; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.ceil.v4f32(<4 x float> [[TMP1]])957; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 4958; SSE41-NEXT:    [[TMP3:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 4959; SSE41-NEXT:    [[TMP4:%.*]] = call <4 x float> @llvm.ceil.v4f32(<4 x float> [[TMP3]])960; SSE41-NEXT:    store <4 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 4961; SSE41-NEXT:    ret void962;963; AVX-LABEL: @ceil_8f32(964; AVX-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 4965; AVX-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.ceil.v8f32(<8 x float> [[TMP1]])966; AVX-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 4967; AVX-NEXT:    ret void968;969  %ld0 = load float, ptr @src32, align 4970  %ld1 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 4971  %ld2 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 4972  %ld3 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 4973  %ld4 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 4974  %ld5 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 4975  %ld6 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 4976  %ld7 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 4977  %ceil0 = call float @llvm.ceil.f32(float %ld0)978  %ceil1 = call float @llvm.ceil.f32(float %ld1)979  %ceil2 = call float @llvm.ceil.f32(float %ld2)980  %ceil3 = call float @llvm.ceil.f32(float %ld3)981  %ceil4 = call float @llvm.ceil.f32(float %ld4)982  %ceil5 = call float @llvm.ceil.f32(float %ld5)983  %ceil6 = call float @llvm.ceil.f32(float %ld6)984  %ceil7 = call float @llvm.ceil.f32(float %ld7)985  store float %ceil0, ptr @dst32, align 4986  store float %ceil1, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 4987  store float %ceil2, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 4988  store float %ceil3, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 4989  store float %ceil4, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 4990  store float %ceil5, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 4991  store float %ceil6, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 4992  store float %ceil7, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 4993  ret void994}995 996define void @ceil_16f32() #0 {997; SSE2-LABEL: @ceil_16f32(998; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 4999; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41000; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41001; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41002; SSE2-NEXT:    [[LD4:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41003; SSE2-NEXT:    [[LD5:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 41004; SSE2-NEXT:    [[LD6:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 41005; SSE2-NEXT:    [[LD7:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 41006; SSE2-NEXT:    [[LD8:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41007; SSE2-NEXT:    [[LD9:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 9), align 41008; SSE2-NEXT:    [[LD10:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 10), align 41009; SSE2-NEXT:    [[LD11:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 11), align 41010; SSE2-NEXT:    [[LD12:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 41011; SSE2-NEXT:    [[LD13:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 13), align 41012; SSE2-NEXT:    [[LD14:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 14), align 41013; SSE2-NEXT:    [[LD15:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 15), align 41014; SSE2-NEXT:    [[CEIL0:%.*]] = call float @llvm.ceil.f32(float [[LD0]])1015; SSE2-NEXT:    [[CEIL1:%.*]] = call float @llvm.ceil.f32(float [[LD1]])1016; SSE2-NEXT:    [[CEIL2:%.*]] = call float @llvm.ceil.f32(float [[LD2]])1017; SSE2-NEXT:    [[CEIL3:%.*]] = call float @llvm.ceil.f32(float [[LD3]])1018; SSE2-NEXT:    [[CEIL4:%.*]] = call float @llvm.ceil.f32(float [[LD4]])1019; SSE2-NEXT:    [[CEIL5:%.*]] = call float @llvm.ceil.f32(float [[LD5]])1020; SSE2-NEXT:    [[CEIL6:%.*]] = call float @llvm.ceil.f32(float [[LD6]])1021; SSE2-NEXT:    [[CEIL7:%.*]] = call float @llvm.ceil.f32(float [[LD7]])1022; SSE2-NEXT:    [[CEIL8:%.*]] = call float @llvm.ceil.f32(float [[LD8]])1023; SSE2-NEXT:    [[CEIL9:%.*]] = call float @llvm.ceil.f32(float [[LD9]])1024; SSE2-NEXT:    [[CEIL10:%.*]] = call float @llvm.ceil.f32(float [[LD10]])1025; SSE2-NEXT:    [[CEIL11:%.*]] = call float @llvm.ceil.f32(float [[LD11]])1026; SSE2-NEXT:    [[CEIL12:%.*]] = call float @llvm.ceil.f32(float [[LD12]])1027; SSE2-NEXT:    [[CEIL13:%.*]] = call float @llvm.ceil.f32(float [[LD13]])1028; SSE2-NEXT:    [[CEIL14:%.*]] = call float @llvm.ceil.f32(float [[LD14]])1029; SSE2-NEXT:    [[CEIL15:%.*]] = call float @llvm.ceil.f32(float [[LD15]])1030; SSE2-NEXT:    store float [[CEIL0]], ptr @dst32, align 41031; SSE2-NEXT:    store float [[CEIL1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41032; SSE2-NEXT:    store float [[CEIL2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41033; SSE2-NEXT:    store float [[CEIL3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41034; SSE2-NEXT:    store float [[CEIL4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41035; SSE2-NEXT:    store float [[CEIL5]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 41036; SSE2-NEXT:    store float [[CEIL6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 41037; SSE2-NEXT:    store float [[CEIL7]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 41038; SSE2-NEXT:    store float [[CEIL8]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41039; SSE2-NEXT:    store float [[CEIL9]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 9), align 41040; SSE2-NEXT:    store float [[CEIL10]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 10), align 41041; SSE2-NEXT:    store float [[CEIL11]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 11), align 41042; SSE2-NEXT:    store float [[CEIL12]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 41043; SSE2-NEXT:    store float [[CEIL13]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 13), align 41044; SSE2-NEXT:    store float [[CEIL14]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 14), align 41045; SSE2-NEXT:    store float [[CEIL15]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 15), align 41046; SSE2-NEXT:    ret void1047;1048; SSE41-LABEL: @ceil_16f32(1049; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41050; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.ceil.v4f32(<4 x float> [[TMP1]])1051; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41052; SSE41-NEXT:    [[TMP3:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41053; SSE41-NEXT:    [[TMP4:%.*]] = call <4 x float> @llvm.ceil.v4f32(<4 x float> [[TMP3]])1054; SSE41-NEXT:    store <4 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41055; SSE41-NEXT:    [[TMP5:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41056; SSE41-NEXT:    [[TMP6:%.*]] = call <4 x float> @llvm.ceil.v4f32(<4 x float> [[TMP5]])1057; SSE41-NEXT:    store <4 x float> [[TMP6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41058; SSE41-NEXT:    [[TMP7:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 41059; SSE41-NEXT:    [[TMP8:%.*]] = call <4 x float> @llvm.ceil.v4f32(<4 x float> [[TMP7]])1060; SSE41-NEXT:    store <4 x float> [[TMP8]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 41061; SSE41-NEXT:    ret void1062;1063; AVX1-LABEL: @ceil_16f32(1064; AVX1-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 41065; AVX1-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.ceil.v8f32(<8 x float> [[TMP1]])1066; AVX1-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 41067; AVX1-NEXT:    [[TMP3:%.*]] = load <8 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41068; AVX1-NEXT:    [[TMP4:%.*]] = call <8 x float> @llvm.ceil.v8f32(<8 x float> [[TMP3]])1069; AVX1-NEXT:    store <8 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41070; AVX1-NEXT:    ret void1071;1072; AVX2-LABEL: @ceil_16f32(1073; AVX2-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 41074; AVX2-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.ceil.v8f32(<8 x float> [[TMP1]])1075; AVX2-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 41076; AVX2-NEXT:    [[TMP3:%.*]] = load <8 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41077; AVX2-NEXT:    [[TMP4:%.*]] = call <8 x float> @llvm.ceil.v8f32(<8 x float> [[TMP3]])1078; AVX2-NEXT:    store <8 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41079; AVX2-NEXT:    ret void1080;1081; AVX512-LABEL: @ceil_16f32(1082; AVX512-NEXT:    [[TMP1:%.*]] = load <16 x float>, ptr @src32, align 41083; AVX512-NEXT:    [[TMP2:%.*]] = call <16 x float> @llvm.ceil.v16f32(<16 x float> [[TMP1]])1084; AVX512-NEXT:    store <16 x float> [[TMP2]], ptr @dst32, align 41085; AVX512-NEXT:    ret void1086;1087  %ld0  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 0 ), align 41088  %ld1  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1 ), align 41089  %ld2  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2 ), align 41090  %ld3  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3 ), align 41091  %ld4  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4 ), align 41092  %ld5  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5 ), align 41093  %ld6  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6 ), align 41094  %ld7  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7 ), align 41095  %ld8  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8 ), align 41096  %ld9  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 9 ), align 41097  %ld10 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 10), align 41098  %ld11 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 11), align 41099  %ld12 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 41100  %ld13 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 13), align 41101  %ld14 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 14), align 41102  %ld15 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 15), align 41103  %ceil0  = call float @llvm.ceil.f32(float %ld0 )1104  %ceil1  = call float @llvm.ceil.f32(float %ld1 )1105  %ceil2  = call float @llvm.ceil.f32(float %ld2 )1106  %ceil3  = call float @llvm.ceil.f32(float %ld3 )1107  %ceil4  = call float @llvm.ceil.f32(float %ld4 )1108  %ceil5  = call float @llvm.ceil.f32(float %ld5 )1109  %ceil6  = call float @llvm.ceil.f32(float %ld6 )1110  %ceil7  = call float @llvm.ceil.f32(float %ld7 )1111  %ceil8  = call float @llvm.ceil.f32(float %ld8 )1112  %ceil9  = call float @llvm.ceil.f32(float %ld9 )1113  %ceil10 = call float @llvm.ceil.f32(float %ld10)1114  %ceil11 = call float @llvm.ceil.f32(float %ld11)1115  %ceil12 = call float @llvm.ceil.f32(float %ld12)1116  %ceil13 = call float @llvm.ceil.f32(float %ld13)1117  %ceil14 = call float @llvm.ceil.f32(float %ld14)1118  %ceil15 = call float @llvm.ceil.f32(float %ld15)1119  store float %ceil0 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 0 ), align 41120  store float %ceil1 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1 ), align 41121  store float %ceil2 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2 ), align 41122  store float %ceil3 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3 ), align 41123  store float %ceil4 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4 ), align 41124  store float %ceil5 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5 ), align 41125  store float %ceil6 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6 ), align 41126  store float %ceil7 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7 ), align 41127  store float %ceil8 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8 ), align 41128  store float %ceil9 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 9 ), align 41129  store float %ceil10, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 10), align 41130  store float %ceil11, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 11), align 41131  store float %ceil12, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 41132  store float %ceil13, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 13), align 41133  store float %ceil14, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 14), align 41134  store float %ceil15, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 15), align 41135  ret void1136}1137 1138define void @floor_4f32() #0 {1139; SSE2-LABEL: @floor_4f32(1140; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 41141; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41142; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41143; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41144; SSE2-NEXT:    [[FLOOR0:%.*]] = call float @llvm.floor.f32(float [[LD0]])1145; SSE2-NEXT:    [[FLOOR1:%.*]] = call float @llvm.floor.f32(float [[LD1]])1146; SSE2-NEXT:    [[FLOOR2:%.*]] = call float @llvm.floor.f32(float [[LD2]])1147; SSE2-NEXT:    [[FLOOR3:%.*]] = call float @llvm.floor.f32(float [[LD3]])1148; SSE2-NEXT:    store float [[FLOOR0]], ptr @dst32, align 41149; SSE2-NEXT:    store float [[FLOOR1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41150; SSE2-NEXT:    store float [[FLOOR2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41151; SSE2-NEXT:    store float [[FLOOR3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41152; SSE2-NEXT:    ret void1153;1154; SSE41-LABEL: @floor_4f32(1155; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41156; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.floor.v4f32(<4 x float> [[TMP1]])1157; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41158; SSE41-NEXT:    ret void1159;1160; AVX-LABEL: @floor_4f32(1161; AVX-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41162; AVX-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.floor.v4f32(<4 x float> [[TMP1]])1163; AVX-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41164; AVX-NEXT:    ret void1165;1166  %ld0 = load float, ptr @src32, align 41167  %ld1 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41168  %ld2 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41169  %ld3 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41170  %floor0 = call float @llvm.floor.f32(float %ld0)1171  %floor1 = call float @llvm.floor.f32(float %ld1)1172  %floor2 = call float @llvm.floor.f32(float %ld2)1173  %floor3 = call float @llvm.floor.f32(float %ld3)1174  store float %floor0, ptr @dst32, align 41175  store float %floor1, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41176  store float %floor2, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41177  store float %floor3, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41178  ret void1179}1180 1181define void @floor_8f32() #0 {1182; SSE2-LABEL: @floor_8f32(1183; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 41184; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41185; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41186; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41187; SSE2-NEXT:    [[LD4:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41188; SSE2-NEXT:    [[LD5:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 41189; SSE2-NEXT:    [[LD6:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 41190; SSE2-NEXT:    [[LD7:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 41191; SSE2-NEXT:    [[FLOOR0:%.*]] = call float @llvm.floor.f32(float [[LD0]])1192; SSE2-NEXT:    [[FLOOR1:%.*]] = call float @llvm.floor.f32(float [[LD1]])1193; SSE2-NEXT:    [[FLOOR2:%.*]] = call float @llvm.floor.f32(float [[LD2]])1194; SSE2-NEXT:    [[FLOOR3:%.*]] = call float @llvm.floor.f32(float [[LD3]])1195; SSE2-NEXT:    [[FLOOR4:%.*]] = call float @llvm.floor.f32(float [[LD4]])1196; SSE2-NEXT:    [[FLOOR5:%.*]] = call float @llvm.floor.f32(float [[LD5]])1197; SSE2-NEXT:    [[FLOOR6:%.*]] = call float @llvm.floor.f32(float [[LD6]])1198; SSE2-NEXT:    [[FLOOR7:%.*]] = call float @llvm.floor.f32(float [[LD7]])1199; SSE2-NEXT:    store float [[FLOOR0]], ptr @dst32, align 41200; SSE2-NEXT:    store float [[FLOOR1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41201; SSE2-NEXT:    store float [[FLOOR2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41202; SSE2-NEXT:    store float [[FLOOR3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41203; SSE2-NEXT:    store float [[FLOOR4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41204; SSE2-NEXT:    store float [[FLOOR5]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 41205; SSE2-NEXT:    store float [[FLOOR6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 41206; SSE2-NEXT:    store float [[FLOOR7]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 41207; SSE2-NEXT:    ret void1208;1209; SSE41-LABEL: @floor_8f32(1210; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41211; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.floor.v4f32(<4 x float> [[TMP1]])1212; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41213; SSE41-NEXT:    [[TMP3:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41214; SSE41-NEXT:    [[TMP4:%.*]] = call <4 x float> @llvm.floor.v4f32(<4 x float> [[TMP3]])1215; SSE41-NEXT:    store <4 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41216; SSE41-NEXT:    ret void1217;1218; AVX-LABEL: @floor_8f32(1219; AVX-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 41220; AVX-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.floor.v8f32(<8 x float> [[TMP1]])1221; AVX-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 41222; AVX-NEXT:    ret void1223;1224  %ld0 = load float, ptr @src32, align 41225  %ld1 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41226  %ld2 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41227  %ld3 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41228  %ld4 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41229  %ld5 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 41230  %ld6 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 41231  %ld7 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 41232  %floor0 = call float @llvm.floor.f32(float %ld0)1233  %floor1 = call float @llvm.floor.f32(float %ld1)1234  %floor2 = call float @llvm.floor.f32(float %ld2)1235  %floor3 = call float @llvm.floor.f32(float %ld3)1236  %floor4 = call float @llvm.floor.f32(float %ld4)1237  %floor5 = call float @llvm.floor.f32(float %ld5)1238  %floor6 = call float @llvm.floor.f32(float %ld6)1239  %floor7 = call float @llvm.floor.f32(float %ld7)1240  store float %floor0, ptr @dst32, align 41241  store float %floor1, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41242  store float %floor2, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41243  store float %floor3, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41244  store float %floor4, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41245  store float %floor5, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 41246  store float %floor6, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 41247  store float %floor7, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 41248  ret void1249}1250 1251define void @floor_16f32() #0 {1252; SSE2-LABEL: @floor_16f32(1253; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 41254; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41255; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41256; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41257; SSE2-NEXT:    [[LD4:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41258; SSE2-NEXT:    [[LD5:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 41259; SSE2-NEXT:    [[LD6:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 41260; SSE2-NEXT:    [[LD7:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 41261; SSE2-NEXT:    [[LD8:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41262; SSE2-NEXT:    [[LD9:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 9), align 41263; SSE2-NEXT:    [[LD10:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 10), align 41264; SSE2-NEXT:    [[LD11:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 11), align 41265; SSE2-NEXT:    [[LD12:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 41266; SSE2-NEXT:    [[LD13:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 13), align 41267; SSE2-NEXT:    [[LD14:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 14), align 41268; SSE2-NEXT:    [[LD15:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 15), align 41269; SSE2-NEXT:    [[FLOOR0:%.*]] = call float @llvm.floor.f32(float [[LD0]])1270; SSE2-NEXT:    [[FLOOR1:%.*]] = call float @llvm.floor.f32(float [[LD1]])1271; SSE2-NEXT:    [[FLOOR2:%.*]] = call float @llvm.floor.f32(float [[LD2]])1272; SSE2-NEXT:    [[FLOOR3:%.*]] = call float @llvm.floor.f32(float [[LD3]])1273; SSE2-NEXT:    [[FLOOR4:%.*]] = call float @llvm.floor.f32(float [[LD4]])1274; SSE2-NEXT:    [[FLOOR5:%.*]] = call float @llvm.floor.f32(float [[LD5]])1275; SSE2-NEXT:    [[FLOOR6:%.*]] = call float @llvm.floor.f32(float [[LD6]])1276; SSE2-NEXT:    [[FLOOR7:%.*]] = call float @llvm.floor.f32(float [[LD7]])1277; SSE2-NEXT:    [[FLOOR8:%.*]] = call float @llvm.floor.f32(float [[LD8]])1278; SSE2-NEXT:    [[FLOOR9:%.*]] = call float @llvm.floor.f32(float [[LD9]])1279; SSE2-NEXT:    [[FLOOR10:%.*]] = call float @llvm.floor.f32(float [[LD10]])1280; SSE2-NEXT:    [[FLOOR11:%.*]] = call float @llvm.floor.f32(float [[LD11]])1281; SSE2-NEXT:    [[FLOOR12:%.*]] = call float @llvm.floor.f32(float [[LD12]])1282; SSE2-NEXT:    [[FLOOR13:%.*]] = call float @llvm.floor.f32(float [[LD13]])1283; SSE2-NEXT:    [[FLOOR14:%.*]] = call float @llvm.floor.f32(float [[LD14]])1284; SSE2-NEXT:    [[FLOOR15:%.*]] = call float @llvm.floor.f32(float [[LD15]])1285; SSE2-NEXT:    store float [[FLOOR0]], ptr @dst32, align 41286; SSE2-NEXT:    store float [[FLOOR1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41287; SSE2-NEXT:    store float [[FLOOR2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41288; SSE2-NEXT:    store float [[FLOOR3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41289; SSE2-NEXT:    store float [[FLOOR4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41290; SSE2-NEXT:    store float [[FLOOR5]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 41291; SSE2-NEXT:    store float [[FLOOR6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 41292; SSE2-NEXT:    store float [[FLOOR7]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 41293; SSE2-NEXT:    store float [[FLOOR8]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41294; SSE2-NEXT:    store float [[FLOOR9]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 9), align 41295; SSE2-NEXT:    store float [[FLOOR10]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 10), align 41296; SSE2-NEXT:    store float [[FLOOR11]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 11), align 41297; SSE2-NEXT:    store float [[FLOOR12]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 41298; SSE2-NEXT:    store float [[FLOOR13]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 13), align 41299; SSE2-NEXT:    store float [[FLOOR14]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 14), align 41300; SSE2-NEXT:    store float [[FLOOR15]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 15), align 41301; SSE2-NEXT:    ret void1302;1303; SSE41-LABEL: @floor_16f32(1304; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41305; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.floor.v4f32(<4 x float> [[TMP1]])1306; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41307; SSE41-NEXT:    [[TMP3:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41308; SSE41-NEXT:    [[TMP4:%.*]] = call <4 x float> @llvm.floor.v4f32(<4 x float> [[TMP3]])1309; SSE41-NEXT:    store <4 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41310; SSE41-NEXT:    [[TMP5:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41311; SSE41-NEXT:    [[TMP6:%.*]] = call <4 x float> @llvm.floor.v4f32(<4 x float> [[TMP5]])1312; SSE41-NEXT:    store <4 x float> [[TMP6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41313; SSE41-NEXT:    [[TMP7:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 41314; SSE41-NEXT:    [[TMP8:%.*]] = call <4 x float> @llvm.floor.v4f32(<4 x float> [[TMP7]])1315; SSE41-NEXT:    store <4 x float> [[TMP8]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 41316; SSE41-NEXT:    ret void1317;1318; AVX1-LABEL: @floor_16f32(1319; AVX1-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 41320; AVX1-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.floor.v8f32(<8 x float> [[TMP1]])1321; AVX1-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 41322; AVX1-NEXT:    [[TMP3:%.*]] = load <8 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41323; AVX1-NEXT:    [[TMP4:%.*]] = call <8 x float> @llvm.floor.v8f32(<8 x float> [[TMP3]])1324; AVX1-NEXT:    store <8 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41325; AVX1-NEXT:    ret void1326;1327; AVX2-LABEL: @floor_16f32(1328; AVX2-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 41329; AVX2-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.floor.v8f32(<8 x float> [[TMP1]])1330; AVX2-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 41331; AVX2-NEXT:    [[TMP3:%.*]] = load <8 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41332; AVX2-NEXT:    [[TMP4:%.*]] = call <8 x float> @llvm.floor.v8f32(<8 x float> [[TMP3]])1333; AVX2-NEXT:    store <8 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41334; AVX2-NEXT:    ret void1335;1336; AVX512-LABEL: @floor_16f32(1337; AVX512-NEXT:    [[TMP1:%.*]] = load <16 x float>, ptr @src32, align 41338; AVX512-NEXT:    [[TMP2:%.*]] = call <16 x float> @llvm.floor.v16f32(<16 x float> [[TMP1]])1339; AVX512-NEXT:    store <16 x float> [[TMP2]], ptr @dst32, align 41340; AVX512-NEXT:    ret void1341;1342  %ld0  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 0 ), align 41343  %ld1  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1 ), align 41344  %ld2  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2 ), align 41345  %ld3  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3 ), align 41346  %ld4  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4 ), align 41347  %ld5  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5 ), align 41348  %ld6  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6 ), align 41349  %ld7  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7 ), align 41350  %ld8  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8 ), align 41351  %ld9  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 9 ), align 41352  %ld10 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 10), align 41353  %ld11 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 11), align 41354  %ld12 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 41355  %ld13 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 13), align 41356  %ld14 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 14), align 41357  %ld15 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 15), align 41358  %floor0  = call float @llvm.floor.f32(float %ld0 )1359  %floor1  = call float @llvm.floor.f32(float %ld1 )1360  %floor2  = call float @llvm.floor.f32(float %ld2 )1361  %floor3  = call float @llvm.floor.f32(float %ld3 )1362  %floor4  = call float @llvm.floor.f32(float %ld4 )1363  %floor5  = call float @llvm.floor.f32(float %ld5 )1364  %floor6  = call float @llvm.floor.f32(float %ld6 )1365  %floor7  = call float @llvm.floor.f32(float %ld7 )1366  %floor8  = call float @llvm.floor.f32(float %ld8 )1367  %floor9  = call float @llvm.floor.f32(float %ld9 )1368  %floor10 = call float @llvm.floor.f32(float %ld10)1369  %floor11 = call float @llvm.floor.f32(float %ld11)1370  %floor12 = call float @llvm.floor.f32(float %ld12)1371  %floor13 = call float @llvm.floor.f32(float %ld13)1372  %floor14 = call float @llvm.floor.f32(float %ld14)1373  %floor15 = call float @llvm.floor.f32(float %ld15)1374  store float %floor0 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 0 ), align 41375  store float %floor1 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1 ), align 41376  store float %floor2 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2 ), align 41377  store float %floor3 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3 ), align 41378  store float %floor4 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4 ), align 41379  store float %floor5 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5 ), align 41380  store float %floor6 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6 ), align 41381  store float %floor7 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7 ), align 41382  store float %floor8 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8 ), align 41383  store float %floor9 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 9 ), align 41384  store float %floor10, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 10), align 41385  store float %floor11, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 11), align 41386  store float %floor12, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 41387  store float %floor13, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 13), align 41388  store float %floor14, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 14), align 41389  store float %floor15, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 15), align 41390  ret void1391}1392 1393define void @nearbyint_4f32() #0 {1394; SSE2-LABEL: @nearbyint_4f32(1395; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 41396; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41397; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41398; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41399; SSE2-NEXT:    [[NEARBYINT0:%.*]] = call float @llvm.nearbyint.f32(float [[LD0]])1400; SSE2-NEXT:    [[NEARBYINT1:%.*]] = call float @llvm.nearbyint.f32(float [[LD1]])1401; SSE2-NEXT:    [[NEARBYINT2:%.*]] = call float @llvm.nearbyint.f32(float [[LD2]])1402; SSE2-NEXT:    [[NEARBYINT3:%.*]] = call float @llvm.nearbyint.f32(float [[LD3]])1403; SSE2-NEXT:    store float [[NEARBYINT0]], ptr @dst32, align 41404; SSE2-NEXT:    store float [[NEARBYINT1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41405; SSE2-NEXT:    store float [[NEARBYINT2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41406; SSE2-NEXT:    store float [[NEARBYINT3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41407; SSE2-NEXT:    ret void1408;1409; SSE41-LABEL: @nearbyint_4f32(1410; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41411; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> [[TMP1]])1412; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41413; SSE41-NEXT:    ret void1414;1415; AVX-LABEL: @nearbyint_4f32(1416; AVX-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41417; AVX-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> [[TMP1]])1418; AVX-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41419; AVX-NEXT:    ret void1420;1421  %ld0 = load float, ptr @src32, align 41422  %ld1 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41423  %ld2 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41424  %ld3 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41425  %nearbyint0 = call float @llvm.nearbyint.f32(float %ld0)1426  %nearbyint1 = call float @llvm.nearbyint.f32(float %ld1)1427  %nearbyint2 = call float @llvm.nearbyint.f32(float %ld2)1428  %nearbyint3 = call float @llvm.nearbyint.f32(float %ld3)1429  store float %nearbyint0, ptr @dst32, align 41430  store float %nearbyint1, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41431  store float %nearbyint2, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41432  store float %nearbyint3, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41433  ret void1434}1435 1436define void @nearbyint_8f32() #0 {1437; SSE2-LABEL: @nearbyint_8f32(1438; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 41439; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41440; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41441; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41442; SSE2-NEXT:    [[LD4:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41443; SSE2-NEXT:    [[LD5:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 41444; SSE2-NEXT:    [[LD6:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 41445; SSE2-NEXT:    [[LD7:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 41446; SSE2-NEXT:    [[NEARBYINT0:%.*]] = call float @llvm.nearbyint.f32(float [[LD0]])1447; SSE2-NEXT:    [[NEARBYINT1:%.*]] = call float @llvm.nearbyint.f32(float [[LD1]])1448; SSE2-NEXT:    [[NEARBYINT2:%.*]] = call float @llvm.nearbyint.f32(float [[LD2]])1449; SSE2-NEXT:    [[NEARBYINT3:%.*]] = call float @llvm.nearbyint.f32(float [[LD3]])1450; SSE2-NEXT:    [[NEARBYINT4:%.*]] = call float @llvm.nearbyint.f32(float [[LD4]])1451; SSE2-NEXT:    [[NEARBYINT5:%.*]] = call float @llvm.nearbyint.f32(float [[LD5]])1452; SSE2-NEXT:    [[NEARBYINT6:%.*]] = call float @llvm.nearbyint.f32(float [[LD6]])1453; SSE2-NEXT:    [[NEARBYINT7:%.*]] = call float @llvm.nearbyint.f32(float [[LD7]])1454; SSE2-NEXT:    store float [[NEARBYINT0]], ptr @dst32, align 41455; SSE2-NEXT:    store float [[NEARBYINT1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41456; SSE2-NEXT:    store float [[NEARBYINT2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41457; SSE2-NEXT:    store float [[NEARBYINT3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41458; SSE2-NEXT:    store float [[NEARBYINT4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41459; SSE2-NEXT:    store float [[NEARBYINT5]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 41460; SSE2-NEXT:    store float [[NEARBYINT6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 41461; SSE2-NEXT:    store float [[NEARBYINT7]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 41462; SSE2-NEXT:    ret void1463;1464; SSE41-LABEL: @nearbyint_8f32(1465; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41466; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> [[TMP1]])1467; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41468; SSE41-NEXT:    [[TMP3:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41469; SSE41-NEXT:    [[TMP4:%.*]] = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> [[TMP3]])1470; SSE41-NEXT:    store <4 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41471; SSE41-NEXT:    ret void1472;1473; AVX-LABEL: @nearbyint_8f32(1474; AVX-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 41475; AVX-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> [[TMP1]])1476; AVX-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 41477; AVX-NEXT:    ret void1478;1479  %ld0 = load float, ptr @src32, align 41480  %ld1 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41481  %ld2 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41482  %ld3 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41483  %ld4 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41484  %ld5 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 41485  %ld6 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 41486  %ld7 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 41487  %nearbyint0 = call float @llvm.nearbyint.f32(float %ld0)1488  %nearbyint1 = call float @llvm.nearbyint.f32(float %ld1)1489  %nearbyint2 = call float @llvm.nearbyint.f32(float %ld2)1490  %nearbyint3 = call float @llvm.nearbyint.f32(float %ld3)1491  %nearbyint4 = call float @llvm.nearbyint.f32(float %ld4)1492  %nearbyint5 = call float @llvm.nearbyint.f32(float %ld5)1493  %nearbyint6 = call float @llvm.nearbyint.f32(float %ld6)1494  %nearbyint7 = call float @llvm.nearbyint.f32(float %ld7)1495  store float %nearbyint0, ptr @dst32, align 41496  store float %nearbyint1, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41497  store float %nearbyint2, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41498  store float %nearbyint3, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41499  store float %nearbyint4, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41500  store float %nearbyint5, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 41501  store float %nearbyint6, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 41502  store float %nearbyint7, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 41503  ret void1504}1505 1506define void @nearbyint_16f32() #0 {1507; SSE2-LABEL: @nearbyint_16f32(1508; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 41509; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41510; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41511; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41512; SSE2-NEXT:    [[LD4:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41513; SSE2-NEXT:    [[LD5:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 41514; SSE2-NEXT:    [[LD6:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 41515; SSE2-NEXT:    [[LD7:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 41516; SSE2-NEXT:    [[LD8:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41517; SSE2-NEXT:    [[LD9:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 9), align 41518; SSE2-NEXT:    [[LD10:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 10), align 41519; SSE2-NEXT:    [[LD11:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 11), align 41520; SSE2-NEXT:    [[LD12:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 41521; SSE2-NEXT:    [[LD13:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 13), align 41522; SSE2-NEXT:    [[LD14:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 14), align 41523; SSE2-NEXT:    [[LD15:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 15), align 41524; SSE2-NEXT:    [[NEARBYINT0:%.*]] = call float @llvm.nearbyint.f32(float [[LD0]])1525; SSE2-NEXT:    [[NEARBYINT1:%.*]] = call float @llvm.nearbyint.f32(float [[LD1]])1526; SSE2-NEXT:    [[NEARBYINT2:%.*]] = call float @llvm.nearbyint.f32(float [[LD2]])1527; SSE2-NEXT:    [[NEARBYINT3:%.*]] = call float @llvm.nearbyint.f32(float [[LD3]])1528; SSE2-NEXT:    [[NEARBYINT4:%.*]] = call float @llvm.nearbyint.f32(float [[LD4]])1529; SSE2-NEXT:    [[NEARBYINT5:%.*]] = call float @llvm.nearbyint.f32(float [[LD5]])1530; SSE2-NEXT:    [[NEARBYINT6:%.*]] = call float @llvm.nearbyint.f32(float [[LD6]])1531; SSE2-NEXT:    [[NEARBYINT7:%.*]] = call float @llvm.nearbyint.f32(float [[LD7]])1532; SSE2-NEXT:    [[NEARBYINT8:%.*]] = call float @llvm.nearbyint.f32(float [[LD8]])1533; SSE2-NEXT:    [[NEARBYINT9:%.*]] = call float @llvm.nearbyint.f32(float [[LD9]])1534; SSE2-NEXT:    [[NEARBYINT10:%.*]] = call float @llvm.nearbyint.f32(float [[LD10]])1535; SSE2-NEXT:    [[NEARBYINT11:%.*]] = call float @llvm.nearbyint.f32(float [[LD11]])1536; SSE2-NEXT:    [[NEARBYINT12:%.*]] = call float @llvm.nearbyint.f32(float [[LD12]])1537; SSE2-NEXT:    [[NEARBYINT13:%.*]] = call float @llvm.nearbyint.f32(float [[LD13]])1538; SSE2-NEXT:    [[NEARBYINT14:%.*]] = call float @llvm.nearbyint.f32(float [[LD14]])1539; SSE2-NEXT:    [[NEARBYINT15:%.*]] = call float @llvm.nearbyint.f32(float [[LD15]])1540; SSE2-NEXT:    store float [[NEARBYINT0]], ptr @dst32, align 41541; SSE2-NEXT:    store float [[NEARBYINT1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41542; SSE2-NEXT:    store float [[NEARBYINT2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41543; SSE2-NEXT:    store float [[NEARBYINT3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41544; SSE2-NEXT:    store float [[NEARBYINT4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41545; SSE2-NEXT:    store float [[NEARBYINT5]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 41546; SSE2-NEXT:    store float [[NEARBYINT6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 41547; SSE2-NEXT:    store float [[NEARBYINT7]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 41548; SSE2-NEXT:    store float [[NEARBYINT8]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41549; SSE2-NEXT:    store float [[NEARBYINT9]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 9), align 41550; SSE2-NEXT:    store float [[NEARBYINT10]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 10), align 41551; SSE2-NEXT:    store float [[NEARBYINT11]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 11), align 41552; SSE2-NEXT:    store float [[NEARBYINT12]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 41553; SSE2-NEXT:    store float [[NEARBYINT13]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 13), align 41554; SSE2-NEXT:    store float [[NEARBYINT14]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 14), align 41555; SSE2-NEXT:    store float [[NEARBYINT15]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 15), align 41556; SSE2-NEXT:    ret void1557;1558; SSE41-LABEL: @nearbyint_16f32(1559; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41560; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> [[TMP1]])1561; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41562; SSE41-NEXT:    [[TMP3:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41563; SSE41-NEXT:    [[TMP4:%.*]] = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> [[TMP3]])1564; SSE41-NEXT:    store <4 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41565; SSE41-NEXT:    [[TMP5:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41566; SSE41-NEXT:    [[TMP6:%.*]] = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> [[TMP5]])1567; SSE41-NEXT:    store <4 x float> [[TMP6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41568; SSE41-NEXT:    [[TMP7:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 41569; SSE41-NEXT:    [[TMP8:%.*]] = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> [[TMP7]])1570; SSE41-NEXT:    store <4 x float> [[TMP8]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 41571; SSE41-NEXT:    ret void1572;1573; AVX1-LABEL: @nearbyint_16f32(1574; AVX1-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 41575; AVX1-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> [[TMP1]])1576; AVX1-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 41577; AVX1-NEXT:    [[TMP3:%.*]] = load <8 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41578; AVX1-NEXT:    [[TMP4:%.*]] = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> [[TMP3]])1579; AVX1-NEXT:    store <8 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41580; AVX1-NEXT:    ret void1581;1582; AVX2-LABEL: @nearbyint_16f32(1583; AVX2-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 41584; AVX2-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> [[TMP1]])1585; AVX2-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 41586; AVX2-NEXT:    [[TMP3:%.*]] = load <8 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41587; AVX2-NEXT:    [[TMP4:%.*]] = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> [[TMP3]])1588; AVX2-NEXT:    store <8 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41589; AVX2-NEXT:    ret void1590;1591; AVX512-LABEL: @nearbyint_16f32(1592; AVX512-NEXT:    [[TMP1:%.*]] = load <16 x float>, ptr @src32, align 41593; AVX512-NEXT:    [[TMP2:%.*]] = call <16 x float> @llvm.nearbyint.v16f32(<16 x float> [[TMP1]])1594; AVX512-NEXT:    store <16 x float> [[TMP2]], ptr @dst32, align 41595; AVX512-NEXT:    ret void1596;1597  %ld0  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 0 ), align 41598  %ld1  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1 ), align 41599  %ld2  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2 ), align 41600  %ld3  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3 ), align 41601  %ld4  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4 ), align 41602  %ld5  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5 ), align 41603  %ld6  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6 ), align 41604  %ld7  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7 ), align 41605  %ld8  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8 ), align 41606  %ld9  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 9 ), align 41607  %ld10 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 10), align 41608  %ld11 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 11), align 41609  %ld12 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 41610  %ld13 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 13), align 41611  %ld14 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 14), align 41612  %ld15 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 15), align 41613  %nearbyint0  = call float @llvm.nearbyint.f32(float %ld0 )1614  %nearbyint1  = call float @llvm.nearbyint.f32(float %ld1 )1615  %nearbyint2  = call float @llvm.nearbyint.f32(float %ld2 )1616  %nearbyint3  = call float @llvm.nearbyint.f32(float %ld3 )1617  %nearbyint4  = call float @llvm.nearbyint.f32(float %ld4 )1618  %nearbyint5  = call float @llvm.nearbyint.f32(float %ld5 )1619  %nearbyint6  = call float @llvm.nearbyint.f32(float %ld6 )1620  %nearbyint7  = call float @llvm.nearbyint.f32(float %ld7 )1621  %nearbyint8  = call float @llvm.nearbyint.f32(float %ld8 )1622  %nearbyint9  = call float @llvm.nearbyint.f32(float %ld9 )1623  %nearbyint10 = call float @llvm.nearbyint.f32(float %ld10)1624  %nearbyint11 = call float @llvm.nearbyint.f32(float %ld11)1625  %nearbyint12 = call float @llvm.nearbyint.f32(float %ld12)1626  %nearbyint13 = call float @llvm.nearbyint.f32(float %ld13)1627  %nearbyint14 = call float @llvm.nearbyint.f32(float %ld14)1628  %nearbyint15 = call float @llvm.nearbyint.f32(float %ld15)1629  store float %nearbyint0 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 0 ), align 41630  store float %nearbyint1 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1 ), align 41631  store float %nearbyint2 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2 ), align 41632  store float %nearbyint3 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3 ), align 41633  store float %nearbyint4 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4 ), align 41634  store float %nearbyint5 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5 ), align 41635  store float %nearbyint6 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6 ), align 41636  store float %nearbyint7 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7 ), align 41637  store float %nearbyint8 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8 ), align 41638  store float %nearbyint9 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 9 ), align 41639  store float %nearbyint10, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 10), align 41640  store float %nearbyint11, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 11), align 41641  store float %nearbyint12, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 41642  store float %nearbyint13, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 13), align 41643  store float %nearbyint14, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 14), align 41644  store float %nearbyint15, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 15), align 41645  ret void1646}1647 1648define void @rint_4f32() #0 {1649; SSE2-LABEL: @rint_4f32(1650; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 41651; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41652; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41653; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41654; SSE2-NEXT:    [[RINT0:%.*]] = call float @llvm.rint.f32(float [[LD0]])1655; SSE2-NEXT:    [[RINT1:%.*]] = call float @llvm.rint.f32(float [[LD1]])1656; SSE2-NEXT:    [[RINT2:%.*]] = call float @llvm.rint.f32(float [[LD2]])1657; SSE2-NEXT:    [[RINT3:%.*]] = call float @llvm.rint.f32(float [[LD3]])1658; SSE2-NEXT:    store float [[RINT0]], ptr @dst32, align 41659; SSE2-NEXT:    store float [[RINT1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41660; SSE2-NEXT:    store float [[RINT2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41661; SSE2-NEXT:    store float [[RINT3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41662; SSE2-NEXT:    ret void1663;1664; SSE41-LABEL: @rint_4f32(1665; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41666; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.rint.v4f32(<4 x float> [[TMP1]])1667; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41668; SSE41-NEXT:    ret void1669;1670; AVX-LABEL: @rint_4f32(1671; AVX-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41672; AVX-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.rint.v4f32(<4 x float> [[TMP1]])1673; AVX-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41674; AVX-NEXT:    ret void1675;1676  %ld0 = load float, ptr @src32, align 41677  %ld1 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41678  %ld2 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41679  %ld3 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41680  %rint0 = call float @llvm.rint.f32(float %ld0)1681  %rint1 = call float @llvm.rint.f32(float %ld1)1682  %rint2 = call float @llvm.rint.f32(float %ld2)1683  %rint3 = call float @llvm.rint.f32(float %ld3)1684  store float %rint0, ptr @dst32, align 41685  store float %rint1, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41686  store float %rint2, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41687  store float %rint3, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41688  ret void1689}1690 1691define void @rint_8f32() #0 {1692; SSE2-LABEL: @rint_8f32(1693; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 41694; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41695; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41696; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41697; SSE2-NEXT:    [[LD4:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41698; SSE2-NEXT:    [[LD5:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 41699; SSE2-NEXT:    [[LD6:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 41700; SSE2-NEXT:    [[LD7:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 41701; SSE2-NEXT:    [[RINT0:%.*]] = call float @llvm.rint.f32(float [[LD0]])1702; SSE2-NEXT:    [[RINT1:%.*]] = call float @llvm.rint.f32(float [[LD1]])1703; SSE2-NEXT:    [[RINT2:%.*]] = call float @llvm.rint.f32(float [[LD2]])1704; SSE2-NEXT:    [[RINT3:%.*]] = call float @llvm.rint.f32(float [[LD3]])1705; SSE2-NEXT:    [[RINT4:%.*]] = call float @llvm.rint.f32(float [[LD4]])1706; SSE2-NEXT:    [[RINT5:%.*]] = call float @llvm.rint.f32(float [[LD5]])1707; SSE2-NEXT:    [[RINT6:%.*]] = call float @llvm.rint.f32(float [[LD6]])1708; SSE2-NEXT:    [[RINT7:%.*]] = call float @llvm.rint.f32(float [[LD7]])1709; SSE2-NEXT:    store float [[RINT0]], ptr @dst32, align 41710; SSE2-NEXT:    store float [[RINT1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41711; SSE2-NEXT:    store float [[RINT2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41712; SSE2-NEXT:    store float [[RINT3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41713; SSE2-NEXT:    store float [[RINT4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41714; SSE2-NEXT:    store float [[RINT5]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 41715; SSE2-NEXT:    store float [[RINT6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 41716; SSE2-NEXT:    store float [[RINT7]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 41717; SSE2-NEXT:    ret void1718;1719; SSE41-LABEL: @rint_8f32(1720; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41721; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.rint.v4f32(<4 x float> [[TMP1]])1722; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41723; SSE41-NEXT:    [[TMP3:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41724; SSE41-NEXT:    [[TMP4:%.*]] = call <4 x float> @llvm.rint.v4f32(<4 x float> [[TMP3]])1725; SSE41-NEXT:    store <4 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41726; SSE41-NEXT:    ret void1727;1728; AVX-LABEL: @rint_8f32(1729; AVX-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 41730; AVX-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.rint.v8f32(<8 x float> [[TMP1]])1731; AVX-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 41732; AVX-NEXT:    ret void1733;1734  %ld0 = load float, ptr @src32, align 41735  %ld1 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41736  %ld2 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41737  %ld3 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41738  %ld4 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41739  %ld5 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 41740  %ld6 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 41741  %ld7 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 41742  %rint0 = call float @llvm.rint.f32(float %ld0)1743  %rint1 = call float @llvm.rint.f32(float %ld1)1744  %rint2 = call float @llvm.rint.f32(float %ld2)1745  %rint3 = call float @llvm.rint.f32(float %ld3)1746  %rint4 = call float @llvm.rint.f32(float %ld4)1747  %rint5 = call float @llvm.rint.f32(float %ld5)1748  %rint6 = call float @llvm.rint.f32(float %ld6)1749  %rint7 = call float @llvm.rint.f32(float %ld7)1750  store float %rint0, ptr @dst32, align 41751  store float %rint1, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41752  store float %rint2, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41753  store float %rint3, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41754  store float %rint4, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41755  store float %rint5, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 41756  store float %rint6, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 41757  store float %rint7, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 41758  ret void1759}1760 1761define void @rint_16f32() #0 {1762; SSE2-LABEL: @rint_16f32(1763; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 41764; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41765; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41766; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41767; SSE2-NEXT:    [[LD4:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41768; SSE2-NEXT:    [[LD5:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 41769; SSE2-NEXT:    [[LD6:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 41770; SSE2-NEXT:    [[LD7:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 41771; SSE2-NEXT:    [[LD8:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41772; SSE2-NEXT:    [[LD9:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 9), align 41773; SSE2-NEXT:    [[LD10:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 10), align 41774; SSE2-NEXT:    [[LD11:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 11), align 41775; SSE2-NEXT:    [[LD12:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 41776; SSE2-NEXT:    [[LD13:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 13), align 41777; SSE2-NEXT:    [[LD14:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 14), align 41778; SSE2-NEXT:    [[LD15:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 15), align 41779; SSE2-NEXT:    [[RINT0:%.*]] = call float @llvm.rint.f32(float [[LD0]])1780; SSE2-NEXT:    [[RINT1:%.*]] = call float @llvm.rint.f32(float [[LD1]])1781; SSE2-NEXT:    [[RINT2:%.*]] = call float @llvm.rint.f32(float [[LD2]])1782; SSE2-NEXT:    [[RINT3:%.*]] = call float @llvm.rint.f32(float [[LD3]])1783; SSE2-NEXT:    [[RINT4:%.*]] = call float @llvm.rint.f32(float [[LD4]])1784; SSE2-NEXT:    [[RINT5:%.*]] = call float @llvm.rint.f32(float [[LD5]])1785; SSE2-NEXT:    [[RINT6:%.*]] = call float @llvm.rint.f32(float [[LD6]])1786; SSE2-NEXT:    [[RINT7:%.*]] = call float @llvm.rint.f32(float [[LD7]])1787; SSE2-NEXT:    [[RINT8:%.*]] = call float @llvm.rint.f32(float [[LD8]])1788; SSE2-NEXT:    [[RINT9:%.*]] = call float @llvm.rint.f32(float [[LD9]])1789; SSE2-NEXT:    [[RINT10:%.*]] = call float @llvm.rint.f32(float [[LD10]])1790; SSE2-NEXT:    [[RINT11:%.*]] = call float @llvm.rint.f32(float [[LD11]])1791; SSE2-NEXT:    [[RINT12:%.*]] = call float @llvm.rint.f32(float [[LD12]])1792; SSE2-NEXT:    [[RINT13:%.*]] = call float @llvm.rint.f32(float [[LD13]])1793; SSE2-NEXT:    [[RINT14:%.*]] = call float @llvm.rint.f32(float [[LD14]])1794; SSE2-NEXT:    [[RINT15:%.*]] = call float @llvm.rint.f32(float [[LD15]])1795; SSE2-NEXT:    store float [[RINT0]], ptr @dst32, align 41796; SSE2-NEXT:    store float [[RINT1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41797; SSE2-NEXT:    store float [[RINT2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41798; SSE2-NEXT:    store float [[RINT3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41799; SSE2-NEXT:    store float [[RINT4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41800; SSE2-NEXT:    store float [[RINT5]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 41801; SSE2-NEXT:    store float [[RINT6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 41802; SSE2-NEXT:    store float [[RINT7]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 41803; SSE2-NEXT:    store float [[RINT8]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41804; SSE2-NEXT:    store float [[RINT9]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 9), align 41805; SSE2-NEXT:    store float [[RINT10]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 10), align 41806; SSE2-NEXT:    store float [[RINT11]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 11), align 41807; SSE2-NEXT:    store float [[RINT12]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 41808; SSE2-NEXT:    store float [[RINT13]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 13), align 41809; SSE2-NEXT:    store float [[RINT14]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 14), align 41810; SSE2-NEXT:    store float [[RINT15]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 15), align 41811; SSE2-NEXT:    ret void1812;1813; SSE41-LABEL: @rint_16f32(1814; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41815; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.rint.v4f32(<4 x float> [[TMP1]])1816; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41817; SSE41-NEXT:    [[TMP3:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41818; SSE41-NEXT:    [[TMP4:%.*]] = call <4 x float> @llvm.rint.v4f32(<4 x float> [[TMP3]])1819; SSE41-NEXT:    store <4 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41820; SSE41-NEXT:    [[TMP5:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41821; SSE41-NEXT:    [[TMP6:%.*]] = call <4 x float> @llvm.rint.v4f32(<4 x float> [[TMP5]])1822; SSE41-NEXT:    store <4 x float> [[TMP6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41823; SSE41-NEXT:    [[TMP7:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 41824; SSE41-NEXT:    [[TMP8:%.*]] = call <4 x float> @llvm.rint.v4f32(<4 x float> [[TMP7]])1825; SSE41-NEXT:    store <4 x float> [[TMP8]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 41826; SSE41-NEXT:    ret void1827;1828; AVX1-LABEL: @rint_16f32(1829; AVX1-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 41830; AVX1-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.rint.v8f32(<8 x float> [[TMP1]])1831; AVX1-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 41832; AVX1-NEXT:    [[TMP3:%.*]] = load <8 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41833; AVX1-NEXT:    [[TMP4:%.*]] = call <8 x float> @llvm.rint.v8f32(<8 x float> [[TMP3]])1834; AVX1-NEXT:    store <8 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41835; AVX1-NEXT:    ret void1836;1837; AVX2-LABEL: @rint_16f32(1838; AVX2-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 41839; AVX2-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.rint.v8f32(<8 x float> [[TMP1]])1840; AVX2-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 41841; AVX2-NEXT:    [[TMP3:%.*]] = load <8 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 41842; AVX2-NEXT:    [[TMP4:%.*]] = call <8 x float> @llvm.rint.v8f32(<8 x float> [[TMP3]])1843; AVX2-NEXT:    store <8 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 41844; AVX2-NEXT:    ret void1845;1846; AVX512-LABEL: @rint_16f32(1847; AVX512-NEXT:    [[TMP1:%.*]] = load <16 x float>, ptr @src32, align 41848; AVX512-NEXT:    [[TMP2:%.*]] = call <16 x float> @llvm.rint.v16f32(<16 x float> [[TMP1]])1849; AVX512-NEXT:    store <16 x float> [[TMP2]], ptr @dst32, align 41850; AVX512-NEXT:    ret void1851;1852  %ld0  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 0 ), align 41853  %ld1  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1 ), align 41854  %ld2  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2 ), align 41855  %ld3  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3 ), align 41856  %ld4  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4 ), align 41857  %ld5  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5 ), align 41858  %ld6  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6 ), align 41859  %ld7  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7 ), align 41860  %ld8  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8 ), align 41861  %ld9  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 9 ), align 41862  %ld10 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 10), align 41863  %ld11 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 11), align 41864  %ld12 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 41865  %ld13 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 13), align 41866  %ld14 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 14), align 41867  %ld15 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 15), align 41868  %rint0  = call float @llvm.rint.f32(float %ld0 )1869  %rint1  = call float @llvm.rint.f32(float %ld1 )1870  %rint2  = call float @llvm.rint.f32(float %ld2 )1871  %rint3  = call float @llvm.rint.f32(float %ld3 )1872  %rint4  = call float @llvm.rint.f32(float %ld4 )1873  %rint5  = call float @llvm.rint.f32(float %ld5 )1874  %rint6  = call float @llvm.rint.f32(float %ld6 )1875  %rint7  = call float @llvm.rint.f32(float %ld7 )1876  %rint8  = call float @llvm.rint.f32(float %ld8 )1877  %rint9  = call float @llvm.rint.f32(float %ld9 )1878  %rint10 = call float @llvm.rint.f32(float %ld10)1879  %rint11 = call float @llvm.rint.f32(float %ld11)1880  %rint12 = call float @llvm.rint.f32(float %ld12)1881  %rint13 = call float @llvm.rint.f32(float %ld13)1882  %rint14 = call float @llvm.rint.f32(float %ld14)1883  %rint15 = call float @llvm.rint.f32(float %ld15)1884  store float %rint0 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 0 ), align 41885  store float %rint1 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1 ), align 41886  store float %rint2 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2 ), align 41887  store float %rint3 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3 ), align 41888  store float %rint4 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4 ), align 41889  store float %rint5 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5 ), align 41890  store float %rint6 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6 ), align 41891  store float %rint7 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7 ), align 41892  store float %rint8 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8 ), align 41893  store float %rint9 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 9 ), align 41894  store float %rint10, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 10), align 41895  store float %rint11, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 11), align 41896  store float %rint12, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 41897  store float %rint13, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 13), align 41898  store float %rint14, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 14), align 41899  store float %rint15, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 15), align 41900  ret void1901}1902 1903define void @trunc_4f32() #0 {1904; SSE2-LABEL: @trunc_4f32(1905; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 41906; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41907; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41908; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41909; SSE2-NEXT:    [[TRUNC0:%.*]] = call float @llvm.trunc.f32(float [[LD0]])1910; SSE2-NEXT:    [[TRUNC1:%.*]] = call float @llvm.trunc.f32(float [[LD1]])1911; SSE2-NEXT:    [[TRUNC2:%.*]] = call float @llvm.trunc.f32(float [[LD2]])1912; SSE2-NEXT:    [[TRUNC3:%.*]] = call float @llvm.trunc.f32(float [[LD3]])1913; SSE2-NEXT:    store float [[TRUNC0]], ptr @dst32, align 41914; SSE2-NEXT:    store float [[TRUNC1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41915; SSE2-NEXT:    store float [[TRUNC2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41916; SSE2-NEXT:    store float [[TRUNC3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41917; SSE2-NEXT:    ret void1918;1919; SSE41-LABEL: @trunc_4f32(1920; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41921; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.trunc.v4f32(<4 x float> [[TMP1]])1922; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41923; SSE41-NEXT:    ret void1924;1925; AVX-LABEL: @trunc_4f32(1926; AVX-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41927; AVX-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.trunc.v4f32(<4 x float> [[TMP1]])1928; AVX-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41929; AVX-NEXT:    ret void1930;1931  %ld0 = load float, ptr @src32, align 41932  %ld1 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41933  %ld2 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41934  %ld3 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41935  %trunc0 = call float @llvm.trunc.f32(float %ld0)1936  %trunc1 = call float @llvm.trunc.f32(float %ld1)1937  %trunc2 = call float @llvm.trunc.f32(float %ld2)1938  %trunc3 = call float @llvm.trunc.f32(float %ld3)1939  store float %trunc0, ptr @dst32, align 41940  store float %trunc1, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41941  store float %trunc2, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41942  store float %trunc3, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41943  ret void1944}1945 1946define void @trunc_8f32() #0 {1947; SSE2-LABEL: @trunc_8f32(1948; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 41949; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41950; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41951; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41952; SSE2-NEXT:    [[LD4:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41953; SSE2-NEXT:    [[LD5:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 41954; SSE2-NEXT:    [[LD6:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 41955; SSE2-NEXT:    [[LD7:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 41956; SSE2-NEXT:    [[TRUNC0:%.*]] = call float @llvm.trunc.f32(float [[LD0]])1957; SSE2-NEXT:    [[TRUNC1:%.*]] = call float @llvm.trunc.f32(float [[LD1]])1958; SSE2-NEXT:    [[TRUNC2:%.*]] = call float @llvm.trunc.f32(float [[LD2]])1959; SSE2-NEXT:    [[TRUNC3:%.*]] = call float @llvm.trunc.f32(float [[LD3]])1960; SSE2-NEXT:    [[TRUNC4:%.*]] = call float @llvm.trunc.f32(float [[LD4]])1961; SSE2-NEXT:    [[TRUNC5:%.*]] = call float @llvm.trunc.f32(float [[LD5]])1962; SSE2-NEXT:    [[TRUNC6:%.*]] = call float @llvm.trunc.f32(float [[LD6]])1963; SSE2-NEXT:    [[TRUNC7:%.*]] = call float @llvm.trunc.f32(float [[LD7]])1964; SSE2-NEXT:    store float [[TRUNC0]], ptr @dst32, align 41965; SSE2-NEXT:    store float [[TRUNC1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 41966; SSE2-NEXT:    store float [[TRUNC2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 41967; SSE2-NEXT:    store float [[TRUNC3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 41968; SSE2-NEXT:    store float [[TRUNC4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41969; SSE2-NEXT:    store float [[TRUNC5]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 41970; SSE2-NEXT:    store float [[TRUNC6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 41971; SSE2-NEXT:    store float [[TRUNC7]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 41972; SSE2-NEXT:    ret void1973;1974; SSE41-LABEL: @trunc_8f32(1975; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 41976; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.trunc.v4f32(<4 x float> [[TMP1]])1977; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 41978; SSE41-NEXT:    [[TMP3:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41979; SSE41-NEXT:    [[TMP4:%.*]] = call <4 x float> @llvm.trunc.v4f32(<4 x float> [[TMP3]])1980; SSE41-NEXT:    store <4 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 41981; SSE41-NEXT:    ret void1982;1983; AVX-LABEL: @trunc_8f32(1984; AVX-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 41985; AVX-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.trunc.v8f32(<8 x float> [[TMP1]])1986; AVX-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 41987; AVX-NEXT:    ret void1988;1989  %ld0 = load float, ptr @src32, align 41990  %ld1 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 41991  %ld2 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 41992  %ld3 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 41993  %ld4 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 41994  %ld5 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 41995  %ld6 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 41996  %ld7 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 41997  %trunc0 = call float @llvm.trunc.f32(float %ld0)1998  %trunc1 = call float @llvm.trunc.f32(float %ld1)1999  %trunc2 = call float @llvm.trunc.f32(float %ld2)2000  %trunc3 = call float @llvm.trunc.f32(float %ld3)2001  %trunc4 = call float @llvm.trunc.f32(float %ld4)2002  %trunc5 = call float @llvm.trunc.f32(float %ld5)2003  %trunc6 = call float @llvm.trunc.f32(float %ld6)2004  %trunc7 = call float @llvm.trunc.f32(float %ld7)2005  store float %trunc0, ptr @dst32, align 42006  store float %trunc1, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 42007  store float %trunc2, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 42008  store float %trunc3, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 42009  store float %trunc4, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 42010  store float %trunc5, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 42011  store float %trunc6, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 42012  store float %trunc7, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 42013  ret void2014}2015 2016define void @trunc_16f32() #0 {2017; SSE2-LABEL: @trunc_16f32(2018; SSE2-NEXT:    [[LD0:%.*]] = load float, ptr @src32, align 42019; SSE2-NEXT:    [[LD1:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1), align 42020; SSE2-NEXT:    [[LD2:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2), align 42021; SSE2-NEXT:    [[LD3:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3), align 42022; SSE2-NEXT:    [[LD4:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 42023; SSE2-NEXT:    [[LD5:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5), align 42024; SSE2-NEXT:    [[LD6:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6), align 42025; SSE2-NEXT:    [[LD7:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7), align 42026; SSE2-NEXT:    [[LD8:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 42027; SSE2-NEXT:    [[LD9:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 9), align 42028; SSE2-NEXT:    [[LD10:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 10), align 42029; SSE2-NEXT:    [[LD11:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 11), align 42030; SSE2-NEXT:    [[LD12:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 42031; SSE2-NEXT:    [[LD13:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 13), align 42032; SSE2-NEXT:    [[LD14:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 14), align 42033; SSE2-NEXT:    [[LD15:%.*]] = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 15), align 42034; SSE2-NEXT:    [[TRUNC0:%.*]] = call float @llvm.trunc.f32(float [[LD0]])2035; SSE2-NEXT:    [[TRUNC1:%.*]] = call float @llvm.trunc.f32(float [[LD1]])2036; SSE2-NEXT:    [[TRUNC2:%.*]] = call float @llvm.trunc.f32(float [[LD2]])2037; SSE2-NEXT:    [[TRUNC3:%.*]] = call float @llvm.trunc.f32(float [[LD3]])2038; SSE2-NEXT:    [[TRUNC4:%.*]] = call float @llvm.trunc.f32(float [[LD4]])2039; SSE2-NEXT:    [[TRUNC5:%.*]] = call float @llvm.trunc.f32(float [[LD5]])2040; SSE2-NEXT:    [[TRUNC6:%.*]] = call float @llvm.trunc.f32(float [[LD6]])2041; SSE2-NEXT:    [[TRUNC7:%.*]] = call float @llvm.trunc.f32(float [[LD7]])2042; SSE2-NEXT:    [[TRUNC8:%.*]] = call float @llvm.trunc.f32(float [[LD8]])2043; SSE2-NEXT:    [[TRUNC9:%.*]] = call float @llvm.trunc.f32(float [[LD9]])2044; SSE2-NEXT:    [[TRUNC10:%.*]] = call float @llvm.trunc.f32(float [[LD10]])2045; SSE2-NEXT:    [[TRUNC11:%.*]] = call float @llvm.trunc.f32(float [[LD11]])2046; SSE2-NEXT:    [[TRUNC12:%.*]] = call float @llvm.trunc.f32(float [[LD12]])2047; SSE2-NEXT:    [[TRUNC13:%.*]] = call float @llvm.trunc.f32(float [[LD13]])2048; SSE2-NEXT:    [[TRUNC14:%.*]] = call float @llvm.trunc.f32(float [[LD14]])2049; SSE2-NEXT:    [[TRUNC15:%.*]] = call float @llvm.trunc.f32(float [[LD15]])2050; SSE2-NEXT:    store float [[TRUNC0]], ptr @dst32, align 42051; SSE2-NEXT:    store float [[TRUNC1]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1), align 42052; SSE2-NEXT:    store float [[TRUNC2]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2), align 42053; SSE2-NEXT:    store float [[TRUNC3]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3), align 42054; SSE2-NEXT:    store float [[TRUNC4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 42055; SSE2-NEXT:    store float [[TRUNC5]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5), align 42056; SSE2-NEXT:    store float [[TRUNC6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6), align 42057; SSE2-NEXT:    store float [[TRUNC7]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7), align 42058; SSE2-NEXT:    store float [[TRUNC8]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 42059; SSE2-NEXT:    store float [[TRUNC9]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 9), align 42060; SSE2-NEXT:    store float [[TRUNC10]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 10), align 42061; SSE2-NEXT:    store float [[TRUNC11]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 11), align 42062; SSE2-NEXT:    store float [[TRUNC12]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 42063; SSE2-NEXT:    store float [[TRUNC13]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 13), align 42064; SSE2-NEXT:    store float [[TRUNC14]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 14), align 42065; SSE2-NEXT:    store float [[TRUNC15]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 15), align 42066; SSE2-NEXT:    ret void2067;2068; SSE41-LABEL: @trunc_16f32(2069; SSE41-NEXT:    [[TMP1:%.*]] = load <4 x float>, ptr @src32, align 42070; SSE41-NEXT:    [[TMP2:%.*]] = call <4 x float> @llvm.trunc.v4f32(<4 x float> [[TMP1]])2071; SSE41-NEXT:    store <4 x float> [[TMP2]], ptr @dst32, align 42072; SSE41-NEXT:    [[TMP3:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4), align 42073; SSE41-NEXT:    [[TMP4:%.*]] = call <4 x float> @llvm.trunc.v4f32(<4 x float> [[TMP3]])2074; SSE41-NEXT:    store <4 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4), align 42075; SSE41-NEXT:    [[TMP5:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 42076; SSE41-NEXT:    [[TMP6:%.*]] = call <4 x float> @llvm.trunc.v4f32(<4 x float> [[TMP5]])2077; SSE41-NEXT:    store <4 x float> [[TMP6]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 42078; SSE41-NEXT:    [[TMP7:%.*]] = load <4 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 42079; SSE41-NEXT:    [[TMP8:%.*]] = call <4 x float> @llvm.trunc.v4f32(<4 x float> [[TMP7]])2080; SSE41-NEXT:    store <4 x float> [[TMP8]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 42081; SSE41-NEXT:    ret void2082;2083; AVX1-LABEL: @trunc_16f32(2084; AVX1-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 42085; AVX1-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.trunc.v8f32(<8 x float> [[TMP1]])2086; AVX1-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 42087; AVX1-NEXT:    [[TMP3:%.*]] = load <8 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 42088; AVX1-NEXT:    [[TMP4:%.*]] = call <8 x float> @llvm.trunc.v8f32(<8 x float> [[TMP3]])2089; AVX1-NEXT:    store <8 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 42090; AVX1-NEXT:    ret void2091;2092; AVX2-LABEL: @trunc_16f32(2093; AVX2-NEXT:    [[TMP1:%.*]] = load <8 x float>, ptr @src32, align 42094; AVX2-NEXT:    [[TMP2:%.*]] = call <8 x float> @llvm.trunc.v8f32(<8 x float> [[TMP1]])2095; AVX2-NEXT:    store <8 x float> [[TMP2]], ptr @dst32, align 42096; AVX2-NEXT:    [[TMP3:%.*]] = load <8 x float>, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8), align 42097; AVX2-NEXT:    [[TMP4:%.*]] = call <8 x float> @llvm.trunc.v8f32(<8 x float> [[TMP3]])2098; AVX2-NEXT:    store <8 x float> [[TMP4]], ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8), align 42099; AVX2-NEXT:    ret void2100;2101; AVX512-LABEL: @trunc_16f32(2102; AVX512-NEXT:    [[TMP1:%.*]] = load <16 x float>, ptr @src32, align 42103; AVX512-NEXT:    [[TMP2:%.*]] = call <16 x float> @llvm.trunc.v16f32(<16 x float> [[TMP1]])2104; AVX512-NEXT:    store <16 x float> [[TMP2]], ptr @dst32, align 42105; AVX512-NEXT:    ret void2106;2107  %ld0  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 0 ), align 42108  %ld1  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 1 ), align 42109  %ld2  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 2 ), align 42110  %ld3  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 3 ), align 42111  %ld4  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 4 ), align 42112  %ld5  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 5 ), align 42113  %ld6  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 6 ), align 42114  %ld7  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 7 ), align 42115  %ld8  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 8 ), align 42116  %ld9  = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 9 ), align 42117  %ld10 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 10), align 42118  %ld11 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 11), align 42119  %ld12 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 12), align 42120  %ld13 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 13), align 42121  %ld14 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 14), align 42122  %ld15 = load float, ptr getelementptr inbounds ([16 x float], ptr @src32, i32 0, i64 15), align 42123  %trunc0  = call float @llvm.trunc.f32(float %ld0 )2124  %trunc1  = call float @llvm.trunc.f32(float %ld1 )2125  %trunc2  = call float @llvm.trunc.f32(float %ld2 )2126  %trunc3  = call float @llvm.trunc.f32(float %ld3 )2127  %trunc4  = call float @llvm.trunc.f32(float %ld4 )2128  %trunc5  = call float @llvm.trunc.f32(float %ld5 )2129  %trunc6  = call float @llvm.trunc.f32(float %ld6 )2130  %trunc7  = call float @llvm.trunc.f32(float %ld7 )2131  %trunc8  = call float @llvm.trunc.f32(float %ld8 )2132  %trunc9  = call float @llvm.trunc.f32(float %ld9 )2133  %trunc10 = call float @llvm.trunc.f32(float %ld10)2134  %trunc11 = call float @llvm.trunc.f32(float %ld11)2135  %trunc12 = call float @llvm.trunc.f32(float %ld12)2136  %trunc13 = call float @llvm.trunc.f32(float %ld13)2137  %trunc14 = call float @llvm.trunc.f32(float %ld14)2138  %trunc15 = call float @llvm.trunc.f32(float %ld15)2139  store float %trunc0 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 0 ), align 42140  store float %trunc1 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 1 ), align 42141  store float %trunc2 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 2 ), align 42142  store float %trunc3 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 3 ), align 42143  store float %trunc4 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 4 ), align 42144  store float %trunc5 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 5 ), align 42145  store float %trunc6 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 6 ), align 42146  store float %trunc7 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 7 ), align 42147  store float %trunc8 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 8 ), align 42148  store float %trunc9 , ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 9 ), align 42149  store float %trunc10, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 10), align 42150  store float %trunc11, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 11), align 42151  store float %trunc12, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 12), align 42152  store float %trunc13, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 13), align 42153  store float %trunc14, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 14), align 42154  store float %trunc15, ptr getelementptr inbounds ([16 x float], ptr @dst32, i32 0, i64 15), align 42155  ret void2156}2157 2158attributes #0 = { nounwind }2159 2160