File tree Expand file tree Collapse file tree 1 file changed +53
-0
lines changed
llvm/test/Transforms/CorrelatedValuePropagation Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Original file line number Diff line number Diff line change @@ -308,6 +308,59 @@ default:
308308 ret i8 123
309309}
310310
311+ define i8 @ucmp_switch_callsite_range (i32 %x , i32 %y ) {
312+ ; CHECK-LABEL: @ucmp_switch_callsite_range(
313+ ; CHECK-NEXT: [[CMP:%.*]] = call range(i8 -2, 3) i8 @llvm.ucmp.i8.i32(i32 [[X:%.*]], i32 [[Y:%.*]])
314+ ; CHECK-NEXT: switch i8 [[CMP]], label [[DEFAULT_UNREACHABLE:%.*]] [
315+ ; CHECK-NEXT: i8 -2, label [[BB_NEG2:%.*]]
316+ ; CHECK-NEXT: i8 -1, label [[BB_NEG1:%.*]]
317+ ; CHECK-NEXT: i8 0, label [[BB_0:%.*]]
318+ ; CHECK-NEXT: i8 1, label [[BB_1:%.*]]
319+ ; CHECK-NEXT: i8 2, label [[BB_2:%.*]]
320+ ; CHECK-NEXT: ]
321+ ; CHECK: bb.neg2:
322+ ; CHECK-NEXT: ret i8 -2
323+ ; CHECK: bb.neg1:
324+ ; CHECK-NEXT: ret i8 -1
325+ ; CHECK: bb.0:
326+ ; CHECK-NEXT: ret i8 0
327+ ; CHECK: bb.1:
328+ ; CHECK-NEXT: ret i8 1
329+ ; CHECK: bb.2:
330+ ; CHECK-NEXT: ret i8 2
331+ ; CHECK: default.unreachable:
332+ ; CHECK-NEXT: unreachable
333+ ; CHECK: default:
334+ ; CHECK-NEXT: ret i8 123
335+ ;
336+ %cmp = call range(i8 -2 , 3 ) i8 @llvm.ucmp (i32 %x , i32 %y )
337+ switch i8 %cmp , label %default [
338+ i8 -2 , label %bb.neg2
339+ i8 -1 , label %bb.neg1
340+ i8 0 , label %bb.0
341+ i8 1 , label %bb.1
342+ i8 2 , label %bb.2
343+ ]
344+
345+ bb.neg2:
346+ ret i8 -2
347+
348+ bb.neg1:
349+ ret i8 -1
350+
351+ bb.0 :
352+ ret i8 0
353+
354+ bb.1 :
355+ ret i8 1
356+
357+ bb.2 :
358+ ret i8 2
359+
360+ default:
361+ ret i8 123
362+ }
363+
311364define i8 @scmp_switch (i32 %x , i32 %y ) {
312365; CHECK-LABEL: @scmp_switch(
313366; CHECK-NEXT: [[CMP:%.*]] = call i8 @llvm.scmp.i8.i32(i32 [[X:%.*]], i32 [[Y:%.*]])
You can’t perform that action at this time.
0 commit comments