llvm/llvm/test/Analysis/AliasSet/memloc-vscale.ll

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S < %s -passes=print-alias-sets 2>&1 | FileCheck %s

; CHECK-LABEL: Alias sets for function 'sn'
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod       Memory locations: (ptr %p, LocationSize::precise(vscale x 16)), (ptr %p, LocationSize::precise(8))
define void @sn(ptr %p) {;
  store <vscale x 2 x i64> zeroinitializer, ptr %p, align 2
  store i64 0, ptr %p, align 2
  ret void
}

; CHECK-LABEL: Alias sets for function 'ns'
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod       Memory locations: (ptr %p, LocationSize::precise(8)), (ptr %p, LocationSize::precise(vscale x 16))
define void @ns(ptr %p) {
  store i64 0, ptr %p, align 2
  store <vscale x 2 x i64> zeroinitializer, ptr %p, align 2
  ret void
}

; CHECK-LABEL: Alias sets for function 'ss':
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod       Memory locations: (ptr %p, LocationSize::precise(vscale x 16))
define void @ss(ptr %p) {
  store <vscale x 2 x i64> zeroinitializer, ptr %p, align 2
  store <vscale x 2 x i64> zeroinitializer, ptr %p, align 2
  ret void
}

; CHECK-LABEL: Alias sets for function 'ss2':
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod       Memory locations: (ptr %p, LocationSize::precise(vscale x 16)), (ptr %p, LocationSize::precise(vscale x 32))
define void @ss2(ptr %p) {
  store <vscale x 2 x i64> zeroinitializer, ptr %p, align 2
  store <vscale x 2 x i64> zeroinitializer, ptr %p, align 2
  store <vscale x 4 x i64> zeroinitializer, ptr %p, align 2
  ret void
}
; CHECK-LABEL: Alias sets for function 'son':
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod       Memory locations: (ptr %g, LocationSize::precise(vscale x 16))
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod       Memory locations: (ptr %p, LocationSize::precise(8))
define void @son(ptr %p) {
  %g = getelementptr i8, ptr %p, i64 8
  store <vscale x 2 x i64> zeroinitializer, ptr %g, align 2
  store i64 0, ptr %p, align 2
  ret void
}

; CHECK-LABEL: Alias sets for function 'sno':
; CHECK: AliasSet[{{.*}}, 2] may alias, Mod       Memory locations: (ptr %p, LocationSize::precise(vscale x 16)), (ptr %g, LocationSize::precise(8))
define void @sno(ptr %p) {
  %g = getelementptr i8, ptr %p, i64 8
  store <vscale x 2 x i64> zeroinitializer, ptr %p, align 2
  store i64 0, ptr %g, align 2
  ret void
}