| Issue |
166563
|
| Summary |
[AArch64][GISel] ANDXrr "Expected a GPR64 register, but got a GPR64sp register"
|
| Labels |
backend:AArch64,
llvm:globalisel
|
| Assignees |
|
| Reporter |
sjoerdmeijer
|
This IR that is most like not minimal:
```
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
target triple = "aarch64-unknown-linux-gnu"
define i64 @_Z4testajhhsxibxjxhsiPxPsPA15_iPA15_jPbPyS5_PA20_sPA20_A20_yPA20_A20_iPA20_A20_xPhSI_PA20_S7_SE_PA20_A20_jSH_SN_S8_SH_SB_PA20_A20_h(i1 %var_7) {
entry:
%tobool.not = icmp eq i8 0, 0
br i1 %tobool.not, label %entry.split.us.split.us.split.us.split.us, label %for.body.us.us993.us
entry.split.us.split.us.split.us.split.us: ; preds = %entry
br i1 %var_7, label %for.body19.us.us.us.us.us.us.us.us.us, label %for.body.us.us.us.us.preheader
for.body.us.us.us.us.preheader: ; preds = %entry.split.us.split.us.split.us.split.us
%unroll_iter1523 = and i64 0, 457873110
ret i64 %unroll_iter1523
for.body19.us.us.us.us.us.us.us.us.us: ; preds = %for.body19.us.us.us.us.us.us.us.us.us, %entry.split.us.split.us.split.us.split.us
%niter1529 = phi i64 [ %niter1529.next.1, %for.body19.us.us.us.us.us.us.us.us.us ], [ 0, %entry.split.us.split.us.split.us.split.us ]
%niter1529.next.1 = add i64 %niter1529, 1
%niter1529.ncmp.1 = icmp eq i64 %niter1529, 457873108
br label %for.body19.us.us.us.us.us.us.us.us.us
for.body.us.us993.us: ; preds = %for.body19.us.us967.us.us.us.us, %entry
%0 = load i16, ptr null, align 2
br label %for.body19.us.us967.us.us.us.us
for.body19.us.us967.us.us.us.us: ; preds = %for.body19.us.us967.us.us.us.us, %for.body.us.us993.us
%cmp17.us.us990.us.us.us.us = icmp ult i64 0, 457873110
br i1 %cmp17.us.us990.us.us.us.us, label %for.body19.us.us967.us.us.us.us, label %for.body.us.us993.us
}
```
Triggers this verifier failure:
```
*** Bad machine code: Illegal virtual register for instruction ***
- function: _Z4testajhhsxibxjxhsiPxPsPA15_iPA15_jPbPyS5_PA20_sPA20_A20_yPA20_A20_iPA20_A20_xPhSI_PA20_S7_SE_PA20_A20_jSH_SN_S8_SH_SB_PA20_A20_h
- basic block: %bb.5 for.body.us.us.us.us.preheader (0xaaaab01c71f0)
- instruction: %13:gpr64 = ANDXrr %24:gpr64, %6:gpr64sp
- operand 2: %6:gpr64sp
Expected a GPR64 register, but got a GPR64sp register
```
See also: https://godbolt.org/z/1sPdG5976
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs