xref: /llvm-project/llvm/test/CodeGen/SystemZ/mverify-optypes.mir (revision 00baad35b2a366437e210a0701173247a3ad5468)
1# RUN: not --crash llc -mtriple=s390x-linux-gnu -mcpu=z14 -run-pass=none -o - %s \
2# RUN:  2>&1 | FileCheck %s
3#
4# Test that the machine verifier catches wrong operand types.
5
6--- |
7  define anyregcc i64 @fun() { ret i64 0  }
8  @gsrc = global i16 2
9...
10---
11name:            fun
12alignment:       16
13tracksRegLiveness: true
14registers:
15  - { id: 0, class: gr64bit }
16frameInfo:
17  maxAlignment:    1
18machineFunctionInfo: {}
19body:             |
20  bb.0 (%ir-block.0):
21    liveins: $r2l
22    %0:gr64bit = LGHI $r2l
23    %1:addr64bit = LLILL $r2l
24    %2:addr64bit = LGFI $r2l
25    %3:addr64bit = LGFI 0
26
27    %3:addr64bit = AG %3, %1, 0, %2, implicit-def dead $cc
28    %3:addr64bit = AG %3, %1, %0, %2, implicit-def dead $cc
29    %3:addr64bit = AG %3, %1, 0, 2, implicit-def dead $cc
30
31    %4:addr64bit = LARL @gsrc
32    %4:addr64bit = LARL $r2l
33
34    MVCImm %4, 0, %3, 0, 1680, implicit-def $cc
35    MVCImm %4, 0, %3, 0, %1, implicit-def $cc
36
37    BCR 0, 0, $r2d, implicit $cc
38    BCR 0, $r2d, $r2d, implicit $cc
39    Return implicit $r2d
40
41...
42
43# CHECK: *** Bad machine code: Expected a non-register operand. ***
44# CHECK: - instruction: %0:gr64bit = LGHI $r2l
45# CHECK: - operand 1:   $r2l
46
47# CHECK: *** Bad machine code: Expected a non-register operand. ***
48# CHECK: - instruction: %1:addr64bit = LLILL $r2l
49# CHECK: - operand 1:   $r2l
50
51# CHECK: *** Bad machine code: Expected a non-register operand. ***
52# CHECK: - instruction: %2:addr64bit = LGFI $r2l
53# CHECK: - operand 1:   $r2l
54
55# CHECK: *** Bad machine code: Addressing mode operands corrupt! ***
56# CHECK: - instruction: %3:addr64bit = AG %3:addr64bit(tied-def 0), %1:addr64bit, %0:gr64bit, %2:addr64bit, implicit-def dead $cc
57
58# CHECK: *** Bad machine code: Addressing mode operands corrupt! ***
59# CHECK: - instruction: %3:addr64bit = AG %3:addr64bit(tied-def 0), %1:addr64bit, 0, 2, implicit-def dead $cc
60
61# CHECK: *** Bad machine code: Expected a non-register operand. ***
62# CHECK: - instruction: %4:addr64bit = LARL $r2l
63# CHECK: - operand 1:   $r2l
64
65# CHECK: *** Bad machine code: Expected a non-register operand. ***
66# CHECK: - instruction: MVCImm %4:addr64bit, 0, %3:addr64bit, 0, %1:addr64bit, implicit-def $cc
67# CHECK: - operand 4:   %1:addr64bit
68
69# CHECK: *** Bad machine code: Expected a non-register operand. ***
70# CHECK: - instruction: BCR 0, $r2d, $r2d, implicit $cc
71# CHECK: - operand 1:   $r2d
72