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