Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / GlobalISel / legalize-ctpop-32.mir
blob1e286e75469bce7bb95bef5ea6db2d15259b12dc
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2
2 # RUN: llc -mtriple=i386-linux-gnu -mattr=+popcnt -run-pass=legalizer %s -o - | FileCheck %s
4 # test popcount for s8, s16, and s32
6 ---
7 name:            test_ctpop8
8 alignment:       16
9 legalized:       false
10 regBankSelected: false
11 registers:
12   - { id: 0, class: _, preferred-register: '' }
13   - { id: 1, class: _, preferred-register: '' }
14 body:             |
15   bb.1:
16     ; CHECK-LABEL: name: test_ctpop8
17     ; CHECK: [[DEF:%[0-9]+]]:_(s8) = IMPLICIT_DEF
18     ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s16) = G_ZEXT [[DEF]](s8)
19     ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s16) = G_CTPOP [[ZEXT]](s16)
20     ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[CTPOP]](s16)
21     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY [[TRUNC]](s8)
22     ; CHECK-NEXT: RET 0, implicit [[COPY]](s8)
23     %0:_(s8) = IMPLICIT_DEF
24     %1:_(s8) = G_CTPOP %0
25     %2:_(s8) = COPY %1(s8)
26     RET 0, implicit %2
28 ...
29 ---
30 name:            test_ctpop32
31 alignment:       16
32 legalized:       false
33 regBankSelected: false
34 registers:
35   - { id: 0, class: _, preferred-register: '' }
36   - { id: 1, class: _, preferred-register: '' }
37 body:             |
38   bb.1:
39     ; CHECK-LABEL: name: test_ctpop32
40     ; CHECK: [[DEF:%[0-9]+]]:_(s32) = IMPLICIT_DEF
41     ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[DEF]](s32)
42     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[CTPOP]](s32)
43     ; CHECK-NEXT: RET 0, implicit [[COPY]](s32)
44     %0:_(s32) = IMPLICIT_DEF
45     %1:_(s32) = G_CTPOP %0
46     %2:_(s32) = COPY %1(s32)
47     RET 0, implicit %2
49 ...
50 ---
51 name:            test_ctpop16
52 alignment:       16
53 legalized:       false
54 regBankSelected: false
55 registers:
56   - { id: 0, class: _, preferred-register: '' }
57   - { id: 1, class: _, preferred-register: '' }
58 body:             |
59   bb.1:
60     ; CHECK-LABEL: name: test_ctpop16
61     ; CHECK: [[DEF:%[0-9]+]]:_(s16) = IMPLICIT_DEF
62     ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(s16) = G_CTPOP [[DEF]](s16)
63     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY [[CTPOP]](s16)
64     ; CHECK-NEXT: RET 0, implicit [[COPY]](s16)
65     %0:_(s16) = IMPLICIT_DEF
66     %1:_(s16) = G_CTPOP %0
67     %2:_(s16) = COPY %1(s16)
68     RET 0, implicit %2
70 ...