comparison test/CodeGen/SystemZ/branch-06.ll @ 147:c2174574ed3a

LLVM 10
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 14 Aug 2019 16:55:33 +0900
parents afa8332a0e37
children
comparison
equal deleted inserted replaced
134:3a76565eade5 147:c2174574ed3a
98 ; CHECK: llc [[REG:%r[0-5]]], 98 ; CHECK: llc [[REG:%r[0-5]]],
99 ; CHECK: crje %r2, [[REG]], .L[[LABEL]] 99 ; CHECK: crje %r2, [[REG]], .L[[LABEL]]
100 br label %loop 100 br label %loop
101 loop: 101 loop:
102 %val = call i32 @foo() 102 %val = call i32 @foo()
103 %byte = load i8 , i8 *%targetptr 103 %byte = load i8, i8 *%targetptr
104 %target = zext i8 %byte to i32 104 %target = zext i8 %byte to i32
105 %cond = icmp eq i32 %val, %target 105 %cond = icmp eq i32 %val, %target
106 br i1 %cond, label %loop, label %exit 106 br i1 %cond, label %loop, label %exit
107 exit: 107 exit:
108 ret void 108 ret void
116 ; CHECK: llh [[REG:%r[0-5]]], 116 ; CHECK: llh [[REG:%r[0-5]]],
117 ; CHECK: crje %r2, [[REG]], .L[[LABEL]] 117 ; CHECK: crje %r2, [[REG]], .L[[LABEL]]
118 br label %loop 118 br label %loop
119 loop: 119 loop:
120 %val = call i32 @foo() 120 %val = call i32 @foo()
121 %half = load i16 , i16 *%targetptr 121 %half = load i16, i16 *%targetptr
122 %target = zext i16 %half to i32 122 %target = zext i16 %half to i32
123 %cond = icmp eq i32 %val, %target 123 %cond = icmp eq i32 %val, %target
124 br i1 %cond, label %loop, label %exit 124 br i1 %cond, label %loop, label %exit
125 exit: 125 exit:
126 ret void 126 ret void
134 ; CHECK: clhrl %r2, g1 134 ; CHECK: clhrl %r2, g1
135 ; CHECK: je .L[[LABEL]] 135 ; CHECK: je .L[[LABEL]]
136 br label %loop 136 br label %loop
137 loop: 137 loop:
138 %val = call i32 @foo() 138 %val = call i32 @foo()
139 %half = load i16 , i16 *@g1 139 %half = load i16, i16 *@g1
140 %target = zext i16 %half to i32 140 %target = zext i16 %half to i32
141 %cond = icmp eq i32 %val, %target 141 %cond = icmp eq i32 %val, %target
142 br i1 %cond, label %loop, label %exit 142 br i1 %cond, label %loop, label %exit
143 exit: 143 exit:
144 ret void 144 ret void
155 ; CHECK: crjl [[REG1]], [[REG2]], .L[[LABEL]] 155 ; CHECK: crjl [[REG1]], [[REG2]], .L[[LABEL]]
156 br label %loop 156 br label %loop
157 loop: 157 loop:
158 %val = call i32 @foo() 158 %val = call i32 @foo()
159 %targetptr2 = getelementptr i8, i8 *%targetptr1, i64 1 159 %targetptr2 = getelementptr i8, i8 *%targetptr1, i64 1
160 %byte1 = load i8 , i8 *%targetptr1 160 %byte1 = load i8, i8 *%targetptr1
161 %byte2 = load i8 , i8 *%targetptr2 161 %byte2 = load i8, i8 *%targetptr2
162 %ext1 = zext i8 %byte1 to i32 162 %ext1 = zext i8 %byte1 to i32
163 %ext2 = zext i8 %byte2 to i32 163 %ext2 = zext i8 %byte2 to i32
164 %cond = icmp ult i32 %ext1, %ext2 164 %cond = icmp ult i32 %ext1, %ext2
165 br i1 %cond, label %loop, label %exit 165 br i1 %cond, label %loop, label %exit
166 exit: 166 exit:
177 ; CHECK: crjl [[REG1]], [[REG2]], .L[[LABEL]] 177 ; CHECK: crjl [[REG1]], [[REG2]], .L[[LABEL]]
178 br label %loop 178 br label %loop
179 loop: 179 loop:
180 %val = call i32 @foo() 180 %val = call i32 @foo()
181 %targetptr2 = getelementptr i16, i16 *%targetptr1, i64 1 181 %targetptr2 = getelementptr i16, i16 *%targetptr1, i64 1
182 %half1 = load i16 , i16 *%targetptr1 182 %half1 = load i16, i16 *%targetptr1
183 %half2 = load i16 , i16 *%targetptr2 183 %half2 = load i16, i16 *%targetptr2
184 %ext1 = zext i16 %half1 to i32 184 %ext1 = zext i16 %half1 to i32
185 %ext2 = zext i16 %half2 to i32 185 %ext2 = zext i16 %half2 to i32
186 %cond = icmp ult i32 %ext1, %ext2 186 %cond = icmp ult i32 %ext1, %ext2
187 br i1 %cond, label %loop, label %exit 187 br i1 %cond, label %loop, label %exit
188 exit: 188 exit: