1cb941f92SLuke Lau; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 2 2cb941f92SLuke Lau; RUN: opt -mtriple=riscv32 -mattr=+v -passes="print<cost-model>" 2>&1 -disable-output < %s \ 3cb941f92SLuke Lau; RUN: | FileCheck %s 4cb941f92SLuke Lau; RUN: opt -mtriple=riscv64 -mattr=+v -passes="print<cost-model>" 2>&1 -disable-output < %s \ 5cb941f92SLuke Lau; RUN: | FileCheck %s 6cb941f92SLuke Lau 7cb941f92SLuke Lau; These GEPs should all cost zero becuase all the indices operands are zero, so 8cb941f92SLuke Lau; no computation actually needs to happen. 9cb941f92SLuke Lau 10cb941f92SLuke Laudefine ptr @zero_indices_i8(ptr %p) { 11cb941f92SLuke Lau; CHECK-LABEL: 'zero_indices_i8' 12cb941f92SLuke Lau; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %x = getelementptr i8, ptr %p, i32 0 13*0a5d52a7SSergey Kachkov; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret ptr %x 14cb941f92SLuke Lau; 15cb941f92SLuke Lau %x = getelementptr i8, ptr %p, i32 0 16cb941f92SLuke Lau ret ptr %x 17cb941f92SLuke Lau} 18cb941f92SLuke Lau 19cb941f92SLuke Laudefine ptr @zero_indices_i16(ptr %p) { 20cb941f92SLuke Lau; CHECK-LABEL: 'zero_indices_i16' 21cb941f92SLuke Lau; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %x = getelementptr i16, ptr %p, i32 0 22*0a5d52a7SSergey Kachkov; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret ptr %x 23cb941f92SLuke Lau; 24cb941f92SLuke Lau %x = getelementptr i16, ptr %p, i32 0 25cb941f92SLuke Lau ret ptr %x 26cb941f92SLuke Lau} 27cb941f92SLuke Lau 28cb941f92SLuke Laudefine ptr @zero_indices_i32(ptr %p) { 29cb941f92SLuke Lau; CHECK-LABEL: 'zero_indices_i32' 30cb941f92SLuke Lau; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %x = getelementptr i32, ptr %p, i32 0 31*0a5d52a7SSergey Kachkov; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret ptr %x 32cb941f92SLuke Lau; 33cb941f92SLuke Lau %x = getelementptr i32, ptr %p, i32 0 34cb941f92SLuke Lau ret ptr %x 35cb941f92SLuke Lau} 36cb941f92SLuke Lau 37cb941f92SLuke Laudefine ptr @zero_indices_i64(ptr %p) { 38cb941f92SLuke Lau; CHECK-LABEL: 'zero_indices_i64' 39cb941f92SLuke Lau; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %x = getelementptr i64, ptr %p, i32 0 40*0a5d52a7SSergey Kachkov; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret ptr %x 41cb941f92SLuke Lau; 42cb941f92SLuke Lau %x = getelementptr i64, ptr %p, i32 0 43cb941f92SLuke Lau ret ptr %x 44cb941f92SLuke Lau} 45cb941f92SLuke Lau 46cb941f92SLuke Laudefine ptr @zero_indices_array(ptr %p) { 47cb941f92SLuke Lau; CHECK-LABEL: 'zero_indices_array' 48cb941f92SLuke Lau; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %x = getelementptr [42 x i64], ptr %p, i32 0, i32 0 49*0a5d52a7SSergey Kachkov; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret ptr %x 50cb941f92SLuke Lau; 51cb941f92SLuke Lau %x = getelementptr [42 x i64], ptr %p, i32 0, i32 0 52cb941f92SLuke Lau ret ptr %x 53cb941f92SLuke Lau} 54cb941f92SLuke Lau 55cb941f92SLuke Lau%struct = type { %struct.inner } 56cb941f92SLuke Lau%struct.inner = type { %struct.inner.inner } 57cb941f92SLuke Lau%struct.inner.inner = type { i32 } 58cb941f92SLuke Lau 59cb941f92SLuke Laudefine ptr @zero_indices_struct(ptr %p) { 60cb941f92SLuke Lau; CHECK-LABEL: 'zero_indices_struct' 61cb941f92SLuke Lau; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %x = getelementptr %struct, ptr %p, i32 0, i32 0, i32 0 62*0a5d52a7SSergey Kachkov; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret ptr %x 63cb941f92SLuke Lau; 64cb941f92SLuke Lau %x = getelementptr %struct, ptr %p, i32 0, i32 0, i32 0 65cb941f92SLuke Lau ret ptr %x 66cb941f92SLuke Lau} 67cb941f92SLuke Lau 68cb941f92SLuke Laudefine <4 x ptr> @zero_indices_v4i32(<4 x ptr> %p) { 69cb941f92SLuke Lau; CHECK-LABEL: 'zero_indices_v4i32' 70cb941f92SLuke Lau; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %x = getelementptr i32, <4 x ptr> %p, <4 x i32> zeroinitializer 71*0a5d52a7SSergey Kachkov; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x ptr> %x 72cb941f92SLuke Lau; 73cb941f92SLuke Lau %x = getelementptr i32, <4 x ptr> %p, <4 x i32> zeroinitializer 74cb941f92SLuke Lau ret <4 x ptr> %x 75cb941f92SLuke Lau} 76cb941f92SLuke Lau 77cb941f92SLuke Laudefine <16 x ptr> @zero_indices_v16i32(<16 x ptr> %p) { 78cb941f92SLuke Lau; CHECK-LABEL: 'zero_indices_v16i32' 79cb941f92SLuke Lau; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %x = getelementptr i32, <16 x ptr> %p, <16 x i32> zeroinitializer 80*0a5d52a7SSergey Kachkov; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <16 x ptr> %x 81cb941f92SLuke Lau; 82cb941f92SLuke Lau %x = getelementptr i32, <16 x ptr> %p, <16 x i32> zeroinitializer 83cb941f92SLuke Lau ret <16 x ptr> %x 84cb941f92SLuke Lau} 85cb941f92SLuke Lau 86cb941f92SLuke Laudefine <4 x ptr> @zero_indices_v4f32(<4 x ptr> %p) { 87cb941f92SLuke Lau; CHECK-LABEL: 'zero_indices_v4f32' 88cb941f92SLuke Lau; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %x = getelementptr float, <4 x ptr> %p, <4 x i32> zeroinitializer 89*0a5d52a7SSergey Kachkov; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x ptr> %x 90cb941f92SLuke Lau; 91cb941f92SLuke Lau %x = getelementptr float, <4 x ptr> %p, <4 x i32> zeroinitializer 92cb941f92SLuke Lau ret <4 x ptr> %x 93cb941f92SLuke Lau} 94cb941f92SLuke Lau 95cb941f92SLuke Laudefine <4 x ptr> @zero_indices_v4v4i32(<4 x ptr> %p) { 96cb941f92SLuke Lau; CHECK-LABEL: 'zero_indices_v4v4i32' 97cb941f92SLuke Lau; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %x = getelementptr <32 x i32>, <4 x ptr> %p, <4 x i32> zeroinitializer, <4 x i32> zeroinitializer 98*0a5d52a7SSergey Kachkov; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret <4 x ptr> %x 99cb941f92SLuke Lau; 100cb941f92SLuke Lau %x = getelementptr <32 x i32>, <4 x ptr> %p, <4 x i32> zeroinitializer, <4 x i32> zeroinitializer 101cb941f92SLuke Lau ret <4 x ptr> %x 102cb941f92SLuke Lau} 103