1d9221da7SShengchen Kan; Check r16-r31 can not be used with 'q','r','l' constraint for backward compatibility. 2*73f4c254SFreddy Ye; RUN: not llc -mtriple=x86_64 < %s 2>&1 | FileCheck %s --check-prefix=ERR 3*73f4c254SFreddy Ye; RUN: not llc -mtriple=x86_64 -mattr=+egpr < %s 2>&1 | FileCheck %s --check-prefix=ERR 4*73f4c254SFreddy Ye; RUN: llc -mtriple=x86_64 -mattr=+egpr,+inline-asm-use-gpr32 < %s | FileCheck %s 5d9221da7SShengchen Kan 6d9221da7SShengchen Kandefine void @q() { 7*73f4c254SFreddy Ye; ERR: error: inline assembly requires more registers than available 8*73f4c254SFreddy Ye; CHECK: movq %rax, %r16 9*73f4c254SFreddy Ye %a = call i64 asm sideeffect "movq %rax, $0", "=q,~{rax},~{rbx},~{rcx},~{rdx},~{rdi},~{rsi},~{rbp},~{rsp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"() 10d9221da7SShengchen Kan ret void 11d9221da7SShengchen Kan} 12d9221da7SShengchen Kan 13d9221da7SShengchen Kandefine void @r() { 14*73f4c254SFreddy Ye; ERR: error: inline assembly requires more registers than available 15*73f4c254SFreddy Ye; CHECK: movq %rax, %r16 16*73f4c254SFreddy Ye %a = call i64 asm sideeffect "movq %rax, $0", "=r,~{rax},~{rbx},~{rcx},~{rdx},~{rdi},~{rsi},~{rbp},~{rsp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"() 17d9221da7SShengchen Kan ret void 18d9221da7SShengchen Kan} 19d9221da7SShengchen Kan 20d9221da7SShengchen Kandefine void @l() { 21*73f4c254SFreddy Ye; ERR: error: inline assembly requires more registers than available 22*73f4c254SFreddy Ye; CHECK: movq %rax, %r16 23*73f4c254SFreddy Ye %a = call i64 asm sideeffect "movq %rax, $0", "=l,~{rax},~{rbx},~{rcx},~{rdx},~{rdi},~{rsi},~{rbp},~{rsp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"() 24d9221da7SShengchen Kan ret void 25d9221da7SShengchen Kan} 26d9221da7SShengchen Kan 27