Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / inline-asm-assertion.ll
blobd5507a1c441703956770c51a4503cac3f3da73a0
1 ; RUN: not llc -verify-machineinstrs -O0 < %s 2>&1 | FileCheck %s
2 ; RUN: not --crash llc -verify-machineinstrs -O2 < %s 2>&1 | FileCheck %s --check-prefix=CHECK-O2
3 ; CHECK: error: inline assembly requires more registers than available
4 ; CHECK: .size   main, .Lfunc_end0-main
5 ; CHECK-O2: error: inline assembly requires more registers than available
7 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
8 target triple = "x86_64-unknown-linux-gnu"
10 ; Function Attrs: noinline nounwind optnone uwtable
11 define dso_local i32 @main() #0 {
12 entry:
13   %r0 = alloca i32, align 4
14   %r1 = alloca i32, align 4
15   %r2 = alloca i32, align 4
16   %r3 = alloca i32, align 4
17   %r4 = alloca i32, align 4
18   %r5 = alloca i32, align 4
19   %r6 = alloca i32, align 4
20   %r7 = alloca i32, align 4
21   %r8 = alloca i32, align 4
22   %r9 = alloca i32, align 4
23   %r10 = alloca i32, align 4
24   %r11 = alloca i32, align 4
25   %r12 = alloca i32, align 4
26   %r13 = alloca i32, align 4
27   %r14 = alloca i32, align 4
28   %0 = call { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } asm "movl $$0, $0;movl $$1, $1;movl $$2, $2;movl $$3, $3;movl $$4, $4;movl $$5, $5;movl $$6, $6;movl $$7, $7;movl $$8, $8;movl $$9, $9;movl $$10, $10;movl $$11, $11;movl $$12, $12;movl $$13, $13;movl $$14, $14;", "=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,~{dirflag},~{fpsr},~{flags}"() #1
29   %asmresult = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 0
30   %asmresult1 = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 1
31   %asmresult2 = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 2
32   %asmresult3 = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 3
33   %asmresult4 = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 4
34   %asmresult5 = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 5
35   %asmresult6 = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 6
36   %asmresult7 = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 7
37   %asmresult8 = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 8
38   %asmresult9 = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 9
39   %asmresult10 = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 10
40   %asmresult11 = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 11
41   %asmresult12 = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 12
42   %asmresult13 = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 13
43   %asmresult14 = extractvalue { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %0, 14
44   store i32 %asmresult, ptr %r0, align 4
45   store i32 %asmresult1, ptr %r1, align 4
46   store i32 %asmresult2, ptr %r2, align 4
47   store i32 %asmresult3, ptr %r3, align 4
48   store i32 %asmresult4, ptr %r4, align 4
49   store i32 %asmresult5, ptr %r5, align 4
50   store i32 %asmresult6, ptr %r6, align 4
51   store i32 %asmresult7, ptr %r7, align 4
52   store i32 %asmresult8, ptr %r8, align 4
53   store i32 %asmresult9, ptr %r9, align 4
54   store i32 %asmresult10, ptr %r10, align 4
55   store i32 %asmresult11, ptr %r11, align 4
56   store i32 %asmresult12, ptr %r12, align 4
57   store i32 %asmresult13, ptr %r13, align 4
58   store i32 %asmresult14, ptr %r14, align 4
59   ret i32 0
62 attributes #0 = { "frame-pointer"="all" }