Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: test/Transforms/NaCl/normalize-alignment.ll

Issue 1151093004: Changes from 3.7 merge to files not in upstream (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-llvm.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 ; RUN: opt -S -normalize-alignment %s 2>&1 | FileCheck %s 1 ; RUN: opt -S -normalize-alignment %s 2>&1 | FileCheck %s
2 2
3 target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64 :64:64-p:32:32:32-v128:32:32" 3 target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64 :64:64-p:32:32:32-v128:32:32"
4 4
5 ; Implicit default alignments are changed to explicit alignments. 5 ; Implicit default alignments are changed to explicit alignments.
6 define void @default_alignment_attrs(float %f, double %d) { 6 define void @default_alignment_attrs(float %f, double %d) {
7 load i8* null 7 load i8, i8* null
8 load i32* null 8 load i32, i32* null
9 load float* null 9 load float, float* null
10 load double* null 10 load double, double* null
11 11
12 store i8 100, i8* null 12 store i8 100, i8* null
13 store i32 100, i32* null 13 store i32 100, i32* null
14 store float %f, float* null 14 store float %f, float* null
15 store double %d, double* null 15 store double %d, double* null
16 ret void 16 ret void
17 } 17 }
18 ; CHECK-LABEL: @default_alignment_attrs 18 ; CHECK-LABEL: @default_alignment_attrs
19 ; CHECK-NEXT: load i8* null, align 1 19 ; CHECK-NEXT: load i8, i8* null, align 1
20 ; CHECK-NEXT: load i32* null, align 1 20 ; CHECK-NEXT: load i32, i32* null, align 1
21 ; CHECK-NEXT: load float* null, align 4 21 ; CHECK-NEXT: load float, float* null, align 4
22 ; CHECK-NEXT: load double* null, align 8 22 ; CHECK-NEXT: load double, double* null, align 8
23 ; CHECK-NEXT: store i8 100, i8* null, align 1 23 ; CHECK-NEXT: store i8 100, i8* null, align 1
24 ; CHECK-NEXT: store i32 100, i32* null, align 1 24 ; CHECK-NEXT: store i32 100, i32* null, align 1
25 ; CHECK-NEXT: store float %f, float* null, align 4 25 ; CHECK-NEXT: store float %f, float* null, align 4
26 ; CHECK-NEXT: store double %d, double* null, align 8 26 ; CHECK-NEXT: store double %d, double* null, align 8
27 27
28 define void @reduce_alignment_assumptions() { 28 define void @reduce_alignment_assumptions() {
29 load i32* null, align 4 29 load i32, i32* null, align 4
30 load float* null, align 2 30 load float, float* null, align 2
31 load float* null, align 4 31 load float, float* null, align 4
32 load float* null, align 8 32 load float, float* null, align 8
33 load double* null, align 2 33 load double, double* null, align 2
34 load double* null, align 8 34 load double, double* null, align 8
35 load double* null, align 16 35 load double, double* null, align 16
36 36
37 ; Higher alignment assumptions must be retained for atomics. 37 ; Higher alignment assumptions must be retained for atomics.
38 load atomic i32* null seq_cst, align 4 38 load atomic i32, i32* null seq_cst, align 4
39 load atomic i32* null seq_cst, align 8 39 load atomic i32, i32* null seq_cst, align 8
40 store atomic i32 100, i32* null seq_cst, align 4 40 store atomic i32 100, i32* null seq_cst, align 4
41 store atomic i32 100, i32* null seq_cst, align 8 41 store atomic i32 100, i32* null seq_cst, align 8
42 ret void 42 ret void
43 } 43 }
44 ; CHECK-LABEL: @reduce_alignment_assumptions 44 ; CHECK-LABEL: @reduce_alignment_assumptions
45 ; CHECK-NEXT: load i32* null, align 1 45 ; CHECK-NEXT: load i32, i32* null, align 1
46 ; CHECK-NEXT: load float* null, align 1 46 ; CHECK-NEXT: load float, float* null, align 1
47 ; CHECK-NEXT: load float* null, align 4 47 ; CHECK-NEXT: load float, float* null, align 4
48 ; CHECK-NEXT: load float* null, align 4 48 ; CHECK-NEXT: load float, float* null, align 4
49 ; CHECK-NEXT: load double* null, align 1 49 ; CHECK-NEXT: load double, double* null, align 1
50 ; CHECK-NEXT: load double* null, align 8 50 ; CHECK-NEXT: load double, double* null, align 8
51 ; CHECK-NEXT: load double* null, align 8 51 ; CHECK-NEXT: load double, double* null, align 8
52 ; CHECK-NEXT: load atomic i32* null seq_cst, align 4 52 ; CHECK-NEXT: load atomic i32, i32* null seq_cst, align 4
53 ; CHECK-NEXT: load atomic i32* null seq_cst, align 4 53 ; CHECK-NEXT: load atomic i32, i32* null seq_cst, align 4
54 ; CHECK-NEXT: store atomic i32 100, i32* null seq_cst, align 4 54 ; CHECK-NEXT: store atomic i32 100, i32* null seq_cst, align 4
55 ; CHECK-NEXT: store atomic i32 100, i32* null seq_cst, align 4 55 ; CHECK-NEXT: store atomic i32 100, i32* null seq_cst, align 4
56 56
57 declare void @llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) 57 declare void @llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
58 declare void @llvm.memmove.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) 58 declare void @llvm.memmove.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
59 declare void @llvm.memset.p0i8.i32(i8*, i8, i32, i32, i1) 59 declare void @llvm.memset.p0i8.i32(i8*, i8, i32, i32, i1)
60 60
61 define void @reduce_memcpy_alignment_assumptions(i8* %ptr) { 61 define void @reduce_memcpy_alignment_assumptions(i8* %ptr) {
62 call void @llvm.memcpy.p0i8.p0i8.i32(i8* %ptr, i8* %ptr, 62 call void @llvm.memcpy.p0i8.p0i8.i32(i8* %ptr, i8* %ptr,
63 i32 20, i32 4, i1 false) 63 i32 20, i32 4, i1 false)
64 call void @llvm.memmove.p0i8.p0i8.i32(i8* %ptr, i8* %ptr, 64 call void @llvm.memmove.p0i8.p0i8.i32(i8* %ptr, i8* %ptr,
65 i32 20, i32 4, i1 false) 65 i32 20, i32 4, i1 false)
66 call void @llvm.memset.p0i8.i32(i8* %ptr, i8 99, 66 call void @llvm.memset.p0i8.i32(i8* %ptr, i8 99,
67 i32 20, i32 4, i1 false) 67 i32 20, i32 4, i1 false)
68 ret void 68 ret void
69 } 69 }
70 ; CHECK-LABEL: @reduce_memcpy_alignment_assumptions 70 ; CHECK-LABEL: @reduce_memcpy_alignment_assumptions
71 ; CHECK-NEXT: call void @llvm.memcpy.{{.*}} i32 20, i32 1, i1 false) 71 ; CHECK-NEXT: call void @llvm.memcpy.{{.*}} i32 20, i32 1, i1 false)
72 ; CHECK-NEXT: call void @llvm.memmove.{{.*}} i32 20, i32 1, i1 false) 72 ; CHECK-NEXT: call void @llvm.memmove.{{.*}} i32 20, i32 1, i1 false)
73 ; CHECK-NEXT: call void @llvm.memset.{{.*}} i32 20, i32 1, i1 false) 73 ; CHECK-NEXT: call void @llvm.memset.{{.*}} i32 20, i32 1, i1 false)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698