llvm-project/llvm/test/MachineVerifier/test_g_is_fpclass.mir
Serge Pavlov ec893da990 [GlobalISel] Remove semantic operand of G_IS_FPCLASS
Instruction G_IS_FPCLASS had an operand that represented floating-point
semantics of its first operand. It allowed types that have the same length,
like `bfloat16` and `half`, to be distinguished. Unfortunately, it is
not sufficient, as other operation still cannot distinguish such types.
Solution of this problem must be more general, so now this operand is removed.

Differential Revision: https://reviews.llvm.org/D138004
2022-11-15 15:48:05 +07:00

38 lines
1.2 KiB
YAML

# RUN: not --crash llc -o - -march=aarch64 -global-isel -run-pass=none -verify-machineinstrs %s 2>&1 | FileCheck %s
# REQUIRES: aarch64-registered-target
---
name: test_fcmp
legalized: true
regBankSelected: false
selected: false
tracksRegLiveness: true
liveins:
body: |
bb.0:
liveins: $x0, $w0, $q0
%s32:_(s32) = COPY $w0
%ptr:_(p0) = COPY $x0
%vector:_(<4 x s32>) = COPY $q0
%val1:_(s1) = G_IS_FPCLASS %s32
; CHECK: *** Bad machine code: Too few operands ***
; CHECK: 3 operands expected, but 2 given.
%val2:_(p0) = G_IS_FPCLASS %s32, 3
; CHECK: *** Bad machine code: Destination must be a scalar or vector of scalars ***
%val4:_(s1) = G_IS_FPCLASS %s32, 7777
; CHECK: *** Bad machine code: Incorrect floating-point class set (operand 2) ***
%val5:_(s1) = G_IS_FPCLASS %ptr:_(p0), 3
; CHECK: *** Bad machine code: Source must be a scalar or vector of scalars ***
%var6:_(s1) = G_IS_FPCLASS %vector:_(<4 x s32>), 1
; CHECK: *** Bad machine code: operand types must be all-vector or all-scalar ***
%var7:_(<2 x s1>) = G_IS_FPCLASS %vector:_(<4 x s32>), 1
; CHECK: *** Bad machine code: operand types must preserve number of vector elements ***
...