1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -cost-model -analyze -S < %s | FileCheck %s
4 target triple = "aarch64-unknown-linux-gnu"
7 define void @ins_el0() #0 {
8 ; CHECK: Cost Model: Found an estimated cost of 0 for instruction: %v0 = insertelement <vscale x 16 x i8> zeroinitializer, i8 0, i64 0
9 ; CHECK: Cost Model: Found an estimated cost of 0 for instruction: %v1 = insertelement <vscale x 8 x i16> zeroinitializer, i16 0, i64 0
10 ; CHECK: Cost Model: Found an estimated cost of 0 for instruction: %v2 = insertelement <vscale x 4 x i32> zeroinitializer, i32 0, i64 0
11 ; CHECK: Cost Model: Found an estimated cost of 0 for instruction: %v3 = insertelement <vscale x 2 x i64> zeroinitializer, i64 0, i64 0
12 %v0 = insertelement <vscale x 16 x i8> zeroinitializer, i8 0, i64 0
13 %v1 = insertelement <vscale x 8 x i16> zeroinitializer, i16 0, i64 0
14 %v2 = insertelement <vscale x 4 x i32> zeroinitializer, i32 0, i64 0
15 %v3 = insertelement <vscale x 2 x i64> zeroinitializer, i64 0, i64 0
19 define void @ins_el1() #0 {
20 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction: %v0 = insertelement <vscale x 16 x i8> zeroinitializer, i8 0, i64 1
21 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction: %v1 = insertelement <vscale x 8 x i16> zeroinitializer, i16 0, i64 1
22 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction: %v2 = insertelement <vscale x 4 x i32> zeroinitializer, i32 0, i64 1
23 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction: %v3 = insertelement <vscale x 2 x i64> zeroinitializer, i64 0, i64 1
24 %v0 = insertelement <vscale x 16 x i8> zeroinitializer, i8 0, i64 1
25 %v1 = insertelement <vscale x 8 x i16> zeroinitializer, i16 0, i64 1
26 %v2 = insertelement <vscale x 4 x i32> zeroinitializer, i32 0, i64 1
27 %v3 = insertelement <vscale x 2 x i64> zeroinitializer, i64 0, i64 1
32 define void @ext_el0() #0 {
33 ; CHECK: Cost Model: Found an estimated cost of 0 for instruction: %v0 = extractelement <vscale x 16 x i8> zeroinitializer, i64 0
34 ; CHECK: Cost Model: Found an estimated cost of 0 for instruction: %v1 = extractelement <vscale x 8 x i16> zeroinitializer, i64 0
35 ; CHECK: Cost Model: Found an estimated cost of 0 for instruction: %v2 = extractelement <vscale x 4 x i32> zeroinitializer, i64 0
36 ; CHECK: Cost Model: Found an estimated cost of 0 for instruction: %v3 = extractelement <vscale x 2 x i64> zeroinitializer, i64 0
37 %v0 = extractelement <vscale x 16 x i8> zeroinitializer, i64 0
38 %v1 = extractelement <vscale x 8 x i16> zeroinitializer, i64 0
39 %v2 = extractelement <vscale x 4 x i32> zeroinitializer, i64 0
40 %v3 = extractelement <vscale x 2 x i64> zeroinitializer, i64 0
44 define void @ext_el1() #0 {
45 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction: %v0 = extractelement <vscale x 16 x i8> zeroinitializer, i64 1
46 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction: %v1 = extractelement <vscale x 8 x i16> zeroinitializer, i64 1
47 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction: %v2 = extractelement <vscale x 4 x i32> zeroinitializer, i64 1
48 ; CHECK: Cost Model: Found an estimated cost of 3 for instruction: %v3 = extractelement <vscale x 2 x i64> zeroinitializer, i64 1
49 %v0 = extractelement <vscale x 16 x i8> zeroinitializer, i64 1
50 %v1 = extractelement <vscale x 8 x i16> zeroinitializer, i64 1
51 %v2 = extractelement <vscale x 4 x i32> zeroinitializer, i64 1
52 %v3 = extractelement <vscale x 2 x i64> zeroinitializer, i64 1
57 attributes #0 = { "target-features"="+sve" vscale_range(1, 16) }