| ; 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 |
| } |