<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/148659>148659</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AArch64] Expected a GPR64common register, but got a GPR64sp register
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:AArch64
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
sjoerdmeijer
</td>
</tr>
</table>
<pre>
For a build with expensive checks enabled, this input:
```
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 void @_Z4testatjatabyxsxtthtaiPA17_hPA17_aS0_PiPA17_S1_PyS5_PA17_tPA17_S7_PA17_A17_iS5_SA_PA17_A17_yPA17_A17_jSA_SD_PA17_A17_s(i8 %var_0, i32 %var_3, i8 %var_4, i1 %var_7, i16 %var_12, i8 %var_14, ptr %arr_23, ptr %arr_40, i32 %or377, i64 %0, i64 %indvars.iv827, i64 %idxprom400.us.us, i64 %idxprom, ptr %arrayidx374.us.us.us, ptr %var_30, ptr %var_31, ptr %var_32, ptr %arrayidx414.us.us.us, ptr %1, ptr %var_33) #0 {
entry:
br label %for.body
for.body: ; preds = %for.cond457.preheader.us.us.us, %entry
br label %for.body350.us.us
for.body350.us.us: ; preds = %for.cond457.preheader.us.us.us, %for.body
%indvars.iv82710 = phi i64 [ %indvars.iv.next828, %for.cond457.preheader.us.us.us ], [ %0, %for.body ]
%conv347727.us.us11 = phi i32 [ %5, %for.cond457.preheader.us.us.us ], [ %or377, %for.body ]
%add387.us.us = add i32 %conv347727.us.us11, 1
%idxprom388.us.us = zext i32 %add387.us.us to i64
%arrayidx401.us.us = getelementptr [17 x [17 x i32]], ptr %arr_40, i64 %idxprom388.us.us, i64 %indvars.iv827, i64 %idxprom400.us.us
store i8 %var_0, ptr %arr_23, align 1
store i16 %var_12, ptr %var_30, align 2
br label %for.body383.us.us.us
for.body383.us.us.us: ; preds = %for.body383.us.us.us, %for.body350.us.us
%indvars.iv82416 = phi i64 [ %indvars.iv.next825, %for.body383.us.us.us ], [ 0, %for.body350.us.us ]
%2 = phi i8 [ 0, %for.body383.us.us.us ], [ %var_14, %for.body350.us.us ]
store i8 %var_4, ptr %var_31, align 1
%3 = load i32, ptr %arrayidx401.us.us, align 4
%cmp404.us.us.us = icmp sle i32 %3, %var_3
%conv405.us.us.us = zext i1 %cmp404.us.us.us to i8
store i8 %conv405.us.us.us, ptr %var_32, align 1
%arrayidx425.us.us.us = getelementptr [17 x [17 x i32]], ptr %arr_23, i64 %indvars.iv82710, i64 4307, i64 %indvars.iv82416
%arrayidx414.us.us.us17 = getelementptr [17 x [17 x i16]], ptr null, i64 0, i64 %indvars.iv82416, i64 0
store i8 0, ptr %1, align 1
store i64 %idxprom, ptr %var_33, align 8
%4 = load i32, ptr %arrayidx425.us.us.us, align 4
store i8 %2, ptr %arrayidx414.us.us.us, align 1
store i64 1, ptr %arrayidx374.us.us.us, align 8
%indvars.iv.next825 = add i64 %indvars.iv82416, 1
br i1 %var_7, label %for.body383.us.us.us, label %for.cond457.preheader.us.us.us
for.cond457.preheader.us.us.us: ; preds = %for.body383.us.us.us
%indvars.iv.next828 = add i64 %indvars.iv82710, 1
%5 = trunc i64 %indvars.iv.next828 to i32
%cmp348.us.us = icmp ult i64 %indvars.iv82710, 0
br i1 %cmp348.us.us, label %for.body350.us.us, label %for.body
}
attributes #0 = { "frame-pointer"="non-leaf" "target-cpu"="grace" }
```
runs into this error:
```
*** Bad machine code: Illegal virtual register for instruction ***
- function: _Z4testatjatabyxsxtthtaiPA17_hPA17_aS0_PiPA17_S1_PyS5_PA17_tPA17_S7_PA17_A17_iS5_SA_PA17_A17_yPA17_A17_jSA_SD_PA17_A17_s
- basic block: %bb.137 (0xaaaaaf9ba718) [32608B;32720B)
- instruction: 32672B undef %526.sub_32:gpr64sp = LDRWui %stack.36, 0 :: (load (s32) from %stack.36)
- operand 0: undef %526.sub_32:gpr64sp
Expected a GPR64common register, but got a GPR64sp register
*** Bad machine code: Illegal virtual register for instruction ***
- function: _Z4testatjatabyxsxtthtaiPA17_hPA17_aS0_PiPA17_S1_PyS5_PA17_tPA17_S7_PA17_A17_iS5_SA_PA17_A17_yPA17_A17_jSA_SD_PA17_A17_s
- basic block: %bb.99 for.body350.us.us.preheader (0xaaaaaf7feb10) [32720B;32832B)
- instruction: 32800B undef %494.sub_32:gpr64sp = LDRWui %stack.36, 0 :: (load (s32) from %stack.36)
- operand 0: undef %494.sub_32:gpr64sp
Expected a GPR64common register, but got a GPR64sp register
LLVM ERROR: Found 2 machine code errors.
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWFuP6roV_jXmxQL5khsPPIRyqCrtqluD1Ep9QU5iwDPBiWyHw_TXV7ZJSEJgj6aVzsMZMYFlr5vt71u2w7QWR8n5CoRrEG5mrDGnSq30e8VVcebinatZVhWfq22lIINZI8oC_i7MCfJrzaUWFw7zE88_NOSSZSUvAPkLNCehoZB1YwBNAXKfCN0-KDVMHbmBBTOsZJ9VYyCgGwgI4fMzoCmf1yRGgKaUuIcV8VC0v6LAPeYiATRNfJfAEaCpe1ipU8HEKmCSzCX1tvOdlbZWJOSek1GiLnmbD2MqP0XBvJEfsvpdzkshm-v8KBtvA1Ba8IOQHF4qUUAQoP2_A8O1YeadGZZ9XvXVmJNh4meK4_3JPdkO7X_6hh3e__zchXsnGN8Ue8n-i12436V3-bP79b5L97vNvUcDkogEAhJemNojuwSCklamTu66AyfiVoy9GLUyJkN17PRro2wDU2pP6Kgh6AesFI29yyiwMur9FrK4MKUX4pKQvo4orrWqzgFCi0YvGv3YNYzIPkVxpXHgtW8Gt243YDRuwOMGMuExwJMeH2wpIEsICEUQxGuAUi6N-vRAhzBTsGQZL632oVILSx4PlU6iKQR0DWvFC31DmlPNK1kEYbyoFT9xVnA1yAaQ0Ad6FoWG7fQNwt2baQp_8fe9tHrDhA_LjJHzVZ-EX9JwPVRZSH41CUl6vp4HhCDcOEXvBY0ScN23JPJKXmgQxyT2phjf87BI9R7C74TtIP4kNCsKmsStKd1AVhQtPR7Tso6wNb2jnSZJz_o__Gpa84FrU9kp7aK2KEa4Z3zkhpf8zKVxCA7XOIbX7ltQYvP2o3tk9ICCXVLfIbTNUZtKcTgqUw91hZXiKP2EtBbj2vTAdG9DnjMjoXfMDsnR7_kFPybJ8eBkCIs-Jx-4EdiBfYEb4dhpL14fmmM6dMH74CT3kMm01RPvg-3gZZTxQgeT1bi_0ICE1OVVVsxRZao6t7i-G3fYz891gIJe2nQDRX6uoS55Sx16y9vviJ5vlo0BCoeGnm94yq9lXPIwxrGXyb1mNNxuVGQU_XuE9dyZYiXuqBxQFD_RCnD0kFhvM8TxV1LD0TA12ZRlG-_ZKcAG7lQG84rGO_BEYXh2RGh36dYoaQcX_BJkZLiMfZz1l_wrx4fphPEXjjK9rCfrwX1TeTqjuC2Go4Pe69o4Vnix9Xdl9IXOs4PORE2G06eCVyO9QbujlJ8WoxqZP6p3Di2FKWn5f65pkIyLRlOaF_HQcGb7LqYnOEQveu08xhs_m8wYJbLGcH07XdoZi23lJQfFznxeV0Iaruzlg24AIbKS85KzAyC2whF_hZnnddNpHBXLuev2QXqXMIBS1Uh7TTOVv7BxpSo1eWED5PaBa1bAM8tP9tKTVwW3a_y3suRHVsKLUKZhJVT8KLThCh4qBYXURjW5EZWEnRuA0jk8NNI1Wxd_2L3JJpIxLXKYlVX-4SBLwixbYBpbVCXoyuzfYZmxGCfu5B-uKYlQsgZ0TUlM0BqQpXPUG6t1REkUkzVsZMEPDqAkWugm27sb6LFWUaBrt8g_Nm__aoRV0YblHwvqKGwBkPqEEleyAEm0rVpLeFDVeajuE6hqrpgsIPJnmZeRAUp_u9Y8N7yADP7151sU5NX5XMlu_WwSWWPgsTKthq7vvR4lfz5kLJfwgdv36tfHTHzgmS0aN8w4qFjMJJQ8x0yC0Lq_dsEy-INQMxX5_4CaHz_--Xf429vbP95svG3VyAKSAXR8JdKLfhWaFStaLOmSzfgKxyEJMcIhnZ1WMc-XMYkQw4jkiBVZsMwDmuGIEISTZTQTK4JIiGIc2DZKFxjnRcwpDdkSEUQyECB-ZqJclOXlvKjUcSa0bvgKB0kULmeuZmv3goyQjOUfXBaApmnq3g3ZUhtuZmpljedZc9QgQKXQRt_dGWFK94attQk38H-axVmjytXJmNrusYBsAdkehTk12SK3B6GtjXz7mteqeue5AWTrRqUB2d4GdlmR_wYAAP__PoPXQA">