| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 |
| ; RUN: opt -disable-basic-aa -passes=gvn -S < %s | FileCheck %s --check-prefixes=CHECK,MDEP |
| ; RUN: opt -disable-basic-aa -passes='gvn<memoryssa>' -S < %s | FileCheck --check-prefixes=CHECK,MSSA %s |
| target datalayout = "e-p:32:32:32" |
| define <2 x i32> @test1() { |
| ; MDEP-LABEL: define <2 x i32> @test1() { |
| ; MDEP-NEXT: [[V1:%.*]] = alloca <2 x i32>, align 8 |
| ; MDEP-NEXT: call void @anything(ptr [[V1]]) |
| ; MDEP-NEXT: [[V2:%.*]] = load <2 x i32>, ptr [[V1]], align 8 |
| ; MDEP-NEXT: [[V3:%.*]] = inttoptr <2 x i32> [[V2]] to <2 x ptr> |
| ; MDEP-NEXT: store <2 x ptr> [[V3]], ptr [[V1]], align 8 |
| ; MDEP-NEXT: [[TMP1:%.*]] = bitcast <2 x i32> [[V2]] to i64 |
| ; MDEP-NEXT: ret <2 x i32> [[V2]] |
| ; |
| ; MSSA-LABEL: define <2 x i32> @test1() { |
| ; MSSA-NEXT: [[V1:%.*]] = alloca <2 x i32>, align 8 |
| ; MSSA-NEXT: call void @anything(ptr [[V1]]) |
| ; MSSA-NEXT: [[V2:%.*]] = load <2 x i32>, ptr [[V1]], align 8 |
| ; MSSA-NEXT: [[V3:%.*]] = inttoptr <2 x i32> [[V2]] to <2 x ptr> |
| ; MSSA-NEXT: store <2 x ptr> [[V3]], ptr [[V1]], align 8 |
| ; MSSA-NEXT: [[V5:%.*]] = load <2 x i32>, ptr [[V1]], align 8 |
| ; MSSA-NEXT: ret <2 x i32> [[V5]] |
| %v1 = alloca <2 x i32> |
| call void @anything(ptr %v1) |
| %v2 = load <2 x i32>, ptr %v1 |
| %v3 = inttoptr <2 x i32> %v2 to <2 x ptr> |
| store <2 x ptr> %v3, ptr %v1 |
| %v5 = load <2 x i32>, ptr %v1 |
| ret <2 x i32> %v5 |
| } |
| |
| declare void @anything(ptr) |
| |
| ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: |
| ; CHECK: {{.*}} |