xref: /llvm-project/llvm/test/CodeGen/AMDGPU/folding-of-i32-as-i64.mir (revision 9e9907f1cfa424366fba58d9520f9305b537cec9)
1ee6d62dbSStanislav Mekhanoshin# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3
2*9e9907f1SFangrui Song# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass=si-fold-operands -o - %s | FileCheck -check-prefix=GCN %s
3ee6d62dbSStanislav Mekhanoshin
4ee6d62dbSStanislav Mekhanoshin# The constant is 0xffffffff80000000. It is 64-bit negative constant, but it passes the test
5ee6d62dbSStanislav Mekhanoshin# isInt<32>(). Nonetheless it is not a legal literal for a binary or unsigned operand and
6ee6d62dbSStanislav Mekhanoshin# cannot be used right in the shift as HW will zero extend it.
7ee6d62dbSStanislav Mekhanoshin
8ee6d62dbSStanislav Mekhanoshin---
9ee6d62dbSStanislav Mekhanoshinname:            imm64_shift_int32_const_0xffffffff80000000
10ee6d62dbSStanislav Mekhanoshinbody: |
11ee6d62dbSStanislav Mekhanoshin  bb.0:
12ee6d62dbSStanislav Mekhanoshin    ; GCN-LABEL: name: imm64_shift_int32_const_0xffffffff80000000
13ee6d62dbSStanislav Mekhanoshin    ; GCN: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO -2147483648
14ee6d62dbSStanislav Mekhanoshin    ; GCN-NEXT: [[S_LSHL_B64_:%[0-9]+]]:sreg_64 = S_LSHL_B64 [[S_MOV_B]], 1, implicit-def $scc
15ee6d62dbSStanislav Mekhanoshin    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B64_]]
16ee6d62dbSStanislav Mekhanoshin    %0:sreg_64 = S_MOV_B64_IMM_PSEUDO 18446744071562067968
17ee6d62dbSStanislav Mekhanoshin    %1:sreg_64 = S_LSHL_B64 %0, 1, implicit-def $scc
18ee6d62dbSStanislav Mekhanoshin    S_ENDPGM 0, implicit %1
19ee6d62dbSStanislav Mekhanoshin
20ee6d62dbSStanislav Mekhanoshin...
21ee6d62dbSStanislav Mekhanoshin
22ee6d62dbSStanislav Mekhanoshin---
23ee6d62dbSStanislav Mekhanoshinname:            imm64_shift_int32_const_0xffffffff
24ee6d62dbSStanislav Mekhanoshinbody: |
25ee6d62dbSStanislav Mekhanoshin  bb.0:
26ee6d62dbSStanislav Mekhanoshin    ; GCN-LABEL: name: imm64_shift_int32_const_0xffffffff
27ee6d62dbSStanislav Mekhanoshin    ; GCN: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO 4294967295
28ee6d62dbSStanislav Mekhanoshin    ; GCN-NEXT: [[S_LSHL_B64_:%[0-9]+]]:sreg_64 = S_LSHL_B64 [[S_MOV_B]], 1, implicit-def $scc
29ee6d62dbSStanislav Mekhanoshin    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B64_]]
30ee6d62dbSStanislav Mekhanoshin    %0:sreg_64 = S_MOV_B64_IMM_PSEUDO 4294967295
31ee6d62dbSStanislav Mekhanoshin    %1:sreg_64 = S_LSHL_B64 %0, 1, implicit-def $scc
32ee6d62dbSStanislav Mekhanoshin    S_ENDPGM 0, implicit %1
33ee6d62dbSStanislav Mekhanoshin
34ee6d62dbSStanislav Mekhanoshin...
35ee6d62dbSStanislav Mekhanoshin
36ee6d62dbSStanislav Mekhanoshin---
37ee6d62dbSStanislav Mekhanoshinname:            imm64_shift_int32_const_0x80000000
38ee6d62dbSStanislav Mekhanoshinbody: |
39ee6d62dbSStanislav Mekhanoshin  bb.0:
40ee6d62dbSStanislav Mekhanoshin    ; GCN-LABEL: name: imm64_shift_int32_const_0x80000000
41ee6d62dbSStanislav Mekhanoshin    ; GCN: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO 2147483648
42ee6d62dbSStanislav Mekhanoshin    ; GCN-NEXT: [[S_LSHL_B64_:%[0-9]+]]:sreg_64 = S_LSHL_B64 [[S_MOV_B]], 1, implicit-def $scc
43ee6d62dbSStanislav Mekhanoshin    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B64_]]
44ee6d62dbSStanislav Mekhanoshin    %0:sreg_64 = S_MOV_B64_IMM_PSEUDO 2147483648
45ee6d62dbSStanislav Mekhanoshin    %1:sreg_64 = S_LSHL_B64 %0, 1, implicit-def $scc
46ee6d62dbSStanislav Mekhanoshin    S_ENDPGM 0, implicit %1
47ee6d62dbSStanislav Mekhanoshin
48ee6d62dbSStanislav Mekhanoshin...
49ee6d62dbSStanislav Mekhanoshin
50ee6d62dbSStanislav Mekhanoshin---
51ee6d62dbSStanislav Mekhanoshinname:            imm64_shift_int32_const_0x7fffffff
52ee6d62dbSStanislav Mekhanoshinbody: |
53ee6d62dbSStanislav Mekhanoshin  bb.0:
54ee6d62dbSStanislav Mekhanoshin    ; GCN-LABEL: name: imm64_shift_int32_const_0x7fffffff
55ee6d62dbSStanislav Mekhanoshin    ; GCN: [[S_LSHL_B64_:%[0-9]+]]:sreg_64 = S_LSHL_B64 2147483647, 1, implicit-def $scc
56ee6d62dbSStanislav Mekhanoshin    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B64_]]
57ee6d62dbSStanislav Mekhanoshin    %0:sreg_64 = S_MOV_B64_IMM_PSEUDO 2147483647
58ee6d62dbSStanislav Mekhanoshin    %1:sreg_64 = S_LSHL_B64 %0, 1, implicit-def $scc
59ee6d62dbSStanislav Mekhanoshin    S_ENDPGM 0, implicit %1
60ee6d62dbSStanislav Mekhanoshin
61ee6d62dbSStanislav Mekhanoshin...
62ee6d62dbSStanislav Mekhanoshin
63ee6d62dbSStanislav Mekhanoshin---
64ee6d62dbSStanislav Mekhanoshinname:            imm64_shift_int32_const_0x1ffffffff
65ee6d62dbSStanislav Mekhanoshinbody: |
66ee6d62dbSStanislav Mekhanoshin  bb.0:
67ee6d62dbSStanislav Mekhanoshin    ; GCN-LABEL: name: imm64_shift_int32_const_0x1ffffffff
68ee6d62dbSStanislav Mekhanoshin    ; GCN: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO 8589934591
69ee6d62dbSStanislav Mekhanoshin    ; GCN-NEXT: [[S_LSHL_B64_:%[0-9]+]]:sreg_64 = S_LSHL_B64 [[S_MOV_B]], 1, implicit-def $scc
70ee6d62dbSStanislav Mekhanoshin    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B64_]]
71ee6d62dbSStanislav Mekhanoshin    %0:sreg_64 = S_MOV_B64_IMM_PSEUDO 8589934591
72ee6d62dbSStanislav Mekhanoshin    %1:sreg_64 = S_LSHL_B64 %0, 1, implicit-def $scc
73ee6d62dbSStanislav Mekhanoshin    S_ENDPGM 0, implicit %1
74ee6d62dbSStanislav Mekhanoshin
75ee6d62dbSStanislav Mekhanoshin...
76ee6d62dbSStanislav Mekhanoshin
77ee6d62dbSStanislav Mekhanoshin---
78ee6d62dbSStanislav Mekhanoshinname:            imm64_shift_int32_const_0xffffffffffffffff
79ee6d62dbSStanislav Mekhanoshinbody: |
80ee6d62dbSStanislav Mekhanoshin  bb.0:
81ee6d62dbSStanislav Mekhanoshin    ; GCN-LABEL: name: imm64_shift_int32_const_0xffffffffffffffff
82ee6d62dbSStanislav Mekhanoshin    ; GCN: [[S_LSHL_B64_:%[0-9]+]]:sreg_64 = S_LSHL_B64 -1, 1, implicit-def $scc
83ee6d62dbSStanislav Mekhanoshin    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_LSHL_B64_]]
84ee6d62dbSStanislav Mekhanoshin    %0:sreg_64 = S_MOV_B64_IMM_PSEUDO -1
85ee6d62dbSStanislav Mekhanoshin    %1:sreg_64 = S_LSHL_B64 %0, 1, implicit-def $scc
86ee6d62dbSStanislav Mekhanoshin    S_ENDPGM 0, implicit %1
87ee6d62dbSStanislav Mekhanoshin
88ee6d62dbSStanislav Mekhanoshin...
89ee6d62dbSStanislav Mekhanoshin
90ee6d62dbSStanislav Mekhanoshin---
91ee6d62dbSStanislav Mekhanoshinname:            imm64_ashr_int32_const_0xffffffff
92ee6d62dbSStanislav Mekhanoshinbody: |
93ee6d62dbSStanislav Mekhanoshin  bb.0:
94ee6d62dbSStanislav Mekhanoshin    ; GCN-LABEL: name: imm64_ashr_int32_const_0xffffffff
95ee6d62dbSStanislav Mekhanoshin    ; GCN: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO 4294967295
96ee6d62dbSStanislav Mekhanoshin    ; GCN-NEXT: [[S_ASHR_I64_:%[0-9]+]]:sreg_64 = S_ASHR_I64 [[S_MOV_B]], 1, implicit-def $scc
97ee6d62dbSStanislav Mekhanoshin    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_ASHR_I64_]]
98ee6d62dbSStanislav Mekhanoshin    %0:sreg_64 = S_MOV_B64_IMM_PSEUDO 4294967295
99ee6d62dbSStanislav Mekhanoshin    %1:sreg_64 = S_ASHR_I64 %0, 1, implicit-def $scc
100ee6d62dbSStanislav Mekhanoshin    S_ENDPGM 0, implicit %1
101ee6d62dbSStanislav Mekhanoshin
102ee6d62dbSStanislav Mekhanoshin...
103ee6d62dbSStanislav Mekhanoshin
104ee6d62dbSStanislav Mekhanoshin---
105ee6d62dbSStanislav Mekhanoshinname:            imm64_ashr_int32_const_0x7fffffff
106ee6d62dbSStanislav Mekhanoshinbody: |
107ee6d62dbSStanislav Mekhanoshin  bb.0:
108ee6d62dbSStanislav Mekhanoshin    ; GCN-LABEL: name: imm64_ashr_int32_const_0x7fffffff
109ee6d62dbSStanislav Mekhanoshin    ; GCN: [[S_ASHR_I64_:%[0-9]+]]:sreg_64 = S_ASHR_I64 2147483647, 1, implicit-def $scc
110ee6d62dbSStanislav Mekhanoshin    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_ASHR_I64_]]
111ee6d62dbSStanislav Mekhanoshin    %0:sreg_64 = S_MOV_B64_IMM_PSEUDO 2147483647
112ee6d62dbSStanislav Mekhanoshin    %1:sreg_64 = S_ASHR_I64 %0, 1, implicit-def $scc
113ee6d62dbSStanislav Mekhanoshin    S_ENDPGM 0, implicit %1
114ee6d62dbSStanislav Mekhanoshin
115ee6d62dbSStanislav Mekhanoshin...
116ee6d62dbSStanislav Mekhanoshin
117ee6d62dbSStanislav Mekhanoshin---
118ee6d62dbSStanislav Mekhanoshinname:            imm64_ashr_int32_const_0xffffffffffffffff
119ee6d62dbSStanislav Mekhanoshinbody: |
120ee6d62dbSStanislav Mekhanoshin  bb.0:
121ee6d62dbSStanislav Mekhanoshin    ; GCN-LABEL: name: imm64_ashr_int32_const_0xffffffffffffffff
122ee6d62dbSStanislav Mekhanoshin    ; GCN: [[S_ASHR_I64_:%[0-9]+]]:sreg_64 = S_ASHR_I64 -1, 1, implicit-def $scc
123ee6d62dbSStanislav Mekhanoshin    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_ASHR_I64_]]
124ee6d62dbSStanislav Mekhanoshin    %0:sreg_64 = S_MOV_B64_IMM_PSEUDO -1
125ee6d62dbSStanislav Mekhanoshin    %1:sreg_64 = S_ASHR_I64 %0, 1, implicit-def $scc
126ee6d62dbSStanislav Mekhanoshin    S_ENDPGM 0, implicit %1
127ee6d62dbSStanislav Mekhanoshin
128ee6d62dbSStanislav Mekhanoshin...
129