61 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 22; RUN: opt -passes="print<cost-model>" -cost-kind=all 2>&1 -disable-output -mtriple=aarch64-linux-gnu -mattr=+neon < %s | FileCheck %s3 4; Verify the cost of integer division by constant.5 6target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"7 8define <16 x i8> @sdiv8xi16(<16 x i8> %x) {9; CHECK-LABEL: 'sdiv8xi16'10; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:4 SizeLat:4 for: %div = sdiv <16 x i8> %x, splat (i8 9)11; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %div12;13 %div = sdiv <16 x i8> %x, <i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9>14 ret <16 x i8> %div15}16 17define <8 x i16> @sdiv16xi8(<8 x i16> %x) {18; CHECK-LABEL: 'sdiv16xi8'19; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:4 SizeLat:4 for: %div = sdiv <8 x i16> %x, splat (i16 9)20; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %div21;22 %div = sdiv <8 x i16> %x, <i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9>23 ret <8 x i16> %div24}25 26define <4 x i32> @sdiv32xi4(<4 x i32> %x) {27; CHECK-LABEL: 'sdiv32xi4'28; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:4 SizeLat:4 for: %div = sdiv <4 x i32> %x, splat (i32 9)29; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %div30;31 %div = sdiv <4 x i32> %x, <i32 9, i32 9, i32 9, i32 9>32 ret <4 x i32> %div33}34 35define <16 x i8> @udiv8xi16(<16 x i8> %x) {36; CHECK-LABEL: 'udiv8xi16'37; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:4 SizeLat:4 for: %div = udiv <16 x i8> %x, splat (i8 9)38; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <16 x i8> %div39;40 %div = udiv <16 x i8> %x, <i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9>41 ret <16 x i8> %div42}43 44define <8 x i16> @udiv16xi8(<8 x i16> %x) {45; CHECK-LABEL: 'udiv16xi8'46; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:4 SizeLat:4 for: %div = udiv <8 x i16> %x, splat (i16 9)47; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <8 x i16> %div48;49 %div = udiv <8 x i16> %x, <i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9>50 ret <8 x i16> %div51}52 53define <4 x i32> @udiv32xi4(<4 x i32> %x) {54; CHECK-LABEL: 'udiv32xi4'55; CHECK-NEXT: Cost Model: Found costs of RThru:6 CodeSize:4 Lat:4 SizeLat:4 for: %div = udiv <4 x i32> %x, splat (i32 9)56; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret <4 x i32> %div57;58 %div = udiv <4 x i32> %x, <i32 9, i32 9, i32 9, i32 9>59 ret <4 x i32> %div60}61