Files
TheRock/compiler/amd-llvm/llvm/test/Analysis/CostModel/AArch64/arith-widening.ll
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

2114 lines
131 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mtriple=aarch64 < %s | FileCheck %s
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
define void @extaddv1(i8 %i8, i16 %i16, i32 %i32, i64 %i64) {
; CHECK-LABEL: 'extaddv1'
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_16 = sext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_16 = add i16 %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_16 = sext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_16 = sext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_16 = add i16 %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_16 = zext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_16 = add i16 %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_16 = zext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_16 = zext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_16 = add i16 %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_32 = sext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_32 = add i32 %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_32 = sext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_32 = sext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_32 = add i32 %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_32 = zext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_32 = add i32 %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_32 = zext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_32 = zext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_32 = add i32 %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_64 = sext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_64 = add i64 %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_64 = sext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_64 = sext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_64 = add i64 %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_8_64 = zext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_64 = add i64 %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_64 = zext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_64 = zext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_64 = add i64 %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_16_32 = sext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_16_32 = add i32 %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_16_32 = sext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_16_32 = sext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_16_32 = add i32 %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_16_32 = zext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_16_32 = add i32 %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_16_32 = zext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_16_32 = zext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_16_32 = add i32 %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_16_64 = sext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_16_64 = add i64 %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_16_64 = sext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_16_64 = sext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_16_64 = add i64 %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_16_64 = zext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_16_64 = add i64 %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_64 = zext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_64 = zext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_16_64 = add i64 %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_32_64 = sext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_32_64 = add i64 %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_32_64 = sext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_32_64 = sext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_32_64 = add i64 %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_32_64 = zext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_32_64 = add i64 %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_32_64 = add i64 %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext i8 %i8 to i16
%asw_8_16 = add i16 %i16, %sw_8_16
%sl1_8_16 = sext i8 %i8 to i16
%sl2_8_16 = sext i8 %i8 to i16
%asl_8_16 = add i16 %sl1_8_16, %sl2_8_16
%zw_8_16 = zext i8 %i8 to i16
%azw_8_16 = add i16 %i16, %zw_8_16
%zl1_8_16 = zext i8 %i8 to i16
%zl2_8_16 = zext i8 %i8 to i16
%azl_8_16 = add i16 %zl1_8_16, %zl2_8_16
%sw_8_32 = sext i8 %i8 to i32
%asw_8_32 = add i32 %i32, %sw_8_32
%sl1_8_32 = sext i8 %i8 to i32
%sl2_8_32 = sext i8 %i8 to i32
%asl_8_32 = add i32 %sl1_8_32, %sl2_8_32
%zw_8_32 = zext i8 %i8 to i32
%azw_8_32 = add i32 %i32, %zw_8_32
%zl1_8_32 = zext i8 %i8 to i32
%zl2_8_32 = zext i8 %i8 to i32
%azl_8_32 = add i32 %zl1_8_32, %zl2_8_32
%sw_8_64 = sext i8 %i8 to i64
%asw_8_64 = add i64 %i64, %sw_8_64
%sl1_8_64 = sext i8 %i8 to i64
%sl2_8_64 = sext i8 %i8 to i64
%asl_8_64 = add i64 %sl1_8_64, %sl2_8_64
%zw_8_64 = zext i8 %i8 to i64
%azw_8_64 = add i64 %i64, %zw_8_64
%zl1_8_64 = zext i8 %i8 to i64
%zl2_8_64 = zext i8 %i8 to i64
%azl_8_64 = add i64 %zl1_8_64, %zl2_8_64
%sw_16_32 = sext i16 %i16 to i32
%asw_16_32 = add i32 %i32, %sw_16_32
%sl1_16_32 = sext i16 %i16 to i32
%sl2_16_32 = sext i16 %i16 to i32
%asl_16_32 = add i32 %sl1_16_32, %sl2_16_32
%zw_16_32 = zext i16 %i16 to i32
%azw_16_32 = add i32 %i32, %zw_16_32
%zl1_16_32 = zext i16 %i16 to i32
%zl2_16_32 = zext i16 %i16 to i32
%azl_16_32 = add i32 %zl1_16_32, %zl2_16_32
%sw_16_64 = sext i16 %i16 to i64
%asw_16_64 = add i64 %i64, %sw_16_64
%sl1_16_64 = sext i16 %i16 to i64
%sl2_16_64 = sext i16 %i16 to i64
%asl_16_64 = add i64 %sl1_16_64, %sl2_16_64
%zw_16_64 = zext i16 %i16 to i64
%azw_16_64 = add i64 %i64, %zw_16_64
%zl1_16_64 = zext i16 %i16 to i64
%zl2_16_64 = zext i16 %i16 to i64
%azl_16_64 = add i64 %zl1_16_64, %zl2_16_64
%sw_32_64 = sext i32 %i32 to i64
%asw_32_64 = add i64 %i64, %sw_32_64
%sl1_32_64 = sext i32 %i32 to i64
%sl2_32_64 = sext i32 %i32 to i64
%asl_32_64 = add i64 %sl1_32_64, %sl2_32_64
%zw_32_64 = zext i32 %i32 to i64
%azw_32_64 = add i64 %i64, %zw_32_64
%zl1_32_64 = zext i32 %i32 to i64
%zl2_32_64 = zext i32 %i32 to i64
%azl_32_64 = add i64 %zl1_32_64, %zl2_32_64
ret void
}
define void @extaddv2(<2 x i8> %i8, <2 x i16> %i16, <2 x i32> %i32, <2 x i64> %i64) {
; CHECK-LABEL: 'extaddv2'
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_16 = sext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_16 = add <2 x i16> %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_16 = sext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_16 = sext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_16 = add <2 x i16> %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_16 = zext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_16 = add <2 x i16> %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_16 = zext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_16 = zext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_16 = add <2 x i16> %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_32 = sext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_32 = add <2 x i32> %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_32 = sext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_32 = sext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_32 = add <2 x i32> %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_32 = zext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_32 = add <2 x i32> %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_32 = zext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_32 = zext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_32 = add <2 x i32> %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_64 = sext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_64 = add <2 x i64> %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_64 = sext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_64 = sext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_64 = add <2 x i64> %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_64 = zext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_64 = add <2 x i64> %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_64 = zext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_64 = zext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_64 = add <2 x i64> %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_16_32 = sext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_16_32 = add <2 x i32> %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_16_32 = sext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_16_32 = sext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_16_32 = add <2 x i32> %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_16_32 = zext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_16_32 = add <2 x i32> %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_16_32 = zext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_16_32 = zext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_16_32 = add <2 x i32> %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_16_64 = sext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_16_64 = add <2 x i64> %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_16_64 = sext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_16_64 = sext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_16_64 = add <2 x i64> %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_16_64 = zext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_16_64 = add <2 x i64> %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_16_64 = zext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_16_64 = zext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_16_64 = add <2 x i64> %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_32_64 = sext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_32_64 = add <2 x i64> %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_32_64 = sext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_32_64 = sext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_32_64 = add <2 x i64> %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_32_64 = zext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_32_64 = add <2 x i64> %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_32_64 = add <2 x i64> %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext <2 x i8> %i8 to <2 x i16>
%asw_8_16 = add <2 x i16> %i16, %sw_8_16
%sl1_8_16 = sext <2 x i8> %i8 to <2 x i16>
%sl2_8_16 = sext <2 x i8> %i8 to <2 x i16>
%asl_8_16 = add <2 x i16> %sl1_8_16, %sl2_8_16
%zw_8_16 = zext <2 x i8> %i8 to <2 x i16>
%azw_8_16 = add <2 x i16> %i16, %zw_8_16
%zl1_8_16 = zext <2 x i8> %i8 to <2 x i16>
%zl2_8_16 = zext <2 x i8> %i8 to <2 x i16>
%azl_8_16 = add <2 x i16> %zl1_8_16, %zl2_8_16
%sw_8_32 = sext <2 x i8> %i8 to <2 x i32>
%asw_8_32 = add <2 x i32> %i32, %sw_8_32
%sl1_8_32 = sext <2 x i8> %i8 to <2 x i32>
%sl2_8_32 = sext <2 x i8> %i8 to <2 x i32>
%asl_8_32 = add <2 x i32> %sl1_8_32, %sl2_8_32
%zw_8_32 = zext <2 x i8> %i8 to <2 x i32>
%azw_8_32 = add <2 x i32> %i32, %zw_8_32
%zl1_8_32 = zext <2 x i8> %i8 to <2 x i32>
%zl2_8_32 = zext <2 x i8> %i8 to <2 x i32>
%azl_8_32 = add <2 x i32> %zl1_8_32, %zl2_8_32
%sw_8_64 = sext <2 x i8> %i8 to <2 x i64>
%asw_8_64 = add <2 x i64> %i64, %sw_8_64
%sl1_8_64 = sext <2 x i8> %i8 to <2 x i64>
%sl2_8_64 = sext <2 x i8> %i8 to <2 x i64>
%asl_8_64 = add <2 x i64> %sl1_8_64, %sl2_8_64
%zw_8_64 = zext <2 x i8> %i8 to <2 x i64>
%azw_8_64 = add <2 x i64> %i64, %zw_8_64
%zl1_8_64 = zext <2 x i8> %i8 to <2 x i64>
%zl2_8_64 = zext <2 x i8> %i8 to <2 x i64>
%azl_8_64 = add <2 x i64> %zl1_8_64, %zl2_8_64
%sw_16_32 = sext <2 x i16> %i16 to <2 x i32>
%asw_16_32 = add <2 x i32> %i32, %sw_16_32
%sl1_16_32 = sext <2 x i16> %i16 to <2 x i32>
%sl2_16_32 = sext <2 x i16> %i16 to <2 x i32>
%asl_16_32 = add <2 x i32> %sl1_16_32, %sl2_16_32
%zw_16_32 = zext <2 x i16> %i16 to <2 x i32>
%azw_16_32 = add <2 x i32> %i32, %zw_16_32
%zl1_16_32 = zext <2 x i16> %i16 to <2 x i32>
%zl2_16_32 = zext <2 x i16> %i16 to <2 x i32>
%azl_16_32 = add <2 x i32> %zl1_16_32, %zl2_16_32
%sw_16_64 = sext <2 x i16> %i16 to <2 x i64>
%asw_16_64 = add <2 x i64> %i64, %sw_16_64
%sl1_16_64 = sext <2 x i16> %i16 to <2 x i64>
%sl2_16_64 = sext <2 x i16> %i16 to <2 x i64>
%asl_16_64 = add <2 x i64> %sl1_16_64, %sl2_16_64
%zw_16_64 = zext <2 x i16> %i16 to <2 x i64>
%azw_16_64 = add <2 x i64> %i64, %zw_16_64
%zl1_16_64 = zext <2 x i16> %i16 to <2 x i64>
%zl2_16_64 = zext <2 x i16> %i16 to <2 x i64>
%azl_16_64 = add <2 x i64> %zl1_16_64, %zl2_16_64
%sw_32_64 = sext <2 x i32> %i32 to <2 x i64>
%asw_32_64 = add <2 x i64> %i64, %sw_32_64
%sl1_32_64 = sext <2 x i32> %i32 to <2 x i64>
%sl2_32_64 = sext <2 x i32> %i32 to <2 x i64>
%asl_32_64 = add <2 x i64> %sl1_32_64, %sl2_32_64
%zw_32_64 = zext <2 x i32> %i32 to <2 x i64>
%azw_32_64 = add <2 x i64> %i64, %zw_32_64
%zl1_32_64 = zext <2 x i32> %i32 to <2 x i64>
%zl2_32_64 = zext <2 x i32> %i32 to <2 x i64>
%azl_32_64 = add <2 x i64> %zl1_32_64, %zl2_32_64
ret void
}
define void @extaddv4(<4 x i8> %i8, <4 x i16> %i16, <4 x i32> %i32, <4 x i64> %i64) {
; CHECK-LABEL: 'extaddv4'
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_16 = sext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_16 = add <4 x i16> %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_16 = sext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_16 = sext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_16 = add <4 x i16> %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_16 = zext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_16 = add <4 x i16> %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_16 = zext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_16 = zext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_16 = add <4 x i16> %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_32 = sext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_32 = add <4 x i32> %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_32 = sext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_32 = sext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_32 = add <4 x i32> %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_32 = zext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_32 = add <4 x i32> %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_32 = zext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_32 = zext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_32 = add <4 x i32> %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sw_8_64 = sext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_64 = add <4 x i64> %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sl1_8_64 = sext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sl2_8_64 = sext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_64 = add <4 x i64> %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zw_8_64 = zext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_64 = add <4 x i64> %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zl1_8_64 = zext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zl2_8_64 = zext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_64 = add <4 x i64> %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_16_32 = sext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_16_32 = add <4 x i32> %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_32 = sext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_32 = sext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_16_32 = add <4 x i32> %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_16_32 = zext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_16_32 = add <4 x i32> %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_32 = zext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_32 = zext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_16_32 = add <4 x i32> %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sw_16_64 = sext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_64 = add <4 x i64> %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_64 = sext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_64 = sext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_64 = add <4 x i64> %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zw_16_64 = zext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_64 = add <4 x i64> %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_64 = zext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_64 = zext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_64 = add <4 x i64> %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_32_64 = sext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_32_64 = add <4 x i64> %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_32_64 = sext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_32_64 = sext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asl_32_64 = add <4 x i64> %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_32_64 = zext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_32_64 = add <4 x i64> %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azl_32_64 = add <4 x i64> %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext <4 x i8> %i8 to <4 x i16>
%asw_8_16 = add <4 x i16> %i16, %sw_8_16
%sl1_8_16 = sext <4 x i8> %i8 to <4 x i16>
%sl2_8_16 = sext <4 x i8> %i8 to <4 x i16>
%asl_8_16 = add <4 x i16> %sl1_8_16, %sl2_8_16
%zw_8_16 = zext <4 x i8> %i8 to <4 x i16>
%azw_8_16 = add <4 x i16> %i16, %zw_8_16
%zl1_8_16 = zext <4 x i8> %i8 to <4 x i16>
%zl2_8_16 = zext <4 x i8> %i8 to <4 x i16>
%azl_8_16 = add <4 x i16> %zl1_8_16, %zl2_8_16
%sw_8_32 = sext <4 x i8> %i8 to <4 x i32>
%asw_8_32 = add <4 x i32> %i32, %sw_8_32
%sl1_8_32 = sext <4 x i8> %i8 to <4 x i32>
%sl2_8_32 = sext <4 x i8> %i8 to <4 x i32>
%asl_8_32 = add <4 x i32> %sl1_8_32, %sl2_8_32
%zw_8_32 = zext <4 x i8> %i8 to <4 x i32>
%azw_8_32 = add <4 x i32> %i32, %zw_8_32
%zl1_8_32 = zext <4 x i8> %i8 to <4 x i32>
%zl2_8_32 = zext <4 x i8> %i8 to <4 x i32>
%azl_8_32 = add <4 x i32> %zl1_8_32, %zl2_8_32
%sw_8_64 = sext <4 x i8> %i8 to <4 x i64>
%asw_8_64 = add <4 x i64> %i64, %sw_8_64
%sl1_8_64 = sext <4 x i8> %i8 to <4 x i64>
%sl2_8_64 = sext <4 x i8> %i8 to <4 x i64>
%asl_8_64 = add <4 x i64> %sl1_8_64, %sl2_8_64
%zw_8_64 = zext <4 x i8> %i8 to <4 x i64>
%azw_8_64 = add <4 x i64> %i64, %zw_8_64
%zl1_8_64 = zext <4 x i8> %i8 to <4 x i64>
%zl2_8_64 = zext <4 x i8> %i8 to <4 x i64>
%azl_8_64 = add <4 x i64> %zl1_8_64, %zl2_8_64
%sw_16_32 = sext <4 x i16> %i16 to <4 x i32>
%asw_16_32 = add <4 x i32> %i32, %sw_16_32
%sl1_16_32 = sext <4 x i16> %i16 to <4 x i32>
%sl2_16_32 = sext <4 x i16> %i16 to <4 x i32>
%asl_16_32 = add <4 x i32> %sl1_16_32, %sl2_16_32
%zw_16_32 = zext <4 x i16> %i16 to <4 x i32>
%azw_16_32 = add <4 x i32> %i32, %zw_16_32
%zl1_16_32 = zext <4 x i16> %i16 to <4 x i32>
%zl2_16_32 = zext <4 x i16> %i16 to <4 x i32>
%azl_16_32 = add <4 x i32> %zl1_16_32, %zl2_16_32
%sw_16_64 = sext <4 x i16> %i16 to <4 x i64>
%asw_16_64 = add <4 x i64> %i64, %sw_16_64
%sl1_16_64 = sext <4 x i16> %i16 to <4 x i64>
%sl2_16_64 = sext <4 x i16> %i16 to <4 x i64>
%asl_16_64 = add <4 x i64> %sl1_16_64, %sl2_16_64
%zw_16_64 = zext <4 x i16> %i16 to <4 x i64>
%azw_16_64 = add <4 x i64> %i64, %zw_16_64
%zl1_16_64 = zext <4 x i16> %i16 to <4 x i64>
%zl2_16_64 = zext <4 x i16> %i16 to <4 x i64>
%azl_16_64 = add <4 x i64> %zl1_16_64, %zl2_16_64
%sw_32_64 = sext <4 x i32> %i32 to <4 x i64>
%asw_32_64 = add <4 x i64> %i64, %sw_32_64
%sl1_32_64 = sext <4 x i32> %i32 to <4 x i64>
%sl2_32_64 = sext <4 x i32> %i32 to <4 x i64>
%asl_32_64 = add <4 x i64> %sl1_32_64, %sl2_32_64
%zw_32_64 = zext <4 x i32> %i32 to <4 x i64>
%azw_32_64 = add <4 x i64> %i64, %zw_32_64
%zl1_32_64 = zext <4 x i32> %i32 to <4 x i64>
%zl2_32_64 = zext <4 x i32> %i32 to <4 x i64>
%azl_32_64 = add <4 x i64> %zl1_32_64, %zl2_32_64
ret void
}
define void @extaddv8(<8 x i8> %i8, <8 x i16> %i16, <8 x i32> %i32, <8 x i64> %i64) {
; CHECK-LABEL: 'extaddv8'
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_8_16 = sext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_16 = add <8 x i16> %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_16 = sext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_16 = add <8 x i16> %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_8_16 = zext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_16 = add <8 x i16> %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_16 = zext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_16 = add <8 x i16> %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sw_8_32 = sext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_32 = add <8 x i32> %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_32 = sext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_32 = sext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_32 = add <8 x i32> %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zw_8_32 = zext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_32 = add <8 x i32> %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_32 = zext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_32 = zext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_32 = add <8 x i32> %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 7 for: %sw_8_64 = sext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_64 = add <8 x i64> %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_64 = sext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_64 = sext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:7 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_64 = add <8 x i64> %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 7 for: %zw_8_64 = zext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_64 = add <8 x i64> %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_64 = zext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_64 = zext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:7 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_64 = add <8 x i64> %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_16_32 = sext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_32 = add <8 x i32> %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_32 = sext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_32 = sext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_32 = add <8 x i32> %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_16_32 = zext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_32 = add <8 x i32> %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_32 = zext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_32 = zext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_32 = add <8 x i32> %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 6 for: %sw_16_64 = sext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_64 = add <8 x i64> %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_64 = sext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_64 = sext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_64 = add <8 x i64> %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 6 for: %zw_16_64 = zext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_64 = add <8 x i64> %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_64 = zext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_64 = zext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_64 = add <8 x i64> %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_32_64 = sext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asw_32_64 = add <8 x i64> %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_32_64 = sext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_32_64 = sext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asl_32_64 = add <8 x i64> %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_32_64 = zext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azw_32_64 = add <8 x i64> %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azl_32_64 = add <8 x i64> %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext <8 x i8> %i8 to <8 x i16>
%asw_8_16 = add <8 x i16> %i16, %sw_8_16
%sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
%sl2_8_16 = sext <8 x i8> %i8 to <8 x i16>
%asl_8_16 = add <8 x i16> %sl1_8_16, %sl2_8_16
%zw_8_16 = zext <8 x i8> %i8 to <8 x i16>
%azw_8_16 = add <8 x i16> %i16, %zw_8_16
%zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
%zl2_8_16 = zext <8 x i8> %i8 to <8 x i16>
%azl_8_16 = add <8 x i16> %zl1_8_16, %zl2_8_16
%sw_8_32 = sext <8 x i8> %i8 to <8 x i32>
%asw_8_32 = add <8 x i32> %i32, %sw_8_32
%sl1_8_32 = sext <8 x i8> %i8 to <8 x i32>
%sl2_8_32 = sext <8 x i8> %i8 to <8 x i32>
%asl_8_32 = add <8 x i32> %sl1_8_32, %sl2_8_32
%zw_8_32 = zext <8 x i8> %i8 to <8 x i32>
%azw_8_32 = add <8 x i32> %i32, %zw_8_32
%zl1_8_32 = zext <8 x i8> %i8 to <8 x i32>
%zl2_8_32 = zext <8 x i8> %i8 to <8 x i32>
%azl_8_32 = add <8 x i32> %zl1_8_32, %zl2_8_32
%sw_8_64 = sext <8 x i8> %i8 to <8 x i64>
%asw_8_64 = add <8 x i64> %i64, %sw_8_64
%sl1_8_64 = sext <8 x i8> %i8 to <8 x i64>
%sl2_8_64 = sext <8 x i8> %i8 to <8 x i64>
%asl_8_64 = add <8 x i64> %sl1_8_64, %sl2_8_64
%zw_8_64 = zext <8 x i8> %i8 to <8 x i64>
%azw_8_64 = add <8 x i64> %i64, %zw_8_64
%zl1_8_64 = zext <8 x i8> %i8 to <8 x i64>
%zl2_8_64 = zext <8 x i8> %i8 to <8 x i64>
%azl_8_64 = add <8 x i64> %zl1_8_64, %zl2_8_64
%sw_16_32 = sext <8 x i16> %i16 to <8 x i32>
%asw_16_32 = add <8 x i32> %i32, %sw_16_32
%sl1_16_32 = sext <8 x i16> %i16 to <8 x i32>
%sl2_16_32 = sext <8 x i16> %i16 to <8 x i32>
%asl_16_32 = add <8 x i32> %sl1_16_32, %sl2_16_32
%zw_16_32 = zext <8 x i16> %i16 to <8 x i32>
%azw_16_32 = add <8 x i32> %i32, %zw_16_32
%zl1_16_32 = zext <8 x i16> %i16 to <8 x i32>
%zl2_16_32 = zext <8 x i16> %i16 to <8 x i32>
%azl_16_32 = add <8 x i32> %zl1_16_32, %zl2_16_32
%sw_16_64 = sext <8 x i16> %i16 to <8 x i64>
%asw_16_64 = add <8 x i64> %i64, %sw_16_64
%sl1_16_64 = sext <8 x i16> %i16 to <8 x i64>
%sl2_16_64 = sext <8 x i16> %i16 to <8 x i64>
%asl_16_64 = add <8 x i64> %sl1_16_64, %sl2_16_64
%zw_16_64 = zext <8 x i16> %i16 to <8 x i64>
%azw_16_64 = add <8 x i64> %i64, %zw_16_64
%zl1_16_64 = zext <8 x i16> %i16 to <8 x i64>
%zl2_16_64 = zext <8 x i16> %i16 to <8 x i64>
%azl_16_64 = add <8 x i64> %zl1_16_64, %zl2_16_64
%sw_32_64 = sext <8 x i32> %i32 to <8 x i64>
%asw_32_64 = add <8 x i64> %i64, %sw_32_64
%sl1_32_64 = sext <8 x i32> %i32 to <8 x i64>
%sl2_32_64 = sext <8 x i32> %i32 to <8 x i64>
%asl_32_64 = add <8 x i64> %sl1_32_64, %sl2_32_64
%zw_32_64 = zext <8 x i32> %i32 to <8 x i64>
%azw_32_64 = add <8 x i64> %i64, %zw_32_64
%zl1_32_64 = zext <8 x i32> %i32 to <8 x i64>
%zl2_32_64 = zext <8 x i32> %i32 to <8 x i64>
%azl_32_64 = add <8 x i64> %zl1_32_64, %zl2_32_64
ret void
}
define void @extaddv16(<16 x i8> %i8, <16 x i16> %i16, <16 x i32> %i32, <16 x i64> %i64) {
; CHECK-LABEL: 'extaddv16'
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_8_16 = sext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_16 = add <16 x i16> %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_16 = sext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_16 = sext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_16 = add <16 x i16> %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_8_16 = zext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_16 = add <16 x i16> %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_16 = zext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_16 = zext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_16 = add <16 x i16> %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 6 for: %sw_8_32 = sext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_32 = add <16 x i32> %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_32 = sext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_32 = sext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_32 = add <16 x i32> %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 6 for: %zw_8_32 = zext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_32 = add <16 x i32> %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_32 = zext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_32 = zext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_32 = add <16 x i32> %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 15 for: %sw_8_64 = sext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_64 = add <16 x i64> %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_64 = sext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_64 = sext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_64 = add <16 x i64> %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 15 for: %zw_8_64 = zext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_64 = add <16 x i64> %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_64 = zext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_64 = zext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_64 = add <16 x i64> %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_16_32 = sext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_32 = add <16 x i32> %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_32 = sext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_32 = sext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_32 = add <16 x i32> %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_16_32 = zext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_32 = add <16 x i32> %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_32 = zext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_32 = zext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_32 = add <16 x i32> %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 12 for: %sw_16_64 = sext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_64 = add <16 x i64> %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_64 = sext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_64 = sext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_64 = add <16 x i64> %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 12 for: %zw_16_64 = zext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_64 = add <16 x i64> %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_64 = zext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_64 = zext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_64 = add <16 x i64> %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_32_64 = sext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %asw_32_64 = add <16 x i64> %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_32_64 = sext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_32_64 = sext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %asl_32_64 = add <16 x i64> %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_32_64 = zext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %azw_32_64 = add <16 x i64> %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %azl_32_64 = add <16 x i64> %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext <16 x i8> %i8 to <16 x i16>
%asw_8_16 = add <16 x i16> %i16, %sw_8_16
%sl1_8_16 = sext <16 x i8> %i8 to <16 x i16>
%sl2_8_16 = sext <16 x i8> %i8 to <16 x i16>
%asl_8_16 = add <16 x i16> %sl1_8_16, %sl2_8_16
%zw_8_16 = zext <16 x i8> %i8 to <16 x i16>
%azw_8_16 = add <16 x i16> %i16, %zw_8_16
%zl1_8_16 = zext <16 x i8> %i8 to <16 x i16>
%zl2_8_16 = zext <16 x i8> %i8 to <16 x i16>
%azl_8_16 = add <16 x i16> %zl1_8_16, %zl2_8_16
%sw_8_32 = sext <16 x i8> %i8 to <16 x i32>
%asw_8_32 = add <16 x i32> %i32, %sw_8_32
%sl1_8_32 = sext <16 x i8> %i8 to <16 x i32>
%sl2_8_32 = sext <16 x i8> %i8 to <16 x i32>
%asl_8_32 = add <16 x i32> %sl1_8_32, %sl2_8_32
%zw_8_32 = zext <16 x i8> %i8 to <16 x i32>
%azw_8_32 = add <16 x i32> %i32, %zw_8_32
%zl1_8_32 = zext <16 x i8> %i8 to <16 x i32>
%zl2_8_32 = zext <16 x i8> %i8 to <16 x i32>
%azl_8_32 = add <16 x i32> %zl1_8_32, %zl2_8_32
%sw_8_64 = sext <16 x i8> %i8 to <16 x i64>
%asw_8_64 = add <16 x i64> %i64, %sw_8_64
%sl1_8_64 = sext <16 x i8> %i8 to <16 x i64>
%sl2_8_64 = sext <16 x i8> %i8 to <16 x i64>
%asl_8_64 = add <16 x i64> %sl1_8_64, %sl2_8_64
%zw_8_64 = zext <16 x i8> %i8 to <16 x i64>
%azw_8_64 = add <16 x i64> %i64, %zw_8_64
%zl1_8_64 = zext <16 x i8> %i8 to <16 x i64>
%zl2_8_64 = zext <16 x i8> %i8 to <16 x i64>
%azl_8_64 = add <16 x i64> %zl1_8_64, %zl2_8_64
%sw_16_32 = sext <16 x i16> %i16 to <16 x i32>
%asw_16_32 = add <16 x i32> %i32, %sw_16_32
%sl1_16_32 = sext <16 x i16> %i16 to <16 x i32>
%sl2_16_32 = sext <16 x i16> %i16 to <16 x i32>
%asl_16_32 = add <16 x i32> %sl1_16_32, %sl2_16_32
%zw_16_32 = zext <16 x i16> %i16 to <16 x i32>
%azw_16_32 = add <16 x i32> %i32, %zw_16_32
%zl1_16_32 = zext <16 x i16> %i16 to <16 x i32>
%zl2_16_32 = zext <16 x i16> %i16 to <16 x i32>
%azl_16_32 = add <16 x i32> %zl1_16_32, %zl2_16_32
%sw_16_64 = sext <16 x i16> %i16 to <16 x i64>
%asw_16_64 = add <16 x i64> %i64, %sw_16_64
%sl1_16_64 = sext <16 x i16> %i16 to <16 x i64>
%sl2_16_64 = sext <16 x i16> %i16 to <16 x i64>
%asl_16_64 = add <16 x i64> %sl1_16_64, %sl2_16_64
%zw_16_64 = zext <16 x i16> %i16 to <16 x i64>
%azw_16_64 = add <16 x i64> %i64, %zw_16_64
%zl1_16_64 = zext <16 x i16> %i16 to <16 x i64>
%zl2_16_64 = zext <16 x i16> %i16 to <16 x i64>
%azl_16_64 = add <16 x i64> %zl1_16_64, %zl2_16_64
%sw_32_64 = sext <16 x i32> %i32 to <16 x i64>
%asw_32_64 = add <16 x i64> %i64, %sw_32_64
%sl1_32_64 = sext <16 x i32> %i32 to <16 x i64>
%sl2_32_64 = sext <16 x i32> %i32 to <16 x i64>
%asl_32_64 = add <16 x i64> %sl1_32_64, %sl2_32_64
%zw_32_64 = zext <16 x i32> %i32 to <16 x i64>
%azw_32_64 = add <16 x i64> %i64, %zw_32_64
%zl1_32_64 = zext <16 x i32> %i32 to <16 x i64>
%zl2_32_64 = zext <16 x i32> %i32 to <16 x i64>
%azl_32_64 = add <16 x i64> %zl1_32_64, %zl2_32_64
ret void
}
define void @extsubv1(i8 %i8, i16 %i16, i32 %i32, i64 %i64) {
; CHECK-LABEL: 'extsubv1'
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_16 = sext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_16 = sub i16 %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_16 = sext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_16 = sext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_16 = sub i16 %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_16 = zext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_16 = sub i16 %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_16 = zext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_16 = zext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_16 = sub i16 %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_32 = sext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_32 = sub i32 %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_32 = sext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_32 = sext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_32 = sub i32 %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_32 = zext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_32 = sub i32 %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_32 = zext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_32 = zext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_32 = sub i32 %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_64 = sext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_64 = sub i64 %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_64 = sext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_64 = sext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_64 = sub i64 %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_8_64 = zext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_64 = sub i64 %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_64 = zext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_64 = zext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_64 = sub i64 %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_16_32 = sext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_16_32 = sub i32 %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_16_32 = sext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_16_32 = sext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_16_32 = sub i32 %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_16_32 = zext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_16_32 = sub i32 %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_16_32 = zext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_16_32 = zext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_16_32 = sub i32 %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_16_64 = sext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_16_64 = sub i64 %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_16_64 = sext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_16_64 = sext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_16_64 = sub i64 %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_16_64 = zext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_16_64 = sub i64 %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_64 = zext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_64 = zext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_16_64 = sub i64 %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_32_64 = sext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_32_64 = sub i64 %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_32_64 = sext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_32_64 = sext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_32_64 = sub i64 %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_32_64 = zext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_32_64 = sub i64 %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_32_64 = sub i64 %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext i8 %i8 to i16
%asw_8_16 = sub i16 %i16, %sw_8_16
%sl1_8_16 = sext i8 %i8 to i16
%sl2_8_16 = sext i8 %i8 to i16
%asl_8_16 = sub i16 %sl1_8_16, %sl2_8_16
%zw_8_16 = zext i8 %i8 to i16
%azw_8_16 = sub i16 %i16, %zw_8_16
%zl1_8_16 = zext i8 %i8 to i16
%zl2_8_16 = zext i8 %i8 to i16
%azl_8_16 = sub i16 %zl1_8_16, %zl2_8_16
%sw_8_32 = sext i8 %i8 to i32
%asw_8_32 = sub i32 %i32, %sw_8_32
%sl1_8_32 = sext i8 %i8 to i32
%sl2_8_32 = sext i8 %i8 to i32
%asl_8_32 = sub i32 %sl1_8_32, %sl2_8_32
%zw_8_32 = zext i8 %i8 to i32
%azw_8_32 = sub i32 %i32, %zw_8_32
%zl1_8_32 = zext i8 %i8 to i32
%zl2_8_32 = zext i8 %i8 to i32
%azl_8_32 = sub i32 %zl1_8_32, %zl2_8_32
%sw_8_64 = sext i8 %i8 to i64
%asw_8_64 = sub i64 %i64, %sw_8_64
%sl1_8_64 = sext i8 %i8 to i64
%sl2_8_64 = sext i8 %i8 to i64
%asl_8_64 = sub i64 %sl1_8_64, %sl2_8_64
%zw_8_64 = zext i8 %i8 to i64
%azw_8_64 = sub i64 %i64, %zw_8_64
%zl1_8_64 = zext i8 %i8 to i64
%zl2_8_64 = zext i8 %i8 to i64
%azl_8_64 = sub i64 %zl1_8_64, %zl2_8_64
%sw_16_32 = sext i16 %i16 to i32
%asw_16_32 = sub i32 %i32, %sw_16_32
%sl1_16_32 = sext i16 %i16 to i32
%sl2_16_32 = sext i16 %i16 to i32
%asl_16_32 = sub i32 %sl1_16_32, %sl2_16_32
%zw_16_32 = zext i16 %i16 to i32
%azw_16_32 = sub i32 %i32, %zw_16_32
%zl1_16_32 = zext i16 %i16 to i32
%zl2_16_32 = zext i16 %i16 to i32
%azl_16_32 = sub i32 %zl1_16_32, %zl2_16_32
%sw_16_64 = sext i16 %i16 to i64
%asw_16_64 = sub i64 %i64, %sw_16_64
%sl1_16_64 = sext i16 %i16 to i64
%sl2_16_64 = sext i16 %i16 to i64
%asl_16_64 = sub i64 %sl1_16_64, %sl2_16_64
%zw_16_64 = zext i16 %i16 to i64
%azw_16_64 = sub i64 %i64, %zw_16_64
%zl1_16_64 = zext i16 %i16 to i64
%zl2_16_64 = zext i16 %i16 to i64
%azl_16_64 = sub i64 %zl1_16_64, %zl2_16_64
%sw_32_64 = sext i32 %i32 to i64
%asw_32_64 = sub i64 %i64, %sw_32_64
%sl1_32_64 = sext i32 %i32 to i64
%sl2_32_64 = sext i32 %i32 to i64
%asl_32_64 = sub i64 %sl1_32_64, %sl2_32_64
%zw_32_64 = zext i32 %i32 to i64
%azw_32_64 = sub i64 %i64, %zw_32_64
%zl1_32_64 = zext i32 %i32 to i64
%zl2_32_64 = zext i32 %i32 to i64
%azl_32_64 = sub i64 %zl1_32_64, %zl2_32_64
ret void
}
define void @extsubv2(<2 x i8> %i8, <2 x i16> %i16, <2 x i32> %i32, <2 x i64> %i64) {
; CHECK-LABEL: 'extsubv2'
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_16 = sext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_16 = sub <2 x i16> %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_16 = sext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_16 = sext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_16 = sub <2 x i16> %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_16 = zext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_16 = sub <2 x i16> %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_16 = zext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_16 = zext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_16 = sub <2 x i16> %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_32 = sext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_32 = sub <2 x i32> %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_32 = sext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_32 = sext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_32 = sub <2 x i32> %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_32 = zext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_32 = sub <2 x i32> %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_32 = zext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_32 = zext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_32 = sub <2 x i32> %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_64 = sext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_64 = sub <2 x i64> %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_64 = sext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_64 = sext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_64 = sub <2 x i64> %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_64 = zext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_64 = sub <2 x i64> %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_64 = zext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_64 = zext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_64 = sub <2 x i64> %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_16_32 = sext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_16_32 = sub <2 x i32> %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_16_32 = sext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_16_32 = sext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_16_32 = sub <2 x i32> %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_16_32 = zext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_16_32 = sub <2 x i32> %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_16_32 = zext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_16_32 = zext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_16_32 = sub <2 x i32> %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_16_64 = sext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_16_64 = sub <2 x i64> %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_16_64 = sext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_16_64 = sext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_16_64 = sub <2 x i64> %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_16_64 = zext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_16_64 = sub <2 x i64> %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_16_64 = zext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_16_64 = zext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_16_64 = sub <2 x i64> %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_32_64 = sext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_32_64 = sub <2 x i64> %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_32_64 = sext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_32_64 = sext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_32_64 = sub <2 x i64> %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_32_64 = zext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_32_64 = sub <2 x i64> %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_32_64 = sub <2 x i64> %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext <2 x i8> %i8 to <2 x i16>
%asw_8_16 = sub <2 x i16> %i16, %sw_8_16
%sl1_8_16 = sext <2 x i8> %i8 to <2 x i16>
%sl2_8_16 = sext <2 x i8> %i8 to <2 x i16>
%asl_8_16 = sub <2 x i16> %sl1_8_16, %sl2_8_16
%zw_8_16 = zext <2 x i8> %i8 to <2 x i16>
%azw_8_16 = sub <2 x i16> %i16, %zw_8_16
%zl1_8_16 = zext <2 x i8> %i8 to <2 x i16>
%zl2_8_16 = zext <2 x i8> %i8 to <2 x i16>
%azl_8_16 = sub <2 x i16> %zl1_8_16, %zl2_8_16
%sw_8_32 = sext <2 x i8> %i8 to <2 x i32>
%asw_8_32 = sub <2 x i32> %i32, %sw_8_32
%sl1_8_32 = sext <2 x i8> %i8 to <2 x i32>
%sl2_8_32 = sext <2 x i8> %i8 to <2 x i32>
%asl_8_32 = sub <2 x i32> %sl1_8_32, %sl2_8_32
%zw_8_32 = zext <2 x i8> %i8 to <2 x i32>
%azw_8_32 = sub <2 x i32> %i32, %zw_8_32
%zl1_8_32 = zext <2 x i8> %i8 to <2 x i32>
%zl2_8_32 = zext <2 x i8> %i8 to <2 x i32>
%azl_8_32 = sub <2 x i32> %zl1_8_32, %zl2_8_32
%sw_8_64 = sext <2 x i8> %i8 to <2 x i64>
%asw_8_64 = sub <2 x i64> %i64, %sw_8_64
%sl1_8_64 = sext <2 x i8> %i8 to <2 x i64>
%sl2_8_64 = sext <2 x i8> %i8 to <2 x i64>
%asl_8_64 = sub <2 x i64> %sl1_8_64, %sl2_8_64
%zw_8_64 = zext <2 x i8> %i8 to <2 x i64>
%azw_8_64 = sub <2 x i64> %i64, %zw_8_64
%zl1_8_64 = zext <2 x i8> %i8 to <2 x i64>
%zl2_8_64 = zext <2 x i8> %i8 to <2 x i64>
%azl_8_64 = sub <2 x i64> %zl1_8_64, %zl2_8_64
%sw_16_32 = sext <2 x i16> %i16 to <2 x i32>
%asw_16_32 = sub <2 x i32> %i32, %sw_16_32
%sl1_16_32 = sext <2 x i16> %i16 to <2 x i32>
%sl2_16_32 = sext <2 x i16> %i16 to <2 x i32>
%asl_16_32 = sub <2 x i32> %sl1_16_32, %sl2_16_32
%zw_16_32 = zext <2 x i16> %i16 to <2 x i32>
%azw_16_32 = sub <2 x i32> %i32, %zw_16_32
%zl1_16_32 = zext <2 x i16> %i16 to <2 x i32>
%zl2_16_32 = zext <2 x i16> %i16 to <2 x i32>
%azl_16_32 = sub <2 x i32> %zl1_16_32, %zl2_16_32
%sw_16_64 = sext <2 x i16> %i16 to <2 x i64>
%asw_16_64 = sub <2 x i64> %i64, %sw_16_64
%sl1_16_64 = sext <2 x i16> %i16 to <2 x i64>
%sl2_16_64 = sext <2 x i16> %i16 to <2 x i64>
%asl_16_64 = sub <2 x i64> %sl1_16_64, %sl2_16_64
%zw_16_64 = zext <2 x i16> %i16 to <2 x i64>
%azw_16_64 = sub <2 x i64> %i64, %zw_16_64
%zl1_16_64 = zext <2 x i16> %i16 to <2 x i64>
%zl2_16_64 = zext <2 x i16> %i16 to <2 x i64>
%azl_16_64 = sub <2 x i64> %zl1_16_64, %zl2_16_64
%sw_32_64 = sext <2 x i32> %i32 to <2 x i64>
%asw_32_64 = sub <2 x i64> %i64, %sw_32_64
%sl1_32_64 = sext <2 x i32> %i32 to <2 x i64>
%sl2_32_64 = sext <2 x i32> %i32 to <2 x i64>
%asl_32_64 = sub <2 x i64> %sl1_32_64, %sl2_32_64
%zw_32_64 = zext <2 x i32> %i32 to <2 x i64>
%azw_32_64 = sub <2 x i64> %i64, %zw_32_64
%zl1_32_64 = zext <2 x i32> %i32 to <2 x i64>
%zl2_32_64 = zext <2 x i32> %i32 to <2 x i64>
%azl_32_64 = sub <2 x i64> %zl1_32_64, %zl2_32_64
ret void
}
define void @extsubv4(<4 x i8> %i8, <4 x i16> %i16, <4 x i32> %i32, <4 x i64> %i64) {
; CHECK-LABEL: 'extsubv4'
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_16 = sext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_16 = sub <4 x i16> %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_16 = sext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_16 = sext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_16 = sub <4 x i16> %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_16 = zext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_16 = sub <4 x i16> %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_16 = zext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_16 = zext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_16 = sub <4 x i16> %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_32 = sext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_32 = sub <4 x i32> %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_32 = sext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_32 = sext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_32 = sub <4 x i32> %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_32 = zext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_32 = sub <4 x i32> %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_32 = zext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_32 = zext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_32 = sub <4 x i32> %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sw_8_64 = sext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_64 = sub <4 x i64> %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sl1_8_64 = sext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sl2_8_64 = sext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_64 = sub <4 x i64> %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zw_8_64 = zext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_64 = sub <4 x i64> %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zl1_8_64 = zext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zl2_8_64 = zext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_64 = sub <4 x i64> %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_16_32 = sext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_16_32 = sub <4 x i32> %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_32 = sext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_32 = sext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_16_32 = sub <4 x i32> %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_16_32 = zext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_16_32 = sub <4 x i32> %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_32 = zext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_32 = zext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_16_32 = sub <4 x i32> %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sw_16_64 = sext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_64 = sub <4 x i64> %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_64 = sext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_64 = sext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_64 = sub <4 x i64> %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zw_16_64 = zext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_64 = sub <4 x i64> %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_64 = zext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_64 = zext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_64 = sub <4 x i64> %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_32_64 = sext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_32_64 = sub <4 x i64> %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_32_64 = sext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_32_64 = sext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asl_32_64 = sub <4 x i64> %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_32_64 = zext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_32_64 = sub <4 x i64> %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azl_32_64 = sub <4 x i64> %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext <4 x i8> %i8 to <4 x i16>
%asw_8_16 = sub <4 x i16> %i16, %sw_8_16
%sl1_8_16 = sext <4 x i8> %i8 to <4 x i16>
%sl2_8_16 = sext <4 x i8> %i8 to <4 x i16>
%asl_8_16 = sub <4 x i16> %sl1_8_16, %sl2_8_16
%zw_8_16 = zext <4 x i8> %i8 to <4 x i16>
%azw_8_16 = sub <4 x i16> %i16, %zw_8_16
%zl1_8_16 = zext <4 x i8> %i8 to <4 x i16>
%zl2_8_16 = zext <4 x i8> %i8 to <4 x i16>
%azl_8_16 = sub <4 x i16> %zl1_8_16, %zl2_8_16
%sw_8_32 = sext <4 x i8> %i8 to <4 x i32>
%asw_8_32 = sub <4 x i32> %i32, %sw_8_32
%sl1_8_32 = sext <4 x i8> %i8 to <4 x i32>
%sl2_8_32 = sext <4 x i8> %i8 to <4 x i32>
%asl_8_32 = sub <4 x i32> %sl1_8_32, %sl2_8_32
%zw_8_32 = zext <4 x i8> %i8 to <4 x i32>
%azw_8_32 = sub <4 x i32> %i32, %zw_8_32
%zl1_8_32 = zext <4 x i8> %i8 to <4 x i32>
%zl2_8_32 = zext <4 x i8> %i8 to <4 x i32>
%azl_8_32 = sub <4 x i32> %zl1_8_32, %zl2_8_32
%sw_8_64 = sext <4 x i8> %i8 to <4 x i64>
%asw_8_64 = sub <4 x i64> %i64, %sw_8_64
%sl1_8_64 = sext <4 x i8> %i8 to <4 x i64>
%sl2_8_64 = sext <4 x i8> %i8 to <4 x i64>
%asl_8_64 = sub <4 x i64> %sl1_8_64, %sl2_8_64
%zw_8_64 = zext <4 x i8> %i8 to <4 x i64>
%azw_8_64 = sub <4 x i64> %i64, %zw_8_64
%zl1_8_64 = zext <4 x i8> %i8 to <4 x i64>
%zl2_8_64 = zext <4 x i8> %i8 to <4 x i64>
%azl_8_64 = sub <4 x i64> %zl1_8_64, %zl2_8_64
%sw_16_32 = sext <4 x i16> %i16 to <4 x i32>
%asw_16_32 = sub <4 x i32> %i32, %sw_16_32
%sl1_16_32 = sext <4 x i16> %i16 to <4 x i32>
%sl2_16_32 = sext <4 x i16> %i16 to <4 x i32>
%asl_16_32 = sub <4 x i32> %sl1_16_32, %sl2_16_32
%zw_16_32 = zext <4 x i16> %i16 to <4 x i32>
%azw_16_32 = sub <4 x i32> %i32, %zw_16_32
%zl1_16_32 = zext <4 x i16> %i16 to <4 x i32>
%zl2_16_32 = zext <4 x i16> %i16 to <4 x i32>
%azl_16_32 = sub <4 x i32> %zl1_16_32, %zl2_16_32
%sw_16_64 = sext <4 x i16> %i16 to <4 x i64>
%asw_16_64 = sub <4 x i64> %i64, %sw_16_64
%sl1_16_64 = sext <4 x i16> %i16 to <4 x i64>
%sl2_16_64 = sext <4 x i16> %i16 to <4 x i64>
%asl_16_64 = sub <4 x i64> %sl1_16_64, %sl2_16_64
%zw_16_64 = zext <4 x i16> %i16 to <4 x i64>
%azw_16_64 = sub <4 x i64> %i64, %zw_16_64
%zl1_16_64 = zext <4 x i16> %i16 to <4 x i64>
%zl2_16_64 = zext <4 x i16> %i16 to <4 x i64>
%azl_16_64 = sub <4 x i64> %zl1_16_64, %zl2_16_64
%sw_32_64 = sext <4 x i32> %i32 to <4 x i64>
%asw_32_64 = sub <4 x i64> %i64, %sw_32_64
%sl1_32_64 = sext <4 x i32> %i32 to <4 x i64>
%sl2_32_64 = sext <4 x i32> %i32 to <4 x i64>
%asl_32_64 = sub <4 x i64> %sl1_32_64, %sl2_32_64
%zw_32_64 = zext <4 x i32> %i32 to <4 x i64>
%azw_32_64 = sub <4 x i64> %i64, %zw_32_64
%zl1_32_64 = zext <4 x i32> %i32 to <4 x i64>
%zl2_32_64 = zext <4 x i32> %i32 to <4 x i64>
%azl_32_64 = sub <4 x i64> %zl1_32_64, %zl2_32_64
ret void
}
define void @extsubv8(<8 x i8> %i8, <8 x i16> %i16, <8 x i32> %i32, <8 x i64> %i64) {
; CHECK-LABEL: 'extsubv8'
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_8_16 = sext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_16 = sub <8 x i16> %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_16 = sext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_16 = sub <8 x i16> %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_8_16 = zext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_16 = sub <8 x i16> %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_16 = zext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_16 = sub <8 x i16> %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sw_8_32 = sext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_32 = sub <8 x i32> %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_32 = sext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_32 = sext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_32 = sub <8 x i32> %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zw_8_32 = zext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_32 = sub <8 x i32> %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_32 = zext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_32 = zext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_32 = sub <8 x i32> %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 7 for: %sw_8_64 = sext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_64 = sub <8 x i64> %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_64 = sext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_64 = sext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:7 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_64 = sub <8 x i64> %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 7 for: %zw_8_64 = zext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_64 = sub <8 x i64> %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_64 = zext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_64 = zext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:7 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_64 = sub <8 x i64> %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_16_32 = sext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_32 = sub <8 x i32> %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_32 = sext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_32 = sext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_32 = sub <8 x i32> %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_16_32 = zext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_32 = sub <8 x i32> %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_32 = zext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_32 = zext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_32 = sub <8 x i32> %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 6 for: %sw_16_64 = sext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_64 = sub <8 x i64> %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_64 = sext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_64 = sext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_64 = sub <8 x i64> %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 6 for: %zw_16_64 = zext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_64 = sub <8 x i64> %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_64 = zext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_64 = zext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_64 = sub <8 x i64> %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_32_64 = sext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asw_32_64 = sub <8 x i64> %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_32_64 = sext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_32_64 = sext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asl_32_64 = sub <8 x i64> %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_32_64 = zext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azw_32_64 = sub <8 x i64> %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azl_32_64 = sub <8 x i64> %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext <8 x i8> %i8 to <8 x i16>
%asw_8_16 = sub <8 x i16> %i16, %sw_8_16
%sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
%sl2_8_16 = sext <8 x i8> %i8 to <8 x i16>
%asl_8_16 = sub <8 x i16> %sl1_8_16, %sl2_8_16
%zw_8_16 = zext <8 x i8> %i8 to <8 x i16>
%azw_8_16 = sub <8 x i16> %i16, %zw_8_16
%zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
%zl2_8_16 = zext <8 x i8> %i8 to <8 x i16>
%azl_8_16 = sub <8 x i16> %zl1_8_16, %zl2_8_16
%sw_8_32 = sext <8 x i8> %i8 to <8 x i32>
%asw_8_32 = sub <8 x i32> %i32, %sw_8_32
%sl1_8_32 = sext <8 x i8> %i8 to <8 x i32>
%sl2_8_32 = sext <8 x i8> %i8 to <8 x i32>
%asl_8_32 = sub <8 x i32> %sl1_8_32, %sl2_8_32
%zw_8_32 = zext <8 x i8> %i8 to <8 x i32>
%azw_8_32 = sub <8 x i32> %i32, %zw_8_32
%zl1_8_32 = zext <8 x i8> %i8 to <8 x i32>
%zl2_8_32 = zext <8 x i8> %i8 to <8 x i32>
%azl_8_32 = sub <8 x i32> %zl1_8_32, %zl2_8_32
%sw_8_64 = sext <8 x i8> %i8 to <8 x i64>
%asw_8_64 = sub <8 x i64> %i64, %sw_8_64
%sl1_8_64 = sext <8 x i8> %i8 to <8 x i64>
%sl2_8_64 = sext <8 x i8> %i8 to <8 x i64>
%asl_8_64 = sub <8 x i64> %sl1_8_64, %sl2_8_64
%zw_8_64 = zext <8 x i8> %i8 to <8 x i64>
%azw_8_64 = sub <8 x i64> %i64, %zw_8_64
%zl1_8_64 = zext <8 x i8> %i8 to <8 x i64>
%zl2_8_64 = zext <8 x i8> %i8 to <8 x i64>
%azl_8_64 = sub <8 x i64> %zl1_8_64, %zl2_8_64
%sw_16_32 = sext <8 x i16> %i16 to <8 x i32>
%asw_16_32 = sub <8 x i32> %i32, %sw_16_32
%sl1_16_32 = sext <8 x i16> %i16 to <8 x i32>
%sl2_16_32 = sext <8 x i16> %i16 to <8 x i32>
%asl_16_32 = sub <8 x i32> %sl1_16_32, %sl2_16_32
%zw_16_32 = zext <8 x i16> %i16 to <8 x i32>
%azw_16_32 = sub <8 x i32> %i32, %zw_16_32
%zl1_16_32 = zext <8 x i16> %i16 to <8 x i32>
%zl2_16_32 = zext <8 x i16> %i16 to <8 x i32>
%azl_16_32 = sub <8 x i32> %zl1_16_32, %zl2_16_32
%sw_16_64 = sext <8 x i16> %i16 to <8 x i64>
%asw_16_64 = sub <8 x i64> %i64, %sw_16_64
%sl1_16_64 = sext <8 x i16> %i16 to <8 x i64>
%sl2_16_64 = sext <8 x i16> %i16 to <8 x i64>
%asl_16_64 = sub <8 x i64> %sl1_16_64, %sl2_16_64
%zw_16_64 = zext <8 x i16> %i16 to <8 x i64>
%azw_16_64 = sub <8 x i64> %i64, %zw_16_64
%zl1_16_64 = zext <8 x i16> %i16 to <8 x i64>
%zl2_16_64 = zext <8 x i16> %i16 to <8 x i64>
%azl_16_64 = sub <8 x i64> %zl1_16_64, %zl2_16_64
%sw_32_64 = sext <8 x i32> %i32 to <8 x i64>
%asw_32_64 = sub <8 x i64> %i64, %sw_32_64
%sl1_32_64 = sext <8 x i32> %i32 to <8 x i64>
%sl2_32_64 = sext <8 x i32> %i32 to <8 x i64>
%asl_32_64 = sub <8 x i64> %sl1_32_64, %sl2_32_64
%zw_32_64 = zext <8 x i32> %i32 to <8 x i64>
%azw_32_64 = sub <8 x i64> %i64, %zw_32_64
%zl1_32_64 = zext <8 x i32> %i32 to <8 x i64>
%zl2_32_64 = zext <8 x i32> %i32 to <8 x i64>
%azl_32_64 = sub <8 x i64> %zl1_32_64, %zl2_32_64
ret void
}
define void @extsubv16(<16 x i8> %i8, <16 x i16> %i16, <16 x i32> %i32, <16 x i64> %i64) {
; CHECK-LABEL: 'extsubv16'
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_8_16 = sext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_16 = sub <16 x i16> %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_16 = sext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_16 = sext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_16 = sub <16 x i16> %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_8_16 = zext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_16 = sub <16 x i16> %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_16 = zext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_16 = zext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_16 = sub <16 x i16> %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 6 for: %sw_8_32 = sext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_32 = sub <16 x i32> %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_32 = sext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_32 = sext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_32 = sub <16 x i32> %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 6 for: %zw_8_32 = zext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_32 = sub <16 x i32> %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_32 = zext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_32 = zext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_32 = sub <16 x i32> %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 15 for: %sw_8_64 = sext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_64 = sub <16 x i64> %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_64 = sext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_64 = sext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_64 = sub <16 x i64> %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 15 for: %zw_8_64 = zext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_64 = sub <16 x i64> %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_64 = zext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_64 = zext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_64 = sub <16 x i64> %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_16_32 = sext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_32 = sub <16 x i32> %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_32 = sext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_32 = sext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_32 = sub <16 x i32> %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_16_32 = zext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_32 = sub <16 x i32> %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_32 = zext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_32 = zext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_32 = sub <16 x i32> %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 12 for: %sw_16_64 = sext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_64 = sub <16 x i64> %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_64 = sext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_64 = sext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_64 = sub <16 x i64> %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 12 for: %zw_16_64 = zext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_64 = sub <16 x i64> %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_64 = zext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_64 = zext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_64 = sub <16 x i64> %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sw_32_64 = sext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %asw_32_64 = sub <16 x i64> %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_32_64 = sext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_32_64 = sext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %asl_32_64 = sub <16 x i64> %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_32_64 = zext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %azw_32_64 = sub <16 x i64> %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %azl_32_64 = sub <16 x i64> %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext <16 x i8> %i8 to <16 x i16>
%asw_8_16 = sub <16 x i16> %i16, %sw_8_16
%sl1_8_16 = sext <16 x i8> %i8 to <16 x i16>
%sl2_8_16 = sext <16 x i8> %i8 to <16 x i16>
%asl_8_16 = sub <16 x i16> %sl1_8_16, %sl2_8_16
%zw_8_16 = zext <16 x i8> %i8 to <16 x i16>
%azw_8_16 = sub <16 x i16> %i16, %zw_8_16
%zl1_8_16 = zext <16 x i8> %i8 to <16 x i16>
%zl2_8_16 = zext <16 x i8> %i8 to <16 x i16>
%azl_8_16 = sub <16 x i16> %zl1_8_16, %zl2_8_16
%sw_8_32 = sext <16 x i8> %i8 to <16 x i32>
%asw_8_32 = sub <16 x i32> %i32, %sw_8_32
%sl1_8_32 = sext <16 x i8> %i8 to <16 x i32>
%sl2_8_32 = sext <16 x i8> %i8 to <16 x i32>
%asl_8_32 = sub <16 x i32> %sl1_8_32, %sl2_8_32
%zw_8_32 = zext <16 x i8> %i8 to <16 x i32>
%azw_8_32 = sub <16 x i32> %i32, %zw_8_32
%zl1_8_32 = zext <16 x i8> %i8 to <16 x i32>
%zl2_8_32 = zext <16 x i8> %i8 to <16 x i32>
%azl_8_32 = sub <16 x i32> %zl1_8_32, %zl2_8_32
%sw_8_64 = sext <16 x i8> %i8 to <16 x i64>
%asw_8_64 = sub <16 x i64> %i64, %sw_8_64
%sl1_8_64 = sext <16 x i8> %i8 to <16 x i64>
%sl2_8_64 = sext <16 x i8> %i8 to <16 x i64>
%asl_8_64 = sub <16 x i64> %sl1_8_64, %sl2_8_64
%zw_8_64 = zext <16 x i8> %i8 to <16 x i64>
%azw_8_64 = sub <16 x i64> %i64, %zw_8_64
%zl1_8_64 = zext <16 x i8> %i8 to <16 x i64>
%zl2_8_64 = zext <16 x i8> %i8 to <16 x i64>
%azl_8_64 = sub <16 x i64> %zl1_8_64, %zl2_8_64
%sw_16_32 = sext <16 x i16> %i16 to <16 x i32>
%asw_16_32 = sub <16 x i32> %i32, %sw_16_32
%sl1_16_32 = sext <16 x i16> %i16 to <16 x i32>
%sl2_16_32 = sext <16 x i16> %i16 to <16 x i32>
%asl_16_32 = sub <16 x i32> %sl1_16_32, %sl2_16_32
%zw_16_32 = zext <16 x i16> %i16 to <16 x i32>
%azw_16_32 = sub <16 x i32> %i32, %zw_16_32
%zl1_16_32 = zext <16 x i16> %i16 to <16 x i32>
%zl2_16_32 = zext <16 x i16> %i16 to <16 x i32>
%azl_16_32 = sub <16 x i32> %zl1_16_32, %zl2_16_32
%sw_16_64 = sext <16 x i16> %i16 to <16 x i64>
%asw_16_64 = sub <16 x i64> %i64, %sw_16_64
%sl1_16_64 = sext <16 x i16> %i16 to <16 x i64>
%sl2_16_64 = sext <16 x i16> %i16 to <16 x i64>
%asl_16_64 = sub <16 x i64> %sl1_16_64, %sl2_16_64
%zw_16_64 = zext <16 x i16> %i16 to <16 x i64>
%azw_16_64 = sub <16 x i64> %i64, %zw_16_64
%zl1_16_64 = zext <16 x i16> %i16 to <16 x i64>
%zl2_16_64 = zext <16 x i16> %i16 to <16 x i64>
%azl_16_64 = sub <16 x i64> %zl1_16_64, %zl2_16_64
%sw_32_64 = sext <16 x i32> %i32 to <16 x i64>
%asw_32_64 = sub <16 x i64> %i64, %sw_32_64
%sl1_32_64 = sext <16 x i32> %i32 to <16 x i64>
%sl2_32_64 = sext <16 x i32> %i32 to <16 x i64>
%asl_32_64 = sub <16 x i64> %sl1_32_64, %sl2_32_64
%zw_32_64 = zext <16 x i32> %i32 to <16 x i64>
%azw_32_64 = sub <16 x i64> %i64, %zw_32_64
%zl1_32_64 = zext <16 x i32> %i32 to <16 x i64>
%zl2_32_64 = zext <16 x i32> %i32 to <16 x i64>
%azl_32_64 = sub <16 x i64> %zl1_32_64, %zl2_32_64
ret void
}
define void @extmulv1(i8 %i8, i16 %i16, i32 %i32, i64 %i64) {
; CHECK-LABEL: 'extmulv1'
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_16 = sext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_16 = mul i16 %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_16 = sext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_16 = sext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_16 = mul i16 %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_16 = zext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_16 = mul i16 %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_16 = zext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_16 = zext i8 %i8 to i16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_16 = mul i16 %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_32 = sext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_32 = mul i32 %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_32 = sext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_32 = sext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_32 = mul i32 %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_32 = zext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_32 = mul i32 %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_32 = zext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_32 = zext i8 %i8 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_32 = mul i32 %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_64 = sext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_64 = mul i64 %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_64 = sext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_64 = sext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_64 = mul i64 %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_8_64 = zext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_64 = mul i64 %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_64 = zext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_64 = zext i8 %i8 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_64 = mul i64 %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_16_32 = sext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_16_32 = mul i32 %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_16_32 = sext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_16_32 = sext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_16_32 = mul i32 %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_16_32 = zext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_16_32 = mul i32 %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_16_32 = zext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_16_32 = zext i16 %i16 to i32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_16_32 = mul i32 %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_16_64 = sext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_16_64 = mul i64 %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_16_64 = sext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_16_64 = sext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_16_64 = mul i64 %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_16_64 = zext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_16_64 = mul i64 %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_64 = zext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_64 = zext i16 %i16 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_16_64 = mul i64 %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_32_64 = sext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_32_64 = mul i64 %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_32_64 = sext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_32_64 = sext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_32_64 = mul i64 %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zw_32_64 = zext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_32_64 = mul i64 %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext i32 %i32 to i64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_32_64 = mul i64 %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext i8 %i8 to i16
%asw_8_16 = mul i16 %i16, %sw_8_16
%sl1_8_16 = sext i8 %i8 to i16
%sl2_8_16 = sext i8 %i8 to i16
%asl_8_16 = mul i16 %sl1_8_16, %sl2_8_16
%zw_8_16 = zext i8 %i8 to i16
%azw_8_16 = mul i16 %i16, %zw_8_16
%zl1_8_16 = zext i8 %i8 to i16
%zl2_8_16 = zext i8 %i8 to i16
%azl_8_16 = mul i16 %zl1_8_16, %zl2_8_16
%sw_8_32 = sext i8 %i8 to i32
%asw_8_32 = mul i32 %i32, %sw_8_32
%sl1_8_32 = sext i8 %i8 to i32
%sl2_8_32 = sext i8 %i8 to i32
%asl_8_32 = mul i32 %sl1_8_32, %sl2_8_32
%zw_8_32 = zext i8 %i8 to i32
%azw_8_32 = mul i32 %i32, %zw_8_32
%zl1_8_32 = zext i8 %i8 to i32
%zl2_8_32 = zext i8 %i8 to i32
%azl_8_32 = mul i32 %zl1_8_32, %zl2_8_32
%sw_8_64 = sext i8 %i8 to i64
%asw_8_64 = mul i64 %i64, %sw_8_64
%sl1_8_64 = sext i8 %i8 to i64
%sl2_8_64 = sext i8 %i8 to i64
%asl_8_64 = mul i64 %sl1_8_64, %sl2_8_64
%zw_8_64 = zext i8 %i8 to i64
%azw_8_64 = mul i64 %i64, %zw_8_64
%zl1_8_64 = zext i8 %i8 to i64
%zl2_8_64 = zext i8 %i8 to i64
%azl_8_64 = mul i64 %zl1_8_64, %zl2_8_64
%sw_16_32 = sext i16 %i16 to i32
%asw_16_32 = mul i32 %i32, %sw_16_32
%sl1_16_32 = sext i16 %i16 to i32
%sl2_16_32 = sext i16 %i16 to i32
%asl_16_32 = mul i32 %sl1_16_32, %sl2_16_32
%zw_16_32 = zext i16 %i16 to i32
%azw_16_32 = mul i32 %i32, %zw_16_32
%zl1_16_32 = zext i16 %i16 to i32
%zl2_16_32 = zext i16 %i16 to i32
%azl_16_32 = mul i32 %zl1_16_32, %zl2_16_32
%sw_16_64 = sext i16 %i16 to i64
%asw_16_64 = mul i64 %i64, %sw_16_64
%sl1_16_64 = sext i16 %i16 to i64
%sl2_16_64 = sext i16 %i16 to i64
%asl_16_64 = mul i64 %sl1_16_64, %sl2_16_64
%zw_16_64 = zext i16 %i16 to i64
%azw_16_64 = mul i64 %i64, %zw_16_64
%zl1_16_64 = zext i16 %i16 to i64
%zl2_16_64 = zext i16 %i16 to i64
%azl_16_64 = mul i64 %zl1_16_64, %zl2_16_64
%sw_32_64 = sext i32 %i32 to i64
%asw_32_64 = mul i64 %i64, %sw_32_64
%sl1_32_64 = sext i32 %i32 to i64
%sl2_32_64 = sext i32 %i32 to i64
%asl_32_64 = mul i64 %sl1_32_64, %sl2_32_64
%zw_32_64 = zext i32 %i32 to i64
%azw_32_64 = mul i64 %i64, %zw_32_64
%zl1_32_64 = zext i32 %i32 to i64
%zl2_32_64 = zext i32 %i32 to i64
%azl_32_64 = mul i64 %zl1_32_64, %zl2_32_64
ret void
}
define void @extmulv2(<2 x i8> %i8, <2 x i16> %i16, <2 x i32> %i32, <2 x i64> %i64) {
; CHECK-LABEL: 'extmulv2'
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_16 = sext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_16 = mul <2 x i16> %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_16 = sext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_16 = sext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_16 = mul <2 x i16> %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_16 = zext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_16 = mul <2 x i16> %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_16 = zext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_16 = zext <2 x i8> %i8 to <2 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_16 = mul <2 x i16> %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_32 = sext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_32 = mul <2 x i32> %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_32 = sext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_32 = sext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_32 = mul <2 x i32> %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_32 = zext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_32 = mul <2 x i32> %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_32 = zext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_32 = zext <2 x i8> %i8 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_32 = mul <2 x i32> %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_64 = sext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_64 = mul <2 x i64> %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_64 = sext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_64 = sext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_64 = mul <2 x i64> %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_64 = zext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_64 = mul <2 x i64> %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_64 = zext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_64 = zext <2 x i8> %i8 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_64 = mul <2 x i64> %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_16_32 = sext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_16_32 = mul <2 x i32> %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_16_32 = sext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_16_32 = sext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_16_32 = mul <2 x i32> %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_16_32 = zext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_16_32 = mul <2 x i32> %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_16_32 = zext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_16_32 = zext <2 x i16> %i16 to <2 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_16_32 = mul <2 x i32> %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_16_64 = sext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_64 = mul <2 x i64> %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_16_64 = sext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_16_64 = sext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_64 = mul <2 x i64> %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_16_64 = zext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_64 = mul <2 x i64> %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_16_64 = zext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_16_64 = zext <2 x i16> %i16 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_64 = mul <2 x i64> %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_32_64 = sext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %asw_32_64 = mul <2 x i64> %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_32_64 = sext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_32_64 = sext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_32_64 = mul <2 x i64> %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_32_64 = zext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %azw_32_64 = mul <2 x i64> %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext <2 x i32> %i32 to <2 x i64>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_32_64 = mul <2 x i64> %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext <2 x i8> %i8 to <2 x i16>
%asw_8_16 = mul <2 x i16> %i16, %sw_8_16
%sl1_8_16 = sext <2 x i8> %i8 to <2 x i16>
%sl2_8_16 = sext <2 x i8> %i8 to <2 x i16>
%asl_8_16 = mul <2 x i16> %sl1_8_16, %sl2_8_16
%zw_8_16 = zext <2 x i8> %i8 to <2 x i16>
%azw_8_16 = mul <2 x i16> %i16, %zw_8_16
%zl1_8_16 = zext <2 x i8> %i8 to <2 x i16>
%zl2_8_16 = zext <2 x i8> %i8 to <2 x i16>
%azl_8_16 = mul <2 x i16> %zl1_8_16, %zl2_8_16
%sw_8_32 = sext <2 x i8> %i8 to <2 x i32>
%asw_8_32 = mul <2 x i32> %i32, %sw_8_32
%sl1_8_32 = sext <2 x i8> %i8 to <2 x i32>
%sl2_8_32 = sext <2 x i8> %i8 to <2 x i32>
%asl_8_32 = mul <2 x i32> %sl1_8_32, %sl2_8_32
%zw_8_32 = zext <2 x i8> %i8 to <2 x i32>
%azw_8_32 = mul <2 x i32> %i32, %zw_8_32
%zl1_8_32 = zext <2 x i8> %i8 to <2 x i32>
%zl2_8_32 = zext <2 x i8> %i8 to <2 x i32>
%azl_8_32 = mul <2 x i32> %zl1_8_32, %zl2_8_32
%sw_8_64 = sext <2 x i8> %i8 to <2 x i64>
%asw_8_64 = mul <2 x i64> %i64, %sw_8_64
%sl1_8_64 = sext <2 x i8> %i8 to <2 x i64>
%sl2_8_64 = sext <2 x i8> %i8 to <2 x i64>
%asl_8_64 = mul <2 x i64> %sl1_8_64, %sl2_8_64
%zw_8_64 = zext <2 x i8> %i8 to <2 x i64>
%azw_8_64 = mul <2 x i64> %i64, %zw_8_64
%zl1_8_64 = zext <2 x i8> %i8 to <2 x i64>
%zl2_8_64 = zext <2 x i8> %i8 to <2 x i64>
%azl_8_64 = mul <2 x i64> %zl1_8_64, %zl2_8_64
%sw_16_32 = sext <2 x i16> %i16 to <2 x i32>
%asw_16_32 = mul <2 x i32> %i32, %sw_16_32
%sl1_16_32 = sext <2 x i16> %i16 to <2 x i32>
%sl2_16_32 = sext <2 x i16> %i16 to <2 x i32>
%asl_16_32 = mul <2 x i32> %sl1_16_32, %sl2_16_32
%zw_16_32 = zext <2 x i16> %i16 to <2 x i32>
%azw_16_32 = mul <2 x i32> %i32, %zw_16_32
%zl1_16_32 = zext <2 x i16> %i16 to <2 x i32>
%zl2_16_32 = zext <2 x i16> %i16 to <2 x i32>
%azl_16_32 = mul <2 x i32> %zl1_16_32, %zl2_16_32
%sw_16_64 = sext <2 x i16> %i16 to <2 x i64>
%asw_16_64 = mul <2 x i64> %i64, %sw_16_64
%sl1_16_64 = sext <2 x i16> %i16 to <2 x i64>
%sl2_16_64 = sext <2 x i16> %i16 to <2 x i64>
%asl_16_64 = mul <2 x i64> %sl1_16_64, %sl2_16_64
%zw_16_64 = zext <2 x i16> %i16 to <2 x i64>
%azw_16_64 = mul <2 x i64> %i64, %zw_16_64
%zl1_16_64 = zext <2 x i16> %i16 to <2 x i64>
%zl2_16_64 = zext <2 x i16> %i16 to <2 x i64>
%azl_16_64 = mul <2 x i64> %zl1_16_64, %zl2_16_64
%sw_32_64 = sext <2 x i32> %i32 to <2 x i64>
%asw_32_64 = mul <2 x i64> %i64, %sw_32_64
%sl1_32_64 = sext <2 x i32> %i32 to <2 x i64>
%sl2_32_64 = sext <2 x i32> %i32 to <2 x i64>
%asl_32_64 = mul <2 x i64> %sl1_32_64, %sl2_32_64
%zw_32_64 = zext <2 x i32> %i32 to <2 x i64>
%azw_32_64 = mul <2 x i64> %i64, %zw_32_64
%zl1_32_64 = zext <2 x i32> %i32 to <2 x i64>
%zl2_32_64 = zext <2 x i32> %i32 to <2 x i64>
%azl_32_64 = mul <2 x i64> %zl1_32_64, %zl2_32_64
ret void
}
define void @extmulv4(<4 x i8> %i8, <4 x i16> %i16, <4 x i32> %i32, <4 x i64> %i64) {
; CHECK-LABEL: 'extmulv4'
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_16 = sext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_16 = mul <4 x i16> %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_16 = sext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_16 = sext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_16 = mul <4 x i16> %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_16 = zext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_16 = mul <4 x i16> %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_16 = zext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_16 = zext <4 x i8> %i8 to <4 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_16 = mul <4 x i16> %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_32 = sext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_32 = mul <4 x i32> %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_32 = sext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl2_8_32 = sext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_32 = mul <4 x i32> %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_32 = zext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_32 = mul <4 x i32> %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl1_8_32 = zext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zl2_8_32 = zext <4 x i8> %i8 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_32 = mul <4 x i32> %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sw_8_64 = sext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:28 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_64 = mul <4 x i64> %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sl1_8_64 = sext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sl2_8_64 = sext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:28 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_64 = mul <4 x i64> %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zw_8_64 = zext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:28 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_64 = mul <4 x i64> %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zl1_8_64 = zext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zl2_8_64 = zext <4 x i8> %i8 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:28 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_64 = mul <4 x i64> %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_16_32 = sext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_16_32 = mul <4 x i32> %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_32 = sext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_32 = sext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_16_32 = mul <4 x i32> %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_16_32 = zext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_16_32 = mul <4 x i32> %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_32 = zext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_32 = zext <4 x i16> %i16 to <4 x i32>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_16_32 = mul <4 x i32> %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sw_16_64 = sext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:28 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_64 = mul <4 x i64> %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_64 = sext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_64 = sext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_64 = mul <4 x i64> %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zw_16_64 = zext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:28 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_64 = mul <4 x i64> %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_64 = zext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_64 = zext <4 x i16> %i16 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_64 = mul <4 x i64> %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 2 for: %sw_32_64 = sext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:28 CodeSize:1 Lat:1 SizeLat:1 for: %asw_32_64 = mul <4 x i64> %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_32_64 = sext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_32_64 = sext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asl_32_64 = mul <4 x i64> %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 2 for: %zw_32_64 = zext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:28 CodeSize:1 Lat:1 SizeLat:1 for: %azw_32_64 = mul <4 x i64> %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext <4 x i32> %i32 to <4 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azl_32_64 = mul <4 x i64> %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext <4 x i8> %i8 to <4 x i16>
%asw_8_16 = mul <4 x i16> %i16, %sw_8_16
%sl1_8_16 = sext <4 x i8> %i8 to <4 x i16>
%sl2_8_16 = sext <4 x i8> %i8 to <4 x i16>
%asl_8_16 = mul <4 x i16> %sl1_8_16, %sl2_8_16
%zw_8_16 = zext <4 x i8> %i8 to <4 x i16>
%azw_8_16 = mul <4 x i16> %i16, %zw_8_16
%zl1_8_16 = zext <4 x i8> %i8 to <4 x i16>
%zl2_8_16 = zext <4 x i8> %i8 to <4 x i16>
%azl_8_16 = mul <4 x i16> %zl1_8_16, %zl2_8_16
%sw_8_32 = sext <4 x i8> %i8 to <4 x i32>
%asw_8_32 = mul <4 x i32> %i32, %sw_8_32
%sl1_8_32 = sext <4 x i8> %i8 to <4 x i32>
%sl2_8_32 = sext <4 x i8> %i8 to <4 x i32>
%asl_8_32 = mul <4 x i32> %sl1_8_32, %sl2_8_32
%zw_8_32 = zext <4 x i8> %i8 to <4 x i32>
%azw_8_32 = mul <4 x i32> %i32, %zw_8_32
%zl1_8_32 = zext <4 x i8> %i8 to <4 x i32>
%zl2_8_32 = zext <4 x i8> %i8 to <4 x i32>
%azl_8_32 = mul <4 x i32> %zl1_8_32, %zl2_8_32
%sw_8_64 = sext <4 x i8> %i8 to <4 x i64>
%asw_8_64 = mul <4 x i64> %i64, %sw_8_64
%sl1_8_64 = sext <4 x i8> %i8 to <4 x i64>
%sl2_8_64 = sext <4 x i8> %i8 to <4 x i64>
%asl_8_64 = mul <4 x i64> %sl1_8_64, %sl2_8_64
%zw_8_64 = zext <4 x i8> %i8 to <4 x i64>
%azw_8_64 = mul <4 x i64> %i64, %zw_8_64
%zl1_8_64 = zext <4 x i8> %i8 to <4 x i64>
%zl2_8_64 = zext <4 x i8> %i8 to <4 x i64>
%azl_8_64 = mul <4 x i64> %zl1_8_64, %zl2_8_64
%sw_16_32 = sext <4 x i16> %i16 to <4 x i32>
%asw_16_32 = mul <4 x i32> %i32, %sw_16_32
%sl1_16_32 = sext <4 x i16> %i16 to <4 x i32>
%sl2_16_32 = sext <4 x i16> %i16 to <4 x i32>
%asl_16_32 = mul <4 x i32> %sl1_16_32, %sl2_16_32
%zw_16_32 = zext <4 x i16> %i16 to <4 x i32>
%azw_16_32 = mul <4 x i32> %i32, %zw_16_32
%zl1_16_32 = zext <4 x i16> %i16 to <4 x i32>
%zl2_16_32 = zext <4 x i16> %i16 to <4 x i32>
%azl_16_32 = mul <4 x i32> %zl1_16_32, %zl2_16_32
%sw_16_64 = sext <4 x i16> %i16 to <4 x i64>
%asw_16_64 = mul <4 x i64> %i64, %sw_16_64
%sl1_16_64 = sext <4 x i16> %i16 to <4 x i64>
%sl2_16_64 = sext <4 x i16> %i16 to <4 x i64>
%asl_16_64 = mul <4 x i64> %sl1_16_64, %sl2_16_64
%zw_16_64 = zext <4 x i16> %i16 to <4 x i64>
%azw_16_64 = mul <4 x i64> %i64, %zw_16_64
%zl1_16_64 = zext <4 x i16> %i16 to <4 x i64>
%zl2_16_64 = zext <4 x i16> %i16 to <4 x i64>
%azl_16_64 = mul <4 x i64> %zl1_16_64, %zl2_16_64
%sw_32_64 = sext <4 x i32> %i32 to <4 x i64>
%asw_32_64 = mul <4 x i64> %i64, %sw_32_64
%sl1_32_64 = sext <4 x i32> %i32 to <4 x i64>
%sl2_32_64 = sext <4 x i32> %i32 to <4 x i64>
%asl_32_64 = mul <4 x i64> %sl1_32_64, %sl2_32_64
%zw_32_64 = zext <4 x i32> %i32 to <4 x i64>
%azw_32_64 = mul <4 x i64> %i64, %zw_32_64
%zl1_32_64 = zext <4 x i32> %i32 to <4 x i64>
%zl2_32_64 = zext <4 x i32> %i32 to <4 x i64>
%azl_32_64 = mul <4 x i64> %zl1_32_64, %zl2_32_64
ret void
}
define void @extmulv8(<8 x i8> %i8, <8 x i16> %i16, <8 x i32> %i32, <8 x i64> %i64) {
; CHECK-LABEL: 'extmulv8'
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sw_8_16 = sext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asw_8_16 = mul <8 x i16> %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_16 = sext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_16 = mul <8 x i16> %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 1 for: %zw_8_16 = zext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azw_8_16 = mul <8 x i16> %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_16 = zext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_16 = mul <8 x i16> %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 3 for: %sw_8_32 = sext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_32 = mul <8 x i32> %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_32 = sext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_32 = sext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_32 = mul <8 x i32> %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 3 for: %zw_8_32 = zext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_32 = mul <8 x i32> %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_32 = zext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_32 = zext <8 x i8> %i8 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_32 = mul <8 x i32> %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 7 for: %sw_8_64 = sext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:56 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_64 = mul <8 x i64> %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_64 = sext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_64 = sext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:7 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_64 = mul <8 x i64> %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 7 for: %zw_8_64 = zext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:56 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_64 = mul <8 x i64> %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_64 = zext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_64 = zext <8 x i8> %i8 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:7 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_64 = mul <8 x i64> %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 2 for: %sw_16_32 = sext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_32 = mul <8 x i32> %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_32 = sext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_32 = sext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_32 = mul <8 x i32> %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 2 for: %zw_16_32 = zext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_32 = mul <8 x i32> %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_32 = zext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_32 = zext <8 x i16> %i16 to <8 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_32 = mul <8 x i32> %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 6 for: %sw_16_64 = sext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:56 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_64 = mul <8 x i64> %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_64 = sext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_64 = sext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_64 = mul <8 x i64> %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 6 for: %zw_16_64 = zext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:56 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_64 = mul <8 x i64> %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_64 = zext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_64 = zext <8 x i16> %i16 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_64 = mul <8 x i64> %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 4 for: %sw_32_64 = sext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:56 CodeSize:1 Lat:1 SizeLat:1 for: %asw_32_64 = mul <8 x i64> %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_32_64 = sext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_32_64 = sext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asl_32_64 = mul <8 x i64> %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 4 for: %zw_32_64 = zext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:56 CodeSize:1 Lat:1 SizeLat:1 for: %azw_32_64 = mul <8 x i64> %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext <8 x i32> %i32 to <8 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azl_32_64 = mul <8 x i64> %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext <8 x i8> %i8 to <8 x i16>
%asw_8_16 = mul <8 x i16> %i16, %sw_8_16
%sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
%sl2_8_16 = sext <8 x i8> %i8 to <8 x i16>
%asl_8_16 = mul <8 x i16> %sl1_8_16, %sl2_8_16
%zw_8_16 = zext <8 x i8> %i8 to <8 x i16>
%azw_8_16 = mul <8 x i16> %i16, %zw_8_16
%zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
%zl2_8_16 = zext <8 x i8> %i8 to <8 x i16>
%azl_8_16 = mul <8 x i16> %zl1_8_16, %zl2_8_16
%sw_8_32 = sext <8 x i8> %i8 to <8 x i32>
%asw_8_32 = mul <8 x i32> %i32, %sw_8_32
%sl1_8_32 = sext <8 x i8> %i8 to <8 x i32>
%sl2_8_32 = sext <8 x i8> %i8 to <8 x i32>
%asl_8_32 = mul <8 x i32> %sl1_8_32, %sl2_8_32
%zw_8_32 = zext <8 x i8> %i8 to <8 x i32>
%azw_8_32 = mul <8 x i32> %i32, %zw_8_32
%zl1_8_32 = zext <8 x i8> %i8 to <8 x i32>
%zl2_8_32 = zext <8 x i8> %i8 to <8 x i32>
%azl_8_32 = mul <8 x i32> %zl1_8_32, %zl2_8_32
%sw_8_64 = sext <8 x i8> %i8 to <8 x i64>
%asw_8_64 = mul <8 x i64> %i64, %sw_8_64
%sl1_8_64 = sext <8 x i8> %i8 to <8 x i64>
%sl2_8_64 = sext <8 x i8> %i8 to <8 x i64>
%asl_8_64 = mul <8 x i64> %sl1_8_64, %sl2_8_64
%zw_8_64 = zext <8 x i8> %i8 to <8 x i64>
%azw_8_64 = mul <8 x i64> %i64, %zw_8_64
%zl1_8_64 = zext <8 x i8> %i8 to <8 x i64>
%zl2_8_64 = zext <8 x i8> %i8 to <8 x i64>
%azl_8_64 = mul <8 x i64> %zl1_8_64, %zl2_8_64
%sw_16_32 = sext <8 x i16> %i16 to <8 x i32>
%asw_16_32 = mul <8 x i32> %i32, %sw_16_32
%sl1_16_32 = sext <8 x i16> %i16 to <8 x i32>
%sl2_16_32 = sext <8 x i16> %i16 to <8 x i32>
%asl_16_32 = mul <8 x i32> %sl1_16_32, %sl2_16_32
%zw_16_32 = zext <8 x i16> %i16 to <8 x i32>
%azw_16_32 = mul <8 x i32> %i32, %zw_16_32
%zl1_16_32 = zext <8 x i16> %i16 to <8 x i32>
%zl2_16_32 = zext <8 x i16> %i16 to <8 x i32>
%azl_16_32 = mul <8 x i32> %zl1_16_32, %zl2_16_32
%sw_16_64 = sext <8 x i16> %i16 to <8 x i64>
%asw_16_64 = mul <8 x i64> %i64, %sw_16_64
%sl1_16_64 = sext <8 x i16> %i16 to <8 x i64>
%sl2_16_64 = sext <8 x i16> %i16 to <8 x i64>
%asl_16_64 = mul <8 x i64> %sl1_16_64, %sl2_16_64
%zw_16_64 = zext <8 x i16> %i16 to <8 x i64>
%azw_16_64 = mul <8 x i64> %i64, %zw_16_64
%zl1_16_64 = zext <8 x i16> %i16 to <8 x i64>
%zl2_16_64 = zext <8 x i16> %i16 to <8 x i64>
%azl_16_64 = mul <8 x i64> %zl1_16_64, %zl2_16_64
%sw_32_64 = sext <8 x i32> %i32 to <8 x i64>
%asw_32_64 = mul <8 x i64> %i64, %sw_32_64
%sl1_32_64 = sext <8 x i32> %i32 to <8 x i64>
%sl2_32_64 = sext <8 x i32> %i32 to <8 x i64>
%asl_32_64 = mul <8 x i64> %sl1_32_64, %sl2_32_64
%zw_32_64 = zext <8 x i32> %i32 to <8 x i64>
%azw_32_64 = mul <8 x i64> %i64, %zw_32_64
%zl1_32_64 = zext <8 x i32> %i32 to <8 x i64>
%zl2_32_64 = zext <8 x i32> %i32 to <8 x i64>
%azl_32_64 = mul <8 x i64> %zl1_32_64, %zl2_32_64
ret void
}
define void @extmulv16(<16 x i8> %i8, <16 x i16> %i16, <16 x i32> %i32, <16 x i64> %i64) {
; CHECK-LABEL: 'extmulv16'
; CHECK-NEXT: Cost Model: Found costs of 2 for: %sw_8_16 = sext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_16 = mul <16 x i16> %i16, %sw_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_16 = sext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_16 = sext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_16 = mul <16 x i16> %sl1_8_16, %sl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 2 for: %zw_8_16 = zext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_16 = mul <16 x i16> %i16, %zw_8_16
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_16 = zext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_16 = zext <16 x i8> %i8 to <16 x i16>
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_16 = mul <16 x i16> %zl1_8_16, %zl2_8_16
; CHECK-NEXT: Cost Model: Found costs of 6 for: %sw_8_32 = sext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_32 = mul <16 x i32> %i32, %sw_8_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_32 = sext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_32 = sext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_32 = mul <16 x i32> %sl1_8_32, %sl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 6 for: %zw_8_32 = zext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_32 = mul <16 x i32> %i32, %zw_8_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_32 = zext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_32 = zext <16 x i8> %i8 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_32 = mul <16 x i32> %zl1_8_32, %zl2_8_32
; CHECK-NEXT: Cost Model: Found costs of 15 for: %sw_8_64 = sext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:112 CodeSize:1 Lat:1 SizeLat:1 for: %asw_8_64 = mul <16 x i64> %i64, %sw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_8_64 = sext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_8_64 = sext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %asl_8_64 = mul <16 x i64> %sl1_8_64, %sl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 15 for: %zw_8_64 = zext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:112 CodeSize:1 Lat:1 SizeLat:1 for: %azw_8_64 = mul <16 x i64> %i64, %zw_8_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_64 = zext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_8_64 = zext <16 x i8> %i8 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:14 CodeSize:1 Lat:1 SizeLat:1 for: %azl_8_64 = mul <16 x i64> %zl1_8_64, %zl2_8_64
; CHECK-NEXT: Cost Model: Found costs of 4 for: %sw_16_32 = sext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_32 = mul <16 x i32> %i32, %sw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_32 = sext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_32 = sext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_32 = mul <16 x i32> %sl1_16_32, %sl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 4 for: %zw_16_32 = zext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_32 = mul <16 x i32> %i32, %zw_16_32
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_32 = zext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_32 = zext <16 x i16> %i16 to <16 x i32>
; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_32 = mul <16 x i32> %zl1_16_32, %zl2_16_32
; CHECK-NEXT: Cost Model: Found costs of 12 for: %sw_16_64 = sext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:112 CodeSize:1 Lat:1 SizeLat:1 for: %asw_16_64 = mul <16 x i64> %i64, %sw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_16_64 = sext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_16_64 = sext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:1 SizeLat:1 for: %asl_16_64 = mul <16 x i64> %sl1_16_64, %sl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 12 for: %zw_16_64 = zext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:112 CodeSize:1 Lat:1 SizeLat:1 for: %azw_16_64 = mul <16 x i64> %i64, %zw_16_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_16_64 = zext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_16_64 = zext <16 x i16> %i16 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:1 SizeLat:1 for: %azl_16_64 = mul <16 x i64> %zl1_16_64, %zl2_16_64
; CHECK-NEXT: Cost Model: Found costs of 8 for: %sw_32_64 = sext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:112 CodeSize:1 Lat:1 SizeLat:1 for: %asw_32_64 = mul <16 x i64> %i64, %sw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl1_32_64 = sext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %sl2_32_64 = sext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %asl_32_64 = mul <16 x i64> %sl1_32_64, %sl2_32_64
; CHECK-NEXT: Cost Model: Found costs of 8 for: %zw_32_64 = zext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:112 CodeSize:1 Lat:1 SizeLat:1 for: %azw_32_64 = mul <16 x i64> %i64, %zw_32_64
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_32_64 = zext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl2_32_64 = zext <16 x i32> %i32 to <16 x i64>
; CHECK-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:1 SizeLat:1 for: %azl_32_64 = mul <16 x i64> %zl1_32_64, %zl2_32_64
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sw_8_16 = sext <16 x i8> %i8 to <16 x i16>
%asw_8_16 = mul <16 x i16> %i16, %sw_8_16
%sl1_8_16 = sext <16 x i8> %i8 to <16 x i16>
%sl2_8_16 = sext <16 x i8> %i8 to <16 x i16>
%asl_8_16 = mul <16 x i16> %sl1_8_16, %sl2_8_16
%zw_8_16 = zext <16 x i8> %i8 to <16 x i16>
%azw_8_16 = mul <16 x i16> %i16, %zw_8_16
%zl1_8_16 = zext <16 x i8> %i8 to <16 x i16>
%zl2_8_16 = zext <16 x i8> %i8 to <16 x i16>
%azl_8_16 = mul <16 x i16> %zl1_8_16, %zl2_8_16
%sw_8_32 = sext <16 x i8> %i8 to <16 x i32>
%asw_8_32 = mul <16 x i32> %i32, %sw_8_32
%sl1_8_32 = sext <16 x i8> %i8 to <16 x i32>
%sl2_8_32 = sext <16 x i8> %i8 to <16 x i32>
%asl_8_32 = mul <16 x i32> %sl1_8_32, %sl2_8_32
%zw_8_32 = zext <16 x i8> %i8 to <16 x i32>
%azw_8_32 = mul <16 x i32> %i32, %zw_8_32
%zl1_8_32 = zext <16 x i8> %i8 to <16 x i32>
%zl2_8_32 = zext <16 x i8> %i8 to <16 x i32>
%azl_8_32 = mul <16 x i32> %zl1_8_32, %zl2_8_32
%sw_8_64 = sext <16 x i8> %i8 to <16 x i64>
%asw_8_64 = mul <16 x i64> %i64, %sw_8_64
%sl1_8_64 = sext <16 x i8> %i8 to <16 x i64>
%sl2_8_64 = sext <16 x i8> %i8 to <16 x i64>
%asl_8_64 = mul <16 x i64> %sl1_8_64, %sl2_8_64
%zw_8_64 = zext <16 x i8> %i8 to <16 x i64>
%azw_8_64 = mul <16 x i64> %i64, %zw_8_64
%zl1_8_64 = zext <16 x i8> %i8 to <16 x i64>
%zl2_8_64 = zext <16 x i8> %i8 to <16 x i64>
%azl_8_64 = mul <16 x i64> %zl1_8_64, %zl2_8_64
%sw_16_32 = sext <16 x i16> %i16 to <16 x i32>
%asw_16_32 = mul <16 x i32> %i32, %sw_16_32
%sl1_16_32 = sext <16 x i16> %i16 to <16 x i32>
%sl2_16_32 = sext <16 x i16> %i16 to <16 x i32>
%asl_16_32 = mul <16 x i32> %sl1_16_32, %sl2_16_32
%zw_16_32 = zext <16 x i16> %i16 to <16 x i32>
%azw_16_32 = mul <16 x i32> %i32, %zw_16_32
%zl1_16_32 = zext <16 x i16> %i16 to <16 x i32>
%zl2_16_32 = zext <16 x i16> %i16 to <16 x i32>
%azl_16_32 = mul <16 x i32> %zl1_16_32, %zl2_16_32
%sw_16_64 = sext <16 x i16> %i16 to <16 x i64>
%asw_16_64 = mul <16 x i64> %i64, %sw_16_64
%sl1_16_64 = sext <16 x i16> %i16 to <16 x i64>
%sl2_16_64 = sext <16 x i16> %i16 to <16 x i64>
%asl_16_64 = mul <16 x i64> %sl1_16_64, %sl2_16_64
%zw_16_64 = zext <16 x i16> %i16 to <16 x i64>
%azw_16_64 = mul <16 x i64> %i64, %zw_16_64
%zl1_16_64 = zext <16 x i16> %i16 to <16 x i64>
%zl2_16_64 = zext <16 x i16> %i16 to <16 x i64>
%azl_16_64 = mul <16 x i64> %zl1_16_64, %zl2_16_64
%sw_32_64 = sext <16 x i32> %i32 to <16 x i64>
%asw_32_64 = mul <16 x i64> %i64, %sw_32_64
%sl1_32_64 = sext <16 x i32> %i32 to <16 x i64>
%sl2_32_64 = sext <16 x i32> %i32 to <16 x i64>
%asl_32_64 = mul <16 x i64> %sl1_32_64, %sl2_32_64
%zw_32_64 = zext <16 x i32> %i32 to <16 x i64>
%azw_32_64 = mul <16 x i64> %i64, %zw_32_64
%zl1_32_64 = zext <16 x i32> %i32 to <16 x i64>
%zl2_32_64 = zext <16 x i32> %i32 to <16 x i64>
%azl_32_64 = mul <16 x i64> %zl1_32_64, %zl2_32_64
ret void
}
define void @extmul_const(<8 x i8> %i8, <8 x i16> %i16, <8 x i32> %i32, <8 x i64> %i64) {
; CHECK-LABEL: 'extmul_const'
; CHECK-NEXT: Cost Model: Found costs of 1 for: %sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %asl_8_16 = mul <8 x i16> %sl1_8_16, splat (i16 10)
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %azl_8_16 = mul <8 x i16> %zl1_8_16, splat (i16 10)
; CHECK-NEXT: Cost Model: Found costs of 0 for: %zl1_8_16b = zext <8 x i8> %i8 to <8 x i16>
; CHECK-NEXT: Cost Model: Found costs of 1 for: %and = and <8 x i16> %sl1_8_16, splat (i16 255)
; CHECK-NEXT: Cost Model: Found costs of 1 for: %aal_8_16 = mul <8 x i16> %zl1_8_16b, %and
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
;
%sl1_8_16 = sext <8 x i8> %i8 to <8 x i16>
%asl_8_16 = mul <8 x i16> %sl1_8_16, <i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10>
%zl1_8_16 = zext <8 x i8> %i8 to <8 x i16>
%azl_8_16 = mul <8 x i16> %zl1_8_16, <i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10>
%zl1_8_16b = zext <8 x i8> %i8 to <8 x i16>
%and = and <8 x i16> %sl1_8_16, <i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255, i16 255>
%aal_8_16 = mul <8 x i16> %zl1_8_16b, %and
ret void
}