[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / X86 / GlobalISel / avoid-matchtable-crash.mir
blob31f1da5c674fcde1bfaf405d431652bce124379b
1 # RUN: not llc -o - -run-pass=instruction-select -pass-remarks-missed=gisel %s 2>&1 | FileCheck %s
2 --- |
3   target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
4   target triple = "x86_64--linux-gnu"
6   define void @test_check_type() {
7     ret void
8   }
9 ...
10 ---
11 name:            test_check_type
12 alignment:       16
13 legalized:       true
14 regBankSelected: true
15 tracksRegLiveness: true
16 registers:
17   - { id: 0, class: gpr }
18   - { id: 1, class: gpr }
19 body:             |
20   bb.1 (%ir-block.0):
21     liveins: $edi
23     ; Intrinsic::x86_flags_read_u64 has a higher prority than
24     ; Intrinsic::x86_int in the match table and both of them
25     ; have two operands, but their IntrinsicID index is different.
26     ; This causes crash when executing GIM_CheckType for Intrinsic::x86_int
27     ; because Operand0 is not a register.
28     ; Make sure we check whether the first operand is a register and
29     ; reject if it's not.
30     ; CHECK: cannot select: G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.x86.int)
31     %1:gpr(s32) = COPY $edi
32     %0:gpr(s8) = G_TRUNC %1(s32)
33     G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.x86.int), %0(s8)
34     RET 0
36 ...