1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py 2; RUN: opt -cost-model -analyze -mtriple=thumbv8.1m.main-none-eabi -mattr=+mve < %s | FileCheck %s --check-prefix=CHECK-MVE 3; RUN: opt -cost-model -analyze -mtriple=thumbv8.1m.main-none-eabi -mattr=+mve.fp < %s | FileCheck %s --check-prefix=CHECK-MVEFP 4 5define void @f32() { 6; CHECK-MVE-LABEL: 'f32' 7; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %c = fadd float undef, undef 8; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %d = fsub float undef, undef 9; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %e = fmul float undef, undef 10; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 11; 12; CHECK-MVEFP-LABEL: 'f32' 13; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %c = fadd float undef, undef 14; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %d = fsub float undef, undef 15; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %e = fmul float undef, undef 16; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 17; 18 %c = fadd float undef, undef 19 %d = fsub float undef, undef 20 %e = fmul float undef, undef 21 ret void 22} 23 24define void @f16() { 25; CHECK-MVE-LABEL: 'f16' 26; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %c = fadd half undef, undef 27; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %d = fsub half undef, undef 28; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %e = fmul half undef, undef 29; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 30; 31; CHECK-MVEFP-LABEL: 'f16' 32; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %c = fadd half undef, undef 33; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %d = fsub half undef, undef 34; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %e = fmul half undef, undef 35; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 36; 37 %c = fadd half undef, undef 38 %d = fsub half undef, undef 39 %e = fmul half undef, undef 40 ret void 41} 42 43define void @f64() { 44; CHECK-MVE-LABEL: 'f64' 45; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %c = fadd double undef, undef 46; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %d = fsub double undef, undef 47; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %e = fmul double undef, undef 48; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 49; 50; CHECK-MVEFP-LABEL: 'f64' 51; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %c = fadd double undef, undef 52; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %d = fsub double undef, undef 53; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %e = fmul double undef, undef 54; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 55; 56 %c = fadd double undef, undef 57 %d = fsub double undef, undef 58 %e = fmul double undef, undef 59 ret void 60} 61 62define void @vf32() { 63; CHECK-MVE-LABEL: 'vf32' 64; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %c2 = fadd <2 x float> undef, undef 65; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %d2 = fsub <2 x float> undef, undef 66; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %e2 = fmul <2 x float> undef, undef 67; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %c4 = fadd <4 x float> undef, undef 68; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %d4 = fsub <4 x float> undef, undef 69; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %e4 = fmul <4 x float> undef, undef 70; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %c8 = fadd <8 x float> undef, undef 71; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %d8 = fsub <8 x float> undef, undef 72; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %e8 = fmul <8 x float> undef, undef 73; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 74; 75; CHECK-MVEFP-LABEL: 'vf32' 76; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %c2 = fadd <2 x float> undef, undef 77; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %d2 = fsub <2 x float> undef, undef 78; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %e2 = fmul <2 x float> undef, undef 79; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %c4 = fadd <4 x float> undef, undef 80; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %d4 = fsub <4 x float> undef, undef 81; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %e4 = fmul <4 x float> undef, undef 82; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %c8 = fadd <8 x float> undef, undef 83; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %d8 = fsub <8 x float> undef, undef 84; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %e8 = fmul <8 x float> undef, undef 85; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 86; 87 %c2 = fadd <2 x float> undef, undef 88 %d2 = fsub <2 x float> undef, undef 89 %e2 = fmul <2 x float> undef, undef 90 %c4 = fadd <4 x float> undef, undef 91 %d4 = fsub <4 x float> undef, undef 92 %e4 = fmul <4 x float> undef, undef 93 %c8 = fadd <8 x float> undef, undef 94 %d8 = fsub <8 x float> undef, undef 95 %e8 = fmul <8 x float> undef, undef 96 ret void 97} 98 99define void @vf16() { 100; CHECK-MVE-LABEL: 'vf16' 101; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %c2 = fadd <2 x half> undef, undef 102; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %d2 = fsub <2 x half> undef, undef 103; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %e2 = fmul <2 x half> undef, undef 104; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %c4 = fadd <4 x half> undef, undef 105; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %d4 = fsub <4 x half> undef, undef 106; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %e4 = fmul <4 x half> undef, undef 107; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %c8 = fadd <8 x half> undef, undef 108; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %d8 = fsub <8 x half> undef, undef 109; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %e8 = fmul <8 x half> undef, undef 110; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 111; 112; CHECK-MVEFP-LABEL: 'vf16' 113; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %c2 = fadd <2 x half> undef, undef 114; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %d2 = fsub <2 x half> undef, undef 115; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %e2 = fmul <2 x half> undef, undef 116; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %c4 = fadd <4 x half> undef, undef 117; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %d4 = fsub <4 x half> undef, undef 118; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %e4 = fmul <4 x half> undef, undef 119; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %c8 = fadd <8 x half> undef, undef 120; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %d8 = fsub <8 x half> undef, undef 121; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %e8 = fmul <8 x half> undef, undef 122; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 123; 124 %c2 = fadd <2 x half> undef, undef 125 %d2 = fsub <2 x half> undef, undef 126 %e2 = fmul <2 x half> undef, undef 127 %c4 = fadd <4 x half> undef, undef 128 %d4 = fsub <4 x half> undef, undef 129 %e4 = fmul <4 x half> undef, undef 130 %c8 = fadd <8 x half> undef, undef 131 %d8 = fsub <8 x half> undef, undef 132 %e8 = fmul <8 x half> undef, undef 133 ret void 134} 135 136define void @vf64() { 137; CHECK-MVE-LABEL: 'vf64' 138; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %c2 = fadd <2 x double> undef, undef 139; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %d2 = fsub <2 x double> undef, undef 140; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %e2 = fmul <2 x double> undef, undef 141; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %c4 = fadd <4 x double> undef, undef 142; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %d4 = fsub <4 x double> undef, undef 143; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %e4 = fmul <4 x double> undef, undef 144; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %c8 = fadd <8 x double> undef, undef 145; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %d8 = fsub <8 x double> undef, undef 146; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %e8 = fmul <8 x double> undef, undef 147; CHECK-MVE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 148; 149; CHECK-MVEFP-LABEL: 'vf64' 150; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %c2 = fadd <2 x double> undef, undef 151; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %d2 = fsub <2 x double> undef, undef 152; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %e2 = fmul <2 x double> undef, undef 153; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %c4 = fadd <4 x double> undef, undef 154; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %d4 = fsub <4 x double> undef, undef 155; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 20 for instruction: %e4 = fmul <4 x double> undef, undef 156; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %c8 = fadd <8 x double> undef, undef 157; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %d8 = fsub <8 x double> undef, undef 158; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 72 for instruction: %e8 = fmul <8 x double> undef, undef 159; CHECK-MVEFP-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 160; 161 %c2 = fadd <2 x double> undef, undef 162 %d2 = fsub <2 x double> undef, undef 163 %e2 = fmul <2 x double> undef, undef 164 %c4 = fadd <4 x double> undef, undef 165 %d4 = fsub <4 x double> undef, undef 166 %e4 = fmul <4 x double> undef, undef 167 %c8 = fadd <8 x double> undef, undef 168 %d8 = fsub <8 x double> undef, undef 169 %e8 = fmul <8 x double> undef, undef 170 ret void 171} 172 173