48 lines
1.6 KiB
LLVM
48 lines
1.6 KiB
LLVM
; Check that llc does not abort, which happened due to incorrect MIR.
|
|
; RUN: llc -O2 -mtriple=hexagon -insert-max-ifmap=1 < %s
|
|
; RUN: llc -O2 -mtriple=hexagon -insert-max-ifmap=2 < %s
|
|
; RUN: llc -O2 -mtriple=hexagon -insert-max-ifmap=3 < %s
|
|
; RUN: llc -O2 -mtriple=hexagon -insert-max-ifmap=4 < %s
|
|
; RUN: llc -O2 -mtriple=hexagon -insert-max-ifmap=5 < %s
|
|
|
|
; Look for this symptom, in case llc does not check invalid IR.
|
|
; CHECK-NOT: insert(%14,%5,#5,#5)
|
|
|
|
; RUN: llc -O2 -mtriple=hexagon -insert-max-ifmap=1 -debug-only=hexinsert -stop-after hexinsert < %s 2>&1 | FileCheck %s
|
|
; RUN: llc -O2 -mtriple=hexagon -insert-max-ifmap=2 -debug-only=hexinsert -stop-after hexinsert < %s 2>&1 | FileCheck %s
|
|
; RUN: llc -O2 -mtriple=hexagon -insert-max-ifmap=3 -debug-only=hexinsert -stop-after hexinsert < %s 2>&1 | FileCheck %s
|
|
; RUN: llc -O2 -mtriple=hexagon -insert-max-ifmap=4 -debug-only=hexinsert -stop-after hexinsert < %s 2>&1 | FileCheck %s
|
|
; RUN: llc -O2 -mtriple=hexagon -insert-max-ifmap=5 -debug-only=hexinsert -stop-after hexinsert < %s 2>&1 | FileCheck %s
|
|
|
|
; REQUIRES: asserts
|
|
|
|
define i32 @f(i32 %0, i32 %1, i32 %2) {
|
|
entry:
|
|
switch i32 %0, label %common.ret1 [
|
|
i32 8907, label %3
|
|
i32 4115, label %6
|
|
]
|
|
|
|
common.ret1:
|
|
%common.ret1.op = phi i32 [ %5, %3 ], [ %526, %6 ], [ 0, %entry ]
|
|
ret i32 %common.ret1.op
|
|
|
|
3:
|
|
%4 = shl i32 %2, 5
|
|
%5 = and i32 %4, 992
|
|
br label %common.ret1
|
|
|
|
6:
|
|
%7 = shl i32 %0, 10
|
|
%8 = and i32 %7, 7168
|
|
%9 = shl i32 %0, 5
|
|
%10 = and i32 %9, 992
|
|
%11 = or i32 %10, %8
|
|
%12 = and i32 %0, 1
|
|
%13 = or i32 %11, %12
|
|
%14 = shl i32 %1, 1
|
|
%15 = and i32 %14, 2031616
|
|
%526 = or i32 %13, %15
|
|
br label %common.ret1
|
|
}
|