llvm/llvm/test/Analysis/CostModel/SystemZ/load_store.ll

; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -mtriple=systemz-unknown -mcpu=zEC12 | FileCheck %s --check-prefixes=CHECK,ZEC12
; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -mtriple=systemz-unknown -mcpu=z13 | FileCheck %s --check-prefixes=CHECK,Z13
; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -mtriple=systemz-unknown -mcpu=z14 | FileCheck %s --check-prefixes=CHECK,Z14

define void @store() {
  store i8 undef, ptr undef
  store i16 undef, ptr undef
  store i32 undef, ptr undef
  store i64 undef, ptr undef
  store i128 undef, ptr undef
  store float undef, ptr undef
  store double undef, ptr undef
  store fp128 undef, ptr undef
  store <2 x i8> undef, ptr undef
  store <2 x i16> undef, ptr undef
  store <2 x i32> undef, ptr undef
  store <2 x i64> undef, ptr undef
  store <2 x float> undef, ptr undef
  store <2 x double> undef, ptr undef
  store <4 x i8> undef, ptr undef
  store <4 x i16> undef, ptr undef
  store <4 x i32> undef, ptr undef
  store <4 x i64> undef, ptr undef
  store <4 x float> undef, ptr undef
  store <4 x double> undef, ptr undef
  store <8 x i8> undef, ptr undef
  store <8 x i16> undef, ptr undef
  store <8 x i32> undef, ptr undef
  store <8 x i64> undef, ptr undef
  store <8 x float> undef, ptr undef
  store <8 x double> undef, ptr undef
  store <16 x i8> undef, ptr undef
  store <16 x i16> undef, ptr undef
  store <16 x i32> undef, ptr undef
  store <16 x i64> undef, ptr undef
  store <16 x float> undef, ptr undef
  store <16 x double> undef, ptr undef

; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store i8 undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store i16 undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store i32 undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store i64 undef, ptr undef
; ZEC12: Cost Model: Found an estimated cost of 2 for instruction:   store i128 undef, ptr undef
; Z13:   Cost Model: Found an estimated cost of 1 for instruction:   store i128 undef, ptr undef
; Z14:   Cost Model: Found an estimated cost of 1 for instruction:   store i128 undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store float undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store double undef, ptr undef
; ZEC12: Cost Model: Found an estimated cost of 2 for instruction:   store fp128 undef, ptr undef
; Z13:   Cost Model: Found an estimated cost of 2 for instruction:   store fp128 undef, ptr undef
; Z14:   Cost Model: Found an estimated cost of 1 for instruction:   store fp128 undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <2 x i8> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <2 x i16> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <2 x i32> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <2 x i64> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <2 x float> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <2 x double> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <4 x i8> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <4 x i16> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <4 x i32> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   store <4 x i64> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <4 x float> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   store <4 x double> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <8 x i8> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <8 x i16> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   store <8 x i32> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   store <8 x i64> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   store <8 x float> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   store <8 x double> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   store <16 x i8> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   store <16 x i16> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   store <16 x i32> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 8 for instruction:   store <16 x i64> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   store <16 x float> undef, ptr undef
; CHECK: Cost Model: Found an estimated cost of 8 for instruction:   store <16 x double> undef, ptr undef

  ret void;
}

define void @load() {
  load i8, ptr undef
  load i16, ptr undef
  load i32, ptr undef
  load i64, ptr undef
  load i128, ptr undef
  load float, ptr undef
  load double, ptr undef
  load fp128, ptr undef
  load <2 x i8>, ptr undef
  load <2 x i16>, ptr undef
  load <2 x i32>, ptr undef
  load <2 x i64>, ptr undef
  load <2 x float>, ptr undef
  load <2 x double>, ptr undef
  load <4 x i8>, ptr undef
  load <4 x i16>, ptr undef
  load <4 x i32>, ptr undef
  load <4 x i64>, ptr undef
  load <4 x float>, ptr undef
  load <4 x double>, ptr undef
  load <8 x i8>, ptr undef
  load <8 x i16>, ptr undef
  load <8 x i32>, ptr undef
  load <8 x i64>, ptr undef
  load <8 x float>, ptr undef
  load <8 x double>, ptr undef
  load <16 x i8>, ptr undef
  load <16 x i16>, ptr undef
  load <16 x i32>, ptr undef
  load <16 x i64>, ptr undef
  load <16 x float>, ptr undef
  load <16 x double>, ptr undef

; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %1 = load i8, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %2 = load i16, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %3 = load i32, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %4 = load i64, ptr undef
; ZEC12: Cost Model: Found an estimated cost of 2 for instruction:   %5 = load i128, ptr undef
; Z13:   Cost Model: Found an estimated cost of 1 for instruction:   %5 = load i128, ptr undef
; Z14:   Cost Model: Found an estimated cost of 1 for instruction:   %5 = load i128, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %6 = load float, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %7 = load double, ptr undef
; ZEC12: Cost Model: Found an estimated cost of 2 for instruction:   %8 = load fp128, ptr undef
; Z13:   Cost Model: Found an estimated cost of 2 for instruction:   %8 = load fp128, ptr undef
; Z14:   Cost Model: Found an estimated cost of 1 for instruction:   %8 = load fp128, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %9 = load <2 x i8>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %10 = load <2 x i16>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %11 = load <2 x i32>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %12 = load <2 x i64>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %13 = load <2 x float>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %14 = load <2 x double>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %15 = load <4 x i8>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %16 = load <4 x i16>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %17 = load <4 x i32>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %18 = load <4 x i64>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %19 = load <4 x float>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %20 = load <4 x double>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %21 = load <8 x i8>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %22 = load <8 x i16>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %23 = load <8 x i32>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %24 = load <8 x i64>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %25 = load <8 x float>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %26 = load <8 x double>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %27 = load <16 x i8>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %28 = load <16 x i16>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %29 = load <16 x i32>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 8 for instruction:   %30 = load <16 x i64>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %31 = load <16 x float>, ptr undef
; CHECK: Cost Model: Found an estimated cost of 8 for instruction:   %32 = load <16 x double>, ptr undef

  ret void;
}