xref: /llvm-project/llvm/test/CodeGen/X86/GlobalISel/legalize-ctpop-32.mir (revision dd2fea9c23e6dabd83d3f4ee7d000ceb16cace55)
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
3
4# test popcount for s8, s16, and s32
5
6---
7name:            test_ctpop8
8alignment:       16
9legalized:       false
10regBankSelected: false
11registers:
12  - { id: 0, class: _, preferred-register: '' }
13  - { id: 1, class: _, preferred-register: '' }
14body:             |
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
27
28...
29---
30name:            test_ctpop32
31alignment:       16
32legalized:       false
33regBankSelected: false
34registers:
35  - { id: 0, class: _, preferred-register: '' }
36  - { id: 1, class: _, preferred-register: '' }
37body:             |
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
48
49...
50---
51name:            test_ctpop16
52alignment:       16
53legalized:       false
54regBankSelected: false
55registers:
56  - { id: 0, class: _, preferred-register: '' }
57  - { id: 1, class: _, preferred-register: '' }
58body:             |
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
69
70...
71