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

Side by Side Diff: tests_lit/llvm2ice_tests/shift.ll

Issue 1975283002: Subzero, MIPS32: Implement logical instructions ashr, lshr, shl (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 4 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
« src/IceInstMIPS32.h ('K') | « src/IceTargetLoweringMIPS32.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ; This is a test of C-level conversion operations that clang lowers 1 ; This is a test of C-level conversion operations that clang lowers
2 ; into pairs of shifts. 2 ; into pairs of shifts.
3 3
4 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 4 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
5 ; RUN: --target x8632 -i %s --args -O2 \ 5 ; RUN: --target x8632 -i %s --args -O2 \
6 ; RUN: | %if --need=target_X8632 --command FileCheck %s 6 ; RUN: | %if --need=target_X8632 --command FileCheck %s
7 7
8 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 8 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
9 ; RUN: --target x8632 -i %s --args -Om1 \ 9 ; RUN: --target x8632 -i %s --args -Om1 \
10 ; RUN: | %if --need=target_X8632 --command FileCheck %s 10 ; RUN: | %if --need=target_X8632 --command FileCheck %s
11 11
12 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) 12 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented)
13 ; once enough infrastructure is in. Also, switch to --filetype=obj 13 ; once enough infrastructure is in. Also, switch to --filetype=obj
14 ; when possible. 14 ; when possible.
15 ; RUN: %if --need=target_ARM32 --need=allow_dump \ 15 ; RUN: %if --need=target_ARM32 --need=allow_dump \
16 ; RUN: --command %p2i --filetype=asm --assemble \ 16 ; RUN: --command %p2i --filetype=asm --assemble \
17 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ 17 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \
18 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ 18 ; RUN: | %if --need=target_ARM32 --need=allow_dump \
19 ; RUN: --command FileCheck --check-prefix ARM32 %s 19 ; RUN: --command FileCheck --check-prefix ARM32 %s
20 20
21 ; RUN: %if --need=target_ARM32 --need=allow_dump \ 21 ; RUN: %if --need=target_ARM32 --need=allow_dump \
22 ; RUN: --command %p2i --filetype=asm --assemble \ 22 ; RUN: --command %p2i --filetype=asm --assemble \
23 ; RUN: --disassemble --target arm32 -i %s --args -Om1 --skip-unimplemented \ 23 ; RUN: --disassemble --target arm32 -i %s --args -Om1 --skip-unimplemented \
24 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ 24 ; RUN: | %if --need=target_ARM32 --need=allow_dump \
25 ; RUN: --command FileCheck --check-prefix ARM32 %s 25 ; RUN: --command FileCheck --check-prefix ARM32 %s
26 26
27 ; RUN: %if --need=target_MIPS32 --need=allow_dump \
28 ; RUN: --command %p2i --filetype=asm --assemble \
29 ; RUN: --disassemble --target mips32 -i %s --args -O2 --skip-unimplemented \
30 ; RUN: | %if --need=target_MIPS32 --need=allow_dump \
31 ; RUN: --command FileCheck --check-prefix MIPS32 %s
32
33 ; RUN: %if --need=target_MIPS32 --need=allow_dump \
34 ; RUN: --command %p2i --filetype=asm --assemble \
35 ; RUN: --disassemble --target mips32 -i %s --args -Om1 --skip-unimplemented \
36 ; RUN: | %if --need=target_MIPS32 --need=allow_dump \
37 ; RUN: --command FileCheck --check-prefix MIPS32 %s
27 38
28 @i1 = internal global [4 x i8] zeroinitializer, align 4 39 @i1 = internal global [4 x i8] zeroinitializer, align 4
29 @i2 = internal global [4 x i8] zeroinitializer, align 4 40 @i2 = internal global [4 x i8] zeroinitializer, align 4
30 @u1 = internal global [4 x i8] zeroinitializer, align 4 41 @u1 = internal global [4 x i8] zeroinitializer, align 4
31 42
32 define internal void @conv1() { 43 define internal void @conv1() {
33 entry: 44 entry:
34 %__0 = bitcast [4 x i8]* @u1 to i32* 45 %__0 = bitcast [4 x i8]* @u1 to i32*
35 %v0 = load i32, i32* %__0, align 1 46 %v0 = load i32, i32* %__0, align 1
36 %sext = shl i32 %v0, 24 47 %sext = shl i32 %v0, 24
(...skipping 29 matching lines...) Expand all
66 ; ARM32: lsr {{.*}}, #16 77 ; ARM32: lsr {{.*}}, #16
67 78
68 define internal i32 @shlImmLarge(i32 %val) { 79 define internal i32 @shlImmLarge(i32 %val) {
69 entry: 80 entry:
70 %result = shl i32 %val, 257 81 %result = shl i32 %val, 257
71 ret i32 %result 82 ret i32 %result
72 } 83 }
73 ; CHECK-LABEL: shlImmLarge 84 ; CHECK-LABEL: shlImmLarge
74 ; CHECK: shl {{.*}},0x1 85 ; CHECK: shl {{.*}},0x1
75 86
87 ; MIPS32-LABEL: shlImmLarge
88 ; MIPS32: sllv
89
76 define internal i32 @shlImmNeg(i32 %val) { 90 define internal i32 @shlImmNeg(i32 %val) {
77 entry: 91 entry:
78 %result = shl i32 %val, -1 92 %result = shl i32 %val, -1
79 ret i32 %result 93 ret i32 %result
80 } 94 }
81 ; CHECK-LABEL: shlImmNeg 95 ; CHECK-LABEL: shlImmNeg
82 ; CHECK: shl {{.*}},0xff 96 ; CHECK: shl {{.*}},0xff
83 97
98 ; MIPS32-LABEL: shlImmNeg
99 ; MIPS32: sllv
100
84 define internal i32 @lshrImmLarge(i32 %val) { 101 define internal i32 @lshrImmLarge(i32 %val) {
85 entry: 102 entry:
86 %result = lshr i32 %val, 257 103 %result = lshr i32 %val, 257
87 ret i32 %result 104 ret i32 %result
88 } 105 }
89 ; CHECK-LABEL: lshrImmLarge 106 ; CHECK-LABEL: lshrImmLarge
90 ; CHECK: shr {{.*}},0x1 107 ; CHECK: shr {{.*}},0x1
91 108
109 ; MIPS32-LABEL: lshrImmLarge
110 ; MIPS32: srlv
111
92 define internal i32 @lshrImmNeg(i32 %val) { 112 define internal i32 @lshrImmNeg(i32 %val) {
93 entry: 113 entry:
94 %result = lshr i32 %val, -1 114 %result = lshr i32 %val, -1
95 ret i32 %result 115 ret i32 %result
96 } 116 }
97 ; CHECK-LABEL: lshrImmNeg 117 ; CHECK-LABEL: lshrImmNeg
98 ; CHECK: shr {{.*}},0xff 118 ; CHECK: shr {{.*}},0xff
99 119
120 ; MIPS32-LABEL: lshrImmNeg
121 ; MIPS32: srlv
122
100 define internal i32 @ashrImmLarge(i32 %val) { 123 define internal i32 @ashrImmLarge(i32 %val) {
101 entry: 124 entry:
102 %result = ashr i32 %val, 257 125 %result = ashr i32 %val, 257
103 ret i32 %result 126 ret i32 %result
104 } 127 }
105 ; CHECK-LABEL: ashrImmLarge 128 ; CHECK-LABEL: ashrImmLarge
106 ; CHECK: sar {{.*}},0x1 129 ; CHECK: sar {{.*}},0x1
107 130
131 ; MIPS32-LABEL: ashrImmLarge
132 ; MIPS32: srav
133
108 define internal i32 @ashrImmNeg(i32 %val) { 134 define internal i32 @ashrImmNeg(i32 %val) {
109 entry: 135 entry:
110 %result = ashr i32 %val, -1 136 %result = ashr i32 %val, -1
111 ret i32 %result 137 ret i32 %result
112 } 138 }
113 ; CHECK-LABEL: ashrImmNeg 139 ; CHECK-LABEL: ashrImmNeg
114 ; CHECK: sar {{.*}},0xff 140 ; CHECK: sar {{.*}},0xff
115 141
142 ; MIPS32-LABEL: ashrImmNeg
143 ; MIPS32: srav
144
116 define internal i64 @shlImm64One(i64 %val) { 145 define internal i64 @shlImm64One(i64 %val) {
117 entry: 146 entry:
118 %result = shl i64 %val, 1 147 %result = shl i64 %val, 1
119 ret i64 %result 148 ret i64 %result
120 } 149 }
121 ; CHECK-LABEL: shlImm64One 150 ; CHECK-LABEL: shlImm64One
122 ; CHECK: shl {{.*}},1 151 ; CHECK: shl {{.*}},1
123 152
124 define internal i64 @shlImm64LessThan32(i64 %val) { 153 define internal i64 @shlImm64LessThan32(i64 %val) {
125 entry: 154 entry:
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 ; CHECK-NOT: shrd 236 ; CHECK-NOT: shrd
208 237
209 define internal i64 @ashrImm64GreaterThan32(i64 %val) { 238 define internal i64 @ashrImm64GreaterThan32(i64 %val) {
210 entry: 239 entry:
211 %result = ashr i64 %val, 40 240 %result = ashr i64 %val, 40
212 ret i64 %result 241 ret i64 %result
213 } 242 }
214 ; CHECK-LABEL: ashrImm64GreaterThan32 243 ; CHECK-LABEL: ashrImm64GreaterThan32
215 ; CHECK: sar {{.*}},0x1f 244 ; CHECK: sar {{.*}},0x1f
216 ; CHECK: shrd {{.*}},0x8 245 ; CHECK: shrd {{.*}},0x8
OLDNEW
« src/IceInstMIPS32.h ('K') | « src/IceTargetLoweringMIPS32.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698