diff options
Diffstat (limited to 'llvm/test/Analysis')
-rw-r--r-- | llvm/test/Analysis/CostModel/X86/cast.ll | 38 | ||||
-rw-r--r-- | llvm/test/Analysis/CostModel/X86/sitofp.ll | 340 | ||||
-rw-r--r-- | llvm/test/Analysis/CostModel/X86/uitofp.ll | 418 |
3 files changed, 432 insertions, 364 deletions
diff --git a/llvm/test/Analysis/CostModel/X86/cast.ll b/llvm/test/Analysis/CostModel/X86/cast.ll index fb16af635f0..c518587c0e1 100644 --- a/llvm/test/Analysis/CostModel/X86/cast.ll +++ b/llvm/test/Analysis/CostModel/X86/cast.ll @@ -84,11 +84,11 @@ define i32 @zext_sext(<8 x i1> %in) { ;CHECK-AVX: cost of 4 {{.*}} zext %D = zext <4 x i32> undef to <4 x i64> - ;CHECK-AVX512: cost of 3 {{.*}} %D1 = zext - %D1 = zext <16 x i32> undef to <16 x i64> + ;CHECK-AVX512: cost of 1 {{.*}} %D1 = zext + %D1 = zext <8 x i32> undef to <8 x i64> - ;CHECK-AVX512: cost of 3 {{.*}} %D2 = sext - %D2 = sext <16 x i32> undef to <16 x i64> + ;CHECK-AVX512: cost of 1 {{.*}} %D2 = sext + %D2 = sext <8 x i32> undef to <8 x i64> ;CHECK-AVX512: cost of 1 {{.*}} %D3 = zext %D3 = zext <16 x i16> undef to <16 x i32> @@ -118,9 +118,11 @@ define i32 @zext_sext(<8 x i1> %in) { ;CHECK_AVX512: cost of 1 {{.*}} G = trunc %G = trunc <8 x i64> undef to <8 x i32> - ;CHECK-AVX512: cost of 4 {{.*}} %G1 = trunc - %G1 = trunc <16 x i64> undef to <16 x i32> + ;CHECK-AVX512: cost of 1 {{.*}} %G1 = trunc + %G1 = trunc <16 x i32> undef to <16 x i16> + ;CHECK-AVX512: cost of 1 {{.*}} %G2 = trunc + %G2 = trunc <16 x i32> undef to <16 x i8> ret i32 undef } @@ -207,38 +209,40 @@ define void @uitofp4(<4 x i1> %a, <4 x i8> %b, <4 x i16> %c, <4 x i32> %d) { ; CHECK: cost of 2 {{.*}} uitofp %C2 = uitofp <4 x i16> %c to <4 x double> - ; CHECK: cost of 6 {{.*}} uitofp + ; CHECK-AVX2: cost of 6 {{.*}} uitofp %D1 = uitofp <4 x i32> %d to <4 x float> - ; CHECK: cost of 6 {{.*}} uitofp + ; CHECK-AVX2: cost of 6 {{.*}} uitofp %D2 = uitofp <4 x i32> %d to <4 x double> ret void } define void @uitofp8(<8 x i1> %a, <8 x i8> %b, <8 x i16> %c, <8 x i32> %d) { ; CHECK-LABEL: for function 'uitofp8' - ; CHECK: cost of 6 {{.*}} uitofp + ; CHECK-AVX2: cost of 6 {{.*}} uitofp %A1 = uitofp <8 x i1> %a to <8 x float> - ; CHECK: cost of 5 {{.*}} uitofp + ; CHECK-AVX2: cost of 5 {{.*}} uitofp + ; CHECK-AVX512: cost of 2 {{.*}} uitofp %B1 = uitofp <8 x i8> %b to <8 x float> - ; CHECK: cost of 5 {{.*}} uitofp + ; CHECK-AVX2: cost of 5 {{.*}} uitofp + ; CHECK-AVX512: cost of 2 {{.*}} uitofp %C1 = uitofp <8 x i16> %c to <8 x float> ; CHECK-AVX2: cost of 8 {{.*}} uitofp - ; CHECK-AVX512: cost of 8 {{.*}} uitofp + ; CHECK-AVX512: cost of 1 {{.*}} uitofp ; CHECK-AVX: cost of 9 {{.*}} uitofp %D1 = uitofp <8 x i32> %d to <8 x float> ret void } -define void @fp_conv(<8 x float> %a, <16 x float>%b) { +define void @fp_conv(<8 x float> %a, <16 x float>%b, <4 x float> %c) { ;CHECK-LABEL: for function 'fp_conv' ; CHECK-AVX512: cost of 1 {{.*}} fpext %A1 = fpext <8 x float> %a to <8 x double> - ; CHECK-AVX512: cost of 3 {{.*}} fpext - %A2 = fpext <16 x float> %b to <16 x double> + ; CHECK-AVX512: cost of 1 {{.*}} fpext + %A2 = fpext <4 x float> %c to <4 x double> ; CHECK-AVX2: cost of 3 {{.*}} %A3 = fpext ; CHECK-AVX512: cost of 1 {{.*}} %A3 = fpext @@ -248,7 +252,7 @@ define void @fp_conv(<8 x float> %a, <16 x float>%b) { ; CHECK-AVX512: cost of 1 {{.*}} %A4 = fptrunc %A4 = fptrunc <8 x double> undef to <8 x float> - ; CHECK-AVX512: cost of 3 {{.*}} %A5 = fptrunc - %A5 = fptrunc <16 x double> undef to <16 x float> + ; CHECK-AVX512: cost of 1 {{.*}} %A5 = fptrunc + %A5 = fptrunc <4 x double> undef to <4 x float> ret void } diff --git a/llvm/test/Analysis/CostModel/X86/sitofp.ll b/llvm/test/Analysis/CostModel/X86/sitofp.ll index dcd0088d0df..9913a489691 100644 --- a/llvm/test/Analysis/CostModel/X86/sitofp.ll +++ b/llvm/test/Analysis/CostModel/X86/sitofp.ll @@ -4,656 +4,656 @@ ; RUN: opt -mtriple=x86_64-apple-darwin -mattr=+avx512f -cost-model -analyze < %s | FileCheck --check-prefix=AVX512F %s define <2 x double> @sitofpv2i8v2double(<2 x i8> %a) { - ; SSE2: sitofpv2i8v2double + ; SSE2-LABEL: sitofpv2i8v2double ; SSE2: cost of 20 {{.*}} sitofp ; - ; AVX1: sitofpv2i8v2double + ; AVX1-LABEL: sitofpv2i8v2double ; AVX1: cost of 4 {{.*}} sitofp ; - ; AVX2: sitofpv2i8v2double + ; AVX2-LABEL: sitofpv2i8v2double ; AVX2: cost of 4 {{.*}} sitofp ; - ; AVX512F: sitofpv2i8v2double + ; AVX512F-LABEL: sitofpv2i8v2double ; AVX512F: cost of 4 {{.*}} sitofp %1 = sitofp <2 x i8> %a to <2 x double> ret <2 x double> %1 } define <4 x double> @sitofpv4i8v4double(<4 x i8> %a) { - ; SSE2: sitofpv4i8v4double + ; SSE2-LABEL: sitofpv4i8v4double ; SSE2: cost of 40 {{.*}} sitofp ; - ; AVX1: sitofpv4i8v4double + ; AVX1-LABEL: sitofpv4i8v4double ; AVX1: cost of 3 {{.*}} sitofp ; - ; AVX2: sitofpv4i8v4double + ; AVX2-LABEL: sitofpv4i8v4double ; AVX2: cost of 3 {{.*}} sitofp ; - ; AVX512F: sitofpv4i8v4double + ; AVX512F-LABEL: sitofpv4i8v4double ; AVX512F: cost of 3 {{.*}} sitofp %1 = sitofp <4 x i8> %a to <4 x double> ret <4 x double> %1 } define <8 x double> @sitofpv8i8v8double(<8 x i8> %a) { - ; SSE2: sitofpv8i8v8double + ; SSE2-LABEL: sitofpv8i8v8double ; SSE2: cost of 80 {{.*}} sitofp ; - ; AVX1: sitofpv8i8v8double + ; AVX1-LABEL: sitofpv8i8v8double ; AVX1: cost of 20 {{.*}} sitofp ; - ; AVX2: sitofpv8i8v8double + ; AVX2-LABEL: sitofpv8i8v8double ; AVX2: cost of 20 {{.*}} sitofp ; - ; AVX512F: sitofpv8i8v8double + ; AVX512F-LABEL: sitofpv8i8v8double ; AVX512F: cost of 2 {{.*}} sitofp %1 = sitofp <8 x i8> %a to <8 x double> ret <8 x double> %1 } define <16 x double> @sitofpv16i8v16double(<16 x i8> %a) { - ; SSE2: sitofpv16i8v16double + ; SSE2-LABEL: sitofpv16i8v16double ; SSE2: cost of 160 {{.*}} sitofp ; - ; AVX1: sitofpv16i8v16double + ; AVX1-LABEL: sitofpv16i8v16double ; AVX1: cost of 40 {{.*}} sitofp ; - ; AVX2: sitofpv16i8v16double + ; AVX2-LABEL: sitofpv16i8v16double ; AVX2: cost of 40 {{.*}} sitofp ; - ; AVX512F: sitofpv16i8v16double + ; AVX512F-LABEL: sitofpv16i8v16double ; AVX512F: cost of 44 {{.*}} sitofp %1 = sitofp <16 x i8> %a to <16 x double> ret <16 x double> %1 } define <32 x double> @sitofpv32i8v32double(<32 x i8> %a) { - ; SSE2: sitofpv32i8v32double + ; SSE2-LABEL: sitofpv32i8v32double ; SSE2: cost of 320 {{.*}} sitofp ; - ; AVX1: sitofpv32i8v32double + ; AVX1-LABEL: sitofpv32i8v32double ; AVX1: cost of 80 {{.*}} sitofp ; - ; AVX2: sitofpv32i8v32double + ; AVX2-LABEL: sitofpv32i8v32double ; AVX2: cost of 80 {{.*}} sitofp ; - ; AVX512F: sitofpv32i8v32double + ; AVX512F-LABEL: sitofpv32i8v32double ; AVX512F: cost of 88 {{.*}} sitofp %1 = sitofp <32 x i8> %a to <32 x double> ret <32 x double> %1 } define <2 x double> @sitofpv2i16v2double(<2 x i16> %a) { - ; SSE2: sitofpv2i16v2double + ; SSE2-LABEL: sitofpv2i16v2double ; SSE2: cost of 20 {{.*}} sitofp ; - ; AVX1: sitofpv2i16v2double + ; AVX1-LABEL: sitofpv2i16v2double ; AVX1: cost of 4 {{.*}} sitofp ; - ; AVX2: sitofpv2i16v2double + ; AVX2-LABEL: sitofpv2i16v2double ; AVX2: cost of 4 {{.*}} sitofp ; - ; AVX512F: sitofpv2i16v2double + ; AVX512F-LABEL: sitofpv2i16v2double ; AVX512F: cost of 4 {{.*}} sitofp %1 = sitofp <2 x i16> %a to <2 x double> ret <2 x double> %1 } define <4 x double> @sitofpv4i16v4double(<4 x i16> %a) { - ; SSE2: sitofpv4i16v4double + ; SSE2-LABEL: sitofpv4i16v4double ; SSE2: cost of 40 {{.*}} sitofp ; - ; AVX1: sitofpv4i16v4double + ; AVX1-LABEL: sitofpv4i16v4double ; AVX1: cost of 3 {{.*}} sitofp ; - ; AVX2: sitofpv4i16v4double + ; AVX2-LABEL: sitofpv4i16v4double ; AVX2: cost of 3 {{.*}} sitofp ; - ; AVX512F: sitofpv4i16v4double + ; AVX512F-LABEL: sitofpv4i16v4double ; AVX512F: cost of 3 {{.*}} sitofp %1 = sitofp <4 x i16> %a to <4 x double> ret <4 x double> %1 } define <8 x double> @sitofpv8i16v8double(<8 x i16> %a) { - ; SSE2: sitofpv8i16v8double + ; SSE2-LABEL: sitofpv8i16v8double ; SSE2: cost of 80 {{.*}} sitofp ; - ; AVX1: sitofpv8i16v8double + ; AVX1-LABEL: sitofpv8i16v8double ; AVX1: cost of 20 {{.*}} sitofp ; - ; AVX2: sitofpv8i16v8double + ; AVX2-LABEL: sitofpv8i16v8double ; AVX2: cost of 20 {{.*}} sitofp ; - ; AVX512F: sitofpv8i16v8double + ; AVX512F-LABEL: sitofpv8i16v8double ; AVX512F: cost of 2 {{.*}} sitofp %1 = sitofp <8 x i16> %a to <8 x double> ret <8 x double> %1 } define <16 x double> @sitofpv16i16v16double(<16 x i16> %a) { - ; SSE2: sitofpv16i16v16double + ; SSE2-LABEL: sitofpv16i16v16double ; SSE2: cost of 160 {{.*}} sitofp ; - ; AVX1: sitofpv16i16v16double + ; AVX1-LABEL: sitofpv16i16v16double ; AVX1: cost of 40 {{.*}} sitofp ; - ; AVX2: sitofpv16i16v16double + ; AVX2-LABEL: sitofpv16i16v16double ; AVX2: cost of 40 {{.*}} sitofp ; - ; AVX512F: sitofpv16i16v16double + ; AVX512F-LABEL: sitofpv16i16v16double ; AVX512F: cost of 44 {{.*}} sitofp %1 = sitofp <16 x i16> %a to <16 x double> ret <16 x double> %1 } define <32 x double> @sitofpv32i16v32double(<32 x i16> %a) { - ; SSE2: sitofpv32i16v32double + ; SSE2-LABEL: sitofpv32i16v32double ; SSE2: cost of 320 {{.*}} sitofp ; - ; AVX1: sitofpv32i16v32double + ; AVX1-LABEL: sitofpv32i16v32double ; AVX1: cost of 80 {{.*}} sitofp ; - ; AVX2: sitofpv32i16v32double + ; AVX2-LABEL: sitofpv32i16v32double ; AVX2: cost of 80 {{.*}} sitofp ; - ; AVX512F: sitofpv32i16v32double + ; AVX512F-LABEL: sitofpv32i16v32double ; AVX512F: cost of 88 {{.*}} sitofp %1 = sitofp <32 x i16> %a to <32 x double> ret <32 x double> %1 } define <2 x double> @sitofpv2i32v2double(<2 x i32> %a) { - ; SSE2: sitofpv2i32v2double + ; SSE2-LABEL: sitofpv2i32v2double ; SSE2: cost of 20 {{.*}} sitofp ; - ; AVX1: sitofpv2i32v2double + ; AVX1-LABEL: sitofpv2i32v2double ; AVX1: cost of 4 {{.*}} sitofp ; - ; AVX2: sitofpv2i32v2double + ; AVX2-LABEL: sitofpv2i32v2double ; AVX2: cost of 4 {{.*}} sitofp ; - ; AVX512F: sitofpv2i32v2double + ; AVX512F-LABEL: sitofpv2i32v2double ; AVX512F: cost of 4 {{.*}} sitofp %1 = sitofp <2 x i32> %a to <2 x double> ret <2 x double> %1 } define <4 x double> @sitofpv4i32v4double(<4 x i32> %a) { - ; SSE2: sitofpv4i32v4double + ; SSE2-LABEL: sitofpv4i32v4double ; SSE2: cost of 40 {{.*}} sitofp ; - ; AVX1: sitofpv4i32v4double + ; AVX1-LABEL: sitofpv4i32v4double ; AVX1: cost of 1 {{.*}} sitofp ; - ; AVX2: sitofpv4i32v4double + ; AVX2-LABEL: sitofpv4i32v4double ; AVX2: cost of 1 {{.*}} sitofp ; - ; AVX512F: sitofpv4i32v4double + ; AVX512F-LABEL: sitofpv4i32v4double ; AVX512F: cost of 1 {{.*}} sitofp %1 = sitofp <4 x i32> %a to <4 x double> ret <4 x double> %1 } define <8 x double> @sitofpv8i32v8double(<8 x i32> %a) { - ; SSE2: sitofpv8i32v8double + ; SSE2-LABEL: sitofpv8i32v8double ; SSE2: cost of 80 {{.*}} sitofp ; - ; AVX1: sitofpv8i32v8double + ; AVX1-LABEL: sitofpv8i32v8double ; AVX1: cost of 20 {{.*}} sitofp ; - ; AVX2: sitofpv8i32v8double + ; AVX2-LABEL: sitofpv8i32v8double ; AVX2: cost of 20 {{.*}} sitofp ; - ; AVX512F: sitofpv8i32v8double + ; AVX512F-LABEL: sitofpv8i32v8double ; AVX512F: cost of 1 {{.*}} sitofp %1 = sitofp <8 x i32> %a to <8 x double> ret <8 x double> %1 } define <16 x double> @sitofpv16i32v16double(<16 x i32> %a) { - ; SSE2: sitofpv16i32v16double + ; SSE2-LABEL: sitofpv16i32v16double ; SSE2: cost of 160 {{.*}} sitofp ; - ; AVX1: sitofpv16i32v16double + ; AVX1-LABEL: sitofpv16i32v16double ; AVX1: cost of 40 {{.*}} sitofp ; - ; AVX2: sitofpv16i32v16double + ; AVX2-LABEL: sitofpv16i32v16double ; AVX2: cost of 40 {{.*}} sitofp ; - ; AVX512F: sitofpv16i32v16double + ; AVX512F-LABEL: sitofpv16i32v16double ; AVX512F: cost of 44 {{.*}} sitofp %1 = sitofp <16 x i32> %a to <16 x double> ret <16 x double> %1 } define <32 x double> @sitofpv32i32v32double(<32 x i32> %a) { - ; SSE2: sitofpv32i32v32double + ; SSE2-LABEL: sitofpv32i32v32double ; SSE2: cost of 320 {{.*}} sitofp ; - ; AVX1: sitofpv32i32v32double + ; AVX1-LABEL: sitofpv32i32v32double ; AVX1: cost of 80 {{.*}} sitofp ; - ; AVX2: sitofpv32i32v32double + ; AVX2-LABEL: sitofpv32i32v32double ; AVX2: cost of 80 {{.*}} sitofp ; - ; AVX512F: sitofpv32i32v32double + ; AVX512F-LABEL: sitofpv32i32v32double ; AVX512F: cost of 88 {{.*}} sitofp %1 = sitofp <32 x i32> %a to <32 x double> ret <32 x double> %1 } define <2 x double> @sitofpv2i64v2double(<2 x i64> %a) { - ; SSE2: sitofpv2i64v2double + ; SSE2-LABEL: sitofpv2i64v2double ; SSE2: cost of 20 {{.*}} sitofp ; - ; AVX1: sitofpv2i64v2double + ; AVX1-LABEL: sitofpv2i64v2double ; AVX1: cost of 4 {{.*}} sitofp ; - ; AVX2: sitofpv2i64v2double + ; AVX2-LABEL: sitofpv2i64v2double ; AVX2: cost of 4 {{.*}} sitofp ; - ; AVX512F: sitofpv2i64v2double + ; AVX512F-LABEL: sitofpv2i64v2double ; AVX512F: cost of 4 {{.*}} sitofp %1 = sitofp <2 x i64> %a to <2 x double> ret <2 x double> %1 } define <4 x double> @sitofpv4i64v4double(<4 x i64> %a) { - ; SSE2: sitofpv4i64v4double + ; SSE2-LABEL: sitofpv4i64v4double ; SSE2: cost of 40 {{.*}} sitofp ; - ; AVX1: sitofpv4i64v4double + ; AVX1-LABEL: sitofpv4i64v4double ; AVX1: cost of 10 {{.*}} sitofp ; - ; AVX2: sitofpv4i64v4double + ; AVX2-LABEL: sitofpv4i64v4double ; AVX2: cost of 10 {{.*}} sitofp ; - ; AVX512F: sitofpv4i64v4double + ; AVX512F-LABEL: sitofpv4i64v4double ; AVX512F: cost of 10 {{.*}} sitofp %1 = sitofp <4 x i64> %a to <4 x double> ret <4 x double> %1 } define <8 x double> @sitofpv8i64v8double(<8 x i64> %a) { - ; SSE2: sitofpv8i64v8double + ; SSE2-LABEL: sitofpv8i64v8double ; SSE2: cost of 80 {{.*}} sitofp ; - ; AVX1: sitofpv8i64v8double + ; AVX1-LABEL: sitofpv8i64v8double ; AVX1: cost of 20 {{.*}} sitofp ; - ; AVX2: sitofpv8i64v8double + ; AVX2-LABEL: sitofpv8i64v8double ; AVX2: cost of 20 {{.*}} sitofp ; - ; AVX512F: sitofpv8i64v8double + ; AVX512F-LABEL: sitofpv8i64v8double ; AVX512F: cost of 22 {{.*}} sitofp %1 = sitofp <8 x i64> %a to <8 x double> ret <8 x double> %1 } define <16 x double> @sitofpv16i64v16double(<16 x i64> %a) { - ; SSE2: sitofpv16i64v16double + ; SSE2-LABEL: sitofpv16i64v16double ; SSE2: cost of 160 {{.*}} sitofp ; - ; AVX1: sitofpv16i64v16double + ; AVX1-LABEL: sitofpv16i64v16double ; AVX1: cost of 40 {{.*}} sitofp ; - ; AVX2: sitofpv16i64v16double + ; AVX2-LABEL: sitofpv16i64v16double ; AVX2: cost of 40 {{.*}} sitofp ; - ; AVX512F: sitofpv16i64v16double + ; AVX512F-LABEL: sitofpv16i64v16double ; AVX512F: cost of 44 {{.*}} sitofp %1 = sitofp <16 x i64> %a to <16 x double> ret <16 x double> %1 } define <32 x double> @sitofpv32i64v32double(<32 x i64> %a) { - ; SSE2: sitofpv32i64v32double + ; SSE2-LABEL: sitofpv32i64v32double ; SSE2: cost of 320 {{.*}} sitofp ; - ; AVX1: sitofpv32i64v32double + ; AVX1-LABEL: sitofpv32i64v32double ; AVX1: cost of 80 {{.*}} sitofp ; - ; AVX2: sitofpv32i64v32double + ; AVX2-LABEL: sitofpv32i64v32double ; AVX2: cost of 80 {{.*}} sitofp ; - ; AVX512F: sitofpv32i64v32double + ; AVX512F-LABEL: sitofpv32i64v32double ; AVX512F: cost of 88 {{.*}} sitofp %1 = sitofp <32 x i64> %a to <32 x double> ret <32 x double> %1 } define <2 x float> @sitofpv2i8v2float(<2 x i8> %a) { - ; SSE2: sitofpv2i8v2float + ; SSE2-LABEL: sitofpv2i8v2float ; SSE2: cost of 15 {{.*}} sitofp ; - ; AVX1: sitofpv2i8v2float + ; AVX1-LABEL: sitofpv2i8v2float ; AVX1: cost of 4 {{.*}} sitofp ; - ; AVX2: sitofpv2i8v2float + ; AVX2-LABEL: sitofpv2i8v2float ; AVX2: cost of 4 {{.*}} sitofp ; - ; AVX512F: sitofpv2i8v2float + ; AVX512F-LABEL: sitofpv2i8v2float ; AVX512F: cost of 4 {{.*}} sitofp %1 = sitofp <2 x i8> %a to <2 x float> ret <2 x float> %1 } define <4 x float> @sitofpv4i8v4float(<4 x i8> %a) { - ; SSE2: sitofpv4i8v4float + ; SSE2-LABEL: sitofpv4i8v4float ; SSE2: cost of 15 {{.*}} sitofp ; - ; AVX1: sitofpv4i8v4float + ; AVX1-LABEL: sitofpv4i8v4float ; AVX1: cost of 3 {{.*}} sitofp ; - ; AVX2: sitofpv4i8v4float + ; AVX2-LABEL: sitofpv4i8v4float ; AVX2: cost of 3 {{.*}} sitofp ; - ; AVX512F: sitofpv4i8v4float + ; AVX512F-LABEL: sitofpv4i8v4float ; AVX512F: cost of 3 {{.*}} sitofp %1 = sitofp <4 x i8> %a to <4 x float> ret <4 x float> %1 } define <8 x float> @sitofpv8i8v8float(<8 x i8> %a) { - ; SSE2: sitofpv8i8v8float + ; SSE2-LABEL: sitofpv8i8v8float ; SSE2: cost of 15 {{.*}} sitofp ; - ; AVX1: sitofpv8i8v8float + ; AVX1-LABEL: sitofpv8i8v8float ; AVX1: cost of 8 {{.*}} sitofp ; - ; AVX2: sitofpv8i8v8float + ; AVX2-LABEL: sitofpv8i8v8float ; AVX2: cost of 8 {{.*}} sitofp ; - ; AVX512F: sitofpv8i8v8float + ; AVX512F-LABEL: sitofpv8i8v8float ; AVX512F: cost of 8 {{.*}} sitofp %1 = sitofp <8 x i8> %a to <8 x float> ret <8 x float> %1 } define <16 x float> @sitofpv16i8v16float(<16 x i8> %a) { - ; SSE2: sitofpv16i8v16float + ; SSE2-LABEL: sitofpv16i8v16float ; SSE2: cost of 8 {{.*}} sitofp ; - ; AVX1: sitofpv16i8v16float + ; AVX1-LABEL: sitofpv16i8v16float ; AVX1: cost of 44 {{.*}} sitofp ; - ; AVX2: sitofpv16i8v16float + ; AVX2-LABEL: sitofpv16i8v16float ; AVX2: cost of 44 {{.*}} sitofp ; - ; AVX512F: sitofpv16i8v16float + ; AVX512F-LABEL: sitofpv16i8v16float ; AVX512F: cost of 2 {{.*}} sitofp %1 = sitofp <16 x i8> %a to <16 x float> ret <16 x float> %1 } define <32 x float> @sitofpv32i8v32float(<32 x i8> %a) { - ; SSE2: sitofpv32i8v32float + ; SSE2-LABEL: sitofpv32i8v32float ; SSE2: cost of 16 {{.*}} sitofp ; - ; AVX1: sitofpv32i8v32float + ; AVX1-LABEL: sitofpv32i8v32float ; AVX1: cost of 88 {{.*}} sitofp ; - ; AVX2: sitofpv32i8v32float + ; AVX2-LABEL: sitofpv32i8v32float ; AVX2: cost of 88 {{.*}} sitofp ; - ; AVX512F: sitofpv32i8v32float + ; AVX512F-LABEL: sitofpv32i8v32float ; AVX512F: cost of 92 {{.*}} sitofp %1 = sitofp <32 x i8> %a to <32 x float> ret <32 x float> %1 } define <2 x float> @sitofpv2i16v2float(<2 x i16> %a) { - ; SSE2: sitofpv2i16v2float + ; SSE2-LABEL: sitofpv2i16v2float ; SSE2: cost of 15 {{.*}} sitofp ; - ; AVX1: sitofpv2i16v2float + ; AVX1-LABEL: sitofpv2i16v2float ; AVX1: cost of 4 {{.*}} sitofp ; - ; AVX2: sitofpv2i16v2float + ; AVX2-LABEL: sitofpv2i16v2float ; AVX2: cost of 4 {{.*}} sitofp ; - ; AVX512F: sitofpv2i16v2float + ; AVX512F-LABEL: sitofpv2i16v2float ; AVX512F: cost of 4 {{.*}} sitofp %1 = sitofp <2 x i16> %a to <2 x float> ret <2 x float> %1 } define <4 x float> @sitofpv4i16v4float(<4 x i16> %a) { - ; SSE2: sitofpv4i16v4float + ; SSE2-LABEL: sitofpv4i16v4float ; SSE2: cost of 15 {{.*}} sitofp ; - ; AVX1: sitofpv4i16v4float + ; AVX1-LABEL: sitofpv4i16v4float ; AVX1: cost of 3 {{.*}} sitofp ; - ; AVX2: sitofpv4i16v4float + ; AVX2-LABEL: sitofpv4i16v4float ; AVX2: cost of 3 {{.*}} sitofp ; - ; AVX512F: sitofpv4i16v4float + ; AVX512F-LABEL: sitofpv4i16v4float ; AVX512F: cost of 3 {{.*}} sitofp %1 = sitofp <4 x i16> %a to <4 x float> ret <4 x float> %1 } define <8 x float> @sitofpv8i16v8float(<8 x i16> %a) { - ; SSE2: sitofpv8i16v8float + ; SSE2-LABEL: sitofpv8i16v8float ; SSE2: cost of 15 {{.*}} sitofp ; - ; AVX1: sitofpv8i16v8float + ; AVX1-LABEL: sitofpv8i16v8float ; AVX1: cost of 5 {{.*}} sitofp ; - ; AVX2: sitofpv8i16v8float + ; AVX2-LABEL: sitofpv8i16v8float ; AVX2: cost of 5 {{.*}} sitofp ; - ; AVX512F: sitofpv8i16v8float + ; AVX512F-LABEL: sitofpv8i16v8float ; AVX512F: cost of 5 {{.*}} sitofp %1 = sitofp <8 x i16> %a to <8 x float> ret <8 x float> %1 } define <16 x float> @sitofpv16i16v16float(<16 x i16> %a) { - ; SSE2: sitofpv16i16v16float + ; SSE2-LABEL: sitofpv16i16v16float ; SSE2: cost of 30 {{.*}} sitofp ; - ; AVX1: sitofpv16i16v16float + ; AVX1-LABEL: sitofpv16i16v16float ; AVX1: cost of 44 {{.*}} sitofp ; - ; AVX2: sitofpv16i16v16float + ; AVX2-LABEL: sitofpv16i16v16float ; AVX2: cost of 44 {{.*}} sitofp ; - ; AVX512F: sitofpv16i16v16float + ; AVX512F-LABEL: sitofpv16i16v16float ; AVX512F: cost of 2 {{.*}} sitofp %1 = sitofp <16 x i16> %a to <16 x float> ret <16 x float> %1 } define <32 x float> @sitofpv32i16v32float(<32 x i16> %a) { - ; SSE2: sitofpv32i16v32float + ; SSE2-LABEL: sitofpv32i16v32float ; SSE2: cost of 60 {{.*}} sitofp ; - ; AVX1: sitofpv32i16v32float + ; AVX1-LABEL: sitofpv32i16v32float ; AVX1: cost of 88 {{.*}} sitofp ; - ; AVX2: sitofpv32i16v32float + ; AVX2-LABEL: sitofpv32i16v32float ; AVX2: cost of 88 {{.*}} sitofp ; - ; AVX512F: sitofpv32i16v32float - ; AVX512F: cost of 2 {{.*}} sitofp + ; AVX512F-LABEL: sitofpv32i16v32float + ; AVX512F: cost of 92 {{.*}} sitofp %1 = sitofp <32 x i16> %a to <32 x float> ret <32 x float> %1 } define <2 x float> @sitofpv2i32v2float(<2 x i32> %a) { - ; SSE2: sitofpv2i32v2float + ; SSE2-LABEL: sitofpv2i32v2float ; SSE2: cost of 15 {{.*}} sitofp ; - ; AVX1: sitofpv2i32v2float + ; AVX1-LABEL: sitofpv2i32v2float ; AVX1: cost of 4 {{.*}} sitofp ; - ; AVX2: sitofpv2i32v2float + ; AVX2-LABEL: sitofpv2i32v2float ; AVX2: cost of 4 {{.*}} sitofp ; - ; AVX512F: sitofpv2i32v2float + ; AVX512F-LABEL: sitofpv2i32v2float ; AVX512F: cost of 4 {{.*}} sitofp %1 = sitofp <2 x i32> %a to <2 x float> ret <2 x float> %1 } define <4 x float> @sitofpv4i32v4float(<4 x i32> %a) { - ; SSE2: sitofpv4i32v4float + ; SSE2-LABEL: sitofpv4i32v4float ; SSE2: cost of 15 {{.*}} sitofp ; - ; AVX1: sitofpv4i32v4float + ; AVX1-LABEL: sitofpv4i32v4float ; AVX1: cost of 1 {{.*}} sitofp ; - ; AVX2: sitofpv4i32v4float + ; AVX2-LABEL: sitofpv4i32v4float ; AVX2: cost of 1 {{.*}} sitofp ; - ; AVX512F: sitofpv4i32v4float + ; AVX512F-LABEL: sitofpv4i32v4float ; AVX512F: cost of 1 {{.*}} sitofp %1 = sitofp <4 x i32> %a to <4 x float> ret <4 x float> %1 } define <8 x float> @sitofpv8i32v8float(<8 x i32> %a) { - ; SSE2: sitofpv8i32v8float + ; SSE2-LABEL: sitofpv8i32v8float ; SSE2: cost of 30 {{.*}} sitofp ; - ; AVX1: sitofpv8i32v8float + ; AVX1-LABEL: sitofpv8i32v8float ; AVX1: cost of 1 {{.*}} sitofp ; - ; AVX2: sitofpv8i32v8float + ; AVX2-LABEL: sitofpv8i32v8float ; AVX2: cost of 1 {{.*}} sitofp ; - ; AVX512F: sitofpv8i32v8float + ; AVX512F-LABEL: sitofpv8i32v8float ; AVX512F: cost of 1 {{.*}} sitofp %1 = sitofp <8 x i32> %a to <8 x float> ret <8 x float> %1 } define <16 x float> @sitofpv16i32v16float(<16 x i32> %a) { - ; SSE2: sitofpv16i32v16float + ; SSE2-LABEL: sitofpv16i32v16float ; SSE2: cost of 60 {{.*}} sitofp ; - ; AVX1: sitofpv16i32v16float + ; AVX1-LABEL: sitofpv16i32v16float ; AVX1: cost of 44 {{.*}} sitofp ; - ; AVX2: sitofpv16i32v16float + ; AVX2-LABEL: sitofpv16i32v16float ; AVX2: cost of 44 {{.*}} sitofp ; - ; AVX512F: sitofpv16i32v16float + ; AVX512F-LABEL: sitofpv16i32v16float ; AVX512F: cost of 1 {{.*}} sitofp %1 = sitofp <16 x i32> %a to <16 x float> ret <16 x float> %1 } define <32 x float> @sitofpv32i32v32float(<32 x i32> %a) { - ; SSE2: sitofpv32i32v32float + ; SSE2-LABEL: sitofpv32i32v32float ; SSE2: cost of 120 {{.*}} sitofp ; - ; AVX1: sitofpv32i32v32float + ; AVX1-LABEL: sitofpv32i32v32float ; AVX1: cost of 88 {{.*}} sitofp ; - ; AVX2: sitofpv32i32v32float + ; AVX2-LABEL: sitofpv32i32v32float ; AVX2: cost of 88 {{.*}} sitofp ; - ; AVX512F: sitofpv32i32v32float - ; AVX512F: cost of 1 {{.*}} sitofp + ; AVX512F-LABEL: sitofpv32i32v32float + ; AVX512F: cost of 92 {{.*}} sitofp %1 = sitofp <32 x i32> %a to <32 x float> ret <32 x float> %1 } define <2 x float> @sitofpv2i64v2float(<2 x i64> %a) { - ; SSE2: sitofpv2i64v2float + ; SSE2-LABEL: sitofpv2i64v2float ; SSE2: cost of 15 {{.*}} sitofp ; - ; AVX1: sitofpv2i64v2float + ; AVX1-LABEL: sitofpv2i64v2float ; AVX1: cost of 4 {{.*}} sitofp ; - ; AVX2: sitofpv2i64v2float + ; AVX2-LABEL: sitofpv2i64v2float ; AVX2: cost of 4 {{.*}} sitofp ; - ; AVX512F: sitofpv2i64v2float + ; AVX512F-LABEL: sitofpv2i64v2float ; AVX512F: cost of 4 {{.*}} sitofp %1 = sitofp <2 x i64> %a to <2 x float> ret <2 x float> %1 } define <4 x float> @sitofpv4i64v4float(<4 x i64> %a) { - ; SSE2: sitofpv4i64v4float + ; SSE2-LABEL: sitofpv4i64v4float ; SSE2: cost of 30 {{.*}} sitofp ; - ; AVX1: sitofpv4i64v4float + ; AVX1-LABEL: sitofpv4i64v4float ; AVX1: cost of 10 {{.*}} sitofp ; - ; AVX2: sitofpv4i64v4float + ; AVX2-LABEL: sitofpv4i64v4float ; AVX2: cost of 10 {{.*}} sitofp ; - ; AVX512F: sitofpv4i64v4float + ; AVX512F-LABEL: sitofpv4i64v4float ; AVX512F: cost of 10 {{.*}} sitofp %1 = sitofp <4 x i64> %a to <4 x float> ret <4 x float> %1 } define <8 x float> @sitofpv8i64v8float(<8 x i64> %a) { - ; SSE2: sitofpv8i64v8float + ; SSE2-LABEL: sitofpv8i64v8float ; SSE2: cost of 60 {{.*}} sitofp ; - ; AVX1: sitofpv8i64v8float + ; AVX1-LABEL: sitofpv8i64v8float ; AVX1: cost of 22 {{.*}} sitofp ; - ; AVX2: sitofpv8i64v8float + ; AVX2-LABEL: sitofpv8i64v8float ; AVX2: cost of 22 {{.*}} sitofp ; - ; AVX512F: sitofpv8i64v8float + ; AVX512F-LABEL: sitofpv8i64v8float ; AVX512F: cost of 22 {{.*}} sitofp %1 = sitofp <8 x i64> %a to <8 x float> ret <8 x float> %1 } define <16 x float> @sitofpv16i64v16float(<16 x i64> %a) { - ; SSE2: sitofpv16i64v16float + ; SSE2-LABEL: sitofpv16i64v16float ; SSE2: cost of 120 {{.*}} sitofp ; - ; AVX1: sitofpv16i64v16float + ; AVX1-LABEL: sitofpv16i64v16float ; AVX1: cost of 44 {{.*}} sitofp ; - ; AVX2: sitofpv16i64v16float + ; AVX2-LABEL: sitofpv16i64v16float ; AVX2: cost of 44 {{.*}} sitofp ; - ; AVX512F: sitofpv16i64v16float + ; AVX512F-LABEL: sitofpv16i64v16float ; AVX512F: cost of 46 {{.*}} sitofp %1 = sitofp <16 x i64> %a to <16 x float> ret <16 x float> %1 } define <32 x float> @sitofpv32i64v32float(<32 x i64> %a) { - ; SSE2: sitofpv32i64v32float + ; SSE2-LABEL: sitofpv32i64v32float ; SSE2: cost of 240 {{.*}} sitofp ; - ; AVX1: sitofpv32i64v32float + ; AVX1-LABEL: sitofpv32i64v32float ; AVX1: cost of 88 {{.*}} sitofp ; - ; AVX2: sitofpv32i64v32float + ; AVX2-LABEL: sitofpv32i64v32float ; AVX2: cost of 88 {{.*}} sitofp ; - ; AVX512F: sitofpv32i64v32float + ; AVX512F-LABEL: sitofpv32i64v32float ; AVX512F: cost of 92 {{.*}} sitofp %1 = sitofp <32 x i64> %a to <32 x float> ret <32 x float> %1 } define <8 x double> @sitofpv8i1v8double(<8 x double> %a) { - ; SSE2: sitofpv8i1v8double + ; SSE2-LABEL: sitofpv8i1v8double ; SSE2: cost of 80 {{.*}} sitofp ; - ; AVX1: sitofpv8i1v8double + ; AVX1-LABEL: sitofpv8i1v8double ; AVX1: cost of 20 {{.*}} sitofp ; - ; AVX2: sitofpv8i1v8double + ; AVX2-LABEL: sitofpv8i1v8double ; AVX2: cost of 20 {{.*}} sitofp ; - ; AVX512F: sitofpv8i1v8double + ; AVX512F-LABEL: sitofpv8i1v8double ; AVX512F: cost of 4 {{.*}} sitofp %cmpres = fcmp ogt <8 x double> %a, zeroinitializer %1 = sitofp <8 x i1> %cmpres to <8 x double> @@ -661,16 +661,16 @@ define <8 x double> @sitofpv8i1v8double(<8 x double> %a) { } define <16 x float> @sitofpv16i1v16float(<16 x float> %a) { - ; SSE2: sitofpv16i1v16float + ; SSE2-LABEL: sitofpv16i1v16float ; SSE2: cost of 8 {{.*}} sitofp ; - ; AVX1: sitofpv16i1v16float + ; AVX1-LABEL: sitofpv16i1v16float ; AVX1: cost of 44 {{.*}} sitofp ; - ; AVX2: sitofpv16i1v16float + ; AVX2-LABEL: sitofpv16i1v16float ; AVX2: cost of 44 {{.*}} sitofp ; - ; AVX512F: sitofpv16i1v16float + ; AVX512F-LABEL: sitofpv16i1v16float ; AVX512F: cost of 3 {{.*}} sitofp %cmpres = fcmp ogt <16 x float> %a, zeroinitializer %1 = sitofp <16 x i1> %cmpres to <16 x float> diff --git a/llvm/test/Analysis/CostModel/X86/uitofp.ll b/llvm/test/Analysis/CostModel/X86/uitofp.ll index 9ffc483e3f5..08e36650bec 100644 --- a/llvm/test/Analysis/CostModel/X86/uitofp.ll +++ b/llvm/test/Analysis/CostModel/X86/uitofp.ll @@ -2,644 +2,708 @@ ; RUN: opt -mtriple=x86_64-apple-darwin -mattr=+avx -cost-model -analyze < %s | FileCheck --check-prefix=AVX --check-prefix=AVX1 %s ; RUN: opt -mtriple=x86_64-apple-darwin -mattr=+avx2 -cost-model -analyze < %s | FileCheck --check-prefix=AVX --check-prefix=AVX2 %s ; RUN: opt -mtriple=x86_64-apple-darwin -mattr=+avx512f -cost-model -analyze < %s | FileCheck --check-prefix=AVX512F %s +; RUN: opt -mtriple=x86_64-apple-darwin -mattr=+avx512dq -cost-model -analyze < %s | FileCheck --check-prefix=AVX512DQ %s define <2 x double> @uitofpv2i8v2double(<2 x i8> %a) { - ; SSE2: uitofpv2i8v2double + ; SSE2-LABEL: uitofpv2i8v2double ; SSE2: cost of 20 {{.*}} uitofp ; - ; AVX1: uitofpv2i8v2double + ; AVX1-LABEL: uitofpv2i8v2double ; AVX1: cost of 4 {{.*}} uitofp ; - ; AVX2: uitofpv2i8v2double + ; AVX2-LABEL: uitofpv2i8v2double ; AVX2: cost of 4 {{.*}} uitofp ; - ; AVX512F: uitofpv2i8v2double - ; AVX512F: cost of 4 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv2i8v2double + ; AVX512F: cost of 2 {{.*}} uitofp %1 = uitofp <2 x i8> %a to <2 x double> ret <2 x double> %1 } define <4 x double> @uitofpv4i8v4double(<4 x i8> %a) { - ; SSE2: uitofpv4i8v4double + ; SSE2-LABEL: uitofpv4i8v4double ; SSE2: cost of 40 {{.*}} uitofp ; - ; AVX1: uitofpv4i8v4double + ; AVX1-LABEL: uitofpv4i8v4double ; AVX1: cost of 2 {{.*}} uitofp ; - ; AVX2: uitofpv4i8v4double + ; AVX2-LABEL: uitofpv4i8v4double ; AVX2: cost of 2 {{.*}} uitofp ; - ; AVX512F: uitofpv4i8v4double + ; AVX512F-LABEL: uitofpv4i8v4double ; AVX512F: cost of 2 {{.*}} uitofp %1 = uitofp <4 x i8> %a to <4 x double> ret <4 x double> %1 } define <8 x double> @uitofpv8i8v8double(<8 x i8> %a) { - ; SSE2: uitofpv8i8v8double + ; SSE2-LABEL: uitofpv8i8v8double ; SSE2: cost of 80 {{.*}} uitofp ; - ; AVX1: uitofpv8i8v8double + ; AVX1-LABEL: uitofpv8i8v8double ; AVX1: cost of 20 {{.*}} uitofp ; - ; AVX2: uitofpv8i8v8double + ; AVX2-LABEL: uitofpv8i8v8double ; AVX2: cost of 20 {{.*}} uitofp ; - ; AVX512F: uitofpv8i8v8double - ; AVX512F: cost of 22 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv8i8v8double + ; AVX512F: cost of 2 {{.*}} uitofp %1 = uitofp <8 x i8> %a to <8 x double> ret <8 x double> %1 } define <16 x double> @uitofpv16i8v16double(<16 x i8> %a) { - ; SSE2: uitofpv16i8v16double + ; SSE2-LABEL: uitofpv16i8v16double ; SSE2: cost of 160 {{.*}} uitofp ; - ; AVX1: uitofpv16i8v16double + ; AVX1-LABEL: uitofpv16i8v16double ; AVX1: cost of 40 {{.*}} uitofp ; - ; AVX2: uitofpv16i8v16double + ; AVX2-LABEL: uitofpv16i8v16double ; AVX2: cost of 40 {{.*}} uitofp ; - ; AVX512F: uitofpv16i8v16double + ; AVX512F-LABEL: uitofpv16i8v16double ; AVX512F: cost of 44 {{.*}} uitofp %1 = uitofp <16 x i8> %a to <16 x double> ret <16 x double> %1 } define <32 x double> @uitofpv32i8v32double(<32 x i8> %a) { - ; SSE2: uitofpv32i8v32double + ; SSE2-LABEL: uitofpv32i8v32double ; SSE2: cost of 320 {{.*}} uitofp ; - ; AVX1: uitofpv32i8v32double + ; AVX1-LABEL: uitofpv32i8v32double ; AVX1: cost of 80 {{.*}} uitofp ; - ; AVX2: uitofpv32i8v32double + ; AVX2-LABEL: uitofpv32i8v32double ; AVX2: cost of 80 {{.*}} uitofp ; - ; AVX512F: uitofpv32i8v32double + ; AVX512F-LABEL: uitofpv32i8v32double ; AVX512F: cost of 88 {{.*}} uitofp %1 = uitofp <32 x i8> %a to <32 x double> ret <32 x double> %1 } define <2 x double> @uitofpv2i16v2double(<2 x i16> %a) { - ; SSE2: uitofpv2i16v2double + ; SSE2-LABEL: uitofpv2i16v2double ; SSE2: cost of 20 {{.*}} uitofp ; - ; AVX1: uitofpv2i16v2double + ; AVX1-LABEL: uitofpv2i16v2double ; AVX1: cost of 4 {{.*}} uitofp ; - ; AVX2: uitofpv2i16v2double + ; AVX2-LABEL: uitofpv2i16v2double ; AVX2: cost of 4 {{.*}} uitofp ; - ; AVX512F: uitofpv2i16v2double - ; AVX512F: cost of 4 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv2i16v2double + ; AVX512F: cost of 5 {{.*}} uitofp %1 = uitofp <2 x i16> %a to <2 x double> ret <2 x double> %1 } define <4 x double> @uitofpv4i16v4double(<4 x i16> %a) { - ; SSE2: uitofpv4i16v4double + ; SSE2-LABEL: uitofpv4i16v4double ; SSE2: cost of 40 {{.*}} uitofp ; - ; AVX1: uitofpv4i16v4double + ; AVX1-LABEL: uitofpv4i16v4double ; AVX1: cost of 2 {{.*}} uitofp ; - ; AVX2: uitofpv4i16v4double + ; AVX2-LABEL: uitofpv4i16v4double ; AVX2: cost of 2 {{.*}} uitofp ; - ; AVX512F: uitofpv4i16v4double + ; AVX512F-LABEL: uitofpv4i16v4double ; AVX512F: cost of 2 {{.*}} uitofp %1 = uitofp <4 x i16> %a to <4 x double> ret <4 x double> %1 } define <8 x double> @uitofpv8i16v8double(<8 x i16> %a) { - ; SSE2: uitofpv8i16v8double + ; SSE2-LABEL: uitofpv8i16v8double ; SSE2: cost of 80 {{.*}} uitofp ; - ; AVX1: uitofpv8i16v8double + ; AVX1-LABEL: uitofpv8i16v8double ; AVX1: cost of 20 {{.*}} uitofp ; - ; AVX2: uitofpv8i16v8double + ; AVX2-LABEL: uitofpv8i16v8double ; AVX2: cost of 20 {{.*}} uitofp ; - ; AVX512F: uitofpv8i16v8double - ; AVX512F: cost of 22 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv8i16v8double + ; AVX512F: cost of 2 {{.*}} uitofp %1 = uitofp <8 x i16> %a to <8 x double> ret <8 x double> %1 } define <16 x double> @uitofpv16i16v16double(<16 x i16> %a) { - ; SSE2: uitofpv16i16v16double + ; SSE2-LABEL: uitofpv16i16v16double ; SSE2: cost of 160 {{.*}} uitofp ; - ; AVX1: uitofpv16i16v16double + ; AVX1-LABEL: uitofpv16i16v16double ; AVX1: cost of 40 {{.*}} uitofp ; - ; AVX2: uitofpv16i16v16double + ; AVX2-LABEL: uitofpv16i16v16double ; AVX2: cost of 40 {{.*}} uitofp ; - ; AVX512F: uitofpv16i16v16double + ; AVX512F-LABEL: uitofpv16i16v16double ; AVX512F: cost of 44 {{.*}} uitofp %1 = uitofp <16 x i16> %a to <16 x double> ret <16 x double> %1 } define <32 x double> @uitofpv32i16v32double(<32 x i16> %a) { - ; SSE2: uitofpv32i16v32double + ; SSE2-LABEL: uitofpv32i16v32double ; SSE2: cost of 320 {{.*}} uitofp ; - ; AVX1: uitofpv32i16v32double + ; AVX1-LABEL: uitofpv32i16v32double ; AVX1: cost of 80 {{.*}} uitofp ; - ; AVX2: uitofpv32i16v32double + ; AVX2-LABEL: uitofpv32i16v32double ; AVX2: cost of 80 {{.*}} uitofp ; - ; AVX512F: uitofpv32i16v32double + ; AVX512F-LABEL: uitofpv32i16v32double ; AVX512F: cost of 88 {{.*}} uitofp %1 = uitofp <32 x i16> %a to <32 x double> ret <32 x double> %1 } define <2 x double> @uitofpv2i32v2double(<2 x i32> %a) { - ; SSE2: uitofpv2i32v2double + ; SSE2-LABEL: uitofpv2i32v2double ; SSE2: cost of 20 {{.*}} uitofp ; - ; AVX1: uitofpv2i32v2double + ; AVX1-LABEL: uitofpv2i32v2double ; AVX1: cost of 4 {{.*}} uitofp ; - ; AVX2: uitofpv2i32v2double + ; AVX2-LABEL: uitofpv2i32v2double ; AVX2: cost of 4 {{.*}} uitofp ; - ; AVX512F: uitofpv2i32v2double + ; AVX512F-LABEL: uitofpv2i32v2double ; AVX512F: cost of 4 {{.*}} uitofp %1 = uitofp <2 x i32> %a to <2 x double> ret <2 x double> %1 } define <4 x double> @uitofpv4i32v4double(<4 x i32> %a) { - ; SSE2: uitofpv4i32v4double + ; SSE2-LABEL: uitofpv4i32v4double ; SSE2: cost of 40 {{.*}} uitofp ; - ; AVX1: uitofpv4i32v4double + ; AVX1-LABEL: uitofpv4i32v4double ; AVX1: cost of 6 {{.*}} uitofp ; - ; AVX2: uitofpv4i32v4double + ; AVX2-LABEL: uitofpv4i32v4double ; AVX2: cost of 6 {{.*}} uitofp ; - ; AVX512F: uitofpv4i32v4double - ; AVX512F: cost of 6 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv4i32v4double + ; AVX512F: cost of 1 {{.*}} uitofp %1 = uitofp <4 x i32> %a to <4 x double> ret <4 x double> %1 } define <8 x double> @uitofpv8i32v8double(<8 x i32> %a) { - ; SSE2: uitofpv8i32v8double + ; SSE2-LABEL: uitofpv8i32v8double ; SSE2: cost of 80 {{.*}} uitofp ; - ; AVX1: uitofpv8i32v8double + ; AVX1-LABEL: uitofpv8i32v8double ; AVX1: cost of 20 {{.*}} uitofp ; - ; AVX2: uitofpv8i32v8double + ; AVX2-LABEL: uitofpv8i32v8double ; AVX2: cost of 20 {{.*}} uitofp ; - ; AVX512F: uitofpv8i32v8double - ; AVX512F: cost of 22 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv8i32v8double + ; AVX512F: cost of 1 {{.*}} uitofp %1 = uitofp <8 x i32> %a to <8 x double> ret <8 x double> %1 } define <16 x double> @uitofpv16i32v16double(<16 x i32> %a) { - ; SSE2: uitofpv16i32v16double + ; SSE2-LABEL: uitofpv16i32v16double ; SSE2: cost of 160 {{.*}} uitofp ; - ; AVX1: uitofpv16i32v16double + ; AVX1-LABEL: uitofpv16i32v16double ; AVX1: cost of 40 {{.*}} uitofp ; - ; AVX2: uitofpv16i32v16double + ; AVX2-LABEL: uitofpv16i32v16double ; AVX2: cost of 40 {{.*}} uitofp ; - ; AVX512F: uitofpv16i32v16double + ; AVX512F-LABEL: uitofpv16i32v16double ; AVX512F: cost of 44 {{.*}} uitofp %1 = uitofp <16 x i32> %a to <16 x double> ret <16 x double> %1 } define <32 x double> @uitofpv32i32v32double(<32 x i32> %a) { - ; SSE2: uitofpv32i32v32double + ; SSE2-LABEL: uitofpv32i32v32double ; SSE2: cost of 320 {{.*}} uitofp ; - ; AVX1: uitofpv32i32v32double + ; AVX1-LABEL: uitofpv32i32v32double ; AVX1: cost of 80 {{.*}} uitofp ; - ; AVX2: uitofpv32i32v32double + ; AVX2-LABEL: uitofpv32i32v32double ; AVX2: cost of 80 {{.*}} uitofp ; - ; AVX512F: uitofpv32i32v32double + ; AVX512F-LABEL: uitofpv32i32v32double ; AVX512F: cost of 88 {{.*}} uitofp %1 = uitofp <32 x i32> %a to <32 x double> ret <32 x double> %1 } define <2 x double> @uitofpv2i64v2double(<2 x i64> %a) { - ; SSE2: uitofpv2i64v2double + ; SSE2-LABEL: uitofpv2i64v2double ; SSE2: cost of 20 {{.*}} uitofp ; - ; AVX1: uitofpv2i64v2double + ; AVX1-LABEL: uitofpv2i64v2double ; AVX1: cost of 20 {{.*}} uitofp ; - ; AVX2: uitofpv2i64v2double + ; AVX2-LABEL: uitofpv2i64v2double ; AVX2: cost of 20 {{.*}} uitofp ; - ; AVX512F: uitofpv2i64v2double - ; AVX512F: cost of 20 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv2i64v2double + ; AVX512F: cost of 5 {{.*}} uitofp + ; + ; AVX512DQ: uitofpv2i64v2double + ; AVX512DQ: cost of 1 {{.*}} uitofp %1 = uitofp <2 x i64> %a to <2 x double> ret <2 x double> %1 } define <4 x double> @uitofpv4i64v4double(<4 x i64> %a) { - ; SSE2: uitofpv4i64v4double + ; SSE2-LABEL: uitofpv4i64v4double ; SSE2: cost of 40 {{.*}} uitofp ; - ; AVX1: uitofpv4i64v4double + ; AVX1-LABEL: uitofpv4i64v4double ; AVX1: cost of 40 {{.*}} uitofp ; - ; AVX2: uitofpv4i64v4double + ; AVX2-LABEL: uitofpv4i64v4double ; AVX2: cost of 40 {{.*}} uitofp ; - ; AVX512F: uitofpv4i64v4double - ; AVX512F: cost of 40 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv4i64v4double + ; AVX512F: cost of 12 {{.*}} uitofp + ; + ; AVX512DQ: uitofpv4i64v4double + ; AVX512DQ: cost of 1 {{.*}} uitofp %1 = uitofp <4 x i64> %a to <4 x double> ret <4 x double> %1 } define <8 x double> @uitofpv8i64v8double(<8 x i64> %a) { - ; SSE2: uitofpv8i64v8double + ; SSE2-LABEL: uitofpv8i64v8double ; SSE2: cost of 80 {{.*}} uitofp ; - ; AVX1: uitofpv8i64v8double + ; AVX1-LABEL: uitofpv8i64v8double ; AVX1: cost of 20 {{.*}} uitofp ; - ; AVX2: uitofpv8i64v8double + ; AVX2-LABEL: uitofpv8i64v8double ; AVX2: cost of 20 {{.*}} uitofp ; - ; AVX512F: uitofpv8i64v8double - ; AVX512F: cost of 22 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv8i64v8double + ; AVX512F: cost of 26 {{.*}} uitofp + ; + ; AVX512DQ: uitofpv8i64v8double + ; AVX512DQ: cost of 1 {{.*}} uitofp %1 = uitofp <8 x i64> %a to <8 x double> ret <8 x double> %1 } define <16 x double> @uitofpv16i64v16double(<16 x i64> %a) { - ; SSE2: uitofpv16i64v16double + ; SSE2-LABEL: uitofpv16i64v16double ; SSE2: cost of 160 {{.*}} uitofp ; - ; AVX1: uitofpv16i64v16double + ; AVX1-LABEL: uitofpv16i64v16double ; AVX1: cost of 40 {{.*}} uitofp ; - ; AVX2: uitofpv16i64v16double + ; AVX2-LABEL: uitofpv16i64v16double ; AVX2: cost of 40 {{.*}} uitofp ; - ; AVX512F: uitofpv16i64v16double + ; AVX512F-LABEL: uitofpv16i64v16double ; AVX512F: cost of 44 {{.*}} uitofp + ; + ; AVX512DQ: uitofpv16i64v16double + ; AVX512DQ: cost of 44 {{.*}} uitofp %1 = uitofp <16 x i64> %a to <16 x double> ret <16 x double> %1 } define <32 x double> @uitofpv32i64v32double(<32 x i64> %a) { - ; SSE2: uitofpv32i64v32double + ; SSE2-LABEL: uitofpv32i64v32double ; SSE2: cost of 320 {{.*}} uitofp ; - ; AVX1: uitofpv32i64v32double + ; AVX1-LABEL: uitofpv32i64v32double ; AVX1: cost of 80 {{.*}} uitofp ; - ; AVX2: uitofpv32i64v32double + ; AVX2-LABEL: uitofpv32i64v32double ; AVX2: cost of 80 {{.*}} uitofp ; - ; AVX512F: uitofpv32i64v32double + ; AVX512F-LABEL: uitofpv32i64v32double ; AVX512F: cost of 88 {{.*}} uitofp + ; + ; AVX512DQ: uitofpv32i64v32double + ; AVX512DQ: cost of 88 {{.*}} uitofp %1 = uitofp <32 x i64> %a to <32 x double> ret <32 x double> %1 } define <2 x float> @uitofpv2i8v2float(<2 x i8> %a) { - ; SSE2: uitofpv2i8v2float + ; SSE2-LABEL: uitofpv2i8v2float ; SSE2: cost of 15 {{.*}} uitofp ; - ; AVX1: uitofpv2i8v2float + ; AVX1-LABEL: uitofpv2i8v2float ; AVX1: cost of 4 {{.*}} uitofp ; - ; AVX2: uitofpv2i8v2float + ; AVX2-LABEL: uitofpv2i8v2float ; AVX2: cost of 4 {{.*}} uitofp ; - ; AVX512F: uitofpv2i8v2float + ; AVX512F-LABEL: uitofpv2i8v2float ; AVX512F: cost of 4 {{.*}} uitofp %1 = uitofp <2 x i8> %a to <2 x float> ret <2 x float> %1 } define <4 x float> @uitofpv4i8v4float(<4 x i8> %a) { - ; SSE2: uitofpv4i8v4float + ; SSE2-LABEL: uitofpv4i8v4float ; SSE2: cost of 8 {{.*}} uitofp ; - ; AVX1: uitofpv4i8v4float + ; AVX1-LABEL: uitofpv4i8v4float ; AVX1: cost of 2 {{.*}} uitofp ; - ; AVX2: uitofpv4i8v4float + ; AVX2-LABEL: uitofpv4i8v4float ; AVX2: cost of 2 {{.*}} uitofp ; - ; AVX512F: uitofpv4i8v4float + ; AVX512F-LABEL: uitofpv4i8v4float ; AVX512F: cost of 2 {{.*}} uitofp %1 = uitofp <4 x i8> %a to <4 x float> ret <4 x float> %1 } define <8 x float> @uitofpv8i8v8float(<8 x i8> %a) { - ; SSE2: uitofpv8i8v8float + ; SSE2-LABEL: uitofpv8i8v8float ; SSE2: cost of 15 {{.*}} uitofp ; - ; AVX1: uitofpv8i8v8float + ; AVX1-LABEL: uitofpv8i8v8float ; AVX1: cost of 5 {{.*}} uitofp ; - ; AVX2: uitofpv8i8v8float + ; AVX2-LABEL: uitofpv8i8v8float ; AVX2: cost of 5 {{.*}} uitofp ; - ; AVX512F: uitofpv8i8v8float - ; AVX512F: cost of 5 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv8i8v8float + ; AVX512F: cost of 2 {{.*}} uitofp %1 = uitofp <8 x i8> %a to <8 x float> ret <8 x float> %1 } define <16 x float> @uitofpv16i8v16float(<16 x i8> %a) { - ; SSE2: uitofpv16i8v16float + ; SSE2-LABEL: uitofpv16i8v16float ; SSE2: cost of 8 {{.*}} uitofp ; - ; AVX1: uitofpv16i8v16float + ; AVX1-LABEL: uitofpv16i8v16float ; AVX1: cost of 44 {{.*}} uitofp ; - ; AVX2: uitofpv16i8v16float + ; AVX2-LABEL: uitofpv16i8v16float ; AVX2: cost of 44 {{.*}} uitofp ; - ; AVX512F: uitofpv16i8v16float - ; AVX512F: cost of 46 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv16i8v16float + ; AVX512F: cost of 2 {{.*}} uitofp %1 = uitofp <16 x i8> %a to <16 x float> ret <16 x float> %1 } define <32 x float> @uitofpv32i8v32float(<32 x i8> %a) { - ; SSE2: uitofpv32i8v32float + ; SSE2-LABEL: uitofpv32i8v32float ; SSE2: cost of 16 {{.*}} uitofp ; - ; AVX1: uitofpv32i8v32float + ; AVX1-LABEL: uitofpv32i8v32float ; AVX1: cost of 88 {{.*}} uitofp ; - ; AVX2: uitofpv32i8v32float + ; AVX2-LABEL: uitofpv32i8v32float ; AVX2: cost of 88 {{.*}} uitofp ; - ; AVX512F: uitofpv32i8v32float + ; AVX512F-LABEL: uitofpv32i8v32float ; AVX512F: cost of 92 {{.*}} uitofp %1 = uitofp <32 x i8> %a to <32 x float> ret <32 x float> %1 } define <2 x float> @uitofpv2i16v2float(<2 x i16> %a) { - ; SSE2: uitofpv2i16v2float + ; SSE2-LABEL: uitofpv2i16v2float ; SSE2: cost of 15 {{.*}} uitofp ; - ; AVX1: uitofpv2i16v2float + ; AVX1-LABEL: uitofpv2i16v2float ; AVX1: cost of 4 {{.*}} uitofp ; - ; AVX2: uitofpv2i16v2float + ; AVX2-LABEL: uitofpv2i16v2float ; AVX2: cost of 4 {{.*}} uitofp ; - ; AVX512F: uitofpv2i16v2float + ; AVX512F-LABEL: uitofpv2i16v2float ; AVX512F: cost of 4 {{.*}} uitofp %1 = uitofp <2 x i16> %a to <2 x float> ret <2 x float> %1 } define <4 x float> @uitofpv4i16v4float(<4 x i16> %a) { - ; SSE2: uitofpv4i16v4float + ; SSE2-LABEL: uitofpv4i16v4float ; SSE2: cost of 8 {{.*}} uitofp ; - ; AVX1: uitofpv4i16v4float + ; AVX1-LABEL: uitofpv4i16v4float ; AVX1: cost of 2 {{.*}} uitofp ; - ; AVX2: uitofpv4i16v4float + ; AVX2-LABEL: uitofpv4i16v4float ; AVX2: cost of 2 {{.*}} uitofp ; - ; AVX512F: uitofpv4i16v4float + ; AVX512F-LABEL: uitofpv4i16v4float ; AVX512F: cost of 2 {{.*}} uitofp %1 = uitofp <4 x i16> %a to <4 x float> ret <4 x float> %1 } define <8 x float> @uitofpv8i16v8float(<8 x i16> %a) { - ; SSE2: uitofpv8i16v8float + ; SSE2-LABEL: uitofpv8i16v8float ; SSE2: cost of 15 {{.*}} uitofp ; - ; AVX1: uitofpv8i16v8float + ; AVX1-LABEL: uitofpv8i16v8float ; AVX1: cost of 5 {{.*}} uitofp ; - ; AVX2: uitofpv8i16v8float + ; AVX2-LABEL: uitofpv8i16v8float ; AVX2: cost of 5 {{.*}} uitofp ; - ; AVX512F: uitofpv8i16v8float - ; AVX512F: cost of 5 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv8i16v8float + ; AVX512F: cost of 2 {{.*}} uitofp %1 = uitofp <8 x i16> %a to <8 x float> ret <8 x float> %1 } define <16 x float> @uitofpv16i16v16float(<16 x i16> %a) { - ; SSE2: uitofpv16i16v16float + ; SSE2-LABEL: uitofpv16i16v16float ; SSE2: cost of 30 {{.*}} uitofp ; - ; AVX1: uitofpv16i16v16float + ; AVX1-LABEL: uitofpv16i16v16float ; AVX1: cost of 44 {{.*}} uitofp ; - ; AVX2: uitofpv16i16v16float + ; AVX2-LABEL: uitofpv16i16v16float ; AVX2: cost of 44 {{.*}} uitofp ; - ; AVX512F: uitofpv16i16v16float - ; AVX512F: cost of 46 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv16i16v16float + ; AVX512F: cost of 2 {{.*}} uitofp %1 = uitofp <16 x i16> %a to <16 x float> ret <16 x float> %1 } define <32 x float> @uitofpv32i16v32float(<32 x i16> %a) { - ; SSE2: uitofpv32i16v32float + ; SSE2-LABEL: uitofpv32i16v32float ; SSE2: cost of 60 {{.*}} uitofp ; - ; AVX1: uitofpv32i16v32float + ; AVX1-LABEL: uitofpv32i16v32float ; AVX1: cost of 88 {{.*}} uitofp ; - ; AVX2: uitofpv32i16v32float + ; AVX2-LABEL: uitofpv32i16v32float ; AVX2: cost of 88 {{.*}} uitofp ; - ; AVX512F: uitofpv32i16v32float + ; AVX512F-LABEL: uitofpv32i16v32float ; AVX512F: cost of 92 {{.*}} uitofp %1 = uitofp <32 x i16> %a to <32 x float> ret <32 x float> %1 } define <2 x float> @uitofpv2i32v2float(<2 x i32> %a) { - ; SSE2: uitofpv2i32v2float + ; SSE2-LABEL: uitofpv2i32v2float ; SSE2: cost of 15 {{.*}} uitofp ; - ; AVX1: uitofpv2i32v2float + ; AVX1-LABEL: uitofpv2i32v2float ; AVX1: cost of 4 {{.*}} uitofp ; - ; AVX2: uitofpv2i32v2float + ; AVX2-LABEL: uitofpv2i32v2float ; AVX2: cost of 4 {{.*}} uitofp ; - ; AVX512F: uitofpv2i32v2float - ; AVX512F: cost of 4 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv2i32v2float + ; AVX512F: cost of 2 {{.*}} uitofp %1 = uitofp <2 x i32> %a to <2 x float> ret <2 x float> %1 } define <4 x float> @uitofpv4i32v4float(<4 x i32> %a) { - ; SSE2: uitofpv4i32v4float + ; SSE2-LABEL: uitofpv4i32v4float ; SSE2: cost of 8 {{.*}} uitofp ; - ; AVX1: uitofpv4i32v4float + ; AVX1-LABEL: uitofpv4i32v4float ; AVX1: cost of 6 {{.*}} uitofp ; - ; AVX2: uitofpv4i32v4float + ; AVX2-LABEL: uitofpv4i32v4float ; AVX2: cost of 6 {{.*}} uitofp ; - ; AVX512F: uitofpv4i32v4float - ; AVX512F: cost of 6 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv4i32v4float + ; AVX512F: cost of 1 {{.*}} uitofp %1 = uitofp <4 x i32> %a to <4 x float> ret <4 x float> %1 } define <8 x float> @uitofpv8i32v8float(<8 x i32> %a) { - ; SSE2: uitofpv8i32v8float + ; SSE2-LABEL: uitofpv8i32v8float ; SSE2: cost of 16 {{.*}} uitofp ; - ; AVX1: uitofpv8i32v8float + ; AVX1-LABEL: uitofpv8i32v8float ; AVX1: cost of 9 {{.*}} uitofp ; - ; AVX2: uitofpv8i32v8float + ; AVX2-LABEL: uitofpv8i32v8float ; AVX2: cost of 8 {{.*}} uitofp ; - ; AVX512F: uitofpv8i32v8float - ; AVX512F: cost of 8 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv8i32v8float + ; AVX512F: cost of 1 {{.*}} uitofp %1 = uitofp <8 x i32> %a to <8 x float> ret <8 x float> %1 } define <16 x float> @uitofpv16i32v16float(<16 x i32> %a) { - ; SSE2: uitofpv16i32v16float + ; SSE2-LABEL: uitofpv16i32v16float ; SSE2: cost of 32 {{.*}} uitofp ; - ; AVX1: uitofpv16i32v16float + ; AVX1-LABEL: uitofpv16i32v16float ; AVX1: cost of 44 {{.*}} uitofp ; - ; AVX2: uitofpv16i32v16float + ; AVX2-LABEL: uitofpv16i32v16float ; AVX2: cost of 44 {{.*}} uitofp ; - ; AVX512F: uitofpv16i32v16float - ; AVX512F: cost of 46 {{.*}} uitofp + ; AVX512F-LABEL: uitofpv16i32v16float + ; AVX512F: cost of 1 {{.*}} uitofp %1 = uitofp <16 x i32> %a to <16 x float> ret <16 x float> %1 } define <32 x float> @uitofpv32i32v32float(<32 x i32> %a) { - ; SSE2: uitofpv32i32v32float + ; SSE2-LABEL: uitofpv32i32v32float ; SSE2: cost of 64 {{.*}} uitofp ; - ; AVX1: uitofpv32i32v32float + ; AVX1-LABEL: uitofpv32i32v32float ; AVX1: cost of 88 {{.*}} uitofp ; - ; AVX2: uitofpv32i32v32float + ; AVX2-LABEL: uitofpv32i32v32float ; AVX2: cost of 88 {{.*}} uitofp ; - ; AVX512F: uitofpv32i32v32float + ; AVX512F-LABEL: uitofpv32i32v32float ; AVX512F: cost of 92 {{.*}} uitofp %1 = uitofp <32 x i32> %a to <32 x float> ret <32 x float> %1 } define <2 x float> @uitofpv2i64v2float(<2 x i64> %a) { - ; SSE2: uitofpv2i64v2float + ; SSE2-LABEL: uitofpv2i64v2float ; SSE2: cost of 15 {{.*}} uitofp ; - ; AVX1: uitofpv2i64v2float + ; AVX1-LABEL: uitofpv2i64v2float ; AVX1: cost of 4 {{.*}} uitofp ; - ; AVX2: uitofpv2i64v2float + ; AVX2-LABEL: uitofpv2i64v2float ; AVX2: cost of 4 {{.*}} uitofp ; - ; AVX512F: uitofpv2i64v2float + ; AVX512F-LABEL: uitofpv2i64v2float ; AVX512F: cost of 4 {{.*}} uitofp %1 = uitofp <2 x i64> %a to <2 x float> ret <2 x float> %1 } define <4 x float> @uitofpv4i64v4float(<4 x i64> %a) { - ; SSE2: uitofpv4i64v4float + ; SSE2-LABEL: uitofpv4i64v4float ; SSE2: cost of 30 {{.*}} uitofp ; - ; AVX1: uitofpv4i64v4float + ; AVX1-LABEL: uitofpv4i64v4float ; AVX1: cost of 10 {{.*}} uitofp ; - ; AVX2: uitofpv4i64v4float + ; AVX2-LABEL: uitofpv4i64v4float ; AVX2: cost of 10 {{.*}} uitofp ; - ; AVX512F: uitofpv4i64v4float + ; AVX512F-LABEL: uitofpv4i64v4float ; AVX512F: cost of 10 {{.*}} uitofp %1 = uitofp <4 x i64> %a to <4 x float> ret <4 x float> %1 } define <8 x float> @uitofpv8i64v8float(<8 x i64> %a) { - ; SSE2: uitofpv8i64v8float + ; SSE2-LABEL: uitofpv8i64v8float ; SSE2: cost of 60 {{.*}} uitofp ; - ; AVX1: uitofpv8i64v8float + ; AVX1-LABEL: uitofpv8i64v8float ; AVX1: cost of 22 {{.*}} uitofp ; - ; AVX2: uitofpv8i64v8float + ; AVX2-LABEL: uitofpv8i64v8float ; AVX2: cost of 22 {{.*}} uitofp ; - ; AVX512F: uitofpv8i64v8float + ; AVX512F-LABEL: uitofpv8i64v8float ; AVX512F: cost of 22 {{.*}} uitofp %1 = uitofp <8 x i64> %a to <8 x float> ret <8 x float> %1 } define <16 x float> @uitofpv16i64v16float(<16 x i64> %a) { - ; SSE2: uitofpv16i64v16float + ; SSE2-LABEL: uitofpv16i64v16float ; SSE2: cost of 120 {{.*}} uitofp ; - ; AVX1: uitofpv16i64v16float + ; AVX1-LABEL: uitofpv16i64v16float ; AVX1: cost of 44 {{.*}} uitofp ; - ; AVX2: uitofpv16i64v16float + ; AVX2-LABEL: uitofpv16i64v16float ; AVX2: cost of 44 {{.*}} uitofp ; - ; AVX512F: uitofpv16i64v16float + ; AVX512F-LABEL: uitofpv16i64v16float ; AVX512F: cost of 46 {{.*}} uitofp %1 = uitofp <16 x i64> %a to <16 x float> ret <16 x float> %1 } define <32 x float> @uitofpv32i64v32float(<32 x i64> %a) { - ; SSE2: uitofpv32i64v32float + ; SSE2-LABEL: uitofpv32i64v32float ; SSE2: cost of 240 {{.*}} uitofp ; - ; AVX1: uitofpv32i64v32float + ; AVX1-LABEL: uitofpv32i64v32float ; AVX1: cost of 88 {{.*}} uitofp ; - ; AVX2: uitofpv32i64v32float + ; AVX2-LABEL: uitofpv32i64v32float ; AVX2: cost of 88 {{.*}} uitofp ; - ; AVX512F: uitofpv32i64v32float + ; AVX512F-LABEL: uitofpv32i64v32float ; AVX512F: cost of 92 {{.*}} uitofp %1 = uitofp <32 x i64> %a to <32 x float> ret <32 x float> %1 } +define <8 x i32> @fptouiv8f32v8i32(<8 x float> %a) { + ; AVX512F-LABEL: fptouiv8f32v8i32 + ; AVX512F: cost of 1 {{.*}} fptoui + %1 = fptoui <8 x float> %a to <8 x i32> + ret <8 x i32> %1 +} + +define <4 x i32> @fptouiv4f32v4i32(<4 x float> %a) { + ; AVX512F-LABEL: fptouiv4f32v4i32 + ; AVX512F: cost of 1 {{.*}} fptoui + %1 = fptoui <4 x float> %a to <4 x i32> + ret <4 x i32> %1 +} + +define <2 x i32> @fptouiv2f32v2i32(<2 x float> %a) { + ; AVX512F-LABEL: fptouiv2f32v2i32 + ; AVX512F: cost of 1 {{.*}} fptoui + %1 = fptoui <2 x float> %a to <2 x i32> + ret <2 x i32> %1 +} + +define <16 x i32> @fptouiv16f32v16i32(<16 x float> %a) { + ; AVX512F-LABEL: fptouiv16f32v16i32 + ; AVX512F: cost of 1 {{.*}} fptoui + %1 = fptoui <16 x float> %a to <16 x i32> + ret <16 x i32> %1 +} + +define <8 x i64> @fptouiv8f32v8i64(<8 x float> %a) { + ; AVX512DQ-LABEL: fptouiv8f32v8i64 + ; AVX512DQ: cost of 1 {{.*}} fptoui + %1 = fptoui <8 x float> %a to <8 x i64> + ret <8 x i64> %1 +} + +define <4 x i64> @fptouiv4f32v4i64(<4 x float> %a) { + ; AVX512DQ-LABEL: fptouiv4f32v4i64 + ; AVX512DQ: cost of 1 {{.*}} fptoui + %1 = fptoui <4 x float> %a to <4 x i64> + ret <4 x i64> %1 +} + +define <2 x i64> @fptouiv2f32v2i64(<2 x float> %a) { + ; AVX512DQ-LABEL: fptouiv2f32v2i64 + ; AVX512DQ: cost of 1 {{.*}} fptoui + %1 = fptoui <2 x float> %a to <2 x i64> + ret <2 x i64> %1 +} |