aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.target/i386')
-rw-r--r--gcc/testsuite/gcc.target/i386/apx-interrupt-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/apx-nf-pr119539.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/pr111673.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr115910.c20
-rw-r--r--gcc/testsuite/gcc.target/i386/pr119386-1.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/pr119386-2.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/pr119386-3.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/pr119473.c26
-rw-r--r--gcc/testsuite/gcc.target/i386/pr119549.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/pr119784a.c96
-rw-r--r--gcc/testsuite/gcc.target/i386/pr119784b.c87
-rw-r--r--gcc/testsuite/gcc.target/i386/pr67215-1.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/pr67215-2.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/pr82142a.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr82142b.c2
15 files changed, 296 insertions, 14 deletions
diff --git a/gcc/testsuite/gcc.target/i386/apx-interrupt-1.c b/gcc/testsuite/gcc.target/i386/apx-interrupt-1.c
index fefe2e6..fa1acc7 100644
--- a/gcc/testsuite/gcc.target/i386/apx-interrupt-1.c
+++ b/gcc/testsuite/gcc.target/i386/apx-interrupt-1.c
@@ -66,7 +66,7 @@ void foo (void *frame)
/* { dg-final { scan-assembler-times {\t\.cfi_offset 132, -120} 1 } } */
/* { dg-final { scan-assembler-times {\t\.cfi_offset 131, -128} 1 } } */
/* { dg-final { scan-assembler-times {\t\.cfi_offset 130, -136} 1 } } */
-/* { dg-final { scan-assembler-times ".cfi_restore" 15} } */
+/* { dg-final { scan-assembler-times ".cfi_restore" 31 } } */
/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)ax" 1 } } */
/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)bx" 1 } } */
/* { dg-final { scan-assembler-times "pop(?:l|q)\[\\t \]*%(?:e|r)cx" 1 } } */
diff --git a/gcc/testsuite/gcc.target/i386/apx-nf-pr119539.c b/gcc/testsuite/gcc.target/i386/apx-nf-pr119539.c
new file mode 100644
index 0000000..5dfec55
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/apx-nf-pr119539.c
@@ -0,0 +1,6 @@
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-mapx-features=nf -march=x86-64 -O2" } */
+/* { dg-final { scan-assembler-times "\{nf\} rol" 2 } } */
+
+long int f1 (int x) { return ~(1ULL << (x & 0x3f)); }
+long int f2 (char x) { return ~(1ULL << (x & 0x3f)); }
diff --git a/gcc/testsuite/gcc.target/i386/pr111673.c b/gcc/testsuite/gcc.target/i386/pr111673.c
index b9ceacf..0f08ba89 100644
--- a/gcc/testsuite/gcc.target/i386/pr111673.c
+++ b/gcc/testsuite/gcc.target/i386/pr111673.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target { ! ia32 } } } */
-/* { dg-options "-O2 -fdump-rtl-pro_and_epilogue" } */
+/* { dg-options "-O2 -fdump-rtl-pro_and_epilogue -fasynchronous-unwind-tables -fdwarf2-cfi-asm" } */
/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
/* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr115910.c b/gcc/testsuite/gcc.target/i386/pr115910.c
new file mode 100644
index 0000000..5f1cd9a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr115910.c
@@ -0,0 +1,20 @@
+/* PR target/115910 */
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O2 -march=x86-64 -mtune=generic -masm=att" } */
+/* { dg-final { scan-assembler-times {\timulq\t} 2 } } */
+/* { dg-final { scan-assembler-times {\tshrq\t\$33,} 2 } } */
+/* { dg-final { scan-assembler-not {\tsarl\t} } } */
+
+int
+foo (int x)
+{
+ if (x < 0)
+ __builtin_unreachable ();
+ return x / 3U;
+}
+
+int
+bar (int x)
+{
+ return x / 3U;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr119386-1.c b/gcc/testsuite/gcc.target/i386/pr119386-1.c
new file mode 100644
index 0000000..9a0dc64
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr119386-1.c
@@ -0,0 +1,10 @@
+/* PR target/119386 */
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-options "-O2 -fpic -pg" } */
+/* { dg-final { scan-assembler "call\[ \t\]+mcount@PLT" } } */
+
+int
+main ()
+{
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr119386-2.c b/gcc/testsuite/gcc.target/i386/pr119386-2.c
new file mode 100644
index 0000000..3ea978e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr119386-2.c
@@ -0,0 +1,12 @@
+/* PR target/119386 */
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-options "-O2 -fpic -fno-plt -pg" } */
+/* { dg-final { scan-assembler "call\[ \t\]+\\*mcount@GOTPCREL\\(" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler "call\[ \t\]+\\*mcount@GOT\\(" { target ia32 } } } */
+
+
+int
+main ()
+{
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr119386-3.c b/gcc/testsuite/gcc.target/i386/pr119386-3.c
new file mode 100644
index 0000000..287410b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr119386-3.c
@@ -0,0 +1,10 @@
+/* PR target/119386 */
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-options "-O2 -fpic -pg -mnop-mcount" } */
+/* { dg-final { scan-assembler ".byte\[ \t\]+0x0f, 0x1f, 0x44, 0x00, 0x00" } } */
+
+int
+main ()
+{
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr119473.c b/gcc/testsuite/gcc.target/i386/pr119473.c
new file mode 100644
index 0000000..574c921
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr119473.c
@@ -0,0 +1,26 @@
+/* PR target/119473 */
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O2 -mapxf -m64 -mvaes" } */
+
+typedef char __v32qi __attribute__ ((__vector_size__(32)));
+typedef long long __m256i __attribute__((__vector_size__(32), __aligned__(32)));
+
+typedef union
+{
+ __v32qi qi[8];
+} tmp_u;
+
+
+void foo ()
+{
+ register tmp_u *tdst __asm__("%rdx");
+ register tmp_u *src1 __asm__("%rcx");
+ register tmp_u *src2 __asm__("%r26");
+
+ tdst->qi[0] = __builtin_ia32_vaesdec_v32qi(src1->qi[0], src2->qi[0]);
+ tdst->qi[0] = __builtin_ia32_vaesdeclast_v32qi(src1->qi[0], src2->qi[0]);
+ tdst->qi[0] = __builtin_ia32_vaesenc_v32qi(src1->qi[0], src2->qi[0]);
+ tdst->qi[0] = __builtin_ia32_vaesenclast_v32qi(src1->qi[0], src2->qi[0]);
+}
+
+/* { dg-final { scan-assembler-not "\\\(%r26\\\), " } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr119549.c b/gcc/testsuite/gcc.target/i386/pr119549.c
new file mode 100644
index 0000000..a465bec
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr119549.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-msse4" } */
+
+typedef long long v2di __attribute__((vector_size(16)));
+
+static inline __attribute__((always_inline))
+int rte_trace_feature_is_enabled() { return 1; } /* { dg-error "inlining failed" } */
+
+void __attribute__((target ("no-sse3"))) __attribute__((target ("no-sse4")))
+rte_eal_trace_generic_void_init(void)
+{
+ if (!rte_trace_feature_is_enabled()) return;
+ __asm__ volatile ("" : : : "memory");
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/pr119784a.c b/gcc/testsuite/gcc.target/i386/pr119784a.c
new file mode 100644
index 0000000..8a119d4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr119784a.c
@@ -0,0 +1,96 @@
+/* { dg-do compile { target { *-*-linux* && lp64 } } } */
+/* { dg-options "-O2 -fno-pic -mtune=generic -mgeneral-regs-only -mapxf -mtune-ctrl=prologue_using_move,epilogue_using_move" } */
+/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
+/* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */
+
+/* start must save and restore all caller saved registers. */
+
+/*
+**start:
+**.LFB[0-9]+:
+** .cfi_startproc
+** subq \$248, %rsp
+**...
+** movq %rax, \(%rsp\)
+** movq %rdx, 8\(%rsp\)
+** movq %rcx, 16\(%rsp\)
+** movq %rbx, 24\(%rsp\)
+** movq %rsi, 32\(%rsp\)
+** movq %rdi, 40\(%rsp\)
+**...
+** movq %rbp, 48\(%rsp\)
+** movq %r8, 56\(%rsp\)
+** movq %r9, 64\(%rsp\)
+** movq %r10, 72\(%rsp\)
+** movq %r11, 80\(%rsp\)
+** movq %r12, 88\(%rsp\)
+** movq %r13, 96\(%rsp\)
+** movq %r14, 104\(%rsp\)
+** movq %r15, 112\(%rsp\)
+** movq %r16, 120\(%rsp\)
+** movq %r17, 128\(%rsp\)
+** movq %r18, 136\(%rsp\)
+** movq %r19, 144\(%rsp\)
+** movq %r20, 152\(%rsp\)
+** movq %r21, 160\(%rsp\)
+** movq %r22, 168\(%rsp\)
+** movq %r23, 176\(%rsp\)
+** movq %r24, 184\(%rsp\)
+** movq %r25, 192\(%rsp\)
+** movq %r26, 200\(%rsp\)
+** movq %r27, 208\(%rsp\)
+** movq %r28, 216\(%rsp\)
+** movq %r29, 224\(%rsp\)
+** movq %r30, 232\(%rsp\)
+** movq %r31, 240\(%rsp\)
+**...
+** call \*code\(%rip\)
+** movq \(%rsp\), %rax
+** movq 8\(%rsp\), %rdx
+** movq 16\(%rsp\), %rcx
+** movq 24\(%rsp\), %rbx
+** movq 32\(%rsp\), %rsi
+** movq 40\(%rsp\), %rdi
+** movq 48\(%rsp\), %rbp
+** movq 56\(%rsp\), %r8
+** movq 64\(%rsp\), %r9
+** movq 72\(%rsp\), %r10
+** movq 80\(%rsp\), %r11
+** movq 88\(%rsp\), %r12
+** movq 96\(%rsp\), %r13
+** movq 104\(%rsp\), %r14
+** movq 112\(%rsp\), %r15
+** movq 120\(%rsp\), %r16
+** movq 128\(%rsp\), %r17
+** movq 136\(%rsp\), %r18
+** movq 144\(%rsp\), %r19
+** movq 152\(%rsp\), %r20
+** movq 160\(%rsp\), %r21
+** movq 168\(%rsp\), %r22
+** movq 176\(%rsp\), %r23
+** movq 184\(%rsp\), %r24
+** movq 192\(%rsp\), %r25
+** movq 200\(%rsp\), %r26
+** movq 208\(%rsp\), %r27
+** movq 216\(%rsp\), %r28
+** movq 224\(%rsp\), %r29
+** movq 232\(%rsp\), %r30
+** movq 240\(%rsp\), %r31
+** addq \$248, %rsp
+**...
+** ret
+** .cfi_endproc
+**...
+*/
+
+#define DONT_SAVE_REGS __attribute__((no_callee_saved_registers))
+#define SAVE_REGS __attribute__((no_caller_saved_registers))
+
+typedef DONT_SAVE_REGS void (*op_t)(void);
+
+extern op_t code[];
+
+SAVE_REGS void start()
+{
+ code[0]();
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr119784b.c b/gcc/testsuite/gcc.target/i386/pr119784b.c
new file mode 100644
index 0000000..c676197
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr119784b.c
@@ -0,0 +1,87 @@
+/* { dg-do compile { target { *-*-linux* && x32 } } } */
+/* { dg-options "-O2 -fno-pic -mtune=generic -mgeneral-regs-only -mapxf -mtune-ctrl=prologue_using_move,epilogue_using_move" } */
+/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
+/* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */
+
+/* start must save and restore all caller saved registers. */
+
+/*
+**start:
+**.LFB[0-9]+:
+** .cfi_startproc
+** subl \$248, %esp
+**...
+** movq %rax, \(%rsp\)
+** movq %rdx, 8\(%rsp\)
+** movq %rcx, 16\(%rsp\)
+** movq %rbx, 24\(%rsp\)
+** movq %rsi, 32\(%rsp\)
+** movq %rdi, 40\(%rsp\)
+**...
+** movq %rbp, 48\(%rsp\)
+** movq %r8, 56\(%rsp\)
+** movq %r9, 64\(%rsp\)
+** movq %r10, 72\(%rsp\)
+** movq %r11, 80\(%rsp\)
+** movq %r12, 88\(%rsp\)
+** movq %r13, 96\(%rsp\)
+** movq %r14, 104\(%rsp\)
+** movq %r15, 112\(%rsp\)
+** movq %r16, 120\(%rsp\)
+** movq %r17, 128\(%rsp\)
+** movq %r18, 136\(%rsp\)
+** movq %r19, 144\(%rsp\)
+** movq %r20, 152\(%rsp\)
+** movq %r21, 160\(%rsp\)
+** movq %r22, 168\(%rsp\)
+** movq %r23, 176\(%rsp\)
+** movq %r24, 184\(%rsp\)
+** movq %r25, 192\(%rsp\)
+** movq %r26, 200\(%rsp\)
+** movq %r27, 208\(%rsp\)
+** movq %r28, 216\(%rsp\)
+** movq %r29, 224\(%rsp\)
+** movq %r30, 232\(%rsp\)
+** movq %r31, 240\(%rsp\)
+**...
+** movl code\(%rip\), %ebp
+** call \*%rbp
+** movq \(%rsp\), %rax
+** movq 8\(%rsp\), %rdx
+** movq 16\(%rsp\), %rcx
+** movq 24\(%rsp\), %rbx
+** movq 32\(%rsp\), %rsi
+** movq 40\(%rsp\), %rdi
+** movq 48\(%rsp\), %rbp
+** movq 56\(%rsp\), %r8
+** movq 64\(%rsp\), %r9
+** movq 72\(%rsp\), %r10
+** movq 80\(%rsp\), %r11
+** movq 88\(%rsp\), %r12
+** movq 96\(%rsp\), %r13
+** movq 104\(%rsp\), %r14
+** movq 112\(%rsp\), %r15
+** movq 120\(%rsp\), %r16
+** movq 128\(%rsp\), %r17
+** movq 136\(%rsp\), %r18
+** movq 144\(%rsp\), %r19
+** movq 152\(%rsp\), %r20
+** movq 160\(%rsp\), %r21
+** movq 168\(%rsp\), %r22
+** movq 176\(%rsp\), %r23
+** movq 184\(%rsp\), %r24
+** movq 192\(%rsp\), %r25
+** movq 200\(%rsp\), %r26
+** movq 208\(%rsp\), %r27
+** movq 216\(%rsp\), %r28
+** movq 224\(%rsp\), %r29
+** movq 232\(%rsp\), %r30
+** movq 240\(%rsp\), %r31
+** addl \$248, %esp
+**...
+** ret
+** .cfi_endproc
+**...
+*/
+
+#include "pr119784a.c"
diff --git a/gcc/testsuite/gcc.target/i386/pr67215-1.c b/gcc/testsuite/gcc.target/i386/pr67215-1.c
index fd37f8e..ab69550 100644
--- a/gcc/testsuite/gcc.target/i386/pr67215-1.c
+++ b/gcc/testsuite/gcc.target/i386/pr67215-1.c
@@ -13,8 +13,8 @@ foo (void)
arr[i] = bar (128);
}
-/* { dg-final { scan-assembler "call\[ \t\]*.bar@GOTPCREL" { target { ! ia32 } } } } */
-/* { dg-final { scan-assembler "call\[ \t\]*.bar@GOT\\(" { target ia32 } } } */
-/* { dg-final { scan-assembler-not "mov(l|q)\[ \t\]*.bar@GOTPCREL" { target { ! ia32 } } } } */
-/* { dg-final { scan-assembler-not "movl\[ \t\]*.bar@GOT\\(" { target ia32 } } } */
-/* { dg-final { scan-assembler-not "call\[ \t\]*.bar@PLT" } } */
+/* { dg-final { scan-assembler "call\[ \t\]+\\*bar@GOTPCREL" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler "call\[ \t\]+\\*bar@GOT\\(" { target ia32 } } } */
+/* { dg-final { scan-assembler-not "mov(l|q)\[ \t\]+bar@GOTPCREL" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "movl\[ \t\]+bar@GOT\\(" { target ia32 } } } */
+/* { dg-final { scan-assembler-not "call\[ \t\]+\\*bar@PLT" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr67215-2.c b/gcc/testsuite/gcc.target/i386/pr67215-2.c
index ebf2919..9fd7469 100644
--- a/gcc/testsuite/gcc.target/i386/pr67215-2.c
+++ b/gcc/testsuite/gcc.target/i386/pr67215-2.c
@@ -13,8 +13,8 @@ foo (void)
arr[i] = bar (128);
}
-/* { dg-final { scan-assembler "call\[ \t\]*.bar@GOTPCREL" { target { ! ia32 } } } } */
-/* { dg-final { scan-assembler "call\[ \t\]*.bar@GOT\\(" { target ia32 } } } */
-/* { dg-final { scan-assembler-not "mov(l|q)\[ \t\]*.bar@GOTPCREL" { target { ! ia32 } } } } */
-/* { dg-final { scan-assembler-not "movl\[ \t\]*.bar@GOT\\(" { target ia32 } } } */
-/* { dg-final { scan-assembler-not "call\[ \t\]*.bar@PLT" } } */
+/* { dg-final { scan-assembler "call\[ \t\]+\\*bar@GOTPCREL" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler "call\[ \t\]+\\*bar@GOT\\(" { target ia32 } } } */
+/* { dg-final { scan-assembler-not "mov(l|q)\[ \t\]+bar@GOTPCREL" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "movl\[ \t\]+bar@GOT\\(" { target ia32 } } } */
+/* { dg-final { scan-assembler-not "call\[ \t\]+\\*bar@PLT" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr82142a.c b/gcc/testsuite/gcc.target/i386/pr82142a.c
index a40c038..a536150 100644
--- a/gcc/testsuite/gcc.target/i386/pr82142a.c
+++ b/gcc/testsuite/gcc.target/i386/pr82142a.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target { ! ia32 } } } */
-/* { dg-options "-O2 -mno-avx -msse2" } */
+/* { dg-options "-O2 -mno-avx -msse2 -fasynchronous-unwind-tables -fdwarf2-cfi-asm" } */
/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
/* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr82142b.c b/gcc/testsuite/gcc.target/i386/pr82142b.c
index b1bf12d..d18b7c4 100644
--- a/gcc/testsuite/gcc.target/i386/pr82142b.c
+++ b/gcc/testsuite/gcc.target/i386/pr82142b.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target ia32 } } */
-/* { dg-options "-O2 -mno-avx -msse2" } */
+/* { dg-options "-O2 -mno-avx -msse2 -mno-stackrealign -fasynchronous-unwind-tables -fdwarf2-cfi-asm" } */
/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */
/* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */